# Tasks: 用户和组织模型实现任务

## 1. 数据库迁移脚本

- [x] 1.1 创建 `tb_shop` 表迁移脚本（店铺表）
- [x] 1.2 创建 `tb_enterprise` 表迁移脚本（企业表）
- [x] 1.3 创建 `tb_personal_customer` 表迁移脚本（个人客户表）
- [x] 1.4 修改 `tb_account` 表迁移脚本（添加 enterprise_id，移除 parent_id）
- [x] 1.5 执行数据库迁移并验证表结构

## 2. GORM 模型定义

- [x] 2.1 创建 `internal/model/shop.go` - Shop 模型
- [x] 2.2 创建 `internal/model/enterprise.go` - Enterprise 模型
- [x] 2.3 创建 `internal/model/personal_customer.go` - PersonalCustomer 模型
- [x] 2.4 修改 `internal/model/account.go` - 更新 Account 模型（添加 EnterpriseID，移除 ParentID）
- [x] 2.5 验证模型与数据库表结构一致

## 3. 常量定义

- [x] 3.1 在 `pkg/constants/` 添加用户类型常量（UserTypeSuperAdmin, UserTypePlatform, UserTypeAgent, UserTypeEnterprise）
- [x] 3.2 添加组织状态常量（StatusDisabled, StatusEnabled）
- [x] 3.3 添加店铺层级相关常量（MaxShopLevel = 7）
- [x] 3.4 添加 Redis key 生成函数（店铺下级缓存 key）

## 4. Store 层实现

- [x] 4.1 创建 `internal/store/postgres/shop_store.go` - Shop Store
  - [x] 4.1.1 Create/Update/Delete/GetByID/List 基础方法
  - [x] 4.1.2 GetSubordinateShopIDs 递归查询下级店铺
  - [x] 4.1.3 Redis 缓存支持（下级店铺 ID 列表）
- [x] 4.2 创建 `internal/store/postgres/enterprise_store.go` - Enterprise Store
  - [x] 4.2.1 Create/Update/Delete/GetByID/List 基础方法
  - [x] 4.2.2 按 OwnerShopID 查询企业列表
- [x] 4.3 创建 `internal/store/postgres/personal_customer_store.go` - PersonalCustomer Store
  - [x] 4.3.1 Create/Update/Delete/GetByID/List 基础方法
  - [x] 4.3.2 GetByPhone/GetByWxOpenID 查询方法
- [x] 4.4 修改 `internal/store/postgres/account_store.go` - 更新 Account Store
  - [x] 4.4.1 调整递归查询逻辑（改为基于店铺层级）
  - [x] 4.4.2 添加按 ShopID/EnterpriseID 查询方法

## 5. Service 层实现

- [x] 5.1 创建 `internal/service/shop/service.go` - Shop Service
  - [x] 5.1.1 创建店铺（校验层级不超过 7 级）
  - [x] 5.1.2 更新店铺信息
  - [x] 5.1.3 禁用/启用店铺
  - [x] 5.1.4 获取店铺详情和列表
- [x] 5.2 创建 `internal/service/enterprise/service.go` - Enterprise Service
  - [x] 5.2.1 创建企业（关联店铺或平台）
  - [x] 5.2.2 更新企业信息
  - [x] 5.2.3 禁用/启用企业
  - [x] 5.2.4 获取企业详情和列表
- [x] 5.3 创建 `internal/service/customer/service.go` - PersonalCustomer Service
  - [x] 5.3.1 创建/更新个人客户
  - [x] 5.3.2 根据手机号/微信 OpenID 查询
  - [x] 5.3.3 绑定微信信息

## 6. 测试

- [x] 6.1 Shop Store 单元测试
- [x] 6.2 Enterprise Store 单元测试
- [x] 6.3 PersonalCustomer Store 单元测试
- [x] 6.4 Shop Service 单元测试（层级校验）
- [x] 6.5 递归查询下级店铺测试（含 Redis 缓存）

## 7. 文档更新

- [x] 7.1 更新 README.md 说明用户体系设计
- [x] 7.2 在 docs/ 目录添加用户体系设计文档

## 依赖关系

```
1.x (迁移脚本) → 2.x (模型定义) → 3.x (常量) → 4.x (Store) → 5.x (Service) → 6.x (测试)
```

## 并行任务

以下任务可以并行执行：
- 2.1, 2.2, 2.3 可以并行
- 4.1, 4.2, 4.3 可以并行
- 5.1, 5.2, 5.3 可以并行
- 6.1, 6.2, 6.3 可以并行
