Files
xin-procurement/docs/小程序端修改文档.md
T
2026-08-20 14:45:06 +08:00

173 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 小程序端修改文档(门店端)
> 版本:2026-08-17
> 后端变更:用户表与门店表合并(一个用户就是一个门店),门店登录由「微信静默登录」改为「账号 + 密码登录」。
> 本文档面向小程序(门店端)开发者,说明需要配合修改的内容。**未列出的接口均无变化**。
---
## 一、变更总览
| 事项 | 旧 | 新 |
|------|-----|-----|
| 登录方式 | `wx.login` 拿 code,调 `/mini/auth/login` 静默登录 | 账号 + 密码登录(账号由商家后台分配) |
| 注册 | `POST /mini/auth/register`(微信 code + 手机号 + 门店编码) | **接口下线**,门店账号由商家在 PC 后台创建 |
| 登录主体 | 微信用户(user),再绑定门店(store) | **门店即用户**:登录成功返回的就是门店本身 |
| 修改密码 | 无 | 新增 `PUT /mini/auth/password` |
| Token 鉴权 | Bearer Token | **不变** |
| 其他业务接口 | 购物车 / 订单 / 账单 / 支付 / 通知 / 商品 / 首页 | **全部不变**(路径、入参、出参) |
### 需要小程序端配合的改动
1. **重做登录页**:去掉 `wx.login` 流程,改为账号 + 密码表单(账号密码由商家线下告知门店)。
2. **删除注册页/绑定门店页**:注册接口已下线,「尚未绑定门店」的场景已不存在。
3. **用户信息结构调整**:登录与 `auth/info` 返回的对象字段变化(见下文)。
4. **新增「修改密码」入口**(建议放在「我的」页面)。
5. **重新登录**:旧 token 全部失效,需引导用户用账号密码重新登录一次。
---
## 二、登录接口(变更)
### `POST /mini/auth/login`
**请求参数(变更):**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| username | string | 是 | 登录账号(商家后台分配,4~20 位) |
| password | string | 是 | 登录密码 |
> 旧参数 `code`(wx.login 凭证)已废弃,无需再传,也无需调用 `wx.login`。
**成功响应:**
```json
{
"success": true,
"msg": "登录成功",
"data": {
"token": "1|xxxxxxxxxxxxxxxx",
"user": {
"id": 3,
"name": "好又多超市",
"code": "S000003",
"username": "hyd001",
"avatar": "",
"level_id": 1,
"level": { "id": 1, "name": "一级客户" },
"contact": "张三",
"phone": "13800000000",
"address": "xx路 1 号",
"payment_cycle_days": 2,
"status": 1,
"last_login_at": "2026-08-17 10:00:00",
"created_at": "2026-08-01 09:00:00"
}
}
}
```
**user 字段变化要点:**
- `user` 现在**就是门店对象**(扁平结构),不再有 `user.store` 嵌套,也不再有 `openid``unionid``nickname``email``store_id` 字段。
- 门店名称取 `user.name`(原 `user.store.name`);客户等级取 `user.level`
- `password` 字段永不返回。
**失败响应(`success: false``msg` 提示):**
| 场景 | msg |
|------|-----|
| 账号不存在或密码错误 | 账号或密码错误 |
| 门店已停用 | 账号已被停用,请联系客服处理 |
| 参数缺失 | 请输入登录账号 / 请输入登录密码 |
**Token 使用(不变):** 后续所有请求携带请求头 `Authorization: Bearer {token}`
---
## 三、注册接口(下线)
### ~~`POST /mini/auth/register`~~ —— 已删除
- 门店账号全部由商家在 PC 后台「客户管理 → 门店管理」创建并分配(含登录账号、初始密码)。
- 小程序端请移除注册页、「输入门店编码绑定」页及相关逻辑。
- 同步移除 `wx.getPhoneNumber` 手机号授权流程(后端已不再使用)。
---
## 四、当前用户信息(结构变化)
### `GET /mini/auth/info`(需登录)
返回当前登录门店完整信息(含 `level` 等级嵌套),字段与登录接口的 `user` 一致(见上文示例)。原来读取 `info.store.xxx` 的地方改为直接读 `info.xxx`
---
## 五、修改密码(新增)
### `PUT /mini/auth/password`(需登录)
**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| oldPassword | string | 是 | 原密码 |
| newPassword | string | 是 | 新密码(6~20 位) |
| rePassword | string | 是 | 确认新密码(须与 newPassword 一致) |
**失败场景:** 原密码不正确 / 两次输入的密码不一致 / 新密码至少 6 位。
> 修改密码成功后现有 token 仍然有效,无需强制重新登录。
---
## 六、门店信息(不变)
### `GET /mini/store/info`(需登录)
返回:`{ id, name, code, contact, phone, address, payment_cycle_days }`(门店名称/编码/回款周期只读,由后台维护)。
### `PUT /mini/store/info`(需登录)
可改字段不变:`contact`(联系人)、`phone`(联系电话)、`address`(地址)。
---
## 七、以下接口完全不变
路径、入参、出参均无变化,仅内部归属从「用户」变为「门店」(对小程序透明):
| 模块 | 接口 |
|------|------|
| 首页 | `GET /mini/home/*`(轮播/导航/促销) |
| 商品 | `GET /mini/product/categories``GET /mini/product/list``GET /mini/product/{id}`(登录后按本店等级显示价格) |
| 购物车 | `POST /mini/cart``GET /mini/cart``PUT /mini/cart/{id}``DELETE /mini/cart/{id}``DELETE /mini/cart` |
| 订单 | `POST /mini/order``GET /mini/order``GET /mini/order/summary``GET /mini/order/{id}``PUT /mini/order/{id}/cancel` |
| 账单 | `GET /mini/bill``GET /mini/bill/{id}``GET /mini/bill/export` |
| 支付 | `GET /mini/payment/config``GET /mini/payment``POST /mini/payment``GET /mini/payment/{id}` |
| 通知 | `GET /mini/notice``PUT /mini/notice/{id}/read` |
| 上传 | `POST /mini/upload` |
> 唯一语义差异:数据隔离现在天然按门店划分(一个门店一个账号),原「同一门店多个微信账号各自购物车」的合并场景不再存在。
---
## 八、错误语义(不变)
- 未携带/无效 tokenHTTP `401`
- 业务错误:HTTP `200` + `{ success: false, msg: "..." }`,直接 toast `msg` 即可。
- 「门店未设置客户等级,无法加购/下单,请联系客服」等提示文案不变。
- 「尚未绑定门店」提示已移除(该场景不存在)。
---
## 九、上线 Checklist(小程序端)
- [ ] 登录页改为账号 + 密码表单,移除 `wx.login` / `wx.getPhoneNumber` 调用
- [ ] 移除注册页、门店绑定页及路由
- [ ] 全局用户信息读取点从 `user.store.*` 调整为 `user.*`(门店名、等级、回款周期等)
- [ ] 「我的」页面新增修改密码入口
- [ ] 旧版本缓存的 token 失效处理:401 时引导重新登录
- [ ] 等级价格展示逻辑不变(接口返回的 `price` 字段含义不变)