# carrier Specification ## Purpose TBD - created by archiving change add-wallet-transfer-tag-models. Update Purpose after archive. ## Requirements ### Requirement: 运营商实体定义 系统 SHALL 定义运营商(Carrier)实体,管理四大固定运营商(中国移动、中国联通、中国电信、广电)的渠道信息 **四大运营商固定枚举**: - **CMCC**:中国移动 - **CUCC**:中国联通 - **CTCC**:中国电信 - **CBN**:广电 **实体字段**: - `id`:运营商 ID(主键,BIGINT) - `carrier_type`:运营商类型(VARCHAR(20),枚举值:"CMCC" | "CUCC" | "CTCC" | "CBN")**【新增】** - `carrier_name`:运营商名称(VARCHAR(100),如"中国移动") - `carrier_code`:运营商编码(VARCHAR(50),保留字段,建议填充与 carrier_type 相同) - `channel_name`:渠道名称(VARCHAR(100),可自定义,如"北京渠道1")**【新增】** - `channel_code`:渠道编码(VARCHAR(50),可自定义,如"BJ001")**【新增】** - `status`:状态(INT,1-启用 2-禁用) - `creator`:创建人 ID(BIGINT) - `updater`:更新人 ID(BIGINT) - `created_at`:创建时间(TIMESTAMP,自动填充) - `updated_at`:更新时间(TIMESTAMP,自动填充) - `deleted_at`:删除时间(TIMESTAMP,可空,软删除) **唯一约束**:`(carrier_type, channel_code)` 在 `deleted_at IS NULL` 条件下唯一 #### Scenario: 创建中国移动的渠道 - **WHEN** 平台创建中国移动的北京渠道,`carrier_type` 为 "CMCC",`carrier_name` 为 "中国移动",`channel_name` 为 "北京渠道1",`channel_code` 为 "BJ001" - **THEN** 系统创建运营商记录,`carrier_type` 为 "CMCC",`channel_name` 为 "北京渠道1",`channel_code` 为 "BJ001" #### Scenario: 同一运营商创建多个渠道 - **WHEN** 平台为中国移动创建两个渠道:北京渠道(BJ001)和上海渠道(SH001) - **THEN** 系统创建两条运营商记录,`carrier_type` 都为 "CMCC",但 `channel_code` 不同 #### Scenario: 渠道编码重复 - **WHEN** 平台创建中国移动的渠道,`carrier_type` 为 "CMCC",`channel_code` 为已存在的 "BJ001" - **THEN** 系统拒绝创建,返回错误信息"该运营商的渠道编码已存在" #### Scenario: 不同运营商可以使用相同渠道编码 - **WHEN** 平台为中国移动创建渠道(carrier_type=CMCC, channel_code=BJ001),然后为中国联通创建渠道(carrier_type=CUCC, channel_code=BJ001) - **THEN** 系统允许创建,因为 `carrier_type` 不同 #### Scenario: 运营商类型枚举限制 - **WHEN** 平台创建运营商,`carrier_type` 为 "OTHER"(不在枚举中) - **THEN** 系统拒绝创建,返回错误信息"运营商类型必须是 CMCC/CUCC/CTCC/CBN 之一" --- ### Requirement: 运营商数据校验 系统 SHALL 对运营商数据进行校验,确保数据完整性和一致性。 **校验规则**: - `carrier_type`:必填,枚举值 "CMCC" | "CUCC" | "CTCC" | "CBN" - `carrier_name`:必填,长度 1-100 字符 - `carrier_code`:必填,长度 1-50 字符 - `channel_name`:可选,长度 1-100 字符 - `channel_code`:可选,长度 1-50 字符 - `status`:必填,枚举值 1-2 #### Scenario: 创建运营商时 carrier_type 无效 - **WHEN** 创建运营商,`carrier_type` 为 "INVALID" - **THEN** 系统拒绝创建,返回错误信息"运营商类型无效" #### Scenario: 创建运营商时 carrier_name 为空 - **WHEN** 创建运营商,`carrier_name` 为空 - **THEN** 系统拒绝创建,返回错误信息"运营商名称不能为空"