This commit is contained in:
2026-01-12 16:43:08 +08:00
parent dc747139c9
commit 3c6e2683f5
110 changed files with 9630 additions and 481 deletions

View 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`
);