@things-factory/operato-hub 4.3.188 → 4.3.190
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/pages/api/home.js +2 -4
- package/config.development.js +8 -23
- package/dist-server/routers/api/restful-apis/v1/company/index.js +0 -6
- package/dist-server/routers/api/restful-apis/v1/company/index.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/index.js +1 -0
- package/dist-server/routers/api/restful-apis/v1/index.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/{company → marketplace}/add-marketplace-order.js +4 -4
- package/dist-server/routers/api/restful-apis/v1/marketplace/add-marketplace-order.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/marketplace/add-marketplace-products.js +78 -0
- package/dist-server/routers/api/restful-apis/v1/marketplace/add-marketplace-products.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/{company → marketplace}/cancel-marketplace-order.js +5 -5
- package/dist-server/routers/api/restful-apis/v1/marketplace/cancel-marketplace-order.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/{company → marketplace}/get-marketplace-order-shipping-list.js +3 -3
- package/dist-server/routers/api/restful-apis/v1/marketplace/get-marketplace-order-shipping-list.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/{company → marketplace}/get-marketplace-store-list.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/marketplace/get-marketplace-store-list.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/marketplace/index.js +11 -0
- package/dist-server/routers/api/restful-apis/v1/marketplace/index.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/{company → marketplace}/update-marketplace-order-delivered.js +3 -3
- package/dist-server/routers/api/restful-apis/v1/marketplace/update-marketplace-order-delivered.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/marketplace/update-marketplace-product.js +76 -0
- package/dist-server/routers/api/restful-apis/v1/marketplace/update-marketplace-product.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/{company → marketplace}/update-marketplace-shipping-order.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/marketplace/update-marketplace-shipping-order.js.map +1 -0
- package/dist-server/routers/api/restful-apis/v1/utils/params.js +153 -0
- package/dist-server/routers/api/restful-apis/v1/utils/params.js.map +1 -1
- package/openapi/v1/marketplace.yaml +414 -0
- package/package.json +14 -13
- package/server/routers/api/restful-apis/v1/company/index.ts +0 -6
- package/server/routers/api/restful-apis/v1/index.ts +1 -0
- package/server/routers/api/restful-apis/v1/{company → marketplace}/add-marketplace-order.ts +7 -6
- package/server/routers/api/restful-apis/v1/marketplace/add-marketplace-products.ts +106 -0
- package/server/routers/api/restful-apis/v1/marketplace/cancel-marketplace-order.ts +100 -0
- package/server/routers/api/restful-apis/v1/{company → marketplace}/get-marketplace-order-shipping-list.ts +4 -4
- package/server/routers/api/restful-apis/v1/{company → marketplace}/get-marketplace-store-list.ts +2 -2
- package/server/routers/api/restful-apis/v1/marketplace/index.ts +8 -0
- package/server/routers/api/restful-apis/v1/{company → marketplace}/update-marketplace-order-delivered.ts +4 -4
- package/server/routers/api/restful-apis/v1/marketplace/update-marketplace-product.ts +109 -0
- package/server/routers/api/restful-apis/v1/{company → marketplace}/update-marketplace-shipping-order.ts +6 -4
- package/server/routers/api/restful-apis/v1/utils/params.ts +153 -0
- package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js.map +0 -1
- package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js.map +0 -1
- package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js.map +0 -1
- package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js.map +0 -1
- package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js.map +0 -1
- package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-shipping-order.js.map +0 -1
- package/server/routers/api/restful-apis/v1/company/cancel-marketplace-order.ts +0 -94
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/operato-hub",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.190",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@operato/scene-tab": "^0.1.8",
|
|
56
56
|
"@operato/scene-table": "^0.1.8",
|
|
57
57
|
"@operato/scene-wheel-sorter": "^0.1.8",
|
|
58
|
-
"@things-factory/api": "^4.3.
|
|
58
|
+
"@things-factory/api": "^4.3.190",
|
|
59
59
|
"@things-factory/apptool-ui": "^4.3.179",
|
|
60
60
|
"@things-factory/attachment-base": "^4.3.179",
|
|
61
61
|
"@things-factory/auth-base": "^4.3.179",
|
|
@@ -77,20 +77,21 @@
|
|
|
77
77
|
"@things-factory/i18n-base": "^4.3.179",
|
|
78
78
|
"@things-factory/import-ui": "^4.3.179",
|
|
79
79
|
"@things-factory/import-ui-excel": "^4.3.179",
|
|
80
|
-
"@things-factory/integration-accounting": "^4.3.
|
|
81
|
-
"@things-factory/integration-fulfillment": "^4.3.
|
|
82
|
-
"@things-factory/integration-lmd": "^4.3.
|
|
83
|
-
"@things-factory/integration-marketplace": "^4.3.
|
|
84
|
-
"@things-factory/integration-pos": "^4.3.
|
|
85
|
-
"@things-factory/integration-sellercraft": "^4.3.
|
|
86
|
-
"@things-factory/integration-sftp": "^4.3.
|
|
80
|
+
"@things-factory/integration-accounting": "^4.3.190",
|
|
81
|
+
"@things-factory/integration-fulfillment": "^4.3.190",
|
|
82
|
+
"@things-factory/integration-lmd": "^4.3.190",
|
|
83
|
+
"@things-factory/integration-marketplace": "^4.3.190",
|
|
84
|
+
"@things-factory/integration-pos": "^4.3.190",
|
|
85
|
+
"@things-factory/integration-sellercraft": "^4.3.190",
|
|
86
|
+
"@things-factory/integration-sftp": "^4.3.190",
|
|
87
87
|
"@things-factory/lite-menu": "^4.3.186",
|
|
88
|
+
"@things-factory/marketplace-base": "^4.3.190",
|
|
88
89
|
"@things-factory/more-ui": "^4.3.179",
|
|
89
90
|
"@things-factory/notification": "^4.3.186",
|
|
90
91
|
"@things-factory/pdf": "^4.3.159",
|
|
91
92
|
"@things-factory/product-ui": "^4.3.187",
|
|
92
93
|
"@things-factory/resource-ui": "^4.3.179",
|
|
93
|
-
"@things-factory/sales-base": "^4.3.
|
|
94
|
+
"@things-factory/sales-base": "^4.3.190",
|
|
94
95
|
"@things-factory/scene-data-transform": "^4.3.159",
|
|
95
96
|
"@things-factory/scene-excel": "^4.3.159",
|
|
96
97
|
"@things-factory/scene-firebase": "^4.3.159",
|
|
@@ -105,8 +106,8 @@
|
|
|
105
106
|
"@things-factory/setting-ui": "^4.3.186",
|
|
106
107
|
"@things-factory/shell": "^4.3.179",
|
|
107
108
|
"@things-factory/system-ui": "^4.3.179",
|
|
108
|
-
"@things-factory/warehouse-base": "^4.3.
|
|
109
|
-
"@things-factory/worksheet-base": "^4.3.
|
|
109
|
+
"@things-factory/warehouse-base": "^4.3.190",
|
|
110
|
+
"@things-factory/worksheet-base": "^4.3.190",
|
|
110
111
|
"cron-parser": "^4.7.0",
|
|
111
112
|
"koa2-swagger-ui": "^5.0.2",
|
|
112
113
|
"swagger-jsdoc": "^5.0.0",
|
|
@@ -118,5 +119,5 @@
|
|
|
118
119
|
"resolutions": {
|
|
119
120
|
"core-js": "^3.16.0"
|
|
120
121
|
},
|
|
121
|
-
"gitHead": "
|
|
122
|
+
"gitHead": "9fc85f3d95eeddd2191d156d99fc77bcc81b5071"
|
|
122
123
|
}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import './add-contact-points'
|
|
2
|
-
import './add-marketplace-order'
|
|
3
2
|
import './add-products'
|
|
4
|
-
import './cancel-marketplace-order'
|
|
5
3
|
import './get-bizplace-list'
|
|
6
4
|
import './get-contact-point-list'
|
|
7
|
-
import './get-marketplace-order-shipping-list'
|
|
8
|
-
import './get-marketplace-store-list'
|
|
9
5
|
import './get-partner-list'
|
|
10
6
|
import './get-product-list'
|
|
11
|
-
import './update-marketplace-order-delivered'
|
|
12
|
-
import './update-marketplace-shipping-order'
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntityManager, getConnection, IsNull, SelectQueryBuilder } from 'typeorm'
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
2
3
|
|
|
3
4
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
|
-
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
5
|
-
import { v4 as uuidv4 } from 'uuid'
|
|
6
5
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
7
|
-
import { Product, ProductBundle, ProductBundleSetting } from '@things-factory/product-base'
|
|
8
6
|
import {
|
|
9
7
|
MarketplaceOrder as MarketplaceOrderEntity,
|
|
10
8
|
MarketplaceOrderItem as MarketplaceOrderItemEntity,
|
|
@@ -13,10 +11,13 @@ import {
|
|
|
13
11
|
MarketplaceProductVariation as MarketplaceProductVariationEntity,
|
|
14
12
|
NoGenerator
|
|
15
13
|
} from '@things-factory/marketplace-base'
|
|
16
|
-
import {
|
|
14
|
+
import { Product, ProductBundle, ProductBundleSetting } from '@things-factory/product-base'
|
|
15
|
+
|
|
16
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
17
|
+
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
17
18
|
|
|
18
19
|
router.post(
|
|
19
|
-
'/v1/
|
|
20
|
+
'/v1/marketplace/add-marketplace-order',
|
|
20
21
|
businessMiddleware,
|
|
21
22
|
validationMiddleware,
|
|
22
23
|
loggingMiddleware,
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
2
|
+
import { EntityManager, getConnection, In } from 'typeorm'
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
4
|
+
|
|
5
|
+
import { restfulApiRouter as router } from '@things-factory/api'
|
|
6
|
+
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
7
|
+
import { MarketplaceProduct, MarketplaceProductVariation } from '@things-factory/marketplace-base'
|
|
8
|
+
|
|
9
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
10
|
+
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
11
|
+
|
|
12
|
+
router.post(
|
|
13
|
+
'/v1/marketplace/add-marketplace-products',
|
|
14
|
+
businessMiddleware,
|
|
15
|
+
validationMiddleware,
|
|
16
|
+
loggingMiddleware,
|
|
17
|
+
async (context, next) => {
|
|
18
|
+
try {
|
|
19
|
+
await getConnection().transaction(async (tx: EntityManager) => {
|
|
20
|
+
const { user, domain } = context.state
|
|
21
|
+
const { marketplaceProducts, storeId } = context.request.body.data
|
|
22
|
+
|
|
23
|
+
if (!Array.isArray(marketplaceProducts)) throw new ApiError('E01', 'data field is not an array')
|
|
24
|
+
|
|
25
|
+
const marketplaceStore: MarketplaceStore = await tx.getRepository(MarketplaceStore).findOne({
|
|
26
|
+
where: { name: storeId, domain }
|
|
27
|
+
})
|
|
28
|
+
if (!marketplaceStore) throw new ApiError('E04', 'storeId')
|
|
29
|
+
|
|
30
|
+
const itemIds = marketplaceProducts.map(mp => mp.itemId)
|
|
31
|
+
|
|
32
|
+
//check duplicate sku from request
|
|
33
|
+
let duplicateItemId = itemIds.filter((item, index) => itemIds.indexOf(item) != index)
|
|
34
|
+
|
|
35
|
+
if (duplicateItemId?.length > 0) {
|
|
36
|
+
throw new ApiError('E05', `duplicated item id found: ${[...new Set(duplicateItemId)]}`)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//check if sku existed in db
|
|
40
|
+
let existedMarketplaceProducts: MarketplaceProduct = await tx.getRepository(MarketplaceProduct).find({
|
|
41
|
+
where: {
|
|
42
|
+
itemId: In(itemIds),
|
|
43
|
+
marketplaceStore,
|
|
44
|
+
domain
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
if (existedMarketplaceProducts?.length > 0) {
|
|
49
|
+
throw new ApiError('E05', `existing products found: ${existedMarketplaceProducts.map(emp => emp.itemId)}`)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let response = []
|
|
53
|
+
|
|
54
|
+
// save product
|
|
55
|
+
await Promise.all(
|
|
56
|
+
marketplaceProducts.map(async mp => {
|
|
57
|
+
let marketplaceProduct = mp
|
|
58
|
+
const marketplaceProductVariations = mp.marketplaceProductVariations
|
|
59
|
+
|
|
60
|
+
marketplaceProduct.isku = marketplaceProduct?.isku ? marketplaceProduct.isku : uuidv4()
|
|
61
|
+
marketplaceProduct.domain = domain
|
|
62
|
+
marketplaceProduct.marketplaceStore = marketplaceStore
|
|
63
|
+
marketplaceProduct.creator = user
|
|
64
|
+
marketplaceProduct.updater = user
|
|
65
|
+
delete marketplaceProduct.marketplaceProductVariations
|
|
66
|
+
|
|
67
|
+
let mpResult = await tx.getRepository(MarketplaceProduct).save(marketplaceProduct)
|
|
68
|
+
|
|
69
|
+
// save product details
|
|
70
|
+
let mpvs = await Promise.all(
|
|
71
|
+
marketplaceProductVariations.map(async mpv => {
|
|
72
|
+
let mpvResult = await tx.getRepository(MarketplaceProductVariation).save({
|
|
73
|
+
...mpv,
|
|
74
|
+
name: mpv?.name ? mpv.name : mpResult.name,
|
|
75
|
+
channelSku: mpv?.channelSku ? mpv.channelSku : mpv.variationSku,
|
|
76
|
+
status: 'ACTIVE',
|
|
77
|
+
marketplaceProduct: mpResult,
|
|
78
|
+
domain: domain,
|
|
79
|
+
creator: user,
|
|
80
|
+
updater: user
|
|
81
|
+
})
|
|
82
|
+
delete mpvResult.creator
|
|
83
|
+
delete mpvResult.updater
|
|
84
|
+
delete mpvResult.product
|
|
85
|
+
delete mpvResult.domain
|
|
86
|
+
return mpvResult
|
|
87
|
+
})
|
|
88
|
+
)
|
|
89
|
+
delete mpResult.creator
|
|
90
|
+
delete mpResult.updater
|
|
91
|
+
delete mpResult.bizplace
|
|
92
|
+
delete mpResult.domain
|
|
93
|
+
response.push({ ...mpResult, marketplaceProductVariations: mpvs })
|
|
94
|
+
})
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
context.body = {
|
|
98
|
+
data: response
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
} catch (e) {
|
|
102
|
+
if (e instanceof ApiError) ApiErrorHandler(context, e)
|
|
103
|
+
else throwInternalServerError(context, e)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { EntityManager, getConnection } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
|
|
6
|
+
import { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'
|
|
7
|
+
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
8
|
+
import { MarketplaceOrder, MarketplaceOrderItem } from '@things-factory/marketplace-base'
|
|
9
|
+
import { Domain } from '@things-factory/shell'
|
|
10
|
+
|
|
11
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
12
|
+
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
13
|
+
|
|
14
|
+
router.post(
|
|
15
|
+
'/v1/marketplace/cancel-marketplace-order',
|
|
16
|
+
businessMiddleware,
|
|
17
|
+
validationMiddleware,
|
|
18
|
+
loggingMiddleware,
|
|
19
|
+
async (context, next) => {
|
|
20
|
+
try {
|
|
21
|
+
const { orderNo, remark, cancelBy } = context.request.body.data
|
|
22
|
+
const { domain, user }: { domain: Domain; user: User } = context.state
|
|
23
|
+
|
|
24
|
+
await getConnection().transaction(async (tx: EntityManager) => {
|
|
25
|
+
const marketplaceStore: MarketplaceStore = await tx.getRepository(MarketplaceStore).findOne({
|
|
26
|
+
where: { name: context.request.body.data.storeId, domain: context.state.domain }
|
|
27
|
+
})
|
|
28
|
+
if (!marketplaceStore) throw new ApiError('E04', 'storeId')
|
|
29
|
+
|
|
30
|
+
let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
31
|
+
where: { domain, orderNo, marketplaceStore },
|
|
32
|
+
relations: ['fulfillmentCenter', 'marketplaceStore', 'marketplaceOrderItems']
|
|
33
|
+
})
|
|
34
|
+
if (!marketplaceOrder) throw new ApiError('E04', 'orderNo')
|
|
35
|
+
|
|
36
|
+
let marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems.map(orderItem => {
|
|
37
|
+
let marketplaceOrderItem: MarketplaceOrderItem = Object.assign({}, orderItem)
|
|
38
|
+
marketplaceOrderItem.reason = remark
|
|
39
|
+
marketplaceOrderItem.status = 'cancelled'
|
|
40
|
+
marketplaceOrderItem.updater = user
|
|
41
|
+
marketplaceOrderItem.cancelBy = cancelBy
|
|
42
|
+
|
|
43
|
+
return marketplaceOrderItem
|
|
44
|
+
})
|
|
45
|
+
await tx.getRepository(MarketplaceOrderItem).save(marketplaceOrderItems)
|
|
46
|
+
|
|
47
|
+
marketplaceOrder.status = 'cancelled'
|
|
48
|
+
marketplaceOrder.remark = remark
|
|
49
|
+
marketplaceOrder.updater = user
|
|
50
|
+
marketplaceOrder = await tx.getRepository(MarketplaceOrder).save(marketplaceOrder)
|
|
51
|
+
|
|
52
|
+
const cancelStatuses: string[] = ['cancelled', 'canceled']
|
|
53
|
+
if (cancelStatuses.includes(marketplaceOrder.status) && marketplaceOrder?.releaseOrderId) {
|
|
54
|
+
if (marketplaceOrder.isSplitted) {
|
|
55
|
+
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
56
|
+
const centerId: string = fulfillmentCenter.centerId
|
|
57
|
+
const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
|
|
58
|
+
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
59
|
+
const customerBizplaceId: string = customerBizplaces[0].id
|
|
60
|
+
|
|
61
|
+
const { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
|
|
62
|
+
customerBizplaceId,
|
|
63
|
+
refNo: marketplaceOrder.orderNo
|
|
64
|
+
})
|
|
65
|
+
if (releaseOrders?.length) {
|
|
66
|
+
for (var a = 0; a < releaseOrders.length; a++) {
|
|
67
|
+
const releaseOrderId: string = releaseOrders[a].id
|
|
68
|
+
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
const releaseOrderId: string = marketplaceOrder.releaseOrderId
|
|
73
|
+
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
74
|
+
const centerId: string = fulfillmentCenter.centerId
|
|
75
|
+
|
|
76
|
+
const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
|
|
77
|
+
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
78
|
+
const customerBizplaceId: string = customerBizplaces[0].id
|
|
79
|
+
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const data = {
|
|
83
|
+
orderNo: marketplaceOrder.orderNo,
|
|
84
|
+
status: marketplaceOrder.status,
|
|
85
|
+
remark: marketplaceOrder.remark,
|
|
86
|
+
cancelBy: cancelBy || null,
|
|
87
|
+
createdAt: marketplaceOrder.createdAt,
|
|
88
|
+
updatedAt: marketplaceOrder.updatedAt
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
context.body = {
|
|
92
|
+
data
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
} catch (e) {
|
|
96
|
+
if (e instanceof ApiError) ApiErrorHandler(context, e)
|
|
97
|
+
else throwInternalServerError(context, e)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
1
2
|
import { getRepository } from 'typeorm'
|
|
2
3
|
|
|
3
4
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
|
-
import {
|
|
5
|
+
import { MarketplaceOrder, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
|
|
5
6
|
|
|
7
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
6
8
|
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
7
|
-
import _ from 'lodash'
|
|
8
|
-
import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
|
|
9
9
|
|
|
10
10
|
router.get(
|
|
11
|
-
'/v1/
|
|
11
|
+
'/v1/marketplace/get-marketplace-order-shipping-list',
|
|
12
12
|
businessMiddleware,
|
|
13
13
|
validationMiddleware,
|
|
14
14
|
loggingMiddleware,
|
package/server/routers/api/restful-apis/v1/{company → marketplace}/get-marketplace-store-list.ts
RENAMED
|
@@ -3,11 +3,11 @@ import { getRepository } from 'typeorm'
|
|
|
3
3
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
4
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
5
5
|
|
|
6
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
6
7
|
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
7
|
-
import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
|
|
8
8
|
|
|
9
9
|
router.get(
|
|
10
|
-
'/v1/
|
|
10
|
+
'/v1/marketplace/get-marketplace-store-list',
|
|
11
11
|
businessMiddleware,
|
|
12
12
|
validationMiddleware,
|
|
13
13
|
loggingMiddleware,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import './add-marketplace-order'
|
|
2
|
+
import './add-marketplace-products'
|
|
3
|
+
import './cancel-marketplace-order'
|
|
4
|
+
import './get-marketplace-order-shipping-list'
|
|
5
|
+
import './get-marketplace-store-list'
|
|
6
|
+
import './update-marketplace-order-delivered'
|
|
7
|
+
import './update-marketplace-shipping-order'
|
|
8
|
+
import './update-marketplace-product'
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntityManager, getConnection } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
|
-
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
5
4
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
6
6
|
|
|
7
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
7
8
|
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
8
|
-
import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
|
|
9
9
|
|
|
10
10
|
router.post(
|
|
11
|
-
'/v1/
|
|
11
|
+
'/v1/marketplace/update-marketplace-order-delivered',
|
|
12
12
|
businessMiddleware,
|
|
13
13
|
validationMiddleware,
|
|
14
14
|
loggingMiddleware,
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { EntityManager, getConnection } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import {
|
|
6
|
+
MarketplaceProduct as MarketplaceProductEntity,
|
|
7
|
+
MarketplaceProductVariation as MarketplaceProductVariationEntity
|
|
8
|
+
} from '@things-factory/marketplace-base'
|
|
9
|
+
import { Domain } from '@things-factory/shell'
|
|
10
|
+
|
|
11
|
+
import { businessMiddleware, loggingMiddleware, storeMiddleware, validationMiddleware } from '../middlewares'
|
|
12
|
+
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
13
|
+
|
|
14
|
+
router.post(
|
|
15
|
+
'/v1/marketplace/update-marketplace-product',
|
|
16
|
+
businessMiddleware,
|
|
17
|
+
validationMiddleware,
|
|
18
|
+
loggingMiddleware,
|
|
19
|
+
storeMiddleware,
|
|
20
|
+
async (context, next) => {
|
|
21
|
+
await getConnection().transaction(async (tx: EntityManager) => {
|
|
22
|
+
try {
|
|
23
|
+
const { domain, user }: { domain: Domain; user: User } = context.state
|
|
24
|
+
const { marketplaceStore } = context.state
|
|
25
|
+
const data = context.request.body.data
|
|
26
|
+
let marketplaceProduct: MarketplaceProductEntity = await tx.getRepository(MarketplaceProductEntity).findOne({
|
|
27
|
+
where: { marketplaceStore, id: data.id }
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
if (!marketplaceProduct) throw new ApiError('E04', `Marketplace Product ${data.itemId}`)
|
|
31
|
+
|
|
32
|
+
let productVariations: any[] = data.marketplaceProductVariations
|
|
33
|
+
|
|
34
|
+
delete data.marketplaceProductVariations
|
|
35
|
+
|
|
36
|
+
await tx.getRepository(MarketplaceProductEntity).save({ ...marketplaceProduct, ...data, updater: user })
|
|
37
|
+
|
|
38
|
+
if (productVariations?.length > 0) {
|
|
39
|
+
await Promise.all(
|
|
40
|
+
productVariations.map(async pv => {
|
|
41
|
+
let marketplaceProductVariation: MarketplaceProductVariationEntity = await tx
|
|
42
|
+
.getRepository(MarketplaceProductVariationEntity)
|
|
43
|
+
.findOne({
|
|
44
|
+
where: { domain, marketplaceProduct, variationId: pv.variationId }
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
if (!marketplaceProductVariation) {
|
|
48
|
+
delete pv.sku
|
|
49
|
+
|
|
50
|
+
let mpvResult = await tx.getRepository(MarketplaceProductVariationEntity).save({
|
|
51
|
+
...pv,
|
|
52
|
+
domain,
|
|
53
|
+
marketplaceProduct,
|
|
54
|
+
updater: user
|
|
55
|
+
})
|
|
56
|
+
delete mpvResult.creator
|
|
57
|
+
delete mpvResult.updater
|
|
58
|
+
delete mpvResult.product
|
|
59
|
+
delete mpvResult.domain
|
|
60
|
+
return mpvResult
|
|
61
|
+
} else {
|
|
62
|
+
let mpvResult = await tx.getRepository(MarketplaceProductVariationEntity).save({
|
|
63
|
+
...marketplaceProductVariation,
|
|
64
|
+
...pv,
|
|
65
|
+
updater: user
|
|
66
|
+
})
|
|
67
|
+
delete mpvResult.creator
|
|
68
|
+
delete mpvResult.updater
|
|
69
|
+
delete mpvResult.product
|
|
70
|
+
delete mpvResult.domain
|
|
71
|
+
return mpvResult
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let newMarketplaceProduct: MarketplaceProductEntity = await tx.getRepository(MarketplaceProductEntity).findOne({
|
|
78
|
+
where: { marketplaceStore, itemId: data.itemId },
|
|
79
|
+
relations: ['marketplaceProductVariations']
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
let newMarketplaceProductVariations: MarketplaceProductVariationEntity[] =
|
|
83
|
+
newMarketplaceProduct.marketplaceProductVariations
|
|
84
|
+
|
|
85
|
+
delete newMarketplaceProduct.creator
|
|
86
|
+
delete newMarketplaceProduct.updater
|
|
87
|
+
delete newMarketplaceProduct.domain
|
|
88
|
+
delete newMarketplaceProduct.marketplaceProductVariations
|
|
89
|
+
|
|
90
|
+
newMarketplaceProductVariations = newMarketplaceProductVariations.map(mpv => {
|
|
91
|
+
delete mpv.creator
|
|
92
|
+
delete mpv.updater
|
|
93
|
+
delete mpv.domain
|
|
94
|
+
|
|
95
|
+
return {
|
|
96
|
+
...mpv
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
context.body = {
|
|
101
|
+
data: { ...marketplaceProduct, marketplaceProductVariations: newMarketplaceProductVariations }
|
|
102
|
+
}
|
|
103
|
+
} catch (e) {
|
|
104
|
+
if (e instanceof ApiError) ApiErrorHandler(context, e)
|
|
105
|
+
else throwInternalServerError(context, e)
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
)
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntityManager, getConnection } from 'typeorm'
|
|
2
|
+
|
|
2
3
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
3
5
|
import { MarketplaceOrderShipping as MarketplaceOrderShippingEntity } from '@things-factory/marketplace-base'
|
|
6
|
+
|
|
7
|
+
import { businessMiddleware, loggingMiddleware, storeMiddleware, validationMiddleware } from '../middlewares'
|
|
4
8
|
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
5
|
-
import { businessMiddleware, validationMiddleware, loggingMiddleware, storeMiddleware } from '../middlewares'
|
|
6
|
-
import { User } from '@things-factory/auth-base'
|
|
7
9
|
|
|
8
10
|
router.post(
|
|
9
|
-
'/v1/
|
|
11
|
+
'/v1/marketplace/update-marketplace-shipping-order',
|
|
10
12
|
businessMiddleware,
|
|
11
13
|
validationMiddleware,
|
|
12
14
|
loggingMiddleware,
|