fix(fulfillment): 封堵重复载体并完善统一SKU映射
This commit is contained in:
@@ -19,6 +19,12 @@ import {
|
||||
unlockChannel,
|
||||
upsertChannelRule,
|
||||
} from '../../services/fulfillment/channel-assign-service.js'
|
||||
import {
|
||||
deleteInternalSkuMapping,
|
||||
listInternalSkuMappingsPage,
|
||||
upsertInternalSkuMapping,
|
||||
type InternalSkuMappingMatchType,
|
||||
} from '../../services/fulfillment/internal-sku-mapping-service.js'
|
||||
import { listExceptionQueue } from '../../services/cost-center/cost-exception-service.js'
|
||||
import {
|
||||
runFinancePipelineOnce,
|
||||
@@ -53,6 +59,70 @@ router.get(
|
||||
),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/fulfillment/internal-sku-mappings',
|
||||
requireAdminPermission('finance.view'),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
listInternalSkuMappingsPage({
|
||||
keyword: String(req.query.keyword || ''),
|
||||
provider: String(req.query.provider || ''),
|
||||
shopId: String(req.query.shopId || ''),
|
||||
matchType: String(req.query.matchType || ''),
|
||||
page: Number(req.query.page),
|
||||
pageSize: Number(req.query.pageSize),
|
||||
}),
|
||||
{
|
||||
successMessage: 'ok',
|
||||
errorMessage: '读取 SKU 映射失败',
|
||||
scope: '[admin/fulfillment/internal-sku-mappings]',
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/fulfillment/internal-sku-mappings',
|
||||
requireAdminPermission('finance.config'),
|
||||
createJsonHandler(
|
||||
async (req) => {
|
||||
const body = bodyOf(req)
|
||||
const id = await upsertInternalSkuMapping({
|
||||
provider: String(body.provider || ''),
|
||||
shopId: String(body.shopId || ''),
|
||||
matchType: String(body.matchType || 'sku_code') as InternalSkuMappingMatchType,
|
||||
matchValue: String(body.matchValue || ''),
|
||||
internalSku: String(body.internalSku || ''),
|
||||
priority: Number(body.priority),
|
||||
source: String(body.source || 'manual'),
|
||||
note: String(body.note || ''),
|
||||
enabled: body.enabled !== false,
|
||||
})
|
||||
return { id }
|
||||
},
|
||||
{
|
||||
successMessage: 'SKU 映射已保存',
|
||||
errorMessage: '保存 SKU 映射失败',
|
||||
scope: '[admin/fulfillment/internal-sku-mappings/save]',
|
||||
audit: (req, data) => ({
|
||||
action: 'fulfillment.upsert_internal_sku_mapping',
|
||||
targetType: 'internal_sku_mapping',
|
||||
targetId: String((data as { id?: number })?.id || ''),
|
||||
data: { payload: bodyOf(req) },
|
||||
}),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.delete(
|
||||
'/fulfillment/internal-sku-mappings/:id',
|
||||
requireAdminPermission('finance.config'),
|
||||
createJsonHandler((req) => deleteInternalSkuMapping(Number(req.params.id)), {
|
||||
successMessage: 'SKU 映射已删除',
|
||||
errorMessage: '删除 SKU 映射失败',
|
||||
scope: '[admin/fulfillment/internal-sku-mappings/delete]',
|
||||
}),
|
||||
)
|
||||
|
||||
router.get(
|
||||
'/fulfillment/exceptions',
|
||||
requireAdminPermission('finance.view'),
|
||||
|
||||
Reference in New Issue
Block a user