feat: 实现卡和设备的套餐系列绑定功能
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m37s

- 添加 Device 和 IotCard 模型的 SeriesID 字段
- 实现 DeviceService 和 IotCardService 的套餐系列绑定逻辑
- 添加 DeviceStore 和 IotCardStore 的数据库操作方法
- 更新 API 接口和路由支持套餐系列绑定
- 创建数据库迁移脚本(000027_add_series_binding_fields)
- 添加完整的单元测试和集成测试
- 更新 OpenAPI 文档
- 归档 OpenSpec 变更文档

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-01-28 19:49:45 +08:00
parent 1da680a790
commit a945a4f554
38 changed files with 2906 additions and 318 deletions

View File

@@ -0,0 +1,13 @@
-- 删除 tb_device 的索引和字段
DROP INDEX IF EXISTS idx_device_series_allocation;
ALTER TABLE tb_device
DROP COLUMN IF EXISTS series_allocation_id,
DROP COLUMN IF EXISTS first_commission_paid,
DROP COLUMN IF EXISTS accumulated_recharge;
-- 删除 tb_iot_card 的索引和字段
DROP INDEX IF EXISTS idx_iot_card_series_allocation;
ALTER TABLE tb_iot_card
DROP COLUMN IF EXISTS series_allocation_id,
DROP COLUMN IF EXISTS first_commission_paid,
DROP COLUMN IF EXISTS accumulated_recharge;

View File

@@ -0,0 +1,27 @@
-- 为 tb_iot_card 添加套餐系列绑定相关字段
ALTER TABLE tb_iot_card
ADD COLUMN series_allocation_id INTEGER DEFAULT NULL,
ADD COLUMN first_commission_paid BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN accumulated_recharge BIGINT NOT NULL DEFAULT 0;
-- 为 tb_iot_card 的 series_allocation_id 字段添加索引
CREATE INDEX idx_iot_card_series_allocation ON tb_iot_card(series_allocation_id);
-- 为 tb_iot_card 添加注释
COMMENT ON COLUMN tb_iot_card.series_allocation_id IS '套餐系列分配ID(关联ShopSeriesAllocation)';
COMMENT ON COLUMN tb_iot_card.first_commission_paid IS '一次性佣金是否已发放';
COMMENT ON COLUMN tb_iot_card.accumulated_recharge IS '累计充值金额(分)';
-- 为 tb_device 添加套餐系列绑定相关字段
ALTER TABLE tb_device
ADD COLUMN series_allocation_id INTEGER DEFAULT NULL,
ADD COLUMN first_commission_paid BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN accumulated_recharge BIGINT NOT NULL DEFAULT 0;
-- 为 tb_device 的 series_allocation_id 字段添加索引
CREATE INDEX idx_device_series_allocation ON tb_device(series_allocation_id);
-- 为 tb_device 添加注释
COMMENT ON COLUMN tb_device.series_allocation_id IS '套餐系列分配ID(关联ShopSeriesAllocation)';
COMMENT ON COLUMN tb_device.first_commission_paid IS '一次性佣金是否已发放';
COMMENT ON COLUMN tb_device.accumulated_recharge IS '累计充值金额(分)';