-- =====================================================
-- 积分订单状态字典重构 + 售后时效支持
-- 创建时间：2026-07-22
-- 更新时间：2026-07-24
-- 说明：
--   1. fs_integral_order 表新增 finish_time 字段（完成时间），用于售后时效校验
--   2. 调整 sys_integral_order_status 字典：
--      - 1待发货 / 2待收货 / 3已完成 / 4待支付 / 5已取消（原有）
--      - -1售后中（用户提交售后申请）/ -2已退款（退款成功）
--      （取消原 -3 已取消，与 5 已取消合并；原 -1 退款中 改名为 售后中）
--   3. 状态与代码逻辑对齐：markAfterSalesStatus(-1售后中)、refundOrder(-2已退款)、cancelOrder(5已取消)
-- =====================================================

-- 1. fs_integral_order 新增 finish_time 字段
ALTER TABLE `fs_integral_order`
    ADD COLUMN `finish_time` DATETIME DEFAULT NULL COMMENT '完成时间（确认收货时间）'
    AFTER `delivery_time`;

-- 2. 积分订单状态字典（-1/-2）
-- 注意：执行前先查询 SELECT dict_code FROM sys_dict_data WHERE dict_type='sys_integral_order_status' AND dict_value='-1';
--       若已存在记录，改为 UPDATE 而非 INSERT
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
    (-1, '售后中', '-1', 'sys_integral_order_status', '', 'warning', 'N', '0', 'admin', NOW(), '售后申请已提交，等待处理'),
    (-2, '已退款', '-2', 'sys_integral_order_status', '', 'danger', 'N', '0', 'admin', NOW(), '退款成功');

-- 3. 删除原 -3 已取消 字典（与 5 已取消 合并）
DELETE FROM sys_dict_data WHERE dict_type = 'sys_integral_order_status' AND dict_value = '-3';

-- 4. 老数据清洗
--    4.1 原 status=-1 的订单（原"已取消"语义）应更新为 status=5（已取消）
--    4.2 原 status=-3 的订单应更新为 status=5（已取消）
--    注意：此清洗需要根据业务实际情况执行，以下为参考脚本（请先备份再执行）
-- UPDATE fs_integral_order SET status = 5 WHERE status = -3;
-- UPDATE fs_integral_order SET status = 5 WHERE status = -1 AND order_id NOT IN (
--     SELECT order_id FROM fs_user_integral_logs WHERE log_type = 27
-- );

-- 5. 已完成订单回填 finish_time（用 update_time 近似）
-- UPDATE fs_integral_order SET finish_time = update_time WHERE status = 3 AND finish_time IS NULL;
