积分售后表_数据库变更.sql 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. -- =====================================================
  2. -- 积分订单售后单表 fs_integral_after_sales
  3. -- 创建时间:2026-07-21
  4. -- 说明:参考 fs_store_after_sales_scrm 表结构,针对积分订单特性优化
  5. -- - 新增 refund_integral 字段记录退回积分
  6. -- - 新增 refund_amount 字段记录退款金额
  7. -- - 不含 store_id(积分订单无店铺概念)
  8. -- - 不含 is_package / package_json(积分订单无套餐概念)
  9. -- =====================================================
  10. DROP TABLE IF EXISTS `fs_integral_after_sales`;
  11. CREATE TABLE `fs_integral_after_sales` (
  12. `id` BIGINT NOT NULL COMMENT '主键',
  13. `order_id` BIGINT DEFAULT NULL COMMENT '积分订单ID',
  14. `order_code` VARCHAR(64) NOT NULL COMMENT '订单编号',
  15. `user_id` BIGINT DEFAULT NULL COMMENT '用户ID',
  16. `company_id` BIGINT DEFAULT NULL COMMENT '企业ID',
  17. `company_user_id` BIGINT DEFAULT NULL COMMENT '企业员工ID',
  18. `refund_amount` DECIMAL(10,2) DEFAULT '0.00' COMMENT '退款金额',
  19. `refund_integral` BIGINT DEFAULT '0' COMMENT '退回积分',
  20. `service_type` TINYINT DEFAULT 0 COMMENT '服务类型 0仅退款 1退货退款',
  21. `reasons` VARCHAR(255) DEFAULT NULL COMMENT '申请原因',
  22. `explains` VARCHAR(500) DEFAULT NULL COMMENT '说明',
  23. `explain_img` VARCHAR(1000) DEFAULT NULL COMMENT '说明图片,多个用逗号分割',
  24. `shipper_code` VARCHAR(50) DEFAULT NULL COMMENT '物流公司编码',
  25. `delivery_sn` VARCHAR(64) DEFAULT NULL COMMENT '物流单号',
  26. `delivery_name` VARCHAR(100) DEFAULT NULL COMMENT '物流名称',
  27. `delivery_code` VARCHAR(50) DEFAULT NULL COMMENT '物流公司编码(兼容字段)',
  28. `status` TINYINT DEFAULT 0 COMMENT '审核状态 0已提交待平台审核 1平台已审核 2用户已发货待仓库审核 3仓库已审核待财务审核 4退款中(财务已发起退款,等待回调确认) 5退款成功(回调确认完成)',
  29. `sales_status` TINYINT DEFAULT 0 COMMENT '售后状态 0正常 1用户取消 2商家拒绝 3已完成',
  30. `order_status` TINYINT DEFAULT NULL COMMENT '订单当前状态(冗余记录)',
  31. `consignee` VARCHAR(100) DEFAULT NULL COMMENT '商家收货人',
  32. `phone_number` VARCHAR(20) DEFAULT NULL COMMENT '商家手机号',
  33. `address` VARCHAR(500) DEFAULT NULL COMMENT '商家地址',
  34. `consignee_phone` VARCHAR(20) DEFAULT NULL COMMENT '商家收货电话',
  35. `dept_id` BIGINT DEFAULT NULL COMMENT '部门ID',
  36. `operator` VARCHAR(64) DEFAULT NULL COMMENT '操作人',
  37. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  38. `is_del` TINYINT DEFAULT 0 COMMENT '逻辑删除 0正常 1已删除',
  39. `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
  40. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  41. `update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
  42. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  43. PRIMARY KEY (`id`),
  44. KEY `idx_order_id` (`order_id`),
  45. KEY `idx_order_code` (`order_code`),
  46. KEY `idx_user_id` (`user_id`),
  47. KEY `idx_company_id` (`company_id`),
  48. KEY `idx_status` (`status`, `sales_status`),
  49. KEY `idx_create_time` (`create_time`)
  50. ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '积分订单售后单';
  51. -- =====================================================
  52. -- 菜单与权限初始化
  53. -- 说明:以下 menu_id 使用占位值,执行前请根据实际 sys_menu 表的 max(menu_id) 调整
  54. -- parent_id 需替换为"积分订单"菜单的 menu_id(可执行下方查询获取)
  55. -- SELECT menu_id, menu_name FROM sys_menu WHERE menu_name LIKE '%积分%';
  56. -- =====================================================
  57. -- 1. 主菜单:积分售后管理(目录下挂载页面)
  58. -- 注意:parent_id 请替换为实际的"积分订单"父菜单ID
  59. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  60. VALUES (3001, '积分售后管理', 0, 50, 'integralAfterSales', 'his/integralAfterSales/index', 1, 0, 'C', '0', '0', 'his:integralAfterSales:list', 'shopping', 'admin', NOW(), '积分订单售后管理菜单');
  61. -- 2. 按钮权限
  62. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  63. VALUES (3002, '积分售后查询', 3001, 1, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:query', '#', 'admin', NOW(), '');
  64. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  65. VALUES (3003, '积分售后导出', 3001, 2, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:export', '#', 'admin', NOW(), '');
  66. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  67. VALUES (3004, '积分售后平台审核', 3001, 3, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:audit', '#', 'admin', NOW(), '');
  68. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  69. VALUES (3005, '积分售后撤销', 3001, 4, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:cancel', '#', 'admin', NOW(), '');
  70. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  71. VALUES (3006, '积分售后财务退款', 3001, 5, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:refund', '#', 'admin', NOW(), '');
  72. INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
  73. VALUES (3007, '积分售后编辑物流', 3001, 6, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:edit', '#', 'admin', NOW(), '');
  74. -- =====================================================
  75. -- 积分售后独立状态字典 integral_after_sales_status
  76. -- 创建时间:2026-07-24
  77. -- 说明:积分售后使用独立字典,与商城售后(store_after_sales_status)隔离
  78. -- 仅退款(serviceType=0): 0→1→4→5
  79. -- 退款退货(serviceType=1): 0→1→2→3→4→5
  80. -- =====================================================
  81. -- 1. 字典类型
  82. INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
  83. VALUES ('积分售后状态', 'integral_after_sales_status', '0', 'admin', NOW(), '积分订单售后审核状态字典');
  84. -- 2. 字典数据
  85. INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  86. VALUES
  87. (0, '已提交', '0', 'integral_after_sales_status', '', 'info', 'N', '0', 'admin', NOW(), '用户提交售后申请,待平台审核'),
  88. (1, '已审核', '1', 'integral_after_sales_status', '', 'warning', 'N', '0', 'admin', NOW(), '平台已审核,仅退款等待财务退款/退款退货等待用户发货'),
  89. (2, '已发货', '2', 'integral_after_sales_status', '', 'warning', 'N', '0', 'admin', NOW(), '用户已寄回商品,待仓库审核'),
  90. (3, '仓库已审核', '3', 'integral_after_sales_status', '', 'primary', 'N', '0', 'admin', NOW(), '仓库已确认收货,待财务退款'),
  91. (4, '退款中', '4', 'integral_after_sales_status', '', 'danger', 'N', '0', 'admin', NOW(), '财务已发起退款,等待回调确认'),
  92. (5, '退款成功', '5', 'integral_after_sales_status', '', 'success', 'N', '0', 'admin', NOW(), '退款回调确认完成,售后流程结束');
  93. -- 3. 数据迁移说明
  94. -- 若已有旧数据使用 status=3(原退款成功) 或 status=4(原退款成功),需根据实际业务状态调整:
  95. -- - 已发起退款但未回调成功的:status=4(退款中)
  96. -- - 回调成功的:status=5(退款成功)
  97. -- UPDATE fs_integral_after_sales SET status = 5 WHERE status = 4 AND sales_status = 3;
  98. -- UPDATE fs_integral_after_sales SET status = 4 WHERE status = 3 AND sales_status = 0;