新增快手电子凭证后台工具
This commit is contained in:
@@ -4,6 +4,7 @@ import authRouter from "./admin/auth.js";
|
||||
import auditLogsRouter from "./admin/audit-logs.js";
|
||||
import cloudtentaclesRecordsRouter from "./admin/cloudtentacles-records.js";
|
||||
import dashboardRouter from "./admin/dashboard.js";
|
||||
import kuaishouIndustryRouter from "./admin/kuaishou-industry.js";
|
||||
import ordersRouter from "./admin/orders.js";
|
||||
import platformConfigRouter from "./admin/platform-config.js";
|
||||
import { requireAdminSession } from "./admin/session.js";
|
||||
@@ -19,6 +20,7 @@ router.use(dashboardRouter);
|
||||
router.use(usersRouter);
|
||||
router.use(auditLogsRouter);
|
||||
router.use(platformConfigRouter);
|
||||
router.use(kuaishouIndustryRouter);
|
||||
router.use(ordersRouter);
|
||||
router.use(tasksRouter);
|
||||
router.use(cloudtentaclesRecordsRouter);
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
import { Router } from 'express'
|
||||
import {
|
||||
approveAdminKuaishouIndustryRefund,
|
||||
checkAdminKuaishouIndustryVoucherAvailable,
|
||||
consumeAdminKuaishouIndustryVoucherByCode,
|
||||
disagreeAdminKuaishouIndustryRefund,
|
||||
listAdminKuaishouIndustryRefunds,
|
||||
listAdminKuaishouIndustryVouchers,
|
||||
resendAdminKuaishouIndustryVoucherCode,
|
||||
reverseAdminKuaishouIndustryVoucher,
|
||||
} from '../../services/admin/kuaishou-industry-admin-service.js'
|
||||
import { createJsonHandler, requireAdminRoles } from './session.js'
|
||||
import type {
|
||||
AdminKuaishouIndustryRefundApproveRouteBody,
|
||||
AdminKuaishouIndustryRefundDisagreeRouteBody,
|
||||
AdminKuaishouIndustryRefundListRouteBody,
|
||||
AdminKuaishouIndustryVoucherCheckAvailableRouteBody,
|
||||
AdminKuaishouIndustryVoucherConsumeRouteBody,
|
||||
AdminKuaishouIndustryVoucherResendRouteBody,
|
||||
AdminKuaishouIndustryVoucherReverseRouteBody,
|
||||
} from '../../types/admin/route-inputs.js'
|
||||
import type { KuaishouIndustryVoucherAdminListQuery } from '../../repositories/kuaishou-industry-voucher-repo.js'
|
||||
|
||||
const router = Router()
|
||||
|
||||
router.get(
|
||||
'/kuaishou-industry/vouchers',
|
||||
createJsonHandler(
|
||||
(req) => listAdminKuaishouIndustryVouchers(req.query as KuaishouIndustryVoucherAdminListQuery),
|
||||
{
|
||||
successMessage: 'ok',
|
||||
errorMessage: '查询快手行业电子凭证失败',
|
||||
scope: '[admin/kuaishou-industry/vouchers]',
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/refunds/list',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) => listAdminKuaishouIndustryRefunds(req.body as AdminKuaishouIndustryRefundListRouteBody),
|
||||
{
|
||||
successMessage: '售后单列表已查询',
|
||||
errorMessage: '查询快手售后单列表失败',
|
||||
scope: '[admin/kuaishou-industry/refunds/list]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_refund_list', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/refunds/approve',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
approveAdminKuaishouIndustryRefund(req.body as AdminKuaishouIndustryRefundApproveRouteBody),
|
||||
{
|
||||
successMessage: '同意退款接口已执行',
|
||||
errorMessage: '执行同意退款失败',
|
||||
scope: '[admin/kuaishou-industry/refunds/approve]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_refund_approve', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/refunds/disagree',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
disagreeAdminKuaishouIndustryRefund(req.body as AdminKuaishouIndustryRefundDisagreeRouteBody),
|
||||
{
|
||||
successMessage: '不同意退款接口已执行',
|
||||
errorMessage: '执行不同意退款失败',
|
||||
scope: '[admin/kuaishou-industry/refunds/disagree]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_refund_disagree', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/vouchers/check-available',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
checkAdminKuaishouIndustryVoucherAvailable(
|
||||
req.body as AdminKuaishouIndustryVoucherCheckAvailableRouteBody,
|
||||
),
|
||||
{
|
||||
successMessage: '电子凭证有效性已检查',
|
||||
errorMessage: '检查电子凭证有效性失败',
|
||||
scope: '[admin/kuaishou-industry/vouchers/check-available]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_voucher_check_available', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/vouchers/reverse',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
reverseAdminKuaishouIndustryVoucher(req.body as AdminKuaishouIndustryVoucherReverseRouteBody),
|
||||
{
|
||||
successMessage: '电子凭证冲正回调已执行',
|
||||
errorMessage: '执行电子凭证冲正失败',
|
||||
scope: '[admin/kuaishou-industry/vouchers/reverse]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_voucher_reverse', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/vouchers/consume',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
consumeAdminKuaishouIndustryVoucherByCode(
|
||||
req.body as AdminKuaishouIndustryVoucherConsumeRouteBody,
|
||||
),
|
||||
{
|
||||
successMessage: '电子凭证已手动核销',
|
||||
errorMessage: '手动核销电子凭证失败',
|
||||
scope: '[admin/kuaishou-industry/vouchers/consume]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_voucher_consume', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
router.post(
|
||||
'/kuaishou-industry/vouchers/resend-code',
|
||||
requireAdminRoles(['admin', 'operator']),
|
||||
createJsonHandler(
|
||||
(req) =>
|
||||
resendAdminKuaishouIndustryVoucherCode(
|
||||
req.body as AdminKuaishouIndustryVoucherResendRouteBody,
|
||||
),
|
||||
{
|
||||
successMessage: '电子凭证发码回调已重发',
|
||||
errorMessage: '重发电子凭证发码回调失败',
|
||||
scope: '[admin/kuaishou-industry/vouchers/resend-code]',
|
||||
audit: (req, data) => buildKuaishouIndustryAudit('kuaishou_industry_voucher_resend_code', req.body, data),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
function buildKuaishouIndustryAudit(action: string, body: unknown, data: unknown) {
|
||||
const payload = body && typeof body === 'object' ? body as Record<string, unknown> : {}
|
||||
const result = data && typeof data === 'object' ? data as Record<string, unknown> : {}
|
||||
|
||||
return {
|
||||
action,
|
||||
targetType: 'kuaishou_industry',
|
||||
targetId: resolveAuditTargetId(payload),
|
||||
data: {
|
||||
sellerId: String(payload.sellerId || ''),
|
||||
oid: String(payload.oid || payload.orderId || ''),
|
||||
voucherCode: String(payload.voucherCode || ''),
|
||||
refundId: String(payload.refundId || ''),
|
||||
success: Boolean(result.success),
|
||||
httpStatus: Number(result.httpStatus || 0) || 0,
|
||||
error: String(result.error || ''),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
function resolveAuditTargetId(payload: Record<string, unknown>): string {
|
||||
return String(
|
||||
payload.voucherCode ||
|
||||
payload.refundId ||
|
||||
payload.oid ||
|
||||
payload.orderId ||
|
||||
payload.sellerId ||
|
||||
'kuaishou-industry',
|
||||
)
|
||||
}
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user