fix
This commit is contained in:
75
deploy/sql/refund_commission_cancel_migration.sql
Normal file
75
deploy/sql/refund_commission_cancel_migration.sql
Normal file
@@ -0,0 +1,75 @@
|
||||
-- 退款收回代理佣金功能 - 数据库迁移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`
|
||||
);
|
||||
Reference in New Issue
Block a user