# 账号管理 — 功能需求说明

> 本文档在《账号管理功能需求-草稿》基础上整理，并关联 **管理员列表**、**店铺管理**、**商户管理**、**会员管理** 做边界对齐。  
> 范围：**平台管理端 · 权限管理** 对 **全平台 sys_user 账号**（平台端、商家端、C 端）的列表、检索、资料维护、改密与删除。  
> **v1.1：** 对齐草稿 §4～§6：以 `sys_user` 为主表统览全部账号；仅商户管理员展示店铺数；检索仅账号名称；响应格式 code/msg/data。

---

## 1. 模块定位

### 1.1 业务目标

在农资商城 **平台管理端（Web）· 权限管理** 提供 **全平台账号** 的统一视图与维护能力：

- 浏览、检索 **全部有效 sys_user 账号**（含平台管理员、商户管理员、C 端会员等）；
- 对 **商户管理员** 展示所属商户下的 **店铺数量**；非商户管理员 **店铺数为空**；
- 修改账号资料（账号名称、手机号、邮箱）；
- 单独重置登录密码；
- 在符合安全与业务前置条件下 **删除** 账号。

**不包含（本期）：**

| 能力 | 说明 |
|------|------|
| **新增 / 开户** | 由各业务模块创建用户（商户入驻、会员注册、管理员列表新增等） |
| 按 **单商户** 查看下属店铺列表 | **店铺管理 · 店铺账号管理**（与本模块改资料 **同源**） |

### 1.2 与草稿的对应关系

| 草稿条目 | 定稿规则 |
|----------|----------|
| §1 列表字段 | 账号名称、手机号、邮箱、店铺数、操作 |
| §2 高级检索 | **仅** 按账号名称（`nick_name`）模糊检索 |
| §3 操作 | 修改账号、修改密码、删除账号 |
| §4～§5 数据范围 | `sys_user` 主表 LEFT JOIN `biz_merchant_account`（`shop_id IS NULL`）；LEFT JOIN 统计店铺数 |
| §6 异常返回 | 统一 `code`、`msg`、`data`（RuoYi AjaxResult / TableDataInfo） |

### 1.3 账号类型与店铺数

| 账号类型 | 是否在列表 | 店铺数列 |
|----------|:----------:|----------|
| 平台管理员 | ✓ | **空** |
| 商户管理员（`shop_id IS NULL` 绑定） | ✓ | 未删除店铺数量（可为 0） |
| C 端会员 | ✓ | **空** |
| 其他 sys_user | ✓ | **空** |

---

## 2. 业务概念

| 概念 | 说明 |
|------|------|
| **账号** | `sys_user` 中 `del_flag=0` 的有效用户 |
| **账号名称** | `nick_name`；空则回退 `user_name` |
| **手机号** | 商户管理员取 **登录名**（`user_name`，11 位）；其他账号优先 `phonenumber`，否则 `user_name` |
| **邮箱** | `email`；无则展示「—」 |
| **店铺数** | **仅商户管理员**：所属商户下 `del_flag=0` 的店铺数；**非商户管理员为空** |

---

## 3. 功能结构

```text
账号管理（平台 · 权限管理）
├── 账号列表（含店铺数、检索）
├── 修改账号（账号名称、手机号、邮箱）
├── 修改密码（含确认新密码）
└── 删除账号
```

---

## 4. 账号列表

### 4.1 列表范围

- **纳入：** 全部 `sys_user.del_flag=0` 的有效用户；
- **店铺数：** 仅当存在有效商户管理员绑定（`biz_merchant_account.shop_id IS NULL AND del_flag=0`）时统计；
- **排序：** 按 `sys_user.create_time` 倒序。

### 4.2 列表字段

| 字段 | 说明 |
|------|------|
| 账号名称 | 见 §2 |
| 手机号 | 列表 **脱敏** 展示 |
| 邮箱 | 联系邮箱 |
| 店铺数 | 商户管理员为整数（含 0）；**其他为空** |
| 操作 | 修改账号、修改密码、删除 |

---

## 5. 高级检索

| 检索项 | 规则 |
|--------|------|
| 账号名称 | 模糊匹配 `nick_name` **仅此一项** |

---

## 6. 修改账号

| 字段 | 规则 |
|------|------|
| 账号名称 | 必填 → `nick_name` |
| 手机号 | 11 位；平台内不可重复 |
| 邮箱 | 选填；须符合邮箱格式 |

**商户管理员改手机号：** 与店铺侧改登录名一致，须二次确认「将同步至该商户下全部店铺」。

**非商户管理员：** 改手机号更新 `phonenumber`，**无需** 店铺同步确认。

---

## 7. 修改密码

- 新密码 + 确认新密码，须一致，长度 ≥6；
- 保存后下次登录须使用新密码。

---

## 8. 删除账号

| 账号类型 | 删除行为 |
|----------|----------|
| **商户管理员** | 须 **店铺数=0**；逻辑删除 `biz_merchant_account` 绑定，**不删** `sys_user` |
| **其他账号** | 逻辑删除 `sys_user` |

**通用约束：** 不可删当前登录账号；不可删内置管理员（userId=1）。

---

## 9. 与店铺账号管理的协作

店铺管理 · 店铺账号管理 与本模块 **共用** `IAccountProfileService` 写操作；改商户管理员资料后两处展示一致。

---

## 10. 业务规则汇总

| 编号 | 规则 |
|------|------|
| AM1 | 列表以 **sys_user** 为主表，LEFT JOIN 商户管理员绑定 |
| AM2 | **仅商户管理员** 展示店铺数；其他为空 |
| AM3 | 检索 **仅账号名称** |
| AM4 | 修改账号：名称、手机号、邮箱 |
| AM5 | 修改密码：两次输入须一致 |
| AM6 | 商户管理员删除须店铺数=0；其他账号删 sys_user |
| AM7 | 响应格式：code、msg、data |

---

## 11. 修订记录

| 版本 | 说明 |
|------|------|
| v1.0 | 首版：仅商户管理员经营账号 |
| **v1.1** | 对齐草稿：全平台 sys_user 统览；店铺数仅商户管理员；检索仅账号名称 |

---

*文档版本：v1.1 · 关联《账号管理功能需求-草稿》*
