Files
integral-shop-mgtv1/crmeb_22miao/docs/后端API接口文档.md
Developer 0b3d8b6be6 Initial commit: Integral Shop CRMEB Project
Backend: Spring Boot 2.2.6 + MyBatis Plus
- crmeb-admin: Admin API module
- crmeb-service: Business logic
- crmeb-common: Common utilities
- crmeb-front: Frontend API

Frontend: Vue 2.6.10 + Element UI 2.13.0
- Admin management system
- 454 Vue components

Analyzed by Miao Agent on 2026-02-28
Project Score: 5.5/10
Security: High Risk (JWT bypass, API over-permission)
2026-02-28 04:10:52 +08:00

1061 lines
20 KiB
Markdown
Raw Permalink 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.
# H5商城网站API接口文档
> **API Base URL**: http://miao1admin.suzhouyuqi.com
> **分析时间**: 2025-11-08
> **接口协议**: HTTP/HTTPS
> **数据格式**: JSON
> **认证方式**: Bearer Token (Header: Authori-zation)
---
## 📋 文档说明
本文档基于服务器日志 `webman-2025-11-03.log` 和前端编译文件分析生成记录了H5商城网站的所有API接口。
### 通用说明
- 所有需要登录的接口都需要在请求头中携带 Token
- Token 名称:`Authori-zation`
- 请求格式:`application/json``application/x-www-form-urlencoded`
- 响应格式JSON
### 错误码说明
```json
{
"code": 0, // 0=成功非0=失败
"msg": "提示信息",
"data": {} // 返回数据
}
```
---
## 目录
1. [用户认证接口](#一用户认证接口)
2. [商品相关接口](#二商品相关接口)
3. [订单相关接口](#三订单相关接口)
4. [地址管理接口](#四地址管理接口)
5. [财务相关接口](#五财务相关接口)
6. [支付相关接口](#六支付相关接口)
7. [分享推广接口](#七分享推广接口)
8. [首页相关接口](#八首页相关接口)
9. [短信相关接口](#九短信相关接口)
---
## 一、用户认证接口
### 1.1 用户登录
**接口地址**: `/api/user/login`
**请求方式**: `POST`
**是否需要登录**: 否
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| account | string | 是 | 手机号/账号 |
| password | string | 是 | 密码 |
**请求示例**:
```json
{
"account": "18379637515",
"password": "123456"
}
```
**返回示例**:
```json
{
"code": 0,
"msg": "登录成功",
"data": {
"token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"user_info": {
"id": 92564,
"mobile": "18379637515",
"nickname": "用户昵称",
"avatar": "头像URL"
}
}
}
```
---
### 1.2 用户注册
**接口地址**: `/api/user/register`
**请求方式**: `POST`
**是否需要登录**: 否
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| mobile | string | 是 | 手机号 |
| password | string | 是 | 密码 |
| code | string | 是 | 短信验证码 |
| invite_code | string | 否 | 邀请码 |
---
### 1.3 获取用户信息
**接口地址**: `/api/user/info`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 92564,
"mobile": "18379637515",
"nickname": "用户昵称",
"avatar": "头像URL",
"share_bonus": "1234.56", // 分红余额
"self_bonus": "789.12", // 自购分红
"coupon": "456.78", // 优惠券余额
"today_share_bonus": "123.45", // 今日分红
"total_share_bonus": "9876.54" // 累计分红
}
}
```
---
### 1.4 修改用户昵称
**接口地址**: `/api/user/nickname`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| nickname | string | 是 | 新昵称 |
---
### 1.5 修改密码
**接口地址**: `/api/user/changepwd`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| old_password | string | 是 | 原密码 |
| new_password | string | 是 | 新密码 |
| code | string | 是 | 短信验证码 |
---
## 二、商品相关接口
### 2.1 获取商品分类
**接口地址**: `/api/goods/category`
**请求方式**: `GET`
**是否需要登录**: 否
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"name": "分类名称"
}
]
}
```
---
### 2.2 获取商品列表
**接口地址**: `/api/goods/list`
**请求方式**: `GET`
**是否需要登录**: 否
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| cate_id | int | 是 | 分类ID |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"title": "商品标题",
"images": ["图片1", "图片2"],
"price": "199.00",
"line_price": "299.00",
"sales_volume": 1000
}
]
}
```
---
### 2.3 获取商品详情
**接口地址**: `/api/goods/detail`
**请求方式**: `GET`
**是否需要登录**: 否
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 商品ID |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 2,
"title": "商品标题",
"images": ["图片1", "图片2"],
"price": "199.00",
"line_price": "299.00",
"sales_volume": 1000,
"content": "商品详情",
"customer_service": "客服微信"
}
}
```
---
## 三、订单相关接口
### 3.1 订单首页数据
**接口地址**: `/api/order/index`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"shop_name": "商城名称",
"open_week": "1,2,3,4,5", // 开放星期
"start_time": "09:00", // 开始时间
"end_time": "21:00", // 结束时间
"goods_id": "1", // 商品ID
"goods_image": "商品图片",
"goods_setting": { // 商品配置
"max_buy": 3 // 最大购买数量
}
}
}
```
---
### 3.2 可购买商品列表
**接口地址**: `/api/order/goods`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 是 | 页码 |
| limit | int | 是 | 每页数量 |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"total": 100,
"list": [
{
"id": 144754,
"old_id": 149113,
"user_id": 92679,
"title": "鲜锋活力宝",
"image": "\/upload\/image\/20250914\/44d45afc28b6dfb47c20d127a7b64540_68c69ec7a6b0a.jpg",
"price": "29805.86",
"is_show": 1,
"status": 1,
"created_at": "2025-11-09 17:27:34",
"updated_at": "2025-11-09 13:25:48",
"total_money": "29805.86",
"seller_id": 92679,
"quantity": "≈3箱"
}
]
}
}
```
---
### 3.3 购买商品(抢单)
**接口地址**: `/api/order/buy`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 寄卖商品ID |
| seller_id | int | 是 | 卖家用户ID |
**请求示例**:
```json
{
"id": 143657,
"seller_id": 92467
}
```
---
### 3.4 订单列表
**接口地址**: `/api/order/list`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| cate | int | 是 | 分类1=买方仓库2=卖方仓库 |
| type | int | 是 | 类型1=寄卖中/交易中2=已完成 |
| page | int | 是 | 页码 |
| limit | int | 是 | 每页数量 |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"total": 50,
"list": [
{
"id": 148674,
"order_sn": "订单号",
"merchandise_id": 143657,
"merchandise_title": "商品标题",
"merchandise_image": "商品图片",
"total_money": "199.00",
"status": 1, // 0=待支付1=已支付2=已完成
"buyer_nickname": "买家昵称",
"seller_nickname": "卖家昵称",
"created_at": "2025-11-03 09:00:00",
"pay_time": "2025-11-03 09:01:00",
"confirm_time": "2025-11-03 09:10:00"
}
]
}
}
```
---
### 3.5 订单详情
**接口地址**: `/api/order/detail`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| order_id | int | 是 | 订单ID |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 148674,
"order_sn": "订单号",
"merchandise_title": "商品标题",
"merchandise_image": "商品图片",
"total_money": "199.00",
"status": 1,
"buyer_nickname": "买家昵称",
"seller_nickname": "卖家昵称",
"consignee": "收货人",
"phone": "手机号",
"province": "省",
"city": "市",
"area": "区",
"address": "详细地址"
}
}
```
---
### 3.6 支付订单
**接口地址**: `/api/order/pay`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| order_id | int | 是 | 订单ID |
| address_id | int | 是 | 收货地址ID |
**请求示例**:
```json
{
"order_id": 148674,
"address_id": 2911
}
```
---
### 3.7 确认订单(卖家发货)
**接口地址**: `/api/order/confirm`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| order_id | int | 是 | 订单ID |
**请求示例**:
```json
{
"order_id": 148674
}
```
---
### 3.8 取消订单
**接口地址**: `/api/order/cancel`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| order_id | int | 是 | 订单ID |
---
### 3.9 转卖订单
**接口地址**: `/api/order/resell`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| order_id | int | 是 | 订单ID |
---
## 四、地址管理接口
### 4.1 地址列表
**接口地址**: `/api/address/list`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 2911,
"consignee": "收货人",
"phone": "13584195313",
"province": "江苏省",
"city": "无锡市",
"area": "锡山区",
"address": "中大诺卡小镇",
"is_default": 1
}
]
}
```
---
### 4.2 获取默认地址
**接口地址**: `/api/address/default`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 2911,
"consignee": "收货人",
"phone": "13584195313",
"province": "江苏省",
"city": "无锡市",
"area": "锡山区",
"address": "中大诺卡小镇",
"is_default": 1
}
}
```
---
### 4.3 新增地址
**接口地址**: `/api/address/insert`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| consignee | string | 是 | 收货人 |
| phone | string | 是 | 手机号 |
| province | string | 是 | 省 |
| city | string | 是 | 市 |
| area | string | 是 | 区 |
| address | string | 是 | 详细地址 |
| is_default | int | 否 | 是否默认0=否1=是 |
---
### 4.4 更新地址
**接口地址**: `/api/address/update`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 地址ID |
| consignee | string | 是 | 收货人 |
| phone | string | 是 | 手机号 |
| province | string | 是 | 省 |
| city | string | 是 | 市 |
| area | string | 是 | 区 |
| address | string | 是 | 详细地址 |
| is_default | int | 否 | 是否默认0=否1=是 |
---
### 4.5 删除地址
**接口地址**: `/api/address/delete`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 地址ID |
---
## 五、财务相关接口
### 5.1 财务记录列表
**接口地址**: `/api/money/list`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| cate | int | 是 | 分类1=分红明细2=优惠券明细3=自购分红明细 |
| type | int | 是 | 类型1=收入2=支出 |
| page | int | 是 | 页码 |
| limit | int | 是 | 每页数量 |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"total": 100,
"list": [
{
"id": 1234,
"type": 1, // 1=收入2=支出
"money": "123.45",
"before": "1000.00", // 变动前余额
"after": "1123.45", // 变动后余额
"memo": "今日收益",
"created_at": "2025-11-03 09:00:00"
}
]
}
}
```
---
### 5.2 提现记录
**接口地址**: `/api/money/log`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 是 | 页码 |
| limit | int | 是 | 每页数量 |
---
### 5.3 申请提现
**接口地址**: `/api/money/withdraw`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| type | int | 是 | 提现类型1=分红2=优惠券 |
| money | string | 是 | 提现金额 |
---
## 六、支付相关接口
### 6.1 获取支付宝信息
**接口地址**: `/api/alipay/index`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 123,
"alipay_account": "支付宝账号",
"alipay_name": "支付宝姓名"
}
}
```
---
### 6.2 绑定支付宝
**接口地址**: `/api/alipay/bind`
**请求方式**: `POST`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| alipay_account | string | 是 | 支付宝账号 |
| alipay_name | string | 是 | 支付宝姓名 |
---
### 6.3 获取银行卡信息
**接口地址**: `/api/bank/index`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 123,
"bank_name": "银行名称",
"bank_account": "银行卡号",
"account_name": "持卡人姓名"
}
}
```
---
## 七、分享推广接口
### 7.1 分享首页数据
**接口地址**: `/api/share/index`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"invite_code": "ABC123", // 邀请码
"direct_count": 10, // 直推人数
"team_count": 50, // 团队人数
"share_link": "https://..." // 分享链接
}
}
```
---
### 7.2 我的粉丝列表
**接口地址**: `/api/share/select`
**请求方式**: `GET`
**是否需要登录**: 是
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 是 | 页码 |
| limit | int | 是 | 每页数量 |
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"total": 20,
"list": [
{
"id": 92490,
"avatar": "头像",
"nickname": "用户昵称",
"mobile": "138****1234",
"team_count": 5, // 下级团队人数
"created_at": "2025-11-03 09:00:00"
}
]
}
}
```
---
## 八、首页相关接口
### 8.1 轮播图
**接口地址**: `/api/index/banner`
**请求方式**: `GET`
**是否需要登录**: 否
**请求参数**: 无
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"image": "轮播图URL",
"url": "跳转链接"
}
]
}
```
---
### 8.2 首页配置数据
**接口地址**: `/api/index/get`
**请求方式**: `POST`
**是否需要登录**: 否
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| title | string | 是 | 配置标题,如"公告消息" |
**请求示例**:
```json
{
"title": "公告消息"
}
```
**返回示例**:
```json
{
"code": 0,
"msg": "success",
"data": {
"value": "公告内容"
}
}
```
---
## 九、短信相关接口
### 9.1 发送短信验证码
**接口地址**: `/api/sms/send`
**请求方式**: `POST`
**是否需要登录**: 否
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| mobile | string | 是 | 手机号 |
| event | string | 是 | 事件类型register=注册resetpwd=重置密码changepwd=修改密码 |
**请求示例**:
```json
{
"mobile": "13585643985",
"event": "resetpwd"
}
```
**返回示例**:
```json
{
"code": 0,
"msg": "短信发送成功"
}
```
---
## 十、其他接口
### 10.1 签名回调
**接口地址**: `/api/notify/sign`
**请求方式**: `POST`
**是否需要登录**: 否
**说明**: 第三方签名回调接口
---
## 📊 接口汇总表
| 模块 | 接口数量 | 说明 |
|------|---------|------|
| 用户认证 | 5 | 登录、注册、信息获取、修改 |
| 商品管理 | 3 | 分类、列表、详情 |
| 订单管理 | 9 | 下单、支付、发货、取消等 |
| 地址管理 | 5 | 增删改查、默认地址 |
| 财务管理 | 3 | 明细、提现 |
| 支付管理 | 3 | 支付宝、银行卡 |
| 分享推广 | 2 | 分享数据、粉丝列表 |
| 首页相关 | 2 | 轮播图、配置 |
| 短信服务 | 1 | 验证码发送 |
| **总计** | **33** | **全部接口** |
---
## 🔐 Token 说明
### 获取 Token
用户登录成功后,响应数据中会返回 `token` 字段。
### 使用 Token
在需要登录的接口请求头中携带:
```
Authori-zation: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...
```
**注意**: Header 名称是 `Authori-zation` (不是标准的 Authorization)
---
## ⚙️ 业务逻辑说明
### 订单状态流程
1. **待支付** (status=0): 买家抢单成功,但未支付
2. **已支付** (status=1): 买家已支付,等待卖家发货确认
3. **已完成** (status=2): 卖家确认发货,订单完成,开始分红
### 订单分类
- **买方仓库** (cate=1): 我购买的商品订单
- **卖方仓库** (cate=2): 我寄卖的商品订单
### 财务分类
- **分红余额** (share_bonus): 推广分红
- **自购分红** (self_bonus): 自购返利
- **优惠券** (coupon): 优惠券余额
### 短信事件类型
- `register`: 注册
- `resetpwd`: 重置密码
- `changepwd`: 修改密码
---
## 🧪 测试示例
### 登录测试
```bash
curl -X POST http://miao1admin.suzhouyuqi.com/api/user/login \
-H "Content-Type: application/json" \
-d '{
"account": "18379637515",
"password": "123456"
}'
```
### 获取用户信息
```bash
curl -X POST http://miao1admin.suzhouyuqi.com/api/user/info \
-H "Content-Type: application/json" \
-H "Authori-zation: Bearer YOUR_TOKEN"
```
### 获取商品列表
```bash
curl "http://miao1admin.suzhouyuqi.com/api/goods/list?cate_id=1"
```
### 订单列表(卖方仓库)
```bash
curl "http://miao1admin.suzhouyuqi.com/api/order/list?cate=2&type=1&page=1&limit=10" \
-H "Authori-zation: Bearer YOUR_TOKEN"
```
---
## 📝 注意事项
1. **认证头名称**: 注意是 `Authori-zation` 而非标准的 `Authorization`
2. **POST 方法**: 某些查询接口如 `/api/user/info``/api/order/index` 使用 POST 方法
3. **限流机制**: 部分接口有访问频率限制,使用 Redis 实现
4. **营业时间**: 商品购买受营业时间限制(通过 open_week、start_time、end_time 控制)
5. **防重复提交**: 关键操作(购买、支付、确认)有防重复提交机制
---
## 📅 更新日志
- **2025-11-08**: 基于 webman-2025-11-03.log 日志完整分析,新增 33 个接口文档
---