# 店铺管理 — 功能需求说明

> 本文档在《店铺管理功能需求-草稿》基础上整理，并关联《农资商城web》目录下 **商户管理（v1.3.1）**、商品管理、商品分类等模块需求做边界与流程对齐。  
> 范围：平台侧 **店铺管理** 功能需求；不涉及数据库结构、接口定义及技术实现细节。  
> **v1.3.7：** 对齐 `biz_merchant_account` 新结构：登录凭证在 `sys_user`，关联表 `account_id=user_id`、`shop_id=NULL` 为商户管理员。  
> **v1.3.6：** 对齐 [`sql/biz_shop.sql`](../../../sql/biz_shop.sql) 与当前实现；商家电话添加/编辑/商家端均为 **选填**；经营账号 **创建** 在商户入驻，本模块 **维护**。  
> **v1.3.5：** `biz_shop.shop_status`、`shop_phone` 改为选填；添加店铺 **不再** 采集 `login_name`/`admin_name`/`password`（经营账号由商户入驻绑定时写入 `biz_merchant_account`）。  
> **v1.3.4：** 补充草稿第 7 条 **店铺端资料修改** 与平台列表 **同源同步**（商家端 API）。  
> **v1.3.3：** 店铺策略已迁至 **《店铺设置》** 全局模块。  
> **v1.3：** **不考虑会员体系**；经营账号由 **商户入驻** 写入 `biz_merchant_account`，本模块负责 **查询/修改** 与开店校验，**不校验** 会员注册。
> **v1.1：** 删店商品条件、停业二次确认、C 端停业禁止下单已产品定稿。  
> **v1.2：** 开店前校验商户 **经营信息完整**（与商户 v1.2 衔接）。

---

## 1. 模块定位

### 1.1 业务目标

在农资商城 **平台管理端（Web）** 提供店铺全生命周期管理：为已入驻且 **经营信息完整** 的商户开设店铺、维护店铺基础信息与营业状态，并在本模块 **配置与管理店铺经营账号**（用于商家端登录；**平台账号体系**，与会员模块无关，见第 6、9 节）。**全平台店铺策略**（商品默认审核、子管理员上限）见 **《店铺设置》** 专册。

### 1.2 在业务链中的位置

```text
平台运营
    └── 商户管理 ── 商户主体、认证状态
            └── 店铺管理（本模块）── 按商户开店、配置经营账号、店铺状态
                    ├── 商品管理 ── 店铺下商品、审核/上下架
                    └── 商品分类 ── 店铺侧分类（店铺管理员维护，平台本模块不操作分类）
```

| 关联模块 | 与本模块关系 | 边界说明 |
|----------|--------------|----------|
| 商户管理 | 上游依赖 | 选 **未删除、认证正常、经营信息已完整** 的商户；**本期不设** 单商户开店数量上限；**不涉及** 会员 |
| 商品管理 | 下游关联 | 商品归属店铺；**全局**「默认审核通过」影响新商品 submit 后状态；店铺 **停业不自动** 下架商品 |
| 商品分类 | 间接关联 | 分类由店铺管理员在 **商家端** 维护；本模块不管理分类数据 |

### 1.3 使用角色

| 角色 | 说明 |
|------|------|
| 平台管理员 | 店铺列表、开店、编辑、店铺账号管理、删除等 |

---

## 2. 业务概念

| 概念 | 说明 |
|------|------|
| 店铺 | 商户下的经营单元，用于挂载商品与订单 |
| 商户 | 店铺所属主体，来自商户管理 |
| 店铺经营账号 | 商家端登录账号；**同商户多店共用**一套；**商户入驻时创建**，本模块 **店铺账号管理** 可修改 |
| 店铺状态 | **开业** / **停业**，见第 7 节 |
| 店铺设置 | **已迁出**：见 **《店铺设置功能需求.md》**（全平台全局，独立菜单） |
| 逻辑删除 | 店铺从默认列表隐藏，不可再经营；历史数据保留；商户「已绑定店铺数量」相应减少 |

---

## 3. 功能结构

```text
店铺管理
├── 店铺列表（含高级检索）
├── 添加店铺
├── 编辑店铺
├── 店铺账号管理
└── 删除店铺（逻辑删除）
```

> **店铺设置** 已独立为平台级菜单，见 **《店铺设置功能需求.md》**。

---

## 4. 店铺列表

### 4.1 列表字段

| 字段 | 说明 |
|------|------|
| 店铺名称 | 店铺对外名称 |
| 店铺头像 | 展示缩略图 |
| 商户名称 | 所属商户名称（商户经营信息中的商户名称；未填则展示所属单位，与商户列表一致） |
| 店铺状态 | 开业 / 停业 |
| 经营账号 | 展示管理员姓名及登录名（手机号脱敏）；草稿称「主账号」 |
| 操作 | 编辑、店铺账号管理、删除 |

### 4.2 列表行为

- 支持分页；默认按 **创建时间倒序**。
- 默认 **不展示** 已逻辑删除的店铺。
- 支持按 **商户名称** 筛选（可选：从商户详情跳转带入商户条件，见第 13 节）。

---

## 5. 高级检索

> 草稿「检索商户」按业务语义修正为 **检索店铺**。

| 检索项 | 规则 |
|--------|------|
| 关键词 | 模糊匹配 **店铺名称**、**商户名称**、**经营账号**（管理员姓名或登录手机号） |
| 店铺状态 | 精确选择：开业 / 停业；不选表示全部 |

清空条件后恢复默认列表。

---

## 6. 添加店铺

### 6.1 填写项

| 字段 | 说明 |
|------|------|
| 店铺名称 | 必填；**平台内未删除店铺名称不可重复** |
| 店铺头像 | 必填；符合平台图片格式与大小限制 |
| 商家电话 | **选填**；填写时须符合电话格式（与第 8 节编辑一致） |
| 选择商户 | 必填；从商户列表选择，规则见 6.2 |
| 店铺状态 | **选填**；未填时默认 **开业** |

> **经营账号：** 不在添加店铺时采集。商户须在 **商户管理 · 新增入驻** 时完成绑定（`biz_merchant_account`）；开店前系统校验该商户 **已有** 经营账号，否则阻断并提示。

### 6.2 选择商户规则（与商户管理 v1.4 对齐）

可选商户须 **同时满足**：

| 条件 | 不满足时 |
|------|----------|
| 商户未逻辑删除 | 不出现在可选列表 |
| 商户认证状态 = **正常** | 不出现在可选列表 |
| 商户 **经营与结算信息已完整**（商户 6.7 节） | 不出现在可选列表 |

若提交时经营信息不完整，阻断，提示：**请先完善该商户的经营与结算信息**。

### 6.3 经营账号（添加店铺时 · v1.3.5）

| 规则 | 说明 |
|------|------|
| 创建时机 | **商户入驻**（平台新增商户绑定管理员/会员，或入驻审核通过）写入 `biz_merchant_account` 关联行 |
| 绑定规则 | 绑管理员/绑会员：insert `(account_id=sys_user.user_id, merchant_id, shop_id=NULL)`；登录名=`sys_user.user_name`，姓名=`sys_user.nick_name` |
| 添加店铺 | **不** 再填写登录名、管理员姓名、初始密码 |
| 前置校验 | 所选商户须 **已有** 经营账号；否则提示：**该商户尚未配置经营账号，请先在商户管理中完成入驻绑定** |
| 账号维护 | 仍可通过 **店铺账号管理** 修改（见第 9 节） |

### 6.4 添加流程

```text
填写店铺名称、头像（商家电话、店铺状态可选）
    → 选择商户（须经营信息完整且已有经营账号）
    → 提交
    → 系统校验（6.2、6.6）
    ├── 失败 → 提示原因
    └── 成功 → 店铺状态默认开业（未指定时）；商户「已绑定店铺数量」+1
```

### 6.5 同商户多店经营账号一致（定稿）

| 规则 | 说明 |
|------|------|
| 一致性 | 同一商户下所有未删除店铺的 **登录名（经营账号）必须相同** |
| 添加 **非首家** 店 | 沿用该商户已有经营账号；添加店铺 **不再** 重复采集账号字段 |
| 店铺账号管理修改 | 修改登录名/密码后，该商户下 **全部店铺** 经营账号展示 **一并更新**（见第 9 节） |

### 6.6 添加时校验

| 校验项 | 规则 | 提示示例 |
|--------|------|----------|
| 店铺名称 | 与所有未删除店铺不可重复 | 店铺名称已存在 |
| 商户可开店 | 见 6.2 | 请先完善经营信息 |
| 经营账号 | 商户须已有 `biz_merchant_account` | 该商户尚未配置经营账号… |
| 必填与格式 | 名称、头像；电话/状态 **选填**（填则校验格式） | 逐项提示 |

提交成功后：**店铺状态 = 开业**（草稿约定）。

### 6.7 创建后不可变更项

- **所属商户** 创建后 **不可修改**（编辑店铺时商户只读）。
- **经营账号** 不可在编辑页修改，须通过 **店铺账号管理**。

---

## 7. 店铺状态（定稿）

### 7.1 状态枚举

| 状态 | 含义 |
|------|------|
| **开业** | 店铺处于可经营状态（新建默认） |
| **停业** | 店铺暂停经营；由平台管理员在编辑中切换；**C 端（用户商城）禁止对该店铺下单** |

### 7.2 状态与操作权限

| 操作 | 开业 | 停业 |
|------|:----:|:----:|
| 编辑店铺基础信息 | ✓ | ✓ |
| 店铺账号管理 | ✓ | ✓ |
| 删除店铺 | 满足第 11 节时 ✓ | 满足第 11 节时 ✓ |

### 7.3 状态变更联动（定稿）

| 变更 | 本模块 | 商品管理 | 商户管理 |
|------|--------|----------|----------|
| 开业 → 停业 | 列表展示停业；保存前 **二次确认**（见 7.4） | **不自动** 下架、不自动改商品状态 | 不自动变更商户认证状态 |
| 停业 → 开业 | 列表展示开业；保存即生效 | — | — |

**C 端（用户商城）定稿：** 店铺为 **停业** 时，用户 **不可对该店铺及其商品发起下单**（购物车结算、立即购买等入口均拦截，提示「店铺已停业」或同等文案）。商品在平台管理端仍可保持原状态，不因停业自动下架。

商户认证变为 **已冻结 / 已注销** 时，**不自动** 将已有店铺改为停业；已有店铺是否停业由运营在本模块 **编辑** 中处理。

**平台商品管理：** 列表中的商品状态 **不因** 店铺停业而自动变更。

### 7.4 状态流转与确认

```text
创建成功 ──► 开业 ◄──► 停业
```

| 操作 | 平台管理端确认 |
|------|----------------|
| 开业 → 停业 | **须二次确认**，文案示例：「停业后用户端将无法下单，是否继续？」 |
| 停业 → 开业 | 保存即生效，无需二次确认 |
| 新建店铺 | 默认开业，无需确认 |

---

## 8. 编辑店铺

### 8.1 可编辑字段

| 字段 | 说明 |
|------|------|
| 店铺状态 | 开业 / 停业 |
| 店铺名称 | 必填；唯一性校验排除当前店铺 |
| 店铺头像 | 必填 |
| 店铺描述 | 选填 |
| 商家电话 | **选填**；填写时须符合电话格式（与添加一致） |

### 8.2 只读字段

| 字段 | 说明 |
|------|------|
| 所属商户 | 不可修改 |
| 经营账号 | 不可在本页修改；须通过「店铺账号管理」 |

### 8.3 保存校验

与添加时相同（名称唯一、必填、图片规格）；保存成功不改变商户认证状态。

### 8.4 店铺端资料与平台列表同步（草稿第 7 条）

| 维度 | 说明 |
|------|------|
| 商家端可改字段 | 店铺名称、店铺头像、店铺描述、**商家电话**（均为同源 `biz_shop` 字段；电话 **选填**） |
| 不可改字段 | 店铺状态、所属商户、经营账号（仍由平台 **编辑店铺** / **店铺账号管理** 维护） |
| 同步机制 | 商家端保存后 **直接更新** `biz_shop` 同源数据；平台 **店铺列表** 下次查询即展示最新名称/头像/描述/电话，**无需** 额外同步任务 |
| 名称唯一 | 与平台编辑一致：未删除店铺内店名不可重复 |

---

## 9. 店铺账号管理（定稿）

### 9.1 入口

列表操作 **「店铺账号管理」**（以当前店铺所属商户为作用范围；同商户下任意店铺入口等效）。

### 9.2 展示内容

| 项 | 说明 |
|----|------|
| 管理员姓名 | 当前经营账号管理员姓名 |
| 登录名 | 登录用手机号等（脱敏展示） |
| 下属店铺列表 | 该 **商户下全部未删除店铺** 的名称、状态（只读） |

### 9.3 可执行操作

| 操作 | 说明 |
|------|------|
| 修改登录名 | 更换 `sys_user.user_name`（**11 位手机号**；须平台唯一）；**不校验** 会员模块 |
| 修改管理员姓名 | 修改展示用管理员姓名 |
| 重置密码 | 平台管理员重置该经营账号登录密码 |

### 9.4 修改登录名 — 流程与规则

```text
输入新登录名 → 校验格式与平台唯一性
    → 二次确认：「将同步至该商户下全部店铺」
    → 保存成功 → 同步（9.5）
```

| 规则 | 说明 |
|------|------|
| 唯一性 | 新登录名在 `sys_user` 中 **不可重复** |
| 同商户多店 | 修改后，该商户下 **所有未删除店铺** 经营账号 **一并更新** |
| 会员 | **不涉及** 会员注册或绑定校验 |

### 9.5 保存成功后的同步

```text
店铺账号管理：保存登录名/姓名/密码
    ↓
更新 sys_user 登录凭证（nick_name / user_name / password）
    ↓
同步该商户下全部未删除店铺的列表展示
    ↓
不更新商户认证时间；不涉及商户模块字段
```

### 9.6 边界说明

- **创建** 在商户入驻阶段完成；**修改** 仅本模块「店铺账号管理」可执行。
- 修改 **不影响** 店铺状态、商品状态、商户认证状态。

---

## 10. 店铺设置（已迁出）

全平台 **商品默认审核策略**、**子管理员人数上限** 已迁至独立模块 **《店铺设置功能需求.md》**（v1.1 全局设计，独立菜单「店铺设置」）。本模块 **不再** 提供列表逐店「店铺设置」入口，开店 **不写入** 单店策略字段。

---

## 11. 删除店铺（定稿）

### 11.1 定义

- 删除指 **逻辑删除**。
- 删除后：默认列表不展示；该商户「已绑定店铺数量」**减 1**；历史订单与商品数据 **保留** 可查。

### 11.2 删除前置条件（全部满足）

| 序号 | 条件 | 不满足时提示 |
|:----:|------|--------------|
| 1 | 店铺未被逻辑删除 | — |
| 2 | 该店铺无 **未完成订单**（口径与商户删除、平台订单模块一致） | 存在未完成订单，无法删除 |
| 3 | 该店铺下无 **出售中** 或 **待审核** 状态的商品 | 请先下架或处理完商品后再删除店铺 |

**定稿说明：** 「已下架」「审核失败」状态商品 **不阻塞** 删除；**不要求** 店铺下零商品。须先将出售中商品下架、待审核商品处理完毕（审核通过/失败或下架）后方可删店。

### 11.3 删除流程

```text
点击「删除」
    → 校验 11.2
    ├── 不通过 → 提示原因
    └── 通过 → 二次确认：「删除后店铺不可恢复经营」
            ├── 取消 → 结束
            └── 确认 → 逻辑删除成功
```

### 11.4 删除后影响

- 不可再通过本店铺上架新商品（商家端以店铺不可用处理）。
- 商户管理删除商户的前置条件之一为 **已绑定店铺数量 = 0**，须先删除本模块下属店铺。
- 已删除店铺 **不可** 在本模块恢复；须重新 **添加店铺**（新记录）。

### 11.5 经营账号与末店删除（定稿）

| 场景 | 规则 |
|------|------|
| 逻辑删除店铺 | 仅 `biz_shop` 逻辑删除；`shop_count` 减 1 |
| 商户下 **仍有** 未删除店铺 | `biz_merchant_account` **保留**，登录名不变 |
| 商户下 **已无** 未删除店铺（末店删除） | `biz_merchant_account` **保留**（`del_flag` 仍为 0），便于同商户再次开店时沿用或重置账号；**不自动** 物理删除 |
| 逻辑删除商户 | 账号是否一并逻辑删除由商户模块方案约定；本期店铺模块不单独删账号 |

---

## 12. 业务规则汇总

| 编号 | 规则 |
|------|------|
| S1 | 可选商户：**未删除 + 认证正常 + 经营信息完整** |
| S2 | 单商户可开设 **多个** 未删除店铺；**本期不设数量上限** |
| S3 | 新建店铺默认 **开业** |
| S4 | **添加店铺** 须商户 **已有** 经营账号（入驻绑定）；**不在** 开店接口传账号字段 |
| S5 | 经营账号修改 **仅** 在「店铺账号管理」；同步 **同商户全部店铺** |
| S6 | **不考虑会员体系**；登录名 **不校验** 会员注册 |
| S7 | 创建后 **不可更换** 所属商户 |
| S8 | 店铺名称在未删除店铺中 **唯一** |
| S9 | 店铺 **停业不自动** 下架商品；商户 **冻结/注销不自动** 改店铺状态 |
| S12 | 平台编辑 **开业→停业** 须二次确认 |
| S13 | 店铺 **停业** 时，C 端 **禁止下单**（不自动改商品后台状态） |
| S14 | 商家端修改店名/头像/描述/电话后，平台列表 **同源展示**（`biz_shop`） |
| S10 | 店铺删除为逻辑删除，须满足第 11.2 节 |
| S11 | 「默认审核通过」见 **《店铺设置》** 全局配置；仅影响此后新 submit |

---

## 13. 与关联模块的协作流程

### 13.1 商户入驻 → 补全资料 → 开店（端到端）

```text
商户管理：添加商户（仅主体资质）→ 认证=正常
    ↓
商户管理：编辑商户 → 补全经营与结算信息
    ↓
店铺管理：添加店铺 → 选择商户（校验经营信息完整 **且已有经营账号**）
    ↓
校验名称不重复
    ↓
成功：开业；商户已绑定店铺数量 +1
    ↓
商品管理 / 商品分类：在该店铺下经营
```

### 13.2 商户冻结 / 注销

```text
商户管理：认证改为已冻结或已注销
    ↓
店铺管理：不可再为该商户添加店铺；已有店铺仍在列表中
    ↓
运营可选：逐个编辑店铺改为停业（须二次确认）
    ↓
C 端：停业店铺禁止下单
    ↓
商品管理：商品状态不自动变化
```

### 13.5 店铺停业 ↔ C 端下单

```text
平台管理：编辑店铺 → 开业改为停业 → 二次确认 → 保存
    ↓
C 端：该店铺商品不可下单（含购物车结算、立即购买）
    ↓
平台商品管理：商品仍为原状态（如出售中），不自动下架
```

### 13.3 从商户详情跳转

商户详情展示「已绑定店铺数量」时，可提供跳转至本模块列表并 **自动带上商户名称检索条件**，便于查看该商户下所有店铺。

### 13.4 删除顺序

```text
须先：店铺管理删除全部下属店铺（满足 11.2）
    ↓
后：商户管理删除商户（满足商户 10.2）
```

### 13.6 经营账号变更

```text
店铺管理：店铺账号管理 → 修改登录名/重置密码
    ↓
同步同商户下全部店铺经营账号展示
```

---

## 14. 页面与交互要点

| 场景 | 要求 |
|------|------|
| 添加店铺 | 选商户（经营信息完整 **且已有经营账号**）；仅填店名、头像等（电话/状态选填） |
| 编辑店铺 | 商户、经营账号只读；**改停业须二次确认** |
| 店铺账号管理 | 展示下属店铺列表；改登录名须二次确认 |
| 删除 | 按 11.3 二次确认 |
| 列表操作 | 停业店铺仍可编辑、店铺账号管理；删除仍须满足 11.2 |
| 商家端改店资料 | 名称/头像/描述/电话保存后平台列表自动一致（§8.4） |

---

## 15. 草稿对照与修订说明

| 草稿条目 | 本文档处理 |
|----------|------------|
| 列表字段、添加、编辑、主账号、删除 | 结构化展开；主账号=经营账号 |
| 草稿第 7 条自动同步 | §8.4：商家端改 `biz_shop`，平台列表同源 |
| 高级检索「检索商户」 | 修正为检索 **店铺**（名称/商户名/主账号 + 店铺状态） |
| 默认店铺状态开业 | 保留；补充状态含义与联动 |
| 主账号/会员 | v1.3：**店铺经营账号**，平台配置，**不考虑会员** |
| v1.2 商户 | 开店前经营信息完整 |
| 店铺设置两项 | **已迁出** 至《店铺设置》专册 |
| 异常返回、技术栈 | **不纳入** |
| 草稿未写：删除条件、名称唯一、换商户、逻辑删除 | 已定稿补充，与商户模块一致风格 |
| 列表操作 | 明确为：编辑、店铺账号管理、删除 |
| v1.1 删店与商品 | 定稿：**无出售中/待审核即可删**，不要求零商品 |
| v1.1 停业确认 | 定稿：平台 **开业→停业** 二次确认 |
| v1.1 C 端 | 定稿：**停业禁止下单** |
| v1.3.1 | 添加店铺 **商家电话** 必填；登录名唯一口径定稿；**11.5** 末店删除后账号保留 |
| **v1.3.2** | **取消** 单商户最多 3 店限制 |
| **v1.3.6** | 对齐 SQL/实现；商家电话全链路选填；经营账号创建/维护职责拆分 |
| **v1.3.5** | `shop_status`/`shop_phone` 选填；添加店铺 **不再** 采集经营账号（入驻时绑定） |
| **v1.3.4** | 商家端店铺资料 API；§8.4 列表同源同步 |
| **v1.3.3** | 店铺策略迁出至《店铺设置》；`biz_shop` 无策略字段 |

---

*文档版本：v1.3.6（定稿）· 关联《商户管理功能需求.md》v1.4、《店铺管理技术方案.md》v1.3、《店铺管理测试用例.md》v1.2*
