import { Router } from 'express' import { createRateLimitMiddleware, getParamRateLimitKey } from '../middleware/rate-limit.js' import { getH5ClaimDetailByOrderNo, getKuaishouCloudClaimDetail, submitAffiliateDashClaim, submitClaimUid, submitH5AffiliateDashClaimByOrderNo, submitH5ClaimUidByOrderNo, } from '../services/claim/kuaishou-cloud-claim-service.js' import { buildNotFoundPayload, createRouteHandler } from '../utils/http.js' const router = Router() const claimReadRateLimit = createRateLimitMiddleware({ scope: 'claim:read', windowMs: 60_000, max: 120, key: getParamRateLimitKey('token'), }) const claimWriteRateLimit = createRateLimitMiddleware({ scope: 'claim:write', windowMs: 60_000, max: 30, key: getParamRateLimitKey('token'), }) const h5ReadRateLimit = createRateLimitMiddleware({ scope: 'claim:h5:read', windowMs: 60_000, max: 120, key: getParamRateLimitKey('orderNo'), }) const h5WriteRateLimit = createRateLimitMiddleware({ scope: 'claim:h5:write', windowMs: 60_000, max: 30, key: getParamRateLimitKey('orderNo'), }) router.get( '/h5/:orderNo', h5ReadRateLimit, createRouteHandler((req) => getH5ClaimDetailByOrderNo(req.params.orderNo), { errorMessage: '查询订单领取详情失败', scope: '[claims/h5/:orderNo]', }), ) router.post( '/h5/:orderNo/uid', h5WriteRateLimit, createRouteHandler((req) => submitH5ClaimUidByOrderNo(req.params.orderNo, req.body || {}), { successMessage: 'UID 已提交', errorMessage: '提交 UID 失败', scope: '[claims/h5/:orderNo/uid]', }), ) router.post( '/h5/:orderNo/affiliate-dash/submit', h5WriteRateLimit, createRouteHandler( (req) => submitH5AffiliateDashClaimByOrderNo(req.params.orderNo, req.body || {}), { successMessage: '发货已提交', errorMessage: '提交发货失败', scope: '[claims/h5/:orderNo/affiliate-dash/submit]', }, ), ) router.get( '/:token', claimReadRateLimit, createRouteHandler((req) => getKuaishouCloudClaimDetail(req.params.token), { errorMessage: '查询快手领取详情失败', scope: '[claims/:token]', }), ) router.post( '/:token/uid', claimWriteRateLimit, createRouteHandler((req) => submitClaimUid(req.params.token, req.body || {}), { successMessage: 'UID 已提交', errorMessage: '提交 UID 失败', scope: '[claims/:token/uid]', }), ) router.post( '/:token/affiliate-dash/submit', claimWriteRateLimit, createRouteHandler((req) => submitAffiliateDashClaim(req.params.token, req.body || {}), { successMessage: '发货已提交', errorMessage: '提交发货失败', scope: '[claims/:token/affiliate-dash/submit]', }), ) router.use((req, res) => { res.status(404).json(buildNotFoundPayload(req)) }) export default router