# 承销商管理 — 功能需求

## 1. 文档说明

| 项 | 说明 |
| --- | --- |
| 模块名称 | 承销商管理（交易市场平台） |
| 目标 | 在业务后台维护交易市场**承销商主数据**（主体信息、联系方式、经营地点、销售去向等），支撑承销商检索、台账维护及后续交易、销售统计等业务引用 |
| 关联系统 | 业务后台；本模块为承销商**主档维护**，不替代交易开单、对账、支付等下游流程（若需与订单/结算联动，另出集成需求） |
| 修订依据 | 同目录 `承销商管理-草稿.md`、界面原型（`承销商管理.png`） |

本文档仅描述**功能需求与业务规则**，不涉及库表结构、接口路径、请求体字段命名、HTTP 报文及技术栈选型。

---

## 2. 术语与枚举

### 2.1 承销商（一条记录）

- 表示交易市场内的一个**承销/销售主体**（个体户或企业），负责将货品销售至指定区域范围。  
- 由运营人员在后台**登记与维护**；保存成功后可在列表检索，并供后续业务按编号或名称引用。  
- 单条记录包含：编号、名称、类型、身份识别号、联系方式、经营地点、销售去向等。

### 2.2 承销商类型（单选，必填）

| 类型 | 含义 | 身份识别字段（界面标签） |
| --- | --- | --- |
| **个体户** | 自然人经营主体 | **身份证号** |
| **企业** | 法人或非法人组织主体 | **主体识别号**（统一社会信用代码等，见 **§2.5**） |

切换类型时，身份识别字段的**标签、校验规则**随之切换；已填写的识别号在切换类型后须**重新校验**，不符合新类型规则时拒绝保存并提示。

### 2.3 销售去向（单选，必填）

表示承销商货品或服务的主要**销售区域范围**（与草稿、原型一致）：

| 销售去向 | 含义概要 |
| --- | --- |
| **本市** | 主要在本市范围内销售 |
| **本省** | 主要在本省（自治区、直辖市）范围内销售 |
| **外省** | 主要面向本省以外区域销售 |

- 界面以**下拉单选**展示；保存后列表、详情展示对应中文标签。  
- **本期不提供**多级行政区划联动选点（如精确到市/县代码）；若后续与地图、区划库对接须单独立项。

### 2.4 承销商编号

- **系统自动生成**，用户**不可手工录入或修改**（新增弹窗中只读或「保存后自动生成」占位，修改时只读）。  
- 格式：**2 位数字**字符串，建议左侧补零（如 `01`、`02` … `99`）。  
- **全局唯一**：同一系统内不得重复；编号用尽（如已达 `99`）时拒绝继续新增并提示「承销商编号已达上限，请联系管理员」。  
- 生成时机：用户点击新增「确定」且校验通过时分配。

> **说明：** 草稿写「所有均可修改」指业务信息字段；**编号不在可改范围内**，与自动生成语义一致。

### 2.5 身份识别号校验（摘要）

| 承销商类型 | 规则摘要 |
| --- | --- |
| 个体户 · 身份证号 | **必填**；18 位居民身份证格式及校验位规则（末位可为 `X`/`x`），与项目全局身份证校验一致 |
| 企业 · 主体识别号 | **必填**；统一社会信用代码 **18 位**（字符集、校验位与项目全局规则一致） |

### 2.6 平台账号分配

- 列表提供「**分配账号**」操作：为当前承销商创建若依平台登录用户。  
- **默认登录名**：承销商名称的**汉字拼音首字母**（小写）+ 该条记录的**数据库主键 id**。  
- **默认角色**：绑定平台角色编号 **104**（承销商端角色，以 `sys_role.role_id` 为准）。  
- **仅可成功分配一次**；失败时不标记已分配，可重试。  
- **删除联动**：逻辑删除承销商时，若已分配账号，**同时删除**关联 `sys_user`。

### 2.7 删除与可见性

- 删除采用与项目其他业务台账一致的**逻辑删除**：删除后默认不在列表与常规查询中展示，数据保留供审计。  
- **本期不提供**回收站界面。  
- 若承销商存在**未支付**交易订单，**禁止删除**并提示「存在未支付订单，无法删除」；仅**已完成**订单不阻止删除。

### 2.8 列表筛选项与记录字段的关系

| 筛选项 | 与记录字段关系 |
| --- | --- |
| 承销商编号 | 选填；对「承销商编号」**模糊**匹配（包含输入片段即可，如输入 `1` 可命中 `01`、`11` 等，具体规则与项目全局模糊查询一致） |
| 承销商名称 | 选填；对「承销商名称」**模糊**匹配（包含输入片段即可）；空则不过滤 |

> **与供应商管理的差异：** 供应商模块为编号/名称**精确**匹配；本模块按草稿与原型采用**模糊**匹配，实施与测试须按本节验收。

---

## 3. 功能范围

**本期实现：**

| 能力 | 说明 |
| --- | --- |
| 承销商列表 | 编号、名称模糊筛选；分页；见 **§5.2** |
| 新增承销商 | 录入业务字段；编号自动生成；见 **§5.1** |
| 修改承销商 | 除编号外字段均可改；见 **§5.3** |
| 查看详情 | 只读展示全部业务字段；见 **§5.4** |
| 删除承销商 | 单条删除；见 **§5.5** |
| 分配账号 | 为承销商创建平台用户；每条仅成功一次；见 **§5.6** |
| 工具栏 | 搜索、重置、新增 |

**本期不实现（除非后续单独立项）：**

- 承销商准入审批、黑名单、资质附件  
- 批量导入/导出、编号手工指定  
- 与交易订单、库存、结算单自动联动  
- 销售去向多级区划、地图选点  
- 按类型、销售去向的列表筛选（原型未要求则不做）  

---

## 4. 业务流程概览

```mermaid
flowchart TD
    A[进入承销商管理] --> B{用户操作}
    B -->|登记| C[新增承销商]
    C --> D[选择类型与销售去向]
    D --> E[填写并校验]
    E -->|通过| F[系统分配编号并保存]
    E -->|未通过| C
    F --> G[返回列表]
    B -->|检索| H[输入编号/名称片段]
    H --> I[模糊搜索列表]
    I --> J{行操作}
    J -->|查看| K[只读详情]
    J -->|编辑| L[修改承销商]
    L --> E
    J -->|分配账号| Q[创建平台用户]
    Q --> G
    J -->|删除| M[二次确认]
    M -->|允许| N[逻辑删除]
    M -->|有关联| O[提示不可删]
    N --> G
    K --> I
    B -->|重置| P[清空筛选]
    P --> I
```

**典型使用顺序：**

1. 运营人员**新增**承销商，选择个体户/企业、**销售去向**，填写身份号、联系方式等。  
2. 系统**自动分配**两位编号。  
3. 日常按编号或名称**模糊**查询台账。  
4. 需要承销商登录平台时，对未分配行**分配账号**。  
5. 信息变更时**修改**（编号不变）；无效登记**删除**（无关联时）。  
6. 核对完整信息时**查看**详情。

---

## 5. 详细功能需求

### 5.1 新增承销商

#### 5.1.1 业务字段

| 字段 | 必填 | 规则摘要 |
| --- | --- | --- |
| 承销商编号 | — | **只读**；保存成功后展示系统生成的 2 位数字编号 |
| 承销商名称 | 是 | **1～20** 个字符；去除首尾空白后非空 |
| 承销商类型 | 是 | **个体户** / **企业**，单选 |
| 身份证号 / 主体识别号 | 是 | 标签随类型切换；校验见 **§2.5** |
| 联系方式 | 是 | **中国大陆手机号**格式校验 |
| 经营地点 | 否 | 文本；长度宜 **0～50** 字（有内容时按 1～50 校验） |
| 销售去向 | 是 | **本市** / **本省** / **外省**，单选 |

#### 5.1.2 界面联动（与原型一致）

| 用户操作 | 界面行为 |
| --- | --- |
| 选择「个体户」 | 身份字段标签为「身份证号」 |
| 选择「企业」 | 身份字段标签为「主体识别号」 |
| 选择销售去向 | 下拉展示三档选项，必选其一 |

#### 5.1.3 保存与取消

| 操作 | 行为 |
| --- | --- |
| **确定** | 全量校验通过后保存；分配承销商编号；关闭弹窗并刷新列表 |
| **取消** | 关闭弹窗，不保存 |

#### 5.1.4 校验摘要

| 规则 | 说明 |
| --- | --- |
| 必填 | 名称、类型、身份号、联系方式、销售去向为空或仅空白时拒绝保存 |
| 名称唯一 | **默认建议**未删除记录间名称不可重复；重复时提示「承销商名称已存在」 |
| 身份号唯一 | **默认建议**未删除记录间身份识别号不可重复 |

---

### 5.2 查询承销商列表

#### 5.2.1 筛选

| 条件 | 规则 |
| --- | --- |
| 承销商编号 | 选填；**模糊**匹配（**§2.8**） |
| 承销商名称 | 选填；**模糊**匹配 |

支持**编号 + 名称**组合筛选（同时满足）。

#### 5.2.2 列表规则

- 默认每页 **20** 条。  
- 默认排序：**承销商编号升序**（或 **创建时间倒序**，产品择一后全文一致；**默认建议编号升序**）。  
- 工具栏：**搜索**、**重置**、**新增**。

#### 5.2.3 展示列（与原型一致）

承销商编号、承销商名称、承销商类型、身份证号/主体识别号、联系方式、经营地点、**销售去向**、**账号分配**、操作。

| 列 | 展示说明 |
| --- | --- |
| 承销商类型 | 中文：个体户 / 企业 |
| 身份证号/主体识别号 | 统一列展示对应类型的识别号 |
| 经营地点 | 过长省略；详情可看全 |
| 销售去向 | 中文：本市 / 本省 / 外省 |
| 账号分配 | 未分配「否」；已分配「是」及登录名（若有） |
| 操作 | 查看、编辑、删除；**未分配**时「分配账号」（权限见 **§6**） |

---

### 5.3 修改承销商

| 项 | 要求 |
| --- | --- |
| 入口 | 列表「编辑」；详情可提供「编辑」 |
| 不可改字段 | **承销商编号**（只读） |
| 可改范围 | **§5.1.1** 中其余全部字段（含销售去向） |
| 类型变更 | 切换后重新校验身份号；标签联动同新增 |
| 校验 | 同 **§5.1.4** |
| 保存 | **确定** 保存并刷新；**取消** 放弃 |

---

### 5.4 查看承销商详情

| 项 | 要求 |
| --- | --- |
| 展示内容 | **§5.1.1** 全部字段；**销售去向**中文标签；**是否已分配账号**、**已分配登录名**（若有） |
| 只读 | 全部不可编辑 |
| 操作 | 可提供 **编辑**、**删除**；**未分配**时可 **分配账号**；**关闭** 返回 |
| 审计信息 | 宜含创建人、创建时间、修改人、修改时间（与项目其他台账一致） |

---

### 5.5 删除承销商

| 项 | 要求 |
| --- | --- |
| 入口 | 列表「删除」；详情可提供「删除」 |
| 确认 | 删除前**二次确认**（宜展示编号、名称） |
| 删除方式 | **逻辑删除**（**§2.6**） |
| 关联约束 | 存在**未支付**交易订单（`order_status=待支付`）时**拒绝删除**，提示「存在未支付订单，无法删除」；已完成订单不阻止删除 |
| 批量删除 | **本期不提供** |
| 已分配账号 | 删除时**同步删除**平台用户 |

---

### 5.6 分配账号

| 项 | 要求 |
| --- | --- |
| 入口 | 列表「分配账号」；详情同等入口 |
| 前置 | 记录未删且**未分配** |
| 确认 | 二次确认（宜展示承销商名称） |
| 登录名 | **§2.6**：名称拼音首字母 + `id` |
| 角色 | 默认 **104** |
| 初始密码 | `sys.user.initPassword`，缺省 `123456` |
| 用户资料 | 昵称=承销商名称；手机=联系方式 |
| 成功 | 标记已分配；写 `sys_user_id`、`assigned_login_name` |
| 失败 | 不标记已分配；提示「账号创建失败：{原因}」 |
| 重复 | 提示「该承销商已分配账号，不可重复分配」 |

---

## 6. 操作与权限矩阵（汇总）

在**已授权**前提下：

| 操作 | 列表/详情 | 说明 |
| --- | --- | --- |
| 查询列表、筛选 | ✓ | 需列表查询权限 |
| 新增 | 工具栏「新增」 | 需新增权限 |
| 查看 | 行内/详情 | 需查看权限 |
| 修改 | 行内/详情 | 需修改权限；编号不可改 |
| 删除 | 行内/详情 | 需删除权限 |
| 分配账号 | 行内/详情 | 需分配账号权限；**仅未分配** |

无权限的按钮**不展示或禁用**（与若依按钮权限惯例一致）。

---

## 7. 与供应商管理对照（便于评审）

| 维度 | 供应商管理 | 承销商管理（本模块） |
| --- | --- | --- |
| 主体称谓 | 供应商 | 承销商 |
| 列表筛选 | 编号、名称**精确** | 编号、名称**模糊** |
| 特色业务字段 | 收费方式及费率/标准 | **销售去向**（本市/本省/外省） |
| 编号规则 | 2 位自动、不可改 | 同左 |
| 类型与身份号 | 个体户/企业 | 同左 |
| 车辆号牌 | 可选多条 | **本期不提供** |
| 分配账号 | 角色 **103** | 角色 **104** |
| 登录名规则 | 名称拼音首字母 + id | 同左 |

---

## 8. 异常与提示（业务侧）

| 场景 | 提示方向（示例） |
| --- | --- |
| 手机号格式错误 | 请输入正确的手机号码 |
| 身份证/主体识别号错误 | 请输入正确的身份证号 / 主体识别号 |
| 未选销售去向 | 请选择销售去向 |
| 名称/身份号重复 | 承销商名称已存在 / 该身份识别号已登记 |
| 编号用尽 | 承销商编号已达上限，请联系管理员 |
| 删除受阻 | 存在未支付订单，无法删除 |
| 重复分配账号 | 该承销商已分配账号，不可重复分配 |
| 账号创建失败 | 账号创建失败：登录名已存在 / 用户保存失败 |

**本期不涉及** HTTP 响应结构、错误码表等技术约定。

---

## 9. 非功能需求（摘要）

| 项 | 要求 |
| --- | --- |
| 易用性 | 类型切换时身份字段标签即时更新；销售去向选项清晰 |
| 一致性 | 逻辑删除、分页、校验风格与供应商管理等台账模块一致 |
| 安全 | 联系方式、身份号是否脱敏按项目统一规范 |

---

## 10. 修订记录

| 版本 | 说明 |
| --- | --- |
| 1.0 | 初稿：依据草稿与原型；明确销售去向三档、列表模糊筛选、编号自动生成；剔除接口与技术栈；经营地点按文本 50 字（原型提示为字数限制而非区划下拉） |
| 1.1 | 依据修订草稿：移除车辆号牌；列表查询表述为承销商列表（非供应商） |
| 1.2 | 新增 §2.6、§5.6 分配账号：拼音首字母+id、角色 104、仅一次；删除联动删平台用户 |
| 1.3 | §2.7、§5.5：存在未支付交易订单时禁止删除 |
