-- ===================================================== -- 积分订单售后单表 fs_integral_after_sales -- 创建时间:2026-07-21 -- 说明:参考 fs_store_after_sales_scrm 表结构,针对积分订单特性优化 -- - 新增 refund_integral 字段记录退回积分 -- - 新增 refund_amount 字段记录退款金额 -- - 不含 store_id(积分订单无店铺概念) -- - 不含 is_package / package_json(积分订单无套餐概念) -- ===================================================== DROP TABLE IF EXISTS `fs_integral_after_sales`; CREATE TABLE `fs_integral_after_sales` ( `id` BIGINT NOT NULL COMMENT '主键', `order_id` BIGINT DEFAULT NULL COMMENT '积分订单ID', `order_code` VARCHAR(64) NOT NULL COMMENT '订单编号', `user_id` BIGINT DEFAULT NULL COMMENT '用户ID', `company_id` BIGINT DEFAULT NULL COMMENT '企业ID', `company_user_id` BIGINT DEFAULT NULL COMMENT '企业员工ID', `refund_amount` DECIMAL(10,2) DEFAULT '0.00' COMMENT '退款金额', `refund_integral` BIGINT DEFAULT '0' COMMENT '退回积分', `service_type` TINYINT DEFAULT 0 COMMENT '服务类型 0仅退款 1退货退款', `reasons` VARCHAR(255) DEFAULT NULL COMMENT '申请原因', `explains` VARCHAR(500) DEFAULT NULL COMMENT '说明', `explain_img` VARCHAR(1000) DEFAULT NULL COMMENT '说明图片,多个用逗号分割', `shipper_code` VARCHAR(50) DEFAULT NULL COMMENT '物流公司编码', `delivery_sn` VARCHAR(64) DEFAULT NULL COMMENT '物流单号', `delivery_name` VARCHAR(100) DEFAULT NULL COMMENT '物流名称', `delivery_code` VARCHAR(50) DEFAULT NULL COMMENT '物流公司编码(兼容字段)', `status` TINYINT DEFAULT 0 COMMENT '审核状态 0已提交待平台审核 1平台已审核 2用户已发货待仓库审核 3仓库已审核待财务审核 4退款中(财务已发起退款,等待回调确认) 5退款成功(回调确认完成)', `sales_status` TINYINT DEFAULT 0 COMMENT '售后状态 0正常 1用户取消 2商家拒绝 3已完成', `order_status` TINYINT DEFAULT NULL COMMENT '订单当前状态(冗余记录)', `consignee` VARCHAR(100) DEFAULT NULL COMMENT '商家收货人', `phone_number` VARCHAR(20) DEFAULT NULL COMMENT '商家手机号', `address` VARCHAR(500) DEFAULT NULL COMMENT '商家地址', `consignee_phone` VARCHAR(20) DEFAULT NULL COMMENT '商家收货电话', `dept_id` BIGINT DEFAULT NULL COMMENT '部门ID', `operator` VARCHAR(64) DEFAULT NULL COMMENT '操作人', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', `is_del` TINYINT DEFAULT 0 COMMENT '逻辑删除 0正常 1已删除', `create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建者', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新者', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_order_code` (`order_code`), KEY `idx_user_id` (`user_id`), KEY `idx_company_id` (`company_id`), KEY `idx_status` (`status`, `sales_status`), KEY `idx_create_time` (`create_time`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '积分订单售后单'; -- ===================================================== -- 菜单与权限初始化 -- 说明:以下 menu_id 使用占位值,执行前请根据实际 sys_menu 表的 max(menu_id) 调整 -- parent_id 需替换为"积分订单"菜单的 menu_id(可执行下方查询获取) -- SELECT menu_id, menu_name FROM sys_menu WHERE menu_name LIKE '%积分%'; -- ===================================================== -- 1. 主菜单:积分售后管理(目录下挂载页面) -- 注意:parent_id 请替换为实际的"积分订单"父菜单ID 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) VALUES (3001, '积分售后管理', 0, 50, 'integralAfterSales', 'his/integralAfterSales/index', 1, 0, 'C', '0', '0', 'his:integralAfterSales:list', 'shopping', 'admin', NOW(), '积分订单售后管理菜单'); -- 2. 按钮权限 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) VALUES (3002, '积分售后查询', 3001, 1, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:query', '#', 'admin', NOW(), ''); 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) VALUES (3003, '积分售后导出', 3001, 2, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:export', '#', 'admin', NOW(), ''); 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) VALUES (3004, '积分售后平台审核', 3001, 3, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:audit', '#', 'admin', NOW(), ''); 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) VALUES (3005, '积分售后撤销', 3001, 4, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:cancel', '#', 'admin', NOW(), ''); 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) VALUES (3006, '积分售后财务退款', 3001, 5, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:refund', '#', 'admin', NOW(), ''); 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) VALUES (3007, '积分售后编辑物流', 3001, 6, '#', '', 1, 0, 'F', '0', '0', 'his:integralAfterSales:edit', '#', 'admin', NOW(), ''); -- ===================================================== -- 积分售后独立状态字典 integral_after_sales_status -- 创建时间:2026-07-24 -- 说明:积分售后使用独立字典,与商城售后(store_after_sales_status)隔离 -- 仅退款(serviceType=0): 0→1→4→5 -- 退款退货(serviceType=1): 0→1→2→3→4→5 -- ===================================================== -- 1. 字典类型 INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark) VALUES ('积分售后状态', 'integral_after_sales_status', '0', 'admin', NOW(), '积分订单售后审核状态字典'); -- 2. 字典数据 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) VALUES (0, '已提交', '0', 'integral_after_sales_status', '', 'info', 'N', '0', 'admin', NOW(), '用户提交售后申请,待平台审核'), (1, '已审核', '1', 'integral_after_sales_status', '', 'warning', 'N', '0', 'admin', NOW(), '平台已审核,仅退款等待财务退款/退款退货等待用户发货'), (2, '已发货', '2', 'integral_after_sales_status', '', 'warning', 'N', '0', 'admin', NOW(), '用户已寄回商品,待仓库审核'), (3, '仓库已审核', '3', 'integral_after_sales_status', '', 'primary', 'N', '0', 'admin', NOW(), '仓库已确认收货,待财务退款'), (4, '退款中', '4', 'integral_after_sales_status', '', 'danger', 'N', '0', 'admin', NOW(), '财务已发起退款,等待回调确认'), (5, '退款成功', '5', 'integral_after_sales_status', '', 'success', 'N', '0', 'admin', NOW(), '退款回调确认完成,售后流程结束'); -- 3. 数据迁移说明 -- 若已有旧数据使用 status=3(原退款成功) 或 status=4(原退款成功),需根据实际业务状态调整: -- - 已发起退款但未回调成功的:status=4(退款中) -- - 回调成功的:status=5(退款成功) -- UPDATE fs_integral_after_sales SET status = 5 WHERE status = 4 AND sales_status = 3; -- UPDATE fs_integral_after_sales SET status = 4 WHERE status = 3 AND sales_status = 0;