# 店铺设置 — 功能需求说明

> 本文档在《店铺设置功能需求-草稿》基础上整理，并关联 **《关联需求分析.md》**、平台侧 **《店铺管理功能需求》**、**《商户管理功能需求》**、**《店铺设置功能需求》**（平台全局策略）及商家侧 **《员工管理功能需求》**、**《商家端店铺上下文接口说明》** 做边界与流程对齐。  
> 范围：**店铺经营管理端 · 店铺设置** 对 **当前店铺** 的资料展示与维护，以及 **当前店铺员工** 数量概览。  
> **说明：** 本文档 **仅描述功能需求与业务规则**；不涉及数据库结构、接口定义及技术实现细节。  
> **命名区分：** 本模块为 **商家端 · 店铺设置**（单店资料与员工概览）；平台 **组织管理 · 店铺设置** 为 **全平台全局策略**（商品默认审核、子管理员上限），二者 **菜单同名、职责不同**，下文以 **「平台 · 店铺设置」** 指后者。

---

## 1. 模块定位

### 1.1 业务目标

在农资商城 **店铺经营管理端（Web）** 提供 **店铺设置** 能力，使 **店铺管理员**（商户经营账号及已授权子管理员）能够：

- 查看 **当前店铺** 的基础资料及部分 **商户联系人** 只读信息；
- **编辑** 当前店铺可自助维护的资料（名称、头像、简介、对外联系电话）；
- 查看 **当前店铺** 下员工账号的 **数量概览**（已有员工数、停用员工数），并 **跳转** 至员工管理进行明细维护。

**不包含（本期或与它模块分工）：**

| 能力 | 说明 |
|------|------|
| **平台 · 店铺设置** | 全平台 **商品默认审核**、**子管理员人数上限**；**仅平台** 可改，商家 **只读消费**（见 §2.2） |
| **店铺开业/停业、删店、换所属商户** | 见 **平台 · 店铺管理** |
| **经营账号登录名/密码/管理员姓名** | 见 **平台 · 店铺管理 · 店铺账号管理** |
| **商户经营信息完整维护** | 见 **平台 · 商户管理 · 编辑商户**（联系人姓名/手机等） |
| **员工 CRUD、改密、角色绑定** | 见 **商家端 · 账号管理 · 员工管理** |
| **角色定义与菜单权限** | 见 **商家端 · 账号管理 · 角色管理** |
| **C 端会员** | **无关**；商家端操作 **不校验** C 端会员注册 |

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

| 草稿条目 | 定稿规则 |
|----------|----------|
| §1 店铺管理 · 展示 | §5.1 |
| §1 店铺管理 · 编辑 | §6 |
| §2 员工管理 · 数量 | §7 |
| §3 按当前店铺查询 | §8、§9 |
| §4 店铺上下文 | §8 |
| §5 异常返回 | **不纳入** |
| §6 技术栈 | **不纳入** |

### 1.3 在供给链中的位置

依据 **《关联需求分析.md》§5.1、§9**：

```text
【平台】商户管理 → 店铺管理（开店、营业状态、经营账号）
            ↓
【平台】店铺设置（全局）── 子管理员上限、商品默认审核
            ↓
【商家】登录 → 获取/切换当前店铺（X-Shop-Id）
            ↓
【商家】店铺设置（本模块）── 查看/编辑当前店资料；员工数量概览
            ├── 资料保存 ──► 与平台店铺列表 **同源展示**（见 §2.3）
            └── 员工概览 ──► 跳转员工管理（明细 CRUD）
            ↓
【商家】商品列表 / 店铺商品分类 / 员工管理等 ── 均依赖同一店铺上下文
```

| 关联模块 | 关系 | 边界说明 |
|----------|------|----------|
| **平台 · 店铺管理** | 上游 + 同源 | 平台维护营业状态与经营账号；商家可改 **部分店资料**，保存后平台列表 **即时一致** |
| **平台 · 商户管理** | 上游只读 | **负责人姓名、联系电话** 来自商户经营信息，本模块 **展示、不可改** |
| **平台 · 店铺设置** | 策略只读 | 子管理员 **配额** 由平台配置；本模块 **不修改** 全局策略 |
| **员工管理** | 下游明细 | 本模块 **仅统计**；增删改查在员工管理 |
| **商品列表等** | 并列 | 共用 **当前店铺** 上下文；切换店铺后本页 **整页刷新** |

### 1.4 使用端与角色

| 端 | 可操作角色 | 能力 |
|----|------------|------|
| **店铺经营管理端** | **商户经营账号** | 本模块全部能力（含多店切换后查看/编辑 **对应店** 资料） |
| **店铺经营管理端** | 员工（子管理员） | 是否可访问由 **角色管理** 中商家端菜单权限决定 |
| **平台管理端** | 平台管理员 | **不使用** 本模块；在 **店铺管理 / 商户管理 / 平台 · 店铺设置** 维护 |
| **C 端** | — | **不可** 访问 |

### 1.5 数据范围

- **纳入：** 请求上下文 **当前店铺**（`X-Shop-Id`）对应的店铺资料；该店铺下 **员工（子管理员）** 统计；
- **排除：** 其他店铺资料；**商户经营账号**（不计入员工统计）；
- **上下文：** 页头展示 **当前店铺名称**（只读）；切换店铺后 **重新加载** 本页全部数据。

---

## 2. 关联需求分析

### 2.1 与《关联需求分析》— 供给链与账号体系

| 关联点 | 定稿 |
|--------|------|
| **§3 店铺管理** | 商家端可改店 **名称/头像/描述/对外电话**；营业状态、经营账号 **仍由平台** 维护 |
| **§4 店铺对象** | 店铺 **默认审核/子管理员上限** 不在单店对象上配置，见 **平台 · 店铺设置** |
| **§9.1 经营账号** | 一商户一套登录凭证、多店共用；登录后须 **选定当前店铺** 再访问本模块 |
| **§9.2 子管理员** | 人数上限在 **平台 · 店铺设置**；人员维护在 **员工管理**；本模块 **仅展示当前店统计** |
| **共性** | 商家登录 **不校验** C 端会员注册 |

### 2.2 与平台《店铺设置》— 全局策略（非本模块）

| 维度 | 平台 · 店铺设置 | 商家端 · 店铺设置（本模块） |
|------|-----------------|---------------------------|
| 定位 | 全平台 **唯一** 策略页 | **当前店铺** 资料 + 员工概览 |
| 配置项 | 商品默认审核通过；最大子管理员数量 | **无** 策略配置项 |
| 维护方 | **仅平台管理员** | 商户/员工 **改店资料**；**不可** 改全局策略 |
| 本模块消费 | — | 员工管理创建/启用时校验 **商户级配额**；本页 **宜只读展示**「已用/上限」供参考（见 §7.3） |

> **易混淆说明：** 员工管理、商品列表等文档中的「店铺设置」若指 **子管理员上限** 或 **默认审核**，均指 **平台 · 店铺设置**，**非** 本商家端页面。

### 2.3 与平台《店铺管理》— 店资料同源与同步

对齐 **《店铺管理功能需求》§8.4**：

| 维度 | 定稿 |
|------|------|
| **商家端可改** | 店铺名称、店铺头像、店铺简介、**商家电话**（草稿界面文案「客服电话」，见 §5.1 字段说明） |
| **商家端不可改** | 店铺状态（开业/停业）、所属商户、经营账号 |
| **同步机制** | 商家端保存后 **直接更新** 与平台 **同一套店铺资料**；平台 **店铺列表 / 编辑店铺** 下次查询即展示最新值，**无需** 额外同步任务 |
| **名称唯一** | 与平台编辑一致：全平台 **未删除店铺** 内店名 **不可重复**（排除当前店） |
| **电话规则** | **选填**；有值时须符合项目统一 **电话格式**（与平台添加/编辑店铺一致） |
| **头像规则** | **必填**；须符合平台图片 **格式与大小** 限制 |

### 2.4 与平台《商户管理》— 联系人只读展示

| 展示项（草稿用语） | 业务含义 | 维护入口 | 本模块 |
|--------------------|----------|----------|--------|
| **负责人姓名** | 商户经营信息 · **联系人姓名** | 平台 · **编辑商户** | **只读展示**；未完善时显示占位（如「—」） |
| **联系电话** | 商户经营信息 · **联系人手机** | 平台 · **编辑商户** | **只读展示**；未完善时显示占位 |

> **边界：** 商户级 **客服电话**（经营信息字段）与店铺级 **商家电话**（草稿「客服电话」可编辑项） **不是同一字段**；本模块 **不** 在店设置页编辑商户客服电话。

### 2.5 与《员工管理》— 统计与跳转

| 项 | 定稿 |
|----|------|
| 统计范围 | **当前店铺**（`X-Shop-Id`）下 **员工（子管理员）**；**不含** 商户经营账号 |
| **已有员工数** | 该店下 **未删除** 员工绑定总数（**含** 正常与停用） |
| **停用员工数** | 上述员工中状态为 **停用** 的数量 |
| 配额关系 | **子管理员上限** 为 **商户级** 计数（含各店停用员工）；明细与创建入口在 **员工管理** |
| 页面协作 | 本模块 **宜提供** 进入 **员工管理** 的入口；**不在** 本页做员工 CRUD |

### 2.6 与《商家端店铺上下文》— 当前店铺

| 项 | 定稿 |
|----|------|
| 默认店铺 | 登录后调用上下文能力：员工账号 → 绑定店铺；经营账号 → 该商户 **创建时间最早** 的有效店铺 |
| 请求标识 | 业务请求须携带 **`X-Shop-Id`**；本模块 **仅** 读写该 ID 对应店铺 |
| 切换店铺 | 经营账号切换成功后 **更新** `X-Shop-Id`；本页 **重新加载** |
| 员工账号 | **不可** 切换店铺；上下文固定为其绑定店 |

---

## 3. 页面结构

本模块为 **单页或多区块** 布局，至少包含以下 **两个功能区**：

| 区块 | 名称 | 能力 |
|------|------|------|
| A | **店铺资料** | 展示 §5 字段；提供 **编辑** 入口进入 §6 表单 |
| B | **员工概览** | 展示 §7 统计；提供 **前往员工管理** 入口 |

**页头协作（与其他商家端模块一致）：**

- 展示 **当前店铺名称**（只读）；
- 经营账号 **可切换店铺** 时，切换后本页数据 **随新店铺刷新**。

---

## 4. 进入与加载流程

```text
商家端已登录
    → 确保已解析当前店铺（X-Shop-Id）
    ├── 未设置 → 提示先完成选店/上下文加载，**拒绝** 本模块业务操作
    └── 已设置
            → 进入「店铺设置」
            → 并行加载：
                ├── 当前店铺资料（§5）
                └── 当前店铺员工统计（§7）
            → 渲染页面
```

| 规则 | 说明 |
|------|------|
| SS1 | 任意加载/保存 **仅针对** 上下文中的 **当前店铺** |
| SS2 | 切换店铺后 **不得** 继续展示上一店资料或统计 |
| SS3 | 无本菜单权限的用户 **不可** 进入或 **不可** 编辑（以角色管理为准） |

---

## 5. 店铺资料 — 展示

### 5.1 展示字段

| 字段 | 说明 | 可编辑 |
|------|------|:------:|
| **店铺头像** | 当前店铺 Logo/头像 | §6 |
| **店铺名称** | 对外展示名称 | §6 |
| **创建时间** | 当前店铺创建时间 | ✗ |
| **店铺简介** | 店铺描述/简介；可为空 | §6 |
| **负责人姓名** | 商户 **联系人姓名**（§2.4） | ✗ |
| **联系电话** | 商户 **联系人手机**（§2.4） | ✗ |
| **客服电话** | 当前店铺 **商家电话**（与平台编辑店铺同源；§2.3） | §6 |

**可选只读补充（非草稿强制，建议）：**

| 字段 | 说明 |
|------|------|
| **店铺状态** | 开业 / 停业；由 **平台 · 店铺管理** 维护，本页 **只读** |
| **所属商户名称** | 便于多店辨识；**只读** |

### 5.2 空值与脱敏

| 场景 | 展示 |
|------|------|
| 简介、电话未填 | 空或「—」 |
| 联系人未完善 | 「—」；**不阻断** 编辑店铺可改字段 |
| 联系电话 | 可按项目统一规则 **脱敏展示**（若与其他模块一致） |

---

## 6. 店铺资料 — 编辑

### 6.1 可编辑字段

与草稿 §1（2）及平台 §8.4 对齐：

| 字段 | 规则 |
|------|------|
| **店铺头像** | **必填**；上传后须满足平台图片规格 |
| **店铺名称** | **必填**；长度与字符规则与 **平台 · 添加/编辑店铺** 一致 |
| **店铺简介** | **选填**；过长时 **拒绝保存** 并提示 |
| **客服电话** | **选填**；有值时须符合 **电话格式**（与平台商家电话一致） |

### 6.2 编辑流程

```text
点击「编辑」
    → 表单预填当前展示值（可编辑项）
    → 用户修改
    → 点击「保存」
    → 前端校验（必填、格式）
    → 提交
    ├── 校验失败 → 字段级或统一 msg 提示，**不保存**
    └── 成功
            → 提示保存成功
            → 刷新展示区（含与平台同源的名称/头像/简介/客服电话）
            → 平台侧店铺列表 **无需额外操作** 即可看到更新（§2.3）
```

**取消：** 放弃修改并回到展示态，或关闭编辑表单且不提交。

### 6.3 保存校验

| 校验项 | 规则 | 提示要点 |
|--------|------|----------|
| 店铺名称 | 非空；全平台未删除店铺内 **唯一**（排除本店） | 店铺名称已存在 |
| 店铺头像 | 非空；格式/大小合法 | 请上传店铺头像 / 图片不符合要求 |
| 店铺简介 | 选填；超长拒绝 | 店铺简介过长 |
| 客服电话 | 选填；有值则格式合法 | 电话格式不正确 |
| 当前店铺 | 须有效且未删除 | 店铺不存在或无权操作 |

### 6.4 不可编辑项（保存时不得变更）

- 创建时间、所属商户、店铺状态、经营账号；
- **负责人姓名、联系电话**（商户维度，见 §2.4）。

---

## 7. 员工概览

### 7.1 展示指标

| 指标 | 定义 |
|------|------|
| **已有员工数** | 当前店铺下，**已建立有效员工绑定** 且 **未删除** 的账号 **总数**（正常 + 停用） |
| **停用员工数** | 其中 **停用** 状态的员工数 |

**不计入：**

- **商户经营账号**（平台配置的商户管理员登录账号）；
- 其他店铺的员工；
- 已逻辑删除的员工。

### 7.2 与员工管理协作

```text
店铺设置 · 员工概览（只读数字）
    → 用户点击「员工管理」或等价入口
    → 进入「账号管理 · 员工管理」
    → 列表范围 = 同一当前店铺（X-Shop-Id）
```

| 规则 | 说明 |
|------|------|
| SS4 | 本模块 **不提供** 创建、编辑、删除、改密、绑定角色 |
| SS5 | 统计数字与员工管理列表 **口径一致**；员工管理变更后返回本页宜 **刷新统计** |
| SS6 | 停用员工 **仍计入**「已有员工数」，并 **单独计入**「停用员工数」 |

### 7.3 配额提示（建议）

为与 **平台 · 店铺设置**、**员工管理 EM5** 衔接，员工概览区 **宜只读展示**：

- **商户已占用员工名额 / 平台全局上限**（如「3 / 5」）；
- 上限数值 **只读**，调整须联系平台修改 **平台 · 店铺设置**；
- **不含** 经营账号。

> 草稿未强制该项；作为 **关联需求** 建议展示，避免用户仅在创建员工失败时才感知配额。

---

## 8. 店铺上下文与多店

### 8.1 当前店铺解析（对齐草稿 §3、§4）

```text
登录成功
    → 根据 user_id 解析商户账号绑定关系
    ├── 员工（绑定单一 shop_id）→ 当前店铺 = 该 shop_id
    └── 商户经营账号（shop_id 为空）
            → 默认当前店铺 = 该商户下 **create_time 最早** 的有效店铺
            → 允许在页头 **切换店铺**
                    → 更新 X-Shop-Id
                    → 本模块 **重新查询** 该店资料与员工统计
```

### 8.2 多店经营账号

| 场景 | 行为 |
|------|------|
| 商户 A 有店 1、店 2 | 切换至店 2 后，展示 **店 2** 资料；店 1/店 2 资料 **相互独立** |
| 编辑店 2 名称 | **仅影响店 2**；店 1 名称不变；平台列表按店分别展示 |
| 员工统计 | **按当前店** 计数；店 1 与店 2 员工列表 **互不可见**（除非切换店铺） |

### 8.3 配额与多店

| 项 | 说明 |
|----|------|
| 子管理员上限 | **商户级** 共享同一全局上限（平台 · 店铺设置） |
| 各店员工 | 分别归属不同 `shop_id`，但 **合计** 占用商户配额 |
| 本页统计 | **已有/停用** 为 **当前店**；**已用/上限** 为 **商户级**（§7.3） |

---

## 9. 权限与菜单

| 能力 | 说明 |
|------|------|
| 查看店铺设置 | 须商家端菜单权限（如「店铺设置」查询） |
| 编辑店铺资料 | 须 **编辑** 权限；仅有查询权限时 **不可保存** |
| 员工概览 | 与查看权限一并开放；**不要求** 员工管理编辑权即可看 **数字** |
| 进入员工管理 | 须员工管理菜单权限；无权限时 **隐藏或禁用** 跳转入口 |

**默认预期：** **商户经营账号** 拥有本模块完整权限；**员工** 是否可见由 **角色管理** 配置。

---

## 10. 边界与非本期范围

| 项 | 说明 |
|----|------|
| 平台代维 | 平台 **不在** 商家端代改店资料；仅在 **店铺管理** 编辑 |
| 经营账号自助改密/改手机 | 见 **平台 · 店铺账号管理** 或后续 **账号设置** |
| 商户主体/结算信息 | **平台 · 商户管理** |
| 全局免审开关 | **平台 · 店铺设置**；影响 **商品提交上架** 后状态，**不在** 本页配置 |
| 店铺商品分类 / 商品 | **无关**；仅共用店铺上下文 |
| C 端展示 | C 端读取 **出售中商品 + 开业店铺** 等规则时，店名/头像/电话以 **最新店资料** 为准（间接关联） |

---

## 11. 业务流程总览

```text
【平台】开店 → 写入店铺基础资料、配置经营账号
【平台】店铺设置 → 全局子管理员上限、商品默认审核
            ↓
【商家】登录 → 上下文（默认最早店 / 员工绑定店）
            ↓
【商家】店铺设置
    ├── 查看/编辑当前店资料 ──► 平台店铺列表同源更新
    └── 查看员工概览 ──► 员工管理（CRUD、配额校验）
            ↓
【商家】商品列表 submit 上架 ──► 读取平台全局「默认审核」策略（非本页配置）
```

---

## 12. 校验与提示

| 场景 | 提示要点 |
|------|----------|
| 店名重复 | 店铺名称已存在 |
| 头像缺失/非法 | 请上传店铺头像 / 图片不符合要求 |
| 简介过长 | 店铺简介过长 |
| 电话格式错误 | 电话格式不正确 |
| 未选店铺 | 请先选择当前店铺 |
| 无权限 | 无操作权限 |
| 保存成功 | 保存成功 |

---

## 13. 业务规则汇总

| 编号 | 规则 |
|------|------|
| **ST1** | 全部数据范围 = 上下文 **当前店铺**（`X-Shop-Id`） |
| **ST2** | 可编辑店资料 = **头像、名称、简介、客服电话（商家电话）**；与平台 §8.4 同源 |
| **ST3** | **负责人姓名、联系电话** = 商户联系人信息，**只读** |
| **ST4** | 店名在全平台未删除店铺内 **唯一** |
| **ST5** | 保存成功后平台 **店铺管理列表** **无需同步任务** 即一致 |
| **ST6** | **已有员工数** = 当前店未删除员工总数（含停用）；**停用员工数** = 其中停用数 |
| **ST7** | 经营账号 **不计入** 员工统计 |
| **ST8** | 员工 CRUD、配额扣减在 **员工管理**；本模块 **仅概览** |
| **ST9** | 子管理员 **全局上限** 由 **平台 · 店铺设置** 配置；本模块 **不修改** |
| **ST10** | 切换店铺后本页 **必须刷新** |
| **ST11** | 商家端 **不校验** C 端会员 |

---

## 14. 修订记录

| 版本 | 说明 |
|------|------|
| **v1.0** | 首版定稿；对齐草稿 §1～§4；关联平台店铺管理/商户管理/平台店铺设置及商家员工管理；明确与平台「店铺设置」命名区分 |

---

*文档版本：v1.0 · 草稿《店铺设置功能需求-草稿.md》保持不变 · 平台侧见《关联需求分析.md》《店铺管理功能需求.md》《商户管理功能需求.md》《店铺设置功能需求.md》（平台）· 商家侧见《员工管理功能需求.md》《商家端店铺上下文接口说明》*
