test-actual-fix.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // 实际修复测试 - 模拟真实场景
  2. console.log('=== 实际修复测试 ===\n');
  3. // 模拟实际打印内容(从数据库查询的结果)
  4. const actualPrintedContent = `订单号: ORD20251210112844577127
  5. 时间: 2025-12-10 19:28:44
  6. 商品: 洗护产品6 × 1 = ¥0.01
  7. 合计: ¥0.01
  8. 备注: {remark}
  9. 收货人姓名: 1
  10. 地址: 1
  11. 联系电话: 13100000000`;
  12. console.log('实际打印内容:');
  13. console.log(actualPrintedContent);
  14. console.log('\n是否包含 {remark}:', actualPrintedContent.includes('{remark}'));
  15. // 修复逻辑测试
  16. function testFix() {
  17. console.log('\n=== 测试修复逻辑 ===');
  18. // 场景1: 模板是 备注: {remark}
  19. const template1 = `订单号: {orderNo}
  20. 时间: {orderTime}
  21. 商品: {goodsList}
  22. 合计: {payAmount}
  23. 备注: {remark}
  24. 收货人姓名: {receiverName}
  25. 地址: {address}
  26. 联系电话: {receiverPhone}`;
  27. // 场景2: 模板是 备注1: {remark}(数据库中的)
  28. const template2 = `订单号: {orderNo}
  29. 时间: {orderTime}
  30. 商品: {goodsList}
  31. 合计: {totalAmount}
  32. 备注1: {remark}
  33. 收货人姓名: {receiverName}
  34. 地址: {address}
  35. 联系电话: {phone}`;
  36. const variables = {
  37. orderNo: 'TEST123',
  38. orderTime: '2025-12-10 12:00:00',
  39. goodsList: '测试商品 × 1 = ¥1.00',
  40. payAmount: '¥1.00',
  41. totalAmount: '¥1.00',
  42. remark: '测试备注内容',
  43. receiverName: '张三',
  44. address: '测试地址',
  45. receiverPhone: '13800138000',
  46. phone: '13800138000'
  47. };
  48. // 测试修复后的替换逻辑
  49. function applyFix(template, vars) {
  50. let content = template;
  51. // 1. 标准替换
  52. for (const [key, value] of Object.entries(vars)) {
  53. const safeValue = value != null ? String(value) : '无';
  54. const placeholder = `{${key}}`;
  55. if (content.includes(placeholder)) {
  56. content = content.split(placeholder).join(safeValue);
  57. }
  58. }
  59. // 2. 清理未替换的 {remark}
  60. const remarkPatterns = [
  61. /\{remark\}/g,
  62. /\{\s*remark\s*\}/g,
  63. ];
  64. for (const pattern of remarkPatterns) {
  65. if (pattern.test(content)) {
  66. const safeRemark = vars.remark != null ? String(vars.remark) : '无';
  67. content = content.replace(pattern, safeRemark);
  68. }
  69. }
  70. return content;
  71. }
  72. console.log('\n1. 模板: 备注: {remark}');
  73. const result1 = applyFix(template1, variables);
  74. console.log('结果:', result1.includes('{remark}') ? '❌ 仍有 {remark}' : '✅ 已替换');
  75. console.log(result1);
  76. console.log('\n2. 模板: 备注1: {remark}');
  77. const result2 = applyFix(template2, variables);
  78. console.log('结果:', result2.includes('{remark}') ? '❌ 仍有 {remark}' : '✅ 已替换');
  79. console.log(result2);
  80. console.log('\n3. 空备注测试');
  81. const emptyVars = { ...variables, remark: null };
  82. const result3 = applyFix(template1, emptyVars);
  83. console.log('结果:', result3.includes('{remark}') ? '❌ 仍有 {remark}' : '✅ 已替换');
  84. console.log(result3);
  85. }
  86. testFix();
  87. console.log('\n\n=== 建议操作 ===');
  88. console.log('1. 重启服务清除缓存');
  89. console.log('2. 更新数据库模板为正确格式');
  90. console.log('3. 创建一个测试订单验证修复效果');
  91. console.log('4. 检查是否有其他代码修改模板');