功能说明
设计并创建短信平台资源、平台调整历史、小区资源、小区配置历史、小区使用明细等表结构,支撑平台总额度配置、分配、监控与历史记录查询。
表结构设计
CREATE TABLE sms_platform ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '平台ID', name VARCHAR(100) NOT NULL COMMENT '平台名称', provider_name VARCHAR(100) NOT NULL COMMENT '服务商名称', remain_count INT NOT NULL DEFAULT 0 COMMENT '平台剩余条数', threshold INT NOT NULL DEFAULT 1000 COMMENT '告警阈值', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_name (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='短信平台资源'; CREATE TABLE sms_platform_adjust_log ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID', platform_id BIGINT NOT NULL COMMENT '平台ID', adjust_type TINYINT NOT NULL COMMENT '1增加 2减少', adjust_amount INT NOT NULL COMMENT '调整数量', before_count INT NOT NULL COMMENT '调整前数量', after_count INT NOT NULL COMMENT '调整后数量', operator VARCHAR(50) NOT NULL COMMENT '操作人', remark VARCHAR(200) DEFAULT '' COMMENT '备注', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_platform_created (platform_id, created_at DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台调整历史'; CREATE TABLE sms_community ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '小区ID', platform_id BIGINT NOT NULL COMMENT '平台ID', name VARCHAR(100) NOT NULL COMMENT '小区名称', remain_count INT NOT NULL DEFAULT 0 COMMENT '小区剩余条数', used_total INT NOT NULL DEFAULT 0 COMMENT '历史使用总计', used_month INT NOT NULL DEFAULT 0 COMMENT '本月使用', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_platform_created (platform_id, created_at DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小区资源'; CREATE TABLE sms_community_allocate_log ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID', community_id BIGINT NOT NULL COMMENT '小区ID', platform_id BIGINT NOT NULL COMMENT '平台ID', mode TINYINT NOT NULL COMMENT '1按金额 2按条数', pay_amount DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '分配金额', convert_ratio DECIMAL(10,4) NOT NULL COMMENT '转换系数', sms_count INT NOT NULL COMMENT '分配条数', before_remain INT NOT NULL COMMENT '小区分配前剩余', after_remain INT NOT NULL COMMENT '小区分配后剩余', valid_from DATETIME DEFAULT NULL COMMENT '有效期开始', valid_to DATETIME DEFAULT NULL COMMENT '有效期结束,NULL为长期', remark VARCHAR(200) DEFAULT '' COMMENT '备注', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, operator VARCHAR(50) NOT NULL COMMENT '操作人', INDEX idx_comm_created (community_id, created_at DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小区配置历史'; CREATE TABLE sms_usage_log ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID', community_id BIGINT NOT NULL COMMENT '小区ID', platform_id BIGINT NOT NULL COMMENT '平台ID', push_time DATETIME NOT NULL COMMENT '推送时间', push_name VARCHAR(100) NOT NULL COMMENT '推送名称', content TEXT NOT NULL COMMENT '推送内容', status TINYINT NOT NULL COMMENT '0失败 1成功 2部分成功', success_count INT NOT NULL DEFAULT 0 COMMENT '成功数', fail_count INT NOT NULL DEFAULT 0 COMMENT '失败数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_comm_time (community_id, push_time DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小区使用情况';
字段说明
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| platform_id | BIGINT | 是 | - | 关联平台 |
| name | VARCHAR(100) | 是 | - | 平台/小区名称 |
| remain_count | INT | 是 | 0 | 可用短信剩余 |
| threshold | INT | 是 | 1000 | 告警阈值 |
| adjust_type | TINYINT | 是 | - | 1增加 2减少 |
| adjust_amount | INT | 是 | - | 调整数量 |
| mode | TINYINT | 是 | - | 1按金额 2按条数 |
| convert_ratio | DECIMAL(10,4) | 是 | - | 转换系数 |
| sms_count | INT | 是 | - | 分配条数 |
| status | TINYINT | 是 | - | 使用状态 |
索引设计
- PRIMARY KEY: id
- INDEX: idx_platform_created(platform_id, created_at DESC) for history queries
- INDEX: idx_comm_created(community_id, created_at DESC) for allocation history
- INDEX: idx_comm_time(community_id, push_time DESC) for usage logs
迁移脚本路径
migrations/2024xxxx_create_sms_resource_tables.sql
验收标准
- 表结构创建成功,字符集utf8mb4
- 主外键及索引符合查询场景
- 字段注释完整,默认值和非空约束正确