@@ -7,7 +7,9 @@ import {
|
||||
WECOM_PUSH_DEFAULT_BIZ_TODO_CONDITIONS,
|
||||
WECOM_PUSH_DEFAULT_DEAL_BROADCAST_CONDITIONS,
|
||||
WECOM_PUSH_DEFAULT_DEV_DISPATCH_CONDITIONS,
|
||||
WECOM_PUSH_DEFAULT_SETTLEMENT_CONDITIONS,
|
||||
WECOM_PUSH_DEFAULT_STORE_AUDIT_CONDITIONS,
|
||||
WECOM_SETTLEMENT_PUSH_NAME,
|
||||
WECOM_STORE_AUDIT_PLACEHOLDER_WEBHOOK,
|
||||
WECOM_STORE_AUDIT_PUSH_NAME,
|
||||
WECOM_TEMPLATE_EVENT_KEYS,
|
||||
@@ -22,6 +24,7 @@ import { PrismaService } from '../../common/prisma/prisma.module';
|
||||
import { applyWecomAtMentionInContent } from '../../modules/dev-plan/dev-plan-wecom-mention.util';
|
||||
import {
|
||||
WECOM_PUSH_TEMPLATE_DEFAULTS,
|
||||
WECOM_PUSH_TEMPLATE_LEGACY_BODIES,
|
||||
buildHqHandleUrl,
|
||||
getDefaultTemplate,
|
||||
renderWecomTemplate,
|
||||
@@ -66,7 +69,7 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
}
|
||||
}
|
||||
|
||||
/** 表空时从 .env / 旧设置迁移;并确保门店审核 / 业务待办 / 成交播报 / 模板缺行 */
|
||||
/** 表空时从 .env / 旧设置迁移;并确保门店审核 / 业务待办 / 成交播报 / 结算通知 / 模板缺行 */
|
||||
async ensureDefaults(): Promise<void> {
|
||||
const count = await this.prisma.wecomMessagePush.count();
|
||||
if (count === 0) {
|
||||
@@ -141,6 +144,12 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
30,
|
||||
process.env.WECOM_DEAL_BROADCAST_WEBHOOK_URL,
|
||||
);
|
||||
await this.ensureNamedPush(
|
||||
WECOM_SETTLEMENT_PUSH_NAME,
|
||||
WECOM_PUSH_DEFAULT_SETTLEMENT_CONDITIONS,
|
||||
35,
|
||||
process.env.WECOM_SETTLEMENT_WEBHOOK_URL,
|
||||
);
|
||||
await this.ensureTemplates();
|
||||
}
|
||||
|
||||
@@ -181,22 +190,36 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
this.logger.log(`seeded wecom message push: ${name} (placeholder, disabled)`);
|
||||
}
|
||||
|
||||
/** 仅插入缺失 eventKey,不覆盖已有文案 */
|
||||
/** 插入缺失 eventKey;仅当 body 仍为上一版默认文案时升级,不覆盖 HQ 手改 */
|
||||
async ensureTemplates(): Promise<void> {
|
||||
for (const def of WECOM_PUSH_TEMPLATE_DEFAULTS) {
|
||||
const existing = await this.prisma.wecomPushTemplate.findUnique({
|
||||
where: { eventKey: def.eventKey },
|
||||
});
|
||||
if (existing) continue;
|
||||
await this.prisma.wecomPushTemplate.create({
|
||||
data: {
|
||||
eventKey: def.eventKey,
|
||||
title: def.title,
|
||||
body: def.body,
|
||||
handleLabel: def.handleLabel,
|
||||
},
|
||||
});
|
||||
this.logger.log(`seeded wecom push template: ${def.eventKey}`);
|
||||
if (!existing) {
|
||||
await this.prisma.wecomPushTemplate.create({
|
||||
data: {
|
||||
eventKey: def.eventKey,
|
||||
title: def.title,
|
||||
body: def.body,
|
||||
handleLabel: def.handleLabel,
|
||||
},
|
||||
});
|
||||
this.logger.log(`seeded wecom push template: ${def.eventKey}`);
|
||||
continue;
|
||||
}
|
||||
const legacy = WECOM_PUSH_TEMPLATE_LEGACY_BODIES[def.eventKey];
|
||||
if (legacy && existing.body === legacy) {
|
||||
await this.prisma.wecomPushTemplate.update({
|
||||
where: { eventKey: def.eventKey },
|
||||
data: {
|
||||
title: def.title,
|
||||
body: def.body,
|
||||
handleLabel: def.handleLabel,
|
||||
},
|
||||
});
|
||||
this.logger.log(`upgraded wecom push template from legacy default: ${def.eventKey}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,7 +470,9 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
orderNo: 'DK202608200001',
|
||||
payAmount: '199.00',
|
||||
cityName: '郑州',
|
||||
skuSummary: '杜康原浆 ×2',
|
||||
skuSummary: '杜康原浆 52度 瓶×2',
|
||||
deliveryLabel: '同城',
|
||||
receiverInfo: '张三 13800008000 河南省郑州市金水区示例路1号',
|
||||
phoneMasked: '138****8000',
|
||||
},
|
||||
handlePath: '/orders?orderNo=DK202608200001',
|
||||
@@ -458,6 +483,8 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
amount: '88.00',
|
||||
storeName: '示例门店',
|
||||
channel: '扫码',
|
||||
userName: '好客用户',
|
||||
userPhone: '138****8000',
|
||||
},
|
||||
handlePath: '/redeem-records?redeemNo=RD202608200001',
|
||||
},
|
||||
@@ -465,7 +492,8 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
vars: {
|
||||
storeName: '示例门店',
|
||||
cityName: '郑州',
|
||||
partnerLabel: '示例合伙人',
|
||||
submitter: '郑州某某商贸 · 张三',
|
||||
partnerLabel: '郑州某某商贸 · 张三',
|
||||
action: '新建',
|
||||
storeId: '1',
|
||||
},
|
||||
@@ -475,7 +503,7 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
vars: {
|
||||
storeName: '示例门店',
|
||||
cityName: '郑州',
|
||||
submitter: '合伙人',
|
||||
submitter: '郑州某某商贸 · 张三',
|
||||
packageCount: '3',
|
||||
requestId: '1',
|
||||
},
|
||||
@@ -485,7 +513,7 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
vars: {
|
||||
storeName: '示例门店',
|
||||
cityName: '郑州',
|
||||
submitter: '门店',
|
||||
submitter: '门店 · 李四',
|
||||
changedFields: '门店名称、详细地址',
|
||||
requestId: '1',
|
||||
},
|
||||
@@ -501,6 +529,16 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
},
|
||||
handlePath: '/finance/store-bills?kind=WITHDRAW&status=PENDING_REVIEW&storeId=1',
|
||||
},
|
||||
'store.withdraw_approved': {
|
||||
vars: {
|
||||
storeName: '示例门店',
|
||||
withdrawNo: 'SW202608200001',
|
||||
amount: '500.00',
|
||||
bankAccount: '张三 / 郑州支行 / 6222000011112222',
|
||||
storeId: '1',
|
||||
},
|
||||
handlePath: '/finance/store-bills?kind=WITHDRAW&status=PAID&storeId=1',
|
||||
},
|
||||
'invoice.pending': {
|
||||
vars: {
|
||||
invoiceNo: 'IV202608200001',
|
||||
@@ -511,6 +549,39 @@ export class WecomMessagePushService implements OnModuleInit {
|
||||
},
|
||||
handlePath: '/invoices?status=PENDING&invoiceNo=IV202608200001',
|
||||
},
|
||||
'finance.store_bill': {
|
||||
vars: {
|
||||
period: '2026-08-25',
|
||||
billCount: '2',
|
||||
billSummary: '示例门店 ¥300.00 张三 / 郑州支行 / 6222000011112222',
|
||||
},
|
||||
handlePath: '/finance/store-bills?kind=T1_BILL',
|
||||
},
|
||||
'finance.partner_bill': {
|
||||
vars: {
|
||||
period: '2026-07',
|
||||
billCount: '1',
|
||||
billSummary: '郑州某某商贸 ¥120.00 张三 / 郑州支行 / 6222000011112222',
|
||||
},
|
||||
handlePath: '/finance/partner-bills',
|
||||
},
|
||||
'finance.winery_bill': {
|
||||
vars: {
|
||||
period: '2026-08-23',
|
||||
amount: '1990.00',
|
||||
orderCount: '8',
|
||||
bankAccount: '杜康酒厂 / 洛阳支行 / 6222000099998888',
|
||||
},
|
||||
handlePath: '/finance/winery-bills',
|
||||
},
|
||||
'finance.logistics_bill': {
|
||||
vars: {
|
||||
period: '2026-07',
|
||||
billCount: '1',
|
||||
billSummary: '小飞侠 ¥86.00 承运商 / 郑州支行 / 6222000033334444',
|
||||
},
|
||||
handlePath: '/finance/logistics-bills',
|
||||
},
|
||||
};
|
||||
return samples[eventKey];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user