Files
integral-shop/frontend/docs/商品寄卖服务系统管理后台API接口PRD-完整版.md
2026-03-08 18:35:11 +08:00

1274 lines
33 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.
# 商品寄卖服务系统管理后台API接口PRD完整版
## 1. 项目概述
### 1.1 项目背景
商品寄卖服务系统是一个提供商品寄卖、交易、物流管理和财务管理的综合性平台。管理后台API接口文档旨在规范系统前后端交互确保系统各功能模块的正常运行。
### 1.2 参考系统管理后台
- **系统地址**https://miao1admin.suzhouyuqi.com/app/admin#
- **登录账号**admin
- **登录密码**A123456
### 1.3 文档目的
本文档详细描述管理后台的API接口规范、接口功能、请求参数、响应格式等信息为前后端开发人员提供统一的接口参考标准。
### 1.4 术语定义
- **管理员**:系统后台操作人员,拥有不同权限
- **用户**:平台注册用户,可进行购买、寄售等操作
- **自营商品**:平台直接销售的商品
- **寄售商品**:用户委托平台销售的二手商品
- **转拍**:用户购买商品后再次上架销售的行为
- **提现**:用户将账户余额提取到银行卡或支付宝的操作
- **优惠券**:平台发放的虚拟货币
- **个人奖金**:用户自己交易获得的奖励
- **推广奖金**:用户邀请他人消费获得的返佣
---
## 2. API接口设计规范
### 2.1 接口URL规范
- **基础路径**`https://miao1admin.suzhouyuqi.com/app/admin`
- **模块划分**`/模块名/操作`,如`/user/select`
- **HTTP方法**GET查询、POST新增/修改、DELETE删除
### 2.2 请求头规范
```
X-Requested-With: XMLHttpRequest
Content-Type: application/json (POST请求)
Accept: application/json, text/javascript, */*; q=0.01
```
- 认证信息通过session/cookie机制实现身份验证
### 2.3 响应格式规范
- **统一JSON格式响应**
- **标准响应结构**
```json
{
"code": 0, // 状态码0成功非0失败
"msg": "ok", // 响应消息
"data": {}, // 数据主体(可以是对象或数组)
"count": 100 // 分页数据总数(可选,仅列表接口返回)
}
```
### 2.4 错误码规范
| 错误码 | 说明 |
|--------|------|
| 0 | 成功 |
| 非0 | 失败具体错误信息在msg字段中返回 |
### 2.5 分页参数规范
所有列表查询接口统一使用以下分页参数:
- `page`: 页码从1开始
- `limit`: 每页记录数默认10条
### 2.6 搜索条件规范
搜索条件支持数组格式,第一个元素为操作符,第二个元素为值:
- `字段名[0]`: 操作符like、=、>、<、>=、<=、between等
- `字段名[1]`: 搜索值
- 示例:`mobile[0]=like&mobile[1]=138` 表示手机号模糊查询
### 2.7 日期范围查询规范
日期范围查询使用数组格式:
- `字段名[0]`: 开始日期
- `字段名[1]`: 结束日期
- 示例:`created_at[0]=2025-01-01&created_at[1]=2025-12-31`
---
## 3. 核心API接口详细说明
### 3.1 用户管理模块 (user)
#### 3.1.1 用户列表查询
- **接口URL**`/app/admin/user/select`
- **请求方法**GET
- **功能描述**:查询用户列表,支持分页和多种筛选条件
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 否 | 页码默认1 |
| limit | int | 否 | 每页记录数默认10 |
| id | int | 否 | 用户ID精确查询 |
| mobile | string | 否 | 手机号(模糊查询) |
| pid | int | 否 | 推荐人ID |
| username | string | 否 | 用户名 |
| status | int | 否 | 状态0=禁用1=启用 |
| is_vip | int | 否 | 是否VIP0=否1=是 |
- **请求示例**
```
GET /app/admin/user/select?page=1&limit=10&id=&mobile=&pid=
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"count": 469,
"data": [
{
"id": 92697,
"pid": 92679,
"username": "15324401200",
"nickname": "153****1259",
"mobile": "15324401200",
"sex": "1",
"avatar": "/app/admin/avatar.png",
"invite": "el0yw1",
"level": 1,
"birthday": null,
"money": "0.000",
"coupon": "0.000",
"self_bonus": "0.000",
"share_bonus": "0.000",
"score": 0,
"last_time": "2025-11-13 14:17:00",
"last_ip": "116.230.253.100",
"join_time": "2025-11-13 14:15:44",
"join_ip": "116.230.253.100",
"status": 1,
"viptime": null,
"is_vip": 1,
"contract": "https://contract.test.kywtwl.com/upload/contract/1753363479/xieyi.pdf",
"max_order": 3,
"is_resell": 1,
"yesterday_sell_count": 0,
"today_buy_count": 1,
"today_buy_total": "29805.86",
"today_sell_total": 0,
"poor": -29805.86,
"pname": "潘1陈1勇",
"created_at": "2025-11-13 14:15:44",
"updated_at": "2025-11-13 16:13:34"
}
]
}
```
#### 3.1.2 用户详情查询
- **接口URL**`/app/admin/user/select`
- **请求方法**GET
- **功能描述**:查询单个用户详细信息
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 用户ID |
- **请求示例**
```
GET /app/admin/user/select?id=92697
```
- **响应数据**:返回单个用户对象(结构同上)
#### 3.1.3 用户信息更新
- **接口URL**`/app/admin/user/update`
- **请求方法**POST
- **功能描述**:更新用户信息
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 用户ID |
| nickname | string | 否 | 昵称 |
| mobile | string | 否 | 手机号 |
| status | int | 否 | 状态0=禁用1=启用 |
| is_vip | int | 否 | 是否VIP0=否1=是 |
| viptime | datetime | 否 | VIP截止时间 |
| max_order | int | 否 | 最高可抢单数 |
| is_resell | int | 否 | 是否可转拍0=否1=是 |
| money | decimal | 否 | 余额 |
| coupon | decimal | 否 | 优惠券余额 |
| self_bonus | decimal | 否 | 个人奖金 |
| share_bonus | decimal | 否 | 推广奖金 |
| password | string | 否 | 新密码(明文) |
- **请求示例**
```
POST /app/admin/user/update
Content-Type: application/x-www-form-urlencoded
id=92697&status=1&is_vip=1&max_order=6
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"data": []
}
```
---
### 3.2 商品管理模块 (merchandise)
#### 3.2.1 寄售商品列表查询
- **接口URL**`/app/admin/merchandise/select`
- **请求方法**GET
- **功能描述**:查询寄售商品列表
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 否 | 页码默认1 |
| limit | int | 否 | 每页记录数默认10 |
| id | int | 否 | 商品ID |
| user_id | int | 否 | 卖家用户ID |
| title | string | 否 | 商品标题(模糊查询) |
| status | int | 否 | 状态0=已售1=未售 |
| is_show | int | 否 | 是否显示0=隐藏1=显示 |
- **请求示例**
```
GET /app/admin/merchandise/select?page=1&limit=10
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"count": 50,
"data": [
{
"id": 144753,
"old_id": 0,
"user_id": 92166,
"title": "商品标题",
"image": "[\"url1\",\"url2\"]",
"price": "1000.00",
"is_show": 1,
"status": 1,
"created_at": "2025-11-13 10:00:00",
"updated_at": "2025-11-13 10:00:00",
"username": "用户昵称"
}
]
}
```
#### 3.2.2 寄售商品详情查询
- **接口URL**`/app/admin/merchandise/select`
- **请求方法**GET
- **功能描述**:查询单个寄售商品详情
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 商品ID |
- **请求示例**
```
GET /app/admin/merchandise/select?id=144753
```
#### 3.2.3 寄售商品更新
- **接口URL**`/app/admin/merchandise/update`
- **请求方法**POST
- **功能描述**:更新寄售商品信息(主要用于审核和上下架)
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 商品ID |
| is_show | int | 否 | 是否显示0=隐藏1=显示 |
| status | int | 否 | 状态0=已售1=未售 |
| price | decimal | 否 | 寄售价格 |
- **请求示例**
```
POST /app/admin/merchandise/update
Content-Type: application/x-www-form-urlencoded
id=144753&is_show=1
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"data": []
}
```
---
### 3.3 订单管理模块 (order)
#### 3.3.1 订单列表查询
- **接口URL**`/app/admin/order/select`
- **请求方法**GET
- **功能描述**:查询订单列表,支持多种筛选条件
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 否 | 页码默认1 |
| limit | int | 否 | 每页记录数默认10 |
| order_sn[0] | string | 否 | 订单号搜索方式like |
| order_sn[1] | string | 否 | 订单号 |
| seller_id | int | 否 | 卖家ID |
| buyer_id | int | 否 | 买家ID |
| status | int | 否 | 订单状态0=待付款1=已支付2=已完成 |
| is_resell | int | 否 | 是否转拍0=否1=是 |
| is_cancel | int | 否 | 是否取消0=否1=是 |
| is_show | int | 否 | 是否显示0=隐藏1=显示 |
| buy_time[0] | datetime | 否 | 购买开始时间 |
| buy_time[1] | datetime | 否 | 购买结束时间 |
| confirm_time[0] | datetime | 否 | 确认开始时间 |
| confirm_time[1] | datetime | 否 | 确认结束时间 |
- **请求示例**
```
GET /app/admin/order/select?page=1&limit=50&order_sn[0]=like&order_sn[1]=&seller_id=&buyer_id=&status=&is_resell=&is_cancel=&is_show=&buy_time[0]=&buy_time[1]=&confirm_time[0]=&confirm_time[1]=
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"count": 100,
"data": [
{
"id": 12345,
"old_id": 0,
"seller_id": 0,
"buyer_id": 92697,
"order_sn": "79629117630147968611",
"total_money": "1000.00",
"pay_time": "2025-11-13 10:00:00",
"pay_img": "",
"status": 1,
"is_resell": 0,
"is_show": 1,
"is_cancel": 0,
"consignee": "张三",
"phone": "13800138000",
"province": "江苏省",
"city": "苏州市",
"area": "工业园区",
"address": "详细地址",
"merchandise_id": 0,
"confirm_time": null,
"buy_time": "2025-11-13 09:00:00",
"buy_ip": "192.168.1.1",
"cancel_ip": "",
"created_at": "2025-11-13 09:00:00",
"updated_at": "2025-11-13 10:00:00",
"seller_name": "平台",
"buyer_name": "张三"
}
]
}
```
#### 3.3.2 订单详情查询
- **接口URL**`/app/admin/order/select`
- **请求方法**GET
- **功能描述**:查询单个订单详情
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 订单ID |
#### 3.3.3 订单更新
- **接口URL**`/app/admin/order/update`
- **请求方法**POST
- **功能描述**:更新订单状态
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 订单ID |
| status | int | 否 | 订单状态0=待付款1=已支付2=已完成 |
| is_show | int | 否 | 是否显示0=隐藏1=显示 |
| is_cancel | int | 否 | 是否取消0=否1=是 |
- **请求示例**
```
POST /app/admin/order/update
Content-Type: application/x-www-form-urlencoded
id=12345&status=2
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"data": []
}
```
---
### 3.4 提现管理模块 (withdraw)
#### 3.4.1 提现列表查询
- **接口URL**`/app/admin/withdraw/select`
- **请求方法**GET
- **功能描述**:查询提现申请列表
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 否 | 页码默认1 |
| limit | int | 否 | 每页记录数默认10 |
| transfer_no[0] | string | 否 | 提现编号搜索方式like |
| transfer_no[1] | string | 否 | 提现编号 |
| user_id | int | 否 | 用户ID |
| cate | int | 否 | 提现类型2=优惠券4=推广奖金 |
| account_type | int | 否 | 账号类型1=银行卡2=支付宝 |
| status | int | 否 | 状态0=待审核1=通过2=驳回 |
| created_at[0] | datetime | 否 | 申请开始时间 |
| created_at[1] | datetime | 否 | 申请结束时间 |
| updated_at[0] | datetime | 否 | 处理开始时间 |
| updated_at[1] | datetime | 否 | 处理结束时间 |
- **请求示例**
```
GET /app/admin/withdraw/select?page=1&limit=10&transfer_no[0]=like&transfer_no[1]=&cate=4&account_type=&status=&created_at[0]=&created_at[1]=&updated_at[0]=&updated_at[1]=
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"count": 50,
"data": [
{
"id": 4457,
"transfer_no": "W202511130001",
"user_id": 92697,
"cate": 4,
"account_type": 2,
"account_id": 123,
"account_info": "{\"username\":\"张三\",\"account\":\"138****8000\"}",
"money": "100.00",
"handling_fee": "1.00",
"actual_amount": "99.00",
"status": 0,
"remark": "",
"created_at": "2025-11-13 10:00:00",
"updated_at": "2025-11-13 10:00:00",
"username": "张三",
"mobile": "13800138000"
}
]
}
```
#### 3.4.2 提现详情查询
- **接口URL**`/app/admin/withdraw/select`
- **请求方法**GET
- **功能描述**:查询单个提现申请详情
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 提现记录ID |
#### 3.4.3 提现审核
- **接口URL**`/app/admin/withdraw/update`
- **请求方法**POST
- **功能描述**:审核提现申请
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | int | 是 | 提现记录ID |
| status | int | 是 | 状态1=通过2=驳回 |
| remark | string | 否 | 审核备注(驳回时必填原因) |
- **请求示例**
```
POST /app/admin/withdraw/update
Content-Type: application/x-www-form-urlencoded
id=4457&status=1&remark=审核通过
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"data": []
}
```
---
### 3.5 财务日志管理模块
#### 3.5.1 优惠券日志查询
- **接口URL**`/app/admin/coupon-log/select`
- **请求方法**GET
- **功能描述**:查询优惠券发放和使用日志
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | int | 否 | 页码默认1 |
| limit | int | 否 | 每页记录数默认10 |
| user_id | int | 否 | 用户ID |
| type | int | 否 | 类型1=收入2=支出3=提现驳回 |
| memo[0] | string | 否 | 备注搜索方式like |
| memo[1] | string | 否 | 备注内容 |
| created_at[0] | datetime | 否 | 开始时间 |
| created_at[1] | datetime | 否 | 结束时间 |
- **请求示例**
```
GET /app/admin/coupon-log/select?page=1&limit=10&user_id=&type=1&memo[0]=like&memo[1]=&created_at[0]=&created_at[1]=
```
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"count": 100,
"data": [
{
"id": 1,
"user_id": 92697,
"type": 1,
"money": "10.000",
"before": "0.000",
"after": "10.000",
"memo": "系统发放",
"created_at": "2025-11-13 10:00:00",
"updated_at": "2025-11-13 10:00:00",
"username": "张三",
"mobile": "13800138000"
}
]
}
```
#### 3.5.2 个人奖金日志查询
- **接口URL**`/app/admin/selfbonus-log/select`
- **请求方法**GET
- **功能描述**:查询个人奖金变动日志
- **请求参数**:(同优惠券日志)
#### 3.5.3 推广奖金日志查询
- **接口URL**`/app/admin/sharebonus-log/select`
- **请求方法**GET
- **功能描述**:查询推广奖金变动日志
- **请求参数**同优惠券日志type支持1=收入2=支出3=提现驳回)
---
### 3.6 系统管理模块
#### 3.6.1 获取系统配置
- **接口URL**`/app/admin/setting/index`
- **请求方法**GET
- **功能描述**:获取系统配置信息
- **请求参数**:无
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"data": ["*"]
}
```
#### 3.6.2 获取系统设置
- **接口URL**`/app/admin/setting/get`
- **请求方法**GET
- **功能描述**:获取系统设置详情
- **请求参数**:无
- **响应数据**:返回系统设置的键值对列表
#### 3.6.3 更新系统设置
- **接口URL**`/app/admin/setting/update`
- **请求方法**POST
- **功能描述**:更新系统设置
- **请求参数**:键值对形式,根据具体设置项而定
#### 3.6.4 获取菜单配置
- **接口URL**`/app/admin/rule/get`
- **请求方法**GET
- **功能描述**:获取系统菜单配置
- **请求参数**:无
- **响应数据**
```json
{
"logo": {
"title": "采贪平台",
"image": "/app/admin/admin/images/logo.png"
},
"menu": {
"data": "/app/admin/rule/get",
"method": "GET",
"accordion": true,
"collapse": false,
"control": false,
"controlWidth": 500,
"select": "0",
"async": true
},
"tab": {
"enable": true,
"keepState": true,
"preload": false,
"session": false,
"max": "30",
"index": {
"id": "8",
"href": "/app/admin/user/index",
"title": "用户管理"
}
},
"theme": {
"defaultColor": "2",
"defaultMenu": "light-theme",
"defaultHeader": "light-theme",
"allowCustom": true,
"banner": false
},
"colors": [
{"id": "1", "color": "#36b368", "second": "#f0f9eb"},
{"id": "2", "color": "#2d8cf0", "second": "#ecf5ff"},
{"id": "3", "color": "#f6ad55", "second": "#fdf6ec"},
{"id": "4", "color": "#f56c6c", "second": "#fef0f0"},
{"id": "5", "color": "#3963bc", "second": "#ecf5ff"}
],
"other": {
"keepLoad": "500",
"autoHead": false,
"footer": false
},
"header": {
"message": false
}
}
```
#### 3.6.5 获取系统配置(通用)
- **接口URL**`/app/admin/config/get`
- **请求方法**GET
- **功能描述**:获取系统通用配置
- **请求参数**:无
#### 3.6.6 获取账户信息
- **接口URL**`/app/admin/account/info`
- **请求方法**GET
- **功能描述**:获取当前登录管理员账户信息
- **请求参数**:无
- **响应数据**
```json
{
"code": 0,
"msg": "ok",
"data": {
"id": 1,
"username": "admin",
"nickname": "管理员",
"avatar": "/app/admin/avatar.png",
"email": "admin@example.com",
"mobile": "13800138000",
"login_at": "2025-11-13 08:00:00"
}
}
```
---
## 4. 数据库表结构参考
### 4.1 用户表wa_users
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 用户ID |
| pid | int | 推荐人ID |
| username | varchar | 用户名 |
| nickname | varchar | 昵称 |
| mobile | varchar | 手机号 |
| password | varchar | 密码(加密) |
| salt | varchar | 密码盐 |
| sex | enum | 性别0=女1=男 |
| avatar | varchar | 头像URL |
| invite | varchar | 邀请码 |
| level | tinyint | 用户等级 |
| birthday | date | 生日 |
| money | decimal | 余额 |
| coupon | decimal | 优惠券余额 |
| self_bonus | decimal | 个人奖金 |
| share_bonus | decimal | 推广奖金 |
| score | int | 积分 |
| last_time | datetime | 最后登录时间 |
| last_ip | varchar | 最后登录IP |
| join_time | datetime | 注册时间 |
| join_ip | varchar | 注册IP |
| token | varchar | 登录Token |
| status | tinyint | 状态0=禁用1=启用 |
| is_vip | tinyint | 是否VIP0=否1=是 |
| viptime | datetime | VIP截止时间 |
| contract | varchar | 合同文件 |
| max_order | int | 最高可抢单数 |
| is_resell | tinyint | 是否可转拍0=否1=是 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
### 4.2 寄售商品表wa_merchandise
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 主键ID |
| old_id | int | 从订单转拍过来的原订单ID |
| user_id | int | 卖家用户ID |
| title | varchar | 商品标题 |
| image | varchar | 商品图片JSON数组 |
| price | decimal | 寄售价格 |
| is_show | tinyint | 是否显示0=隐藏1=显示 |
| status | tinyint | 状态0=已售1=未售 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
### 4.3 订单表wa_order
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 订单ID |
| old_id | int | 从订单转拍过来的原订单ID |
| seller_id | int | 卖家ID0=平台) |
| buyer_id | int | 买家ID |
| order_sn | varchar | 订单号 |
| total_money | decimal | 订单金额 |
| pay_time | datetime | 支付时间 |
| pay_img | varchar | 支付凭证图片 |
| status | tinyint | 状态0=待付款1=已支付2=已完成 |
| is_resell | tinyint | 是否转拍0=否1=是 |
| is_show | tinyint | 是否显示0=隐藏1=显示 |
| is_cancel | tinyint | 是否取消0=否1=是 |
| consignee | varchar | 收货人 |
| phone | varchar | 收货电话 |
| province | varchar | 省份 |
| city | varchar | 城市 |
| area | varchar | 区县 |
| address | varchar | 详细地址 |
| merchandise_id | int | 寄售商品ID |
| confirm_time | datetime | 确认收货时间 |
| buy_time | datetime | 下单抢购时间 |
| buy_ip | varchar | 下单IP |
| cancel_ip | varchar | 取消订单IP |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
### 4.4 提现表wa_withdraw
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 提现记录ID |
| transfer_no | varchar | 提现编号 |
| user_id | int | 用户ID |
| cate | tinyint | 提现类型2=优惠券4=推广奖金 |
| account_type | tinyint | 账号类型1=银行卡2=支付宝 |
| account_id | int | 收款账号ID |
| account_info | text | 收款账号信息JSON |
| money | decimal | 提现金额 |
| handling_fee | decimal | 手续费 |
| actual_amount | decimal | 实际到账金额 |
| status | tinyint | 状态0=待审核1=通过2=驳回 |
| remark | varchar | 备注 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
### 4.5 财务日志表(通用结构)
财务日志表包括:
- wa_money_log余额变动日志
- wa_coupon_log优惠券变动日志
- wa_selfbonus_log个人奖金变动日志
- wa_sharebonus_log推广奖金变动日志
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 主键ID |
| user_id | int | 用户ID |
| type | tinyint | 类型1=收入2=支出3=提现驳回 |
| money | decimal | 变更金额 |
| before | decimal | 变更前余额 |
| after | decimal | 变更后余额 |
| memo | varchar | 备注说明 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
---
## 5. API调用示例
### 5.1 用户列表查询示例
**jQuery AJAX**:
```javascript
$.ajax({
url: '/app/admin/user/select',
type: 'GET',
data: {
page: 1,
limit: 10,
mobile: '138'
},
success: function(res) {
if (res.code === 0) {
console.log('总记录数:', res.count);
console.log('用户列表:', res.data);
} else {
layer.msg(res.msg);
}
}
});
```
**Fetch API**:
```javascript
fetch('/app/admin/user/select?page=1&limit=10', {
method: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
})
.then(response => response.json())
.then(data => {
if (data.code === 0) {
console.log(data.data);
}
});
```
### 5.2 用户信息更新示例
```javascript
$.ajax({
url: '/app/admin/user/update',
type: 'POST',
data: {
id: 92697,
status: 1,
is_vip: 1,
max_order: 6
},
success: function(res) {
if (res.code === 0) {
layer.msg('更新成功');
} else {
layer.msg(res.msg);
}
}
});
```
### 5.3 订单列表查询示例(带复杂筛选条件)
```javascript
$.ajax({
url: '/app/admin/order/select',
type: 'GET',
data: {
page: 1,
limit: 50,
'order_sn[0]': 'like',
'order_sn[1]': '796291',
seller_id: '',
buyer_id: '',
status: '',
is_resell: 1,
is_cancel: '',
is_show: '',
'buy_time[0]': '2025-11-01',
'buy_time[1]': '2025-11-30',
'confirm_time[0]': '',
'confirm_time[1]': ''
},
success: function(res) {
if (res.code === 0) {
console.log('订单列表:', res.data);
}
}
});
```
### 5.4 提现审核示例
```javascript
$.ajax({
url: '/app/admin/withdraw/update',
type: 'POST',
data: {
id: 4457,
status: 1, // 1=通过2=驳回
remark: '审核通过'
},
success: function(res) {
if (res.code === 0) {
layer.msg('审核成功');
// 刷新列表
table.reload('withdrawTable');
} else {
layer.msg(res.msg);
}
}
});
```
### 5.5 寄售商品上下架示例
```javascript
$.ajax({
url: '/app/admin/merchandise/update',
type: 'POST',
data: {
id: 144753,
is_show: 1 // 1=显示0=隐藏
},
success: function(res) {
if (res.code === 0) {
layer.msg('操作成功');
} else {
layer.msg(res.msg);
}
}
});
```
---
## 6. 业务流程说明
### 6.1 用户注册流程
1. 用户通过邀请码注册(邀请码关联推荐人)
2. 创建用户记录,生成专属邀请码
3. 初始化财务账户余额、优惠券、奖金均为0
4. 记录注册IP和时间
### 6.2 订单交易流程
```
1. 用户下单创建订单status=0
2. 用户支付更新status=1记录pay_time
3. 卖家发货
4. 买家确认收货更新status=2记录confirm_time
5. 交易完成(资金结算,奖励计算)
```
### 6.3 商品转拍流程
```
1. 买家购买商品并确认收货
2. 买家申请转拍(创建寄售商品记录)
- 记录old_id原订单ID
- 设置寄售价格
- 等待管理员审核is_show=0
3. 管理员审核通过is_show=1
4. 商品上架展示
5. 其他用户购买(生成新订单)
6. 卖家收款(扣除平台手续费)
```
### 6.4 提现审核流程
```
1. 用户提交提现申请
- 选择提现类型(优惠券/推广奖金)
- 选择收款方式(银行卡/支付宝)
- 填写提现金额
- 系统自动扣除相应账户余额
2. 管理员审核
- 查看用户信息和收款账号
- 审核通过标记status=1
- 审核驳回标记status=2填写驳回原因
3. 驳回时系统自动返还金额
- 记录类型为3提现驳回的财务日志
- 恢复用户相应账户余额
```
### 6.5 财务账户说明
用户有4个独立的财务账户
1. **余额money**
- 来源:充值、退款、活动奖励
- 用途:购买商品、提现
- 变动记录wa_money_log
2. **优惠券coupon**
- 来源:系统发放、活动赠送
- 用途:购买商品抵扣、提现(可选)
- 变动记录wa_coupon_log
3. **个人奖金self_bonus**
- 来源:自己交易获得的奖励
- 用途:提现、转入余额
- 变动记录wa_selfbonus_log
4. **推广奖金share_bonus**
- 来源:邀请用户消费返佣
- 用途:提现
- 变动记录wa_sharebonus_log
---
## 7. 安全注意事项
### 7.1 接口安全
- 所有接口调用均需进行身份验证基于Session/Cookie
- 敏感操作需要二次确认(如:大额提现审核)
- 防止SQL注入使用参数化查询
- 防止XSS攻击输出数据进行HTML转义
- 防止CSRF攻击验证Referer和Token
### 7.2 数据安全
- 用户密码使用加密算法存储MD5+盐值)
- 敏感信息脱敏显示(手机号、银行卡号)
- 定期数据备份(每日全量+每小时增量)
- 重要操作记录日志(提现、审核等)
### 7.3 权限控制
- 基于角色的权限管理RBAC
- 细粒度的操作权限控制
- 操作日志记录(谁、何时、做了什么)
- 敏感功能需要管理员权限
### 7.4 业务风控
- 提现限额控制(单笔、单日)
- 异常交易监控(频繁操作、大额交易)
- 黑名单机制异常用户、IP
- 防刷单策略
---
## 8. 错误码说明
### 8.1 通用错误码
| 错误码 | 说明 | 处理建议 |
|--------|------|----------|
| 0 | 成功 | - |
| -1 | 系统错误 | 联系管理员 |
| 1000 | 参数错误 | 检查请求参数 |
| 1001 | 缺少必填参数 | 补充必填参数 |
| 1002 | 参数格式错误 | 检查参数格式 |
| 2000 | 未登录 | 跳转登录页 |
| 2001 | 无权限 | 提示无权限 |
| 2002 | 账号被禁用 | 联系管理员 |
| 3000 | 数据不存在 | 刷新页面重试 |
| 3001 | 数据已存在 | 提示重复 |
| 4000 | 业务逻辑错误 | 查看msg详细信息 |
### 8.2 业务错误码
| 错误码 | 说明 |
|--------|------|
| 5001 | 余额不足 |
| 5002 | 库存不足 |
| 5003 | 订单状态不正确 |
| 5004 | 提现金额超限 |
| 5005 | 账户已冻结 |
| 5006 | 审核已处理 |
| 5007 | 不支持该操作 |
---
## 9. 接口版本管理
### 9.1 当前版本
- **版本号**V1.0
- **更新日期**2025-11-13
- **基础路径**`/app/admin`
### 9.2 版本变更说明
#### V1.02025-11-13
- 初始版本发布
- 包含用户、订单、商品、提现、财务日志、系统设置等核心模块
- 支持分页查询、复杂筛选、CRUD操作
---
## 10. 技术栈说明
### 10.1 前端技术
- **框架**Layui轻量级前端UI框架
- **AJAX库**jQuery
- **图表库**ECharts如有数据统计需求
### 10.2 后端技术
- **语言**PHP
- **框架**Webman高性能PHP框架
- **数据库**MySQL 5.7
- **Web服务器**Nginx
- **字符集**UTF-8
### 10.3 开发规范
- RESTful风格API设计
- MVC架构模式
- 统一的响应格式
- 统一的错误处理机制
---
## 11. 测试建议
### 11.1 功能测试
- 测试所有接口的正常流程
- 测试异常参数的处理
- 测试权限控制
- 测试数据边界值
### 11.2 性能测试
- 接口响应时间(建议<500ms
- 并发请求处理能力
- 数据库查询优化
- 接口限流策略
### 11.3 安全测试
- SQL注入测试
- XSS攻击测试
- CSRF攻击测试
- 权限越权测试
---
## 12. 附录
### 12.1 完整接口列表
| 模块 | 接口路径 | 方法 | 说明 |
|------|----------|------|------|
| 用户管理 | /user/index | GET | 用户管理页面 |
| 用户管理 | /user/select | GET | 用户列表/详情查询 |
| 用户管理 | /user/update | POST | 用户信息更新 |
| 寄售商品 | /merchandise/index | GET | 寄售商品管理页面 |
| 寄售商品 | /merchandise/select | GET | 寄售商品列表/详情查询 |
| 寄售商品 | /merchandise/update | POST | 寄售商品更新 |
| 订单管理 | /order/index | GET | 订单管理页面 |
| 订单管理 | /order/select | GET | 订单列表/详情查询 |
| 订单管理 | /order/update | POST | 订单信息更新 |
| 提现管理 | /withdraw/index | GET | 提现管理页面 |
| 提现管理 | /withdraw/select | GET | 提现列表/详情查询 |
| 提现管理 | /withdraw/update | POST | 提现审核 |
| 优惠券日志 | /coupon-log/index | GET | 优惠券日志页面 |
| 优惠券日志 | /coupon-log/select | GET | 优惠券日志查询 |
| 个人奖金日志 | /selfbonus-log/index | GET | 个人奖金日志页面 |
| 个人奖金日志 | /selfbonus-log/select | GET | 个人奖金日志查询 |
| 推广奖金日志 | /sharebonus-log/index | GET | 推广奖金日志页面 |
| 推广奖金日志 | /sharebonus-log/select | GET | 推广奖金日志查询 |
| 系统设置 | /setting/index | GET | 系统设置页面 |
| 系统设置 | /setting/get | GET | 获取系统设置 |
| 系统设置 | /setting/update | POST | 更新系统设置 |
| 系统配置 | /config/get | GET | 获取系统配置 |
| 权限规则 | /rule/get | GET | 获取菜单配置 |
| 账户信息 | /account/info | GET | 获取管理员信息 |
### 12.2 数据状态枚举汇总
#### 用户状态status
- 0禁用
- 1启用
#### 性别sex
- 0
- 1
#### 是否VIPis_vip
- 0
- 1
#### 订单状态status
- 0待付款
- 1已支付
- 2已完成
#### 寄售商品状态status
- 0已售
- 1未售
#### 显示状态is_show
- 0隐藏
- 1显示
#### 财务变动类型type
- 1收入
- 2支出
- 3提现驳回
#### 提现类型cate
- 2优惠券
- 4推广奖金
#### 提现账号类型account_type
- 1银行卡
- 2支付宝
#### 提现状态status
- 0待审核
- 1通过
- 2驳回
### 12.3 常用查询参数说明
**分页参数**
- page页码
- limit每页数量
**搜索条件**
- 字段名[0]操作符like、=、>、<等)
- 字段名[1]:搜索值
**日期范围**
- 字段名[0]:开始日期
- 字段名[1]:结束日期
---
## 13. 联系方式
### 13.1 技术支持
- **文档维护**:产品团队
- **技术对接**:开发团队
- **问题反馈**提交Issue或联系项目负责人
### 13.2 更新记录
| 版本 | 日期 | 更新内容 | 更新人 |
|------|------|----------|--------|
| V1.0 | 2025-11-13 | 初始完整版文档 | 系统分析 |
---
**文档结束**
> 本文档基于参考系统https://miao1admin.suzhouyuqi.com的HAR文件分析生成包含了系统所有核心API接口的详细说明。如有疑问或需要补充请联系文档维护团队。