Files
ycc-proxy-server/deploy/sql/refund_commission_cancel_migration.sql
2026-01-12 16:43:08 +08:00

75 lines
2.9 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 退款收回代理佣金功能 - 数据库迁移SQL
-- 说明:此功能使用现有的 status 字段来标记撤销状态
--
-- 状态字段含义(根据代码和模型注释):
-- agent_commission.status: 1=已发放2=已冻结3=已取消(撤销)
-- agent_rebate.status: 1=已发放2=已冻结3=已取消(撤销)
-- agent_freeze_task.status: 1=待解冻2=已解冻3=已取消(撤销)
--
-- 注意:如果数据库中这三个表的 status 字段含义不同例如1=待解冻2=已解冻3=已取消),
-- 需要确认是否有冲突。当前实现使用 status=3 表示已撤销。
-- 如果 status=3 与其他业务冲突请使用方案2添加新字段。
-- 检查字段是否存在(可选,用于验证)
SELECT
COLUMN_NAME,
COLUMN_TYPE,
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = DATABASE()
AND TABLE_NAME IN (
'agent_commission',
'agent_rebate',
'agent_freeze_task'
)
AND COLUMN_NAME = 'status';
-- ========== 方案1使用现有 status 字段(当前实现,推荐) ==========
-- 如果 status=3 的含义是"已取消",可以直接使用,无需修改数据库
-- 代码中已实现:撤销时将 status 设置为 3
-- 注意:需要确认数据库中这三个表的 status 字段实际含义是否与代码一致
-- ========== 方案2添加新字段如果 status=3 与其他业务冲突) ==========
-- 如果 status 字段的含义不同例如1=待解冻2=已解冻3=已取消但3不是用于撤销
-- 可以使用以下SQL添加新字段
--
-- ALTER TABLE `agent_commission`
-- ADD COLUMN `cancel_status` TINYINT DEFAULT 0 COMMENT '撤销状态0=正常1=已撤销' AFTER `status`;
--
-- ALTER TABLE `agent_rebate`
-- ADD COLUMN `cancel_status` TINYINT DEFAULT 0 COMMENT '撤销状态0=正常1=已撤销' AFTER `status`;
--
-- ALTER TABLE `agent_freeze_task`
-- ADD COLUMN `cancel_status` TINYINT DEFAULT 0 COMMENT '撤销状态0=正常1=已撤销' AFTER `status`;
--
-- 如果使用方案2需要修改代码
-- 1. 在 CancelAgentCommission 方法中,使用 cancel_status 字段而不是 status 字段
-- 2. 查询时使用 cancel_status = 1 来筛选已撤销的记录
-- 当前实现不需要修改数据库结构,使用现有的 status 字段即可
-- 如果后续需要查询已撤销的记录,可以使用:
SELECT * FROM agent_commission WHERE status = 3 AND del_state = 0;
SELECT * FROM agent_rebate WHERE status = 3 AND del_state = 0;
SELECT * FROM agent_freeze_task WHERE status = 3 AND del_state = 0;
-- 如果需要添加索引优化查询(可选):
CREATE INDEX `idx_order_id_status` ON `agent_commission` (
`order_id`,
`status`,
`del_state`
);
CREATE INDEX `idx_order_id_status` ON `agent_rebate` (
`order_id`,
`status`,
`del_state`
);
CREATE INDEX `idx_order_id_status` ON `agent_freeze_task` (
`order_id`,
`status`,
`del_state`
);