feat: 实现运营商模块重构,添加冗余字段优化查询性能
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m16s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m16s
主要变更: - 新增 Carrier CRUD API(创建、列表、详情、更新、删除、状态更新) - IotCard/IotCardImportTask 添加 carrier_type/carrier_name 冗余字段 - 移除 Carrier 表的 channel_name/channel_code 字段 - 查询时直接使用冗余字段,避免 JOIN Carrier 表 - 添加数据库迁移脚本(000021-000023) - 添加单元测试和集成测试 - 同步更新 OpenAPI 文档和 specs
This commit is contained in:
12
migrations/000021_carrier_remove_channel_fields.down.sql
Normal file
12
migrations/000021_carrier_remove_channel_fields.down.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- 回滚:恢复 Carrier 表的 channel_name、channel_code 字段
|
||||
|
||||
-- 添加 channel_name 字段
|
||||
ALTER TABLE tb_carrier ADD COLUMN channel_name VARCHAR(100);
|
||||
COMMENT ON COLUMN tb_carrier.channel_name IS '渠道名称';
|
||||
|
||||
-- 添加 channel_code 字段
|
||||
ALTER TABLE tb_carrier ADD COLUMN channel_code VARCHAR(50);
|
||||
COMMENT ON COLUMN tb_carrier.channel_code IS '渠道编码';
|
||||
|
||||
-- 重建联合唯一索引(carrier_type + channel_code,排除已删除记录)
|
||||
CREATE UNIQUE INDEX idx_carrier_type_channel ON tb_carrier(carrier_type, channel_code) WHERE deleted_at IS NULL;
|
||||
11
migrations/000021_carrier_remove_channel_fields.up.sql
Normal file
11
migrations/000021_carrier_remove_channel_fields.up.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
-- 移除 Carrier 表的 channel_name、channel_code 字段及相关索引
|
||||
-- 这些字段未被任何地方使用,属于冗余设计
|
||||
|
||||
-- 先删除联合唯一索引
|
||||
DROP INDEX IF EXISTS idx_carrier_type_channel;
|
||||
|
||||
-- 删除 channel_name 字段
|
||||
ALTER TABLE tb_carrier DROP COLUMN IF EXISTS channel_name;
|
||||
|
||||
-- 删除 channel_code 字段
|
||||
ALTER TABLE tb_carrier DROP COLUMN IF EXISTS channel_code;
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE tb_iot_card DROP COLUMN IF EXISTS carrier_type;
|
||||
ALTER TABLE tb_iot_card DROP COLUMN IF EXISTS carrier_name;
|
||||
@@ -0,0 +1,14 @@
|
||||
-- IotCard 表添加 carrier_type、carrier_name 冗余字段
|
||||
-- 导入时从 Carrier 表快照,后续查询无需 JOIN
|
||||
|
||||
ALTER TABLE tb_iot_card ADD COLUMN carrier_type VARCHAR(20);
|
||||
ALTER TABLE tb_iot_card ADD COLUMN carrier_name VARCHAR(100);
|
||||
|
||||
COMMENT ON COLUMN tb_iot_card.carrier_type IS '运营商类型(CMCC/CUCC/CTCC/CBN),导入时快照';
|
||||
COMMENT ON COLUMN tb_iot_card.carrier_name IS '运营商名称,导入时快照';
|
||||
|
||||
-- 从 Carrier 表填充现有数据
|
||||
UPDATE tb_iot_card
|
||||
SET carrier_type = c.carrier_type, carrier_name = c.carrier_name
|
||||
FROM tb_carrier c
|
||||
WHERE tb_iot_card.carrier_id = c.id;
|
||||
1
migrations/000023_import_task_add_carrier_name.down.sql
Normal file
1
migrations/000023_import_task_add_carrier_name.down.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE tb_iot_card_import_task DROP COLUMN IF EXISTS carrier_name;
|
||||
11
migrations/000023_import_task_add_carrier_name.up.sql
Normal file
11
migrations/000023_import_task_add_carrier_name.up.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
-- IotCardImportTask 表添加 carrier_name 冗余字段(已有 carrier_type)
|
||||
|
||||
ALTER TABLE tb_iot_card_import_task ADD COLUMN carrier_name VARCHAR(100);
|
||||
|
||||
COMMENT ON COLUMN tb_iot_card_import_task.carrier_name IS '运营商名称,创建任务时快照';
|
||||
|
||||
-- 从 Carrier 表填充现有数据
|
||||
UPDATE tb_iot_card_import_task
|
||||
SET carrier_name = c.carrier_name
|
||||
FROM tb_carrier c
|
||||
WHERE tb_iot_card_import_task.carrier_id = c.id;
|
||||
Reference in New Issue
Block a user