# 商品寄卖服务系统管理后台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 | 否 | 是否VIP:0=否,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 | 否 | 是否VIP:0=否,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 | 是否VIP:0=否,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 | 卖家ID(0=平台) | | 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.0(2025-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:男 #### 是否VIP(is_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接口的详细说明。如有疑问或需要补充,请联系文档维护团队。