默认消息模板增加换行-待测试
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"defaults": {
|
"defaults": {
|
||||||
"messageTemplate": "您的订单 {platformOrderId} 已创建领取链接,请您复制链接到 浏览器 自动兑换, 请尽快打开并完成领取:\\n\\n{claimUrl}",
|
"messageTemplate": "您的订单 {platformOrderId} 已创建领取链接,请您复制链接到浏览器自动兑换,请尽快打开并完成领取:\n\n{claimUrl}",
|
||||||
"autoDeliveryMessageTemplate": "亲亲,您购买的兑换码已自行兑换成功,请在游戏中邮件领取,感谢您的支持"
|
"autoDeliveryMessageTemplate": "亲亲,您购买的兑换码已自行兑换成功,请在游戏中邮件领取,感谢您的支持"
|
||||||
},
|
},
|
||||||
"shops": {
|
"shops": {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
saveAgisoMessagingConfig,
|
saveAgisoMessagingConfig,
|
||||||
} from '../platforms/agiso/shop-config-service.js'
|
} from '../platforms/agiso/shop-config-service.js'
|
||||||
import { enrichAgisoXianyuTradeOrder } from '../platforms/agiso/xianyu/order-detail-service.js'
|
import { enrichAgisoXianyuTradeOrder } from '../platforms/agiso/xianyu/order-detail-service.js'
|
||||||
|
import { normalizeAgisoMessageTemplate } from '../platforms/agiso/xianyu/message-service.js'
|
||||||
import {
|
import {
|
||||||
getOrderFulfillmentBindingConfigs,
|
getOrderFulfillmentBindingConfigs,
|
||||||
getOrderFulfillmentBindingsFilePath,
|
getOrderFulfillmentBindingsFilePath,
|
||||||
@@ -141,8 +142,8 @@ export function updateAdminAgisoShopConfigs(payload = /** @type {AdminAgisoShopC
|
|||||||
|
|
||||||
function mapAdminAgisoMessagingDefaults(defaults = {}) {
|
function mapAdminAgisoMessagingDefaults(defaults = {}) {
|
||||||
return {
|
return {
|
||||||
messageTemplate: String(defaults.messageTemplate || '').trim(),
|
messageTemplate: normalizeAgisoMessageTemplate(String(defaults.messageTemplate || '').trim()),
|
||||||
autoDeliveryMessageTemplate: String(defaults.autoDeliveryMessageTemplate || '').trim(),
|
autoDeliveryMessageTemplate: normalizeAgisoMessageTemplate(String(defaults.autoDeliveryMessageTemplate || '').trim()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,8 +154,8 @@ function mapAdminAgisoShopConfigItem(shopId, config = {}) {
|
|||||||
accessToken: String(config.accessToken || '').trim(),
|
accessToken: String(config.accessToken || '').trim(),
|
||||||
accessTokenMasked: maskSecret(config.accessToken),
|
accessTokenMasked: maskSecret(config.accessToken),
|
||||||
enabled: typeof config.enabled === 'boolean' ? config.enabled : null,
|
enabled: typeof config.enabled === 'boolean' ? config.enabled : null,
|
||||||
messageTemplate: String(config.messageTemplate || '').trim(),
|
messageTemplate: normalizeAgisoMessageTemplate(String(config.messageTemplate || '').trim()),
|
||||||
autoDeliveryMessageTemplate: String(config.autoDeliveryMessageTemplate || '').trim(),
|
autoDeliveryMessageTemplate: normalizeAgisoMessageTemplate(String(config.autoDeliveryMessageTemplate || '').trim()),
|
||||||
appSecretConfigured: Boolean(String(config.appSecret || '').trim()),
|
appSecretConfigured: Boolean(String(config.appSecret || '').trim()),
|
||||||
apiVersion: String(config.apiVersion || '').trim(),
|
apiVersion: String(config.apiVersion || '').trim(),
|
||||||
sendMessageEndpoint: String(config.sendMessageEndpoint || '').trim(),
|
sendMessageEndpoint: String(config.sendMessageEndpoint || '').trim(),
|
||||||
@@ -168,7 +169,7 @@ function applyOptionalStringField(target, key, source) {
|
|||||||
|
|
||||||
const value = String(source[key] || '').trim()
|
const value = String(source[key] || '').trim()
|
||||||
if (value) {
|
if (value) {
|
||||||
target[key] = value
|
target[key] = normalizeAgisoMessageTemplate(value)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,13 @@ export async function ensureAgisoXianyuAutoDeliveryMessageDeliveredForTask({ ord
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function normalizeAgisoMessageTemplate(value) {
|
||||||
|
return String(value || '')
|
||||||
|
.replaceAll('\\r\\n', '\n')
|
||||||
|
.replaceAll('\\n', '\n')
|
||||||
|
.replaceAll('\r\n', '\n')
|
||||||
|
}
|
||||||
|
|
||||||
async function deliverAgisoXianyuMessageForTask({
|
async function deliverAgisoXianyuMessageForTask({
|
||||||
order,
|
order,
|
||||||
task,
|
task,
|
||||||
@@ -241,7 +248,8 @@ function generateSign(params, appSecret) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function renderAgisoClaimMessage({ order, task, claimUrl, expiredAt, template, shopName = '' }) {
|
function renderAgisoClaimMessage({ order, task, claimUrl, expiredAt, template, shopName = '' }) {
|
||||||
const source = String(template || '').trim() || '您的订单 {platformOrderId} 已创建领取链接,请在 {expiredAt} 前完成领取:{claimUrl}'
|
const source = normalizeAgisoMessageTemplate(String(template || '').trim())
|
||||||
|
|| '您的订单 {platformOrderId} 已创建领取链接,请在 {expiredAt} 前完成领取:{claimUrl}'
|
||||||
|
|
||||||
return renderAgisoMessageTemplate({
|
return renderAgisoMessageTemplate({
|
||||||
order,
|
order,
|
||||||
@@ -254,7 +262,8 @@ function renderAgisoClaimMessage({ order, task, claimUrl, expiredAt, template, s
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function renderAgisoAutoDeliveryMessage({ order, task, template, shopName = '' }) {
|
export function renderAgisoAutoDeliveryMessage({ order, task, template, shopName = '' }) {
|
||||||
const source = String(template || '').trim() || '您的订单 {platformOrderId} 已完成自动发货,请注意查收。'
|
const source = normalizeAgisoMessageTemplate(String(template || '').trim())
|
||||||
|
|| '您的订单 {platformOrderId} 已完成自动发货,请注意查收。'
|
||||||
|
|
||||||
return renderAgisoMessageTemplate({
|
return renderAgisoMessageTemplate({
|
||||||
order,
|
order,
|
||||||
@@ -276,7 +285,7 @@ function renderAgisoMessageTemplate({
|
|||||||
} = {}) {
|
} = {}) {
|
||||||
const resolvedShopName = String(shopName || order?.shop_name || order?.shop_id || '').trim()
|
const resolvedShopName = String(shopName || order?.shop_name || order?.shop_id || '').trim()
|
||||||
|
|
||||||
return String(template || '')
|
return normalizeAgisoMessageTemplate(template)
|
||||||
.replaceAll('{platformOrderId}', String(order?.platform_order_id || ''))
|
.replaceAll('{platformOrderId}', String(order?.platform_order_id || ''))
|
||||||
.replaceAll('{taskNo}', String(task?.task_no || ''))
|
.replaceAll('{taskNo}', String(task?.task_no || ''))
|
||||||
.replaceAll('{shopName}', resolvedShopName)
|
.replaceAll('{shopName}', resolvedShopName)
|
||||||
|
|||||||
@@ -2,7 +2,11 @@ import test from 'node:test'
|
|||||||
import assert from 'node:assert/strict'
|
import assert from 'node:assert/strict'
|
||||||
|
|
||||||
import { runtimeConfig } from '../../../../config/runtime.js'
|
import { runtimeConfig } from '../../../../config/runtime.js'
|
||||||
import { deliverAgisoXianyuMessageForTaskWithDeps } from './message-service.js'
|
import {
|
||||||
|
deliverAgisoXianyuMessageForTaskWithDeps,
|
||||||
|
normalizeAgisoMessageTemplate,
|
||||||
|
renderAgisoAutoDeliveryMessage,
|
||||||
|
} from './message-service.js'
|
||||||
|
|
||||||
test('deliverAgisoXianyuMessageForTaskWithDeps skips duplicate successful claim message by order scope', async () => {
|
test('deliverAgisoXianyuMessageForTaskWithDeps skips duplicate successful claim message by order scope', async () => {
|
||||||
const originalMessaging = runtimeConfig.platforms.agiso.messaging
|
const originalMessaging = runtimeConfig.platforms.agiso.messaging
|
||||||
@@ -74,3 +78,26 @@ test('deliverAgisoXianyuMessageForTaskWithDeps skips duplicate successful claim
|
|||||||
runtimeConfig.platforms.agiso.appSecret = originalAppSecret
|
runtimeConfig.platforms.agiso.appSecret = originalAppSecret
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('normalizeAgisoMessageTemplate converts escaped newline sequences into real line breaks', () => {
|
||||||
|
assert.equal(
|
||||||
|
normalizeAgisoMessageTemplate('第一行\\n第二行\\r\\n第三行'),
|
||||||
|
'第一行\n第二行\n第三行',
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('renderAgisoAutoDeliveryMessage supports escaped newlines in configured template', () => {
|
||||||
|
const message = renderAgisoAutoDeliveryMessage({
|
||||||
|
order: {
|
||||||
|
platform_order_id: '4502280133178028841',
|
||||||
|
shop_id: '2209880145223',
|
||||||
|
shop_name: '大锤号商',
|
||||||
|
},
|
||||||
|
task: {
|
||||||
|
task_no: 'DT7af76e9b2438',
|
||||||
|
},
|
||||||
|
template: '订单 {platformOrderId}\\n结果:{resultMessage}',
|
||||||
|
})
|
||||||
|
|
||||||
|
assert.equal(message, '订单 4502280133178028841\n结果:自动发货成功')
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user