商品导入导出
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
# 小程序端修改文档(门店端)
|
||||
|
||||
> 版本: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` |
|
||||
|
||||
> 唯一语义差异:数据隔离现在天然按门店划分(一个门店一个账号),原「同一门店多个微信账号各自购物车」的合并场景不再存在。
|
||||
|
||||
---
|
||||
|
||||
## 八、错误语义(不变)
|
||||
|
||||
- 未携带/无效 token:HTTP `401`。
|
||||
- 业务错误:HTTP `200` + `{ success: false, msg: "..." }`,直接 toast `msg` 即可。
|
||||
- 「门店未设置客户等级,无法加购/下单,请联系客服」等提示文案不变。
|
||||
- 「尚未绑定门店」提示已移除(该场景不存在)。
|
||||
|
||||
---
|
||||
|
||||
## 九、上线 Checklist(小程序端)
|
||||
|
||||
- [ ] 登录页改为账号 + 密码表单,移除 `wx.login` / `wx.getPhoneNumber` 调用
|
||||
- [ ] 移除注册页、门店绑定页及路由
|
||||
- [ ] 全局用户信息读取点从 `user.store.*` 调整为 `user.*`(门店名、等级、回款周期等)
|
||||
- [ ] 「我的」页面新增修改密码入口
|
||||
- [ ] 旧版本缓存的 token 失效处理:401 时引导重新登录
|
||||
- [ ] 等级价格展示逻辑不变(接口返回的 `price` 字段含义不变)
|
||||
Reference in New Issue
Block a user