feat: 积分商城-供应商-对账-发票

This commit is contained in:
2026-09-03 18:13:09 +08:00
parent 5c8fbddb2e
commit fc5df9c048
24 changed files with 1216 additions and 294 deletions
+27 -4
View File
@@ -33,6 +33,7 @@ import {
orderPayController,
orderPushEventController,
orderShipController,
supplierFileBase64InfoController,
supplierInvoiceApplyController,
supplierInvoiceInfoController,
supplierOrderInfoController,
@@ -65,6 +66,7 @@ import {
supplierDebugTokensController,
supplierInfoController,
supplierPointsController,
supplierSessionController,
supplierTokenController
} from './controllers/supplier.controller.js'
@@ -108,9 +110,10 @@ const handlers: Record<string, FunctionHandler> = {
'merchant-product-save': merchantProductSaveController,
'merchant-product-delete': merchantProductDeleteController,
'supplier-debug-tokens': supplierDebugTokensController,
'supplier-info': supplierInfoController,
'supplier-file-base64-info': supplierFileBase64InfoController,
'supplier-invoice-apply': supplierInvoiceApplyController,
'supplier-invoice-info': supplierInvoiceInfoController,
'supplier-info': supplierInfoController,
'supplier-order-info': supplierOrderInfoController,
'supplier-reconciliation-info': supplierReconciliationInfoController,
'supplier-reconciliation-result': supplierReconciliationResultController,
@@ -118,6 +121,7 @@ const handlers: Record<string, FunctionHandler> = {
'merchant-reconciliation-list': merchantReconciliationListController,
'merchant-reconciliation-update': merchantReconciliationUpdateController,
'supplier-points': supplierPointsController,
'supplier-session': supplierSessionController,
'supplier-token': supplierTokenController,
upload: uploadController,
'upload-preview': uploadPreviewController,
@@ -144,11 +148,29 @@ const toRequest = (ctx: Koa.Context) =>
body: requestBody(ctx)
})
const writeResponse = async (ctx: Koa.Context, response: Response) => {
const ba7ResponseBody = (content: string) => ({
status: 200,
msg: 'success',
data: {
Body: {
RspSvcHeader: {
ReturnCode: '000000000000',
ReturnMsg: '交易成功'
},
RspSvcBody: {
ReturnStCd: '200',
ReturnCntnt: content
}
}
}
})
const writeResponse = async (ctx: Koa.Context, response: Response, wrapBa7 = false) => {
ctx.status = response.status
Object.entries(corsHeaders).forEach(([key, value]) => ctx.set(key, value))
response.headers.forEach((value, key) => ctx.set(key, value))
ctx.body = response.body ? await response.text() : undefined
const responseText = response.body ? await response.text() : ''
ctx.body = wrapBa7 ? ba7ResponseBody(responseText) : responseText || undefined
}
const dispatch = (name: string) => async (ctx: Koa.Context) => {
@@ -170,7 +192,7 @@ const dispatch = (name: string) => async (ctx: Koa.Context) => {
return
}
const response = await handler(toRequest(ctx), {})
await writeResponse(ctx, response)
await writeResponse(ctx, response, ctx.path.startsWith('/supplierOpenApi/'))
}
app.use(bodyParser({ jsonLimit: '10mb' }))
@@ -206,6 +228,7 @@ router.post('/supplierOpenApi/pointOrder/queryOrderInfo', dispatch('supplier-ord
router.post('/supplierOpenApi/pointOrder/queryReconciliationInfo', dispatch('supplier-reconciliation-info'))
router.post('/supplierOpenApi/pointOrder/applyForInvoices', dispatch('supplier-invoice-apply'))
router.post('/supplierOpenApi/pointOrder/queryInvoicesInfo', dispatch('supplier-invoice-info'))
router.post('/supplierOpenApi/pointOrder/queryFileBase64Info', dispatch('supplier-file-base64-info'))
router.post('/supplierOpenApi/pointOrder/reconciliationResult', dispatch('supplier-reconciliation-result'))
router.post('/supplierOpenApi/pointOrder/unReconciledMsg', dispatch('supplier-unreconciled-msg'))
router.post('/supplierOpenApi/debug/tokens', dispatch('supplier-debug-tokens'))