feat(douyin-mashida): 全面统一为 /h5/<订单号> 直充路径,更新面板提示与直发链接生成

- 抖音码速达买家直充链接与兜底配置基址统一改为 https://<域名>/h5(直充路径为 /h5/<订单号>)
- 前端配置面板示例与提示升级为真实 16 位平台订单号形态(如 /h5/2628301923197355)
- 一键填入域名同步适配 /h5 基址,并在后端发券与发货私信推送中直接生成 /h5/<订单号>
- 数据库本地配置同步更新为 http://localhost/h5

验证方式:前端类型检查与打包构建通过,全量 132 项前端单测与 674 项后端单测全部通过
This commit is contained in:
yml2213
2026-10-10 20:10:09 +08:00
parent d8ce40e346
commit c54dbda344
4 changed files with 46 additions and 29 deletions
@@ -246,23 +246,34 @@ async function notifyBuyerClaimLink(input: {
if (input.config.claimMessageEnabled === false) {
return
}
if (!String(input.config.claimLinkBase || '').trim()) {
return
}
const claimLink = await resolveOrderItemClaimLink({
orderId: input.order.id,
orderItemId: input.orderItem.id,
claimLinkBase: input.config.claimLinkBase,
})
if (!claimLink.claimUrl) {
const claimLinkBase = String(input.config.claimLinkBase || '').trim().replace(/\/+$/, '')
if (!claimLinkBase) {
return
}
const orderNo = resolveReceiptOrderId(input.order, input.orderItem)
let claimUrl = ''
let taskId: number | undefined
if (claimLinkBase.endsWith('/h5') || claimLinkBase.includes('/h5/')) {
claimUrl = `${claimLinkBase}/${orderNo}`
} else {
const claimLink = await resolveOrderItemClaimLink({
orderId: input.order.id,
orderItemId: input.orderItem.id,
claimLinkBase: input.config.claimLinkBase,
})
claimUrl = claimLink.claimUrl
taskId = claimLink.taskId
}
if (!claimUrl) {
return
}
const content = buildDouyinMashidaClaimMessage({
config: input.config,
claimUrl: claimLink.claimUrl,
claimUrl,
sku: input.orderItem.sku_code,
orderNo,
productTitle: input.orderItem.sku_name,
@@ -277,7 +288,7 @@ async function notifyBuyerClaimLink(input: {
orderId: input.order.id,
orderItemId: input.orderItem.id,
orderNo,
taskId: claimLink.taskId,
taskId,
})
}
@@ -140,10 +140,16 @@ export async function resolveDouyinMashidaCertLink(input: {
config: DouyinMashidaSourceConfig
}): Promise<string> {
const fallback = String(input.config.certLink || '').trim()
if (!String(input.config.claimLinkBase || '').trim()) {
const claimLinkBase = String(input.config.claimLinkBase || '').trim().replace(/\/+$/, '')
if (!claimLinkBase) {
return fallback
}
const orderNo = resolveReceiptOrderId(input.order, input.orderItem)
if (claimLinkBase.endsWith('/h5') || claimLinkBase.includes('/h5/')) {
return `${claimLinkBase}/${orderNo}`
}
const claimLink = await resolveOrderItemClaimLink({
orderId: input.order.id,
orderItemId: input.orderItem.id,