-- V14__score_pool_auto_grant.sql -- 需求部门积分池自动发放功能数据库迁移脚本 -- 创建日期:2026-01-19 -- ===================================================== -- 1. 修改 team_score_pool 表,新增自动发放相关字段 -- ===================================================== -- 是否启用自动发放 ALTER TABLE team_score_pool ADD COLUMN auto_grant_enabled TINYINT DEFAULT 0 COMMENT '是否启用自动发放:0-否,1-是'; -- 自动发放周期 ALTER TABLE team_score_pool ADD COLUMN auto_grant_period VARCHAR(20) DEFAULT 'WEEKLY' COMMENT '自动发放周期:WEEKLY-每周,MONTHLY-每月'; -- 每次自动发放积分数量 ALTER TABLE team_score_pool ADD COLUMN auto_grant_amount INT DEFAULT 0 COMMENT '每次自动发放积分数量'; -- 发放日期 ALTER TABLE team_score_pool ADD COLUMN auto_grant_day INT DEFAULT 1 COMMENT '发放日期:周发放为1-7(周一到周日),月发放为1-28'; -- 过期未使用是否清零 ALTER TABLE team_score_pool ADD COLUMN expire_unused TINYINT DEFAULT 0 COMMENT '过期未使用是否清零:0-否,1-是'; -- 上次自动发放时间 ALTER TABLE team_score_pool ADD COLUMN last_grant_time DATETIME COMMENT '上次自动发放时间'; -- 下次自动发放时间 ALTER TABLE team_score_pool ADD COLUMN next_grant_time DATETIME COMMENT '下次自动发放时间'; -- ===================================================== -- 2. 创建积分发放记录表 -- ===================================================== CREATE TABLE IF NOT EXISTS score_grant_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', dept_id BIGINT NOT NULL COMMENT '部门ID', dept_name VARCHAR(100) COMMENT '部门名称', grant_type VARCHAR(20) NOT NULL COMMENT '发放类型:AUTO-自动发放,MANUAL-手动充值', grant_amount INT NOT NULL COMMENT '发放积分数量', expired_amount INT DEFAULT 0 COMMENT '过期清零积分数量', balance_before INT COMMENT '发放前余额', balance_after INT COMMENT '发放后余额', grant_period VARCHAR(20) COMMENT '发放周期:WEEKLY/MONTHLY', period_start DATE COMMENT '周期开始日期', period_end DATE COMMENT '周期结束日期', remark VARCHAR(500) COMMENT '备注', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', INDEX idx_dept_id (dept_id), INDEX idx_grant_type (grant_type), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分发放记录表'; -- ===================================================== -- 3. 为现有数据设置默认值 -- ===================================================== UPDATE team_score_pool SET auto_grant_enabled = 0 WHERE auto_grant_enabled IS NULL; UPDATE team_score_pool SET auto_grant_period = 'WEEKLY' WHERE auto_grant_period IS NULL; UPDATE team_score_pool SET auto_grant_amount = 0 WHERE auto_grant_amount IS NULL; UPDATE team_score_pool SET auto_grant_day = 1 WHERE auto_grant_day IS NULL; UPDATE team_score_pool SET expire_unused = 0 WHERE expire_unused IS NULL;