# personal-customer-openid Specification ## ADDED Requirements ### Requirement: PersonalCustomerOpenID 模型定义 系统 MUST 新增 `PersonalCustomerOpenID` 模型与数据表 `tb_personal_customer_openid`,用于保存客户在不同 AppID 下的 OpenID 记录。 - 关键字段: - `id` uint,主键 - `customer_id` uint,MUST,关联个人客户 ID - `app_id` string,MUST,微信应用标识 - `open_id` string,MUST,当前应用下 OpenID - `union_id` string,可选,开放平台统一标识 - `created_at`/`updated_at`/`deleted_at` - 索引约束: - MUST 存在唯一索引 `UNIQUE(app_id, open_id)`(软删条件下唯一) #### Scenario: 新增 OpenID 记录成功 - **WHEN** 登录流程创建新 OpenID 关系 - **THEN** 系统 SHALL 插入一条包含 `customer_id/app_id/open_id` 的记录 #### Scenario: 重复 app_id + open_id 被拒绝 - **WHEN** 试图插入已存在的 `(app_id, open_id)` 组合 - **THEN** 系统 MUST 触发唯一约束并拒绝写入 ### Requirement: 与 PersonalCustomer 的关系约束 系统 SHALL 通过 `customer_id` 与 `PersonalCustomer` 建立逻辑关联(不使用数据库外键约束)。 #### Scenario: 根据 customer_id 查询 OpenID 列表 - **WHEN** 业务根据 `customer_id` 查询 OpenID - **THEN** 系统 SHALL 返回该客户在多 AppID 下的全部有效记录 #### Scenario: 软删除客户后的记录处理 - **WHEN** 客户逻辑删除或状态失效 - **THEN** 系统 MUST 支持按业务策略同步停用或软删除 OpenID 记录