{ "openapi": "3.0.0", "info": { "title": "融豆商城 API", "version": "1.0.0", "description": "融豆商城后端API文档", "contact": { "name": "技术支持", "email": "support@example.com" } }, "servers": [ { "url": "/api", "description": "API服务器" } ], "components": { "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } }, "schemas": { "Address": { "type": "object", "properties": { "id": { "type": "integer", "description": "地址ID" }, "user_id": { "type": "integer", "description": "用户ID" }, "recipient_name": { "type": "string", "description": "收件人姓名" }, "phone": { "type": "string", "description": "联系电话" }, "province_code": { "type": "string", "description": "省份编码" }, "province_name": { "type": "string", "description": "省份名称" }, "city_code": { "type": "string", "description": "城市编码" }, "city_name": { "type": "string", "description": "城市名称" }, "district_code": { "type": "string", "description": "区县编码" }, "district_name": { "type": "string", "description": "区县名称" }, "detailed_address": { "type": "string", "description": "详细地址" }, "postal_code": { "type": "string", "description": "邮政编码" }, "label_id": { "type": "integer", "description": "地址标签ID" }, "is_default": { "type": "boolean", "description": "是否为默认地址" }, "label_name": { "type": "string", "description": "标签名称" }, "label_color": { "type": "string", "description": "标签颜色" } }, "required": [ "recipient_name", "phone", "province_code", "province_name", "city_code", "city_name", "district_code", "district_name", "detailed_address" ] }, "LoginCredentials": { "type": "object", "required": [ "username", "password" ], "properties": { "username": { "type": "string", "description": "用户名或手机号" }, "password": { "type": "string", "description": "密码" } } }, "RegisterRequest": { "type": "object", "required": [ "username", "phone", "password", "registrationCode", "city", "district_id", "captchaId", "captchaText", "smsCode" ], "properties": { "username": { "type": "string", "description": "用户名" }, "phone": { "type": "string", "description": "手机号" }, "password": { "type": "string", "description": "密码" }, "registrationCode": { "type": "string", "description": "注册激活码" }, "city": { "type": "string", "description": "城市" }, "district_id": { "type": "string", "description": "区域ID" }, "captchaId": { "type": "string", "description": "图形验证码ID" }, "captchaText": { "type": "string", "description": "图形验证码文本" }, "smsCode": { "type": "string", "description": "短信验证码" }, "role": { "type": "string", "description": "用户角色", "default": "user" } } }, "MatchingOrder": { "type": "object", "properties": { "id": { "type": "integer", "description": "匹配订单ID" }, "initiator_id": { "type": "integer", "description": "发起人ID" }, "matching_type": { "type": "string", "enum": [ "small", "large" ], "description": "匹配类型(小额或大额)" }, "amount": { "type": "number", "description": "匹配总金额" }, "status": { "type": "string", "enum": [ "pending", "matching", "completed", "failed" ], "description": "订单状态" }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" } } }, "Allocation": { "type": "object", "properties": { "id": { "type": "integer", "description": "分配ID" }, "from_user_id": { "type": "integer", "description": "发送方用户ID" }, "to_user_id": { "type": "integer", "description": "接收方用户ID" }, "amount": { "type": "number", "description": "分配金额" }, "cycle_number": { "type": "integer", "description": "轮次编号" }, "status": { "type": "string", "enum": [ "pending", "confirmed", "rejected", "cancelled" ], "description": "分配状态" }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" } } }, "UnreasonableMatch": { "type": "object", "properties": { "allocation_id": { "type": "integer", "description": "分配ID" }, "from_user_id": { "type": "integer", "description": "发送方用户ID" }, "to_user_id": { "type": "integer", "description": "接收方用户ID" }, "amount": { "type": "number", "description": "分配金额" }, "status": { "type": "string", "enum": [ "pending", "confirmed", "rejected", "cancelled" ], "description": "分配状态" }, "to_username": { "type": "string", "description": "接收方用户名" }, "to_user_balance": { "type": "number", "description": "接收方用户余额" }, "from_username": { "type": "string", "description": "发送方用户名" }, "from_user_balance": { "type": "number", "description": "发送方用户余额" } } }, "Order": { "type": "object", "properties": { "id": { "type": "integer", "description": "订单ID" }, "order_no": { "type": "string", "description": "订单编号" }, "user_id": { "type": "integer", "description": "用户ID" }, "total_amount": { "type": "number", "description": "订单总金额" }, "total_points": { "type": "number", "description": "订单总积分" }, "status": { "type": "string", "enum": [ "pending", "shipped", "completed", "cancelled" ], "description": "订单状态" }, "address": { "type": "string", "description": "收货地址" }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" }, "updated_at": { "type": "string", "format": "date-time", "description": "更新时间" }, "username": { "type": "string", "description": "用户名" } } }, "PointsHistory": { "type": "object", "properties": { "id": { "type": "integer", "description": "积分历史记录ID" }, "points_change": { "type": "integer", "description": "积分变动数量" }, "type": { "type": "string", "description": "积分变动类型(earn-获得, spend-消费, admin_adjust-管理员调整)" }, "description": { "type": "string", "description": "积分变动描述" }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" } } }, "Product": { "type": "object", "required": [ "name", "points_price", "stock" ], "properties": { "id": { "type": "integer", "description": "商品ID" }, "name": { "type": "string", "description": "商品名称" }, "category": { "type": "string", "description": "商品分类" }, "points_price": { "type": "integer", "description": "积分价格" }, "stock": { "type": "integer", "description": "库存数量" }, "image_url": { "type": "string", "description": "商品图片URL" }, "description": { "type": "string", "description": "商品描述" }, "status": { "type": "string", "description": "商品状态", "enum": [ "active", "inactive" ] }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" }, "updated_at": { "type": "string", "format": "date-time", "description": "更新时间" } } }, "Region": { "type": "object", "properties": { "code": { "type": "string", "description": "地区编码" }, "name": { "type": "string", "description": "地区名称" } } }, "ZhejiangRegion": { "type": "object", "properties": { "id": { "type": "integer", "description": "地区ID" }, "city_name": { "type": "string", "description": "城市名称" }, "district_name": { "type": "string", "description": "区县名称" }, "region_code": { "type": "string", "description": "地区编码" }, "is_available": { "type": "integer", "description": "是否可用(1:可用 0:不可用)" } } }, "SMSVerification": { "type": "object", "properties": { "phone": { "type": "string", "description": "手机号码" }, "code": { "type": "string", "description": "验证码" } } }, "Transfer": { "type": "object", "properties": { "id": { "type": "integer", "description": "转账记录ID" }, "user_id": { "type": "integer", "description": "用户ID" }, "recipient_id": { "type": "integer", "description": "接收方用户ID" }, "amount": { "type": "number", "format": "float", "description": "转账金额" }, "status": { "type": "string", "enum": [ "pending", "completed", "failed", "cancelled" ], "description": "转账状态" }, "transfer_type": { "type": "string", "enum": [ "user_to_user", "user_to_system", "system_to_user" ], "description": "转账类型" }, "voucher_image": { "type": "string", "description": "转账凭证图片路径" }, "remark": { "type": "string", "description": "转账备注" }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" }, "updated_at": { "type": "string", "format": "date-time", "description": "更新时间" } } }, "Pagination": { "type": "object", "properties": { "total": { "type": "integer", "description": "总记录数" }, "page": { "type": "integer", "description": "当前页码" }, "limit": { "type": "integer", "description": "每页记录数" }, "total_pages": { "type": "integer", "description": "总页数" } } }, "User": { "type": "object", "required": [ "username", "password", "real_name", "id_card" ], "properties": { "id": { "type": "integer", "description": "用户ID" }, "username": { "type": "string", "description": "用户名" }, "role": { "type": "string", "description": "用户角色", "enum": [ "user", "admin", "merchant" ] }, "avatar": { "type": "string", "description": "用户头像URL" }, "points": { "type": "integer", "description": "用户积分" }, "real_name": { "type": "string", "description": "真实姓名" }, "id_card": { "type": "string", "description": "身份证号" }, "phone": { "type": "string", "description": "手机号" }, "is_system_account": { "type": "boolean", "description": "是否为系统账户" }, "created_at": { "type": "string", "format": "date-time", "description": "创建时间" }, "updated_at": { "type": "string", "format": "date-time", "description": "更新时间" } } } } }, "security": [ { "bearerAuth": [] } ], "paths": { "/addresses": { "get": { "summary": "获取用户收货地址列表", "tags": [ "Addresses" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取地址列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Address" } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } }, "post": { "summary": "创建收货地址", "tags": [ "Addresses" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "recipient_name": { "type": "string", "description": "收件人姓名" }, "phone": { "type": "string", "description": "联系电话" }, "province_code": { "type": "string", "description": "省份编码" }, "province_name": { "type": "string", "description": "省份名称" }, "city_code": { "type": "string", "description": "城市编码" }, "city_name": { "type": "string", "description": "城市名称" }, "district_code": { "type": "string", "description": "区县编码" }, "district_name": { "type": "string", "description": "区县名称" }, "detailed_address": { "type": "string", "description": "详细地址" }, "postal_code": { "type": "string", "description": "邮政编码" }, "label_id": { "type": "integer", "description": "地址标签ID" }, "is_default": { "type": "boolean", "description": "是否为默认地址" } }, "required": [ "recipient_name", "phone", "province_code", "province_name", "city_code", "city_name", "district_code", "district_name", "detailed_address" ] } } } }, "responses": { "201": { "description": "地址创建成功" }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/addresses/{id}": { "get": { "summary": "获取单个收货地址详情", "tags": [ "Addresses" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "地址ID" } ], "responses": { "200": { "description": "成功获取地址详情", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "$ref": "#/components/schemas/Address" } } } } } }, "401": { "description": "未授权" }, "404": { "description": "地址不存在" }, "500": { "description": "服务器错误" } } }, "put": { "summary": "更新收货地址", "tags": [ "Addresses" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "地址ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "recipient_name": { "type": "string", "description": "收件人姓名" }, "phone": { "type": "string", "description": "联系电话" }, "province_code": { "type": "string", "description": "省份编码" }, "province_name": { "type": "string", "description": "省份名称" }, "city_code": { "type": "string", "description": "城市编码" }, "city_name": { "type": "string", "description": "城市名称" }, "district_code": { "type": "string", "description": "区县编码" }, "district_name": { "type": "string", "description": "区县名称" }, "detailed_address": { "type": "string", "description": "详细地址" }, "postal_code": { "type": "string", "description": "邮政编码" }, "label_id": { "type": "integer", "description": "地址标签ID" }, "is_default": { "type": "boolean", "description": "是否为默认地址" } } } } } }, "responses": { "200": { "description": "地址更新成功" }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "404": { "description": "地址不存在" }, "500": { "description": "服务器错误" } } }, "delete": { "summary": "删除收货地址(软删除)", "tags": [ "Addresses" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "地址ID" } ], "responses": { "200": { "description": "地址删除成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "收货地址删除成功" } } } } } }, "401": { "description": "未授权" }, "404": { "description": "地址不存在" }, "500": { "description": "服务器错误" } } } }, "/addresses/{id}/default": { "put": { "summary": "设置默认地址", "tags": [ "Addresses" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "地址ID" } ], "responses": { "200": { "description": "默认地址设置成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "默认地址设置成功" } } } } } }, "401": { "description": "未授权" }, "404": { "description": "地址不存在" }, "500": { "description": "服务器错误" } } } }, "/auth/register": { "post": { "summary": "用户注册", "description": "需要提供有效的激活码才能注册", "tags": [ "Authentication" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterRequest" } } } }, "responses": { "201": { "description": "用户注册成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "token": { "type": "string", "description": "JWT认证令牌" }, "user": { "type": "object", "properties": { "id": { "type": "integer" }, "username": { "type": "string" }, "role": { "type": "string" } } } } } } } }, "400": { "description": "请求参数错误" }, "500": { "description": "服务器错误" } } } }, "/auth/login": { "post": { "summary": "用户登录", "tags": [ "Authentication" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginCredentials" } } } }, "responses": { "200": { "description": "登录成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "token": { "type": "string", "description": "JWT认证令牌" }, "user": { "type": "object", "properties": { "id": { "type": "integer" }, "username": { "type": "string" }, "role": { "type": "string" }, "avatar": { "type": "string" }, "points": { "type": "integer" } } } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "用户名或密码错误" }, "403": { "description": "账户审核未通过" }, "500": { "description": "服务器错误" } } } }, "/captcha/generate": { "get": { "summary": "生成图形验证码", "tags": [ "Captcha" ], "responses": { "200": { "description": "成功生成验证码", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "captchaId": { "type": "string", "description": "验证码唯一ID" }, "image": { "type": "string", "description": "Base64编码的SVG验证码图片" } } } } } } } }, "500": { "description": "服务器错误" } } } }, "/captcha/verify": { "post": { "summary": "验证用户输入的验证码", "tags": [ "Captcha" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "captchaId", "captchaText" ], "properties": { "captchaId": { "type": "string", "description": "验证码唯一ID" }, "captchaText": { "type": "string", "description": "用户输入的验证码" } } } } } }, "responses": { "200": { "description": "验证码验证成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "验证码验证成功" } } } } } }, "400": { "description": "验证码错误或已过期", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": false }, "message": { "type": "string", "example": "验证码错误" } } } } } }, "500": { "description": "服务器错误" } } } }, "/api/matching/create": { "post": { "summary": "创建匹配订单", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "matchingType": { "type": "string", "enum": [ "small", "large" ], "default": "small", "description": "匹配类型(小额或大额)" }, "customAmount": { "type": "number", "description": "大额匹配时的自定义金额(5000-50000之间)" } } } } } }, "responses": { "200": { "description": "匹配订单创建成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "data": { "type": "object", "properties": { "matchingOrderId": { "type": "integer" }, "amounts": { "type": "array", "items": { "type": "number" } }, "matchingType": { "type": "string" }, "totalAmount": { "type": "number" } } } } } } } }, "400": { "description": "参数错误或用户未满足匹配条件" }, "401": { "description": "未授权" }, "404": { "description": "用户不存在" }, "500": { "description": "服务器错误" } } } }, "/api/matching/my-orders": { "get": { "summary": "获取用户的匹配订单列表", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" } ], "responses": { "200": { "description": "成功获取匹配订单列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/MatchingOrder" } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/api/matching/pending-allocations": { "get": { "summary": "获取用户待处理的分配", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取待处理分配", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Allocation" } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/api/matching/allocation/{id}": { "get": { "summary": "获取分配详情", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "分配ID" } ], "responses": { "200": { "description": "成功获取分配详情", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "$ref": "#/components/schemas/Allocation" } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无权限访问" }, "404": { "description": "分配不存在" }, "500": { "description": "服务器错误" } } } }, "/api/matching/confirm-allocation/{allocationId}": { "post": { "summary": "确认分配(创建转账)", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "allocationId", "required": true, "schema": { "type": "integer" }, "description": "分配ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "transferAmount": { "type": "number", "description": "转账金额" }, "description": { "type": "string", "description": "转账描述" }, "voucher": { "type": "string", "description": "转账凭证(图片URL)" } }, "required": [ "voucher" ] } } } }, "responses": { "200": { "description": "转账凭证提交成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "data": { "type": "object", "properties": { "transferId": { "type": "integer" } } } } } } } }, "400": { "description": "参数错误" }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/api/matching/reject-allocation/{allocationId}": { "post": { "summary": "拒绝分配", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "allocationId", "required": true, "schema": { "type": "integer" }, "description": "分配ID" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "reason": { "type": "string", "description": "拒绝原因" } } } } } }, "responses": { "200": { "description": "拒绝分配成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "401": { "description": "未授权" }, "404": { "description": "分配不存在或无权限" }, "500": { "description": "服务器错误" } } } }, "/api/matching/order/{orderId}": { "get": { "summary": "获取匹配订单详情", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "orderId", "required": true, "schema": { "type": "integer" }, "description": "订单ID" } ], "responses": { "200": { "description": "成功获取订单详情", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "order": { "$ref": "#/components/schemas/MatchingOrder" }, "allocations": { "type": "array", "items": { "$ref": "#/components/schemas/Allocation" } }, "records": { "type": "array", "items": { "type": "object" } } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无权限查看" }, "404": { "description": "订单不存在" }, "500": { "description": "服务器错误" } } } }, "/api/matching/stats": { "get": { "summary": "获取匹配统计信息", "tags": [ "Matching" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取统计信息", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "userStats": { "type": "object", "properties": { "initiated_orders": { "type": "integer" }, "participated_allocations": { "type": "integer" }, "total_initiated_amount": { "type": "number" }, "total_participated_amount": { "type": "number" } } } } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/api/matching-admin/unreasonable-matches": { "get": { "summary": "获取不合理的匹配记录(正余额用户被匹配的情况)", "tags": [ "MatchingAdmin" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 20 }, "description": "每页数量" } ], "responses": { "200": { "description": "成功获取不合理匹配记录", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "matches": { "type": "array", "items": { "$ref": "#/components/schemas/UnreasonableMatch" } }, "pagination": { "type": "object", "properties": { "page": { "type": "integer" }, "limit": { "type": "integer" }, "total": { "type": "integer" }, "totalPages": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "500": { "description": "服务器错误" } } } }, "/api/matching-admin/fix-unreasonable-match/{allocationId}": { "post": { "summary": "修复不合理的匹配记录", "tags": [ "MatchingAdmin" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "allocationId", "required": true, "schema": { "type": "integer" }, "description": "分配ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "cancel", "reassign" ], "description": "修复操作类型(取消或重新分配)" } }, "required": [ "action" ] } } } }, "responses": { "200": { "description": "修复成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "400": { "description": "参数错误或无需修复" }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "404": { "description": "分配记录不存在" }, "500": { "description": "服务器错误" } } } }, "/api/matching-admin/matching-stats": { "get": { "summary": "获取匹配统计信息", "tags": [ "MatchingAdmin" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取匹配统计信息", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "currentStats": { "type": "object", "properties": { "unreasonable_matches": { "type": "integer" }, "reasonable_matches": { "type": "integer" }, "system_matches": { "type": "integer" }, "unreasonable_amount": { "type": "number" }, "reasonable_amount": { "type": "number" } } }, "yesterdayStats": { "type": "object", "properties": { "total_outbound": { "type": "number" }, "unique_amounts": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "500": { "description": "服务器错误" } } } }, "/api/matching-admin/fix-all-unreasonable": { "post": { "summary": "批量修复所有不合理匹配", "tags": [ "MatchingAdmin" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "批量修复完成", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "data": { "type": "object", "properties": { "fixedCount": { "type": "integer", "description": "成功修复的记录数" }, "errorCount": { "type": "integer", "description": "修复失败的记录数" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "错误信息列表(最多10条)" } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "500": { "description": "服务器错误" } } } }, "/api/matching-admin/confirm-allocation/{allocationId}": { "post": { "summary": "管理员确认分配", "tags": [ "MatchingAdmin" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "allocationId", "required": true, "schema": { "type": "integer" }, "description": "分配ID" } ], "responses": { "200": { "description": "分配确认成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "404": { "description": "分配不存在或状态不是待处理" }, "500": { "description": "服务器错误" } } } }, "/api/matching-admin/cancel-allocation/{allocationId}": { "post": { "summary": "管理员取消分配", "tags": [ "MatchingAdmin" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "allocationId", "required": true, "schema": { "type": "integer" }, "description": "分配ID" } ], "responses": { "200": { "description": "分配取消成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "404": { "description": "分配不存在或状态不是待处理" }, "500": { "description": "服务器错误" } } } }, "/api/orders": { "get": { "summary": "获取订单列表", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" }, { "in": "query", "name": "search", "schema": { "type": "string" }, "description": "搜索关键词(订单号或用户名)" }, { "in": "query", "name": "orderNumber", "schema": { "type": "string" }, "description": "订单号" }, { "in": "query", "name": "username", "schema": { "type": "string" }, "description": "用户名" }, { "in": "query", "name": "status", "schema": { "type": "string", "enum": [ "pending", "shipped", "completed", "cancelled" ] }, "description": "订单状态" }, { "in": "query", "name": "startDate", "schema": { "type": "string", "format": "date" }, "description": "开始日期" }, { "in": "query", "name": "endDate", "schema": { "type": "string", "format": "date" }, "description": "结束日期" } ], "responses": { "200": { "description": "成功获取订单列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "orders": { "type": "array", "items": { "$ref": "#/components/schemas/Order" } }, "pagination": { "type": "object", "properties": { "page": { "type": "integer" }, "limit": { "type": "integer" }, "total": { "type": "integer" }, "pages": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } }, "post": { "summary": "创建订单", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "product_id": { "type": "integer", "description": "商品ID" }, "quantity": { "type": "integer", "description": "购买数量" }, "shipping_address": { "type": "string", "description": "收货地址" } }, "required": [ "product_id", "quantity", "shipping_address" ] } } } }, "responses": { "201": { "description": "订单创建成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "data": { "type": "object", "properties": { "orderId": { "type": "integer" }, "orderNumber": { "type": "string" }, "pointsUsed": { "type": "integer" } } } } } } } }, "400": { "description": "参数错误或积分不足" }, "401": { "description": "未授权" }, "404": { "description": "商品不存在或已下架" }, "500": { "description": "服务器错误" } } } }, "/api/orders/{id}": { "get": { "summary": "获取单个订单详情", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "订单ID" } ], "responses": { "200": { "description": "成功获取订单详情", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "order": { "$ref": "#/components/schemas/Order" } } } } } } } }, "401": { "description": "未授权" }, "404": { "description": "订单不存在" }, "500": { "description": "服务器错误" } } } }, "/api/orders/{id}/cancel": { "put": { "summary": "用户取消订单", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "订单ID" } ], "responses": { "200": { "description": "订单取消成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "400": { "description": "只能取消待处理的订单" }, "401": { "description": "未授权" }, "404": { "description": "订单不存在" }, "500": { "description": "服务器错误" } } } }, "/api/orders/{id}/confirm": { "put": { "summary": "确认收货", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "订单ID" } ], "responses": { "200": { "description": "确认收货成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "400": { "description": "只能确认已发货的订单" }, "401": { "description": "未授权" }, "404": { "description": "订单不存在" }, "500": { "description": "服务器错误" } } } }, "/api/orders/{id}/status": { "put": { "summary": "更新订单状态(管理员)", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "订单ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "shipped", "completed", "cancelled" ], "description": "订单状态" } }, "required": [ "status" ] } } } }, "responses": { "200": { "description": "订单状态更新成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "400": { "description": "无效的订单状态" }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "404": { "description": "订单不存在" }, "500": { "description": "服务器错误" } } } }, "/api/orders/stats": { "get": { "summary": "获取订单统计信息(管理员权限)", "tags": [ "Orders" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取订单统计信息", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "totalOrders": { "type": "integer", "description": "总订单数" }, "pendingOrders": { "type": "integer", "description": "待发货订单数" }, "completedOrders": { "type": "integer", "description": "已完成订单数" }, "monthOrders": { "type": "integer", "description": "本月新增订单数" }, "monthGrowthRate": { "type": "number", "description": "月增长率" }, "totalPointsConsumed": { "type": "number", "description": "总积分消费" } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "无管理员权限" }, "500": { "description": "服务器错误" } } } }, "/api/points/balance": { "get": { "summary": "获取用户当前积分余额", "tags": [ "Points" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取积分余额", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "points": { "type": "integer", "description": "用户当前积分" } } } } } } } }, "401": { "description": "未授权,需要登录" }, "404": { "description": "用户不存在" }, "500": { "description": "服务器错误" } } } }, "/api/points/history": { "get": { "summary": "获取用户积分历史记录", "tags": [ "Points" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页记录数" }, { "in": "query", "name": "type", "schema": { "type": "string", "enum": [ "earn", "spend", "admin_adjust" ] }, "description": "积分变动类型" }, { "in": "query", "name": "username", "schema": { "type": "string" }, "description": "用户名(仅管理员可用)" }, { "in": "query", "name": "change", "schema": { "type": "string", "enum": [ "positive", "negative" ] }, "description": "积分变动方向(仅管理员可用)" }, { "in": "query", "name": "startDate", "schema": { "type": "string", "format": "date" }, "description": "开始日期(仅管理员可用)" }, { "in": "query", "name": "endDate", "schema": { "type": "string", "format": "date" }, "description": "结束日期(仅管理员可用)" } ], "responses": { "200": { "description": "成功获取积分历史", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "records": { "type": "array", "items": { "$ref": "#/components/schemas/PointsHistory" } }, "pagination": { "type": "object", "properties": { "page": { "type": "integer" }, "limit": { "type": "integer" }, "total": { "type": "integer" }, "totalPages": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权,需要登录" }, "500": { "description": "服务器错误" } } } }, "/api/points/adjust": { "post": { "summary": "管理员调整用户积分", "tags": [ "Points" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "userId", "points", "reason" ], "properties": { "userId": { "type": "integer", "description": "用户ID" }, "points": { "type": "integer", "description": "调整的积分数量(正数为增加,负数为减少)" }, "reason": { "type": "string", "description": "调整原因" } } } } } }, "responses": { "200": { "description": "积分调整成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "积分调整成功" }, "data": { "type": "object", "properties": { "userId": { "type": "integer" }, "pointsChanged": { "type": "integer" }, "newBalance": { "type": "integer" } } } } } } } }, "400": { "description": "参数错误或积分不足" }, "401": { "description": "未授权,需要管理员权限" }, "404": { "description": "用户不存在" }, "500": { "description": "服务器错误" } } } }, "/api/points/recharge": { "post": { "summary": "管理员给用户充值积分", "tags": [ "Points" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "user_id", "points" ], "properties": { "user_id": { "type": "integer", "description": "用户ID" }, "points": { "type": "integer", "description": "充值的积分数量(必须为正数)" }, "description": { "type": "string", "description": "充值描述", "default": "管理员充值" } } } } } }, "responses": { "200": { "description": "积分充值成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "积分充值成功" }, "data": { "type": "object", "properties": { "userId": { "type": "integer" }, "pointsAdded": { "type": "integer" } } } } } } } }, "400": { "description": "参数错误" }, "401": { "description": "未授权,需要管理员权限" }, "404": { "description": "用户不存在" }, "500": { "description": "服务器错误" } } } }, "/api/points/leaderboard": { "get": { "summary": "获取积分排行榜", "tags": [ "Points" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "返回的排行榜数量" } ], "responses": { "200": { "description": "成功获取积分排行榜", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "leaderboard": { "type": "array", "items": { "type": "object", "properties": { "rank": { "type": "integer" }, "userId": { "type": "integer" }, "username": { "type": "string" }, "points": { "type": "integer" } } } } } } } } } } }, "401": { "description": "未授权,需要登录" }, "500": { "description": "服务器错误" } } } }, "/api/points/stats": { "get": { "summary": "获取积分统计信息(管理员权限)", "tags": [ "Points" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取积分统计信息", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "stats": { "type": "object", "properties": { "totalPoints": { "type": "integer", "description": "系统中总积分数量" }, "totalEarned": { "type": "integer", "description": "总积分发放量" }, "totalSpent": { "type": "integer", "description": "总积分消费量" }, "activeUsers": { "type": "integer", "description": "活跃用户数" } } } } } } } } } }, "401": { "description": "未授权,需要管理员权限" }, "500": { "description": "服务器错误" } } } }, "/products": { "get": { "summary": "获取商品列表", "tags": [ "Products" ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" }, { "in": "query", "name": "search", "schema": { "type": "string" }, "description": "搜索关键词" }, { "in": "query", "name": "category", "schema": { "type": "string" }, "description": "商品分类" }, { "in": "query", "name": "status", "schema": { "type": "string", "enum": [ "active", "inactive" ] }, "description": "商品状态" } ], "responses": { "200": { "description": "成功获取商品列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/components/schemas/Product" } }, "pagination": { "type": "object", "properties": { "page": { "type": "integer" }, "limit": { "type": "integer" }, "total": { "type": "integer" }, "pages": { "type": "integer" } } } } } } } } } } } } }, "/products/categories": { "get": { "summary": "获取商品分类列表", "tags": [ "Products" ], "responses": { "200": { "description": "成功获取商品分类列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "categories": { "type": "array", "items": { "type": "string" } } } } } } } } } } } }, "/products/{id}": { "get": { "summary": "获取单个商品详情", "tags": [ "Products" ], "parameters": [ { "in": "path", "name": "id", "schema": { "type": "integer" }, "required": true, "description": "商品ID" } ], "responses": { "200": { "description": "成功获取商品详情", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "$ref": "#/components/schemas/Product" } } } } } }, "404": { "description": "商品不存在" } } } }, "/regions/zhejiang": { "get": { "summary": "获取浙江省所有地区数据", "tags": [ "Regions" ], "responses": { "200": { "description": "成功获取浙江省地区数据", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ZhejiangRegion" } }, "message": { "type": "string", "example": "获取地区数据成功" } } } } } }, "500": { "description": "服务器错误" } } } }, "/regions/provinces": { "get": { "summary": "获取所有省份", "tags": [ "Regions" ], "responses": { "200": { "description": "成功获取省份列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Region" } } } } } } }, "500": { "description": "服务器错误" } } } }, "/regions/cities/{provinceCode}": { "get": { "summary": "根据省份代码获取城市列表", "tags": [ "Regions" ], "parameters": [ { "in": "path", "name": "provinceCode", "required": true, "schema": { "type": "string" }, "description": "省份代码" } ], "responses": { "200": { "description": "成功获取城市列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Region" } } } } } } }, "500": { "description": "服务器错误" } } } }, "/regions/districts/{cityCode}": { "get": { "summary": "根据城市代码获取区县列表", "tags": [ "Regions" ], "parameters": [ { "in": "path", "name": "cityCode", "required": true, "schema": { "type": "string" }, "description": "城市代码" } ], "responses": { "200": { "description": "成功获取区县列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Region" } } } } } } }, "500": { "description": "服务器错误" } } } }, "/regions/path/{regionCode}": { "get": { "summary": "根据区域代码获取完整路径(省-市-区)", "tags": [ "Regions" ], "parameters": [ { "in": "path", "name": "regionCode", "required": true, "schema": { "type": "string" }, "description": "区域代码" } ], "responses": { "200": { "description": "成功获取区域完整路径", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "province": { "$ref": "#/components/schemas/Region" }, "city": { "$ref": "#/components/schemas/Region" }, "district": { "$ref": "#/components/schemas/Region" } } } } } } } }, "404": { "description": "区域不存在" }, "500": { "description": "服务器错误" } } } }, "/risk-management/users": { "get": { "summary": "获取风险用户列表", "tags": [ "RiskManagement" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" }, { "in": "query", "name": "is_blacklisted", "schema": { "type": "integer", "enum": [ 0, 1 ] }, "description": "是否被拉黑" }, { "in": "query", "name": "username", "schema": { "type": "string" }, "description": "用户名" } ], "responses": { "200": { "description": "成功获取风险用户列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "users": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "username": { "type": "string" }, "real_name": { "type": "string" }, "is_blacklisted": { "type": "boolean" }, "blacklist_reason": { "type": "string" }, "blacklisted_at": { "type": "string", "format": "date-time" } } } }, "pagination": { "type": "object", "properties": { "total": { "type": "integer" }, "page": { "type": "integer" }, "limit": { "type": "integer" }, "pages": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } }, "/risk-management/blacklist/{userId}": { "post": { "summary": "拉黑用户", "tags": [ "RiskManagement" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "userId", "schema": { "type": "integer" }, "required": true, "description": "用户ID" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "reason" ], "properties": { "reason": { "type": "string", "description": "拉黑原因" } } } } } }, "responses": { "200": { "description": "用户已被拉黑", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "用户已被拉黑" } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } }, "/risk-management/unblacklist/{userId}": { "post": { "summary": "解除拉黑", "tags": [ "RiskManagement" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "path", "name": "userId", "schema": { "type": "integer" }, "required": true, "description": "用户ID" } ], "responses": { "200": { "description": "已解除拉黑", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "已解除拉黑" } } } } } }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } }, "/risk-management/overdue-transfers": { "get": { "summary": "获取超时转账列表", "tags": [ "RiskManagement" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" } ], "responses": { "200": { "description": "成功获取超时转账列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "transfers": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "user_id": { "type": "integer" }, "recipient_id": { "type": "integer" }, "amount": { "type": "number" }, "status": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "username": { "type": "string" }, "recipient_name": { "type": "string" }, "overdue_hours": { "type": "number" } } } }, "pagination": { "type": "object", "properties": { "total": { "type": "integer" }, "page": { "type": "integer" }, "limit": { "type": "integer" }, "pages": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } }, "/api/sms/send": { "post": { "summary": "发送短信验证码", "tags": [ "SMS" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "phone" ], "properties": { "phone": { "type": "string", "description": "手机号码" } } } } } }, "responses": { "200": { "description": "验证码发送成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "验证码发送成功" } } } } } }, "400": { "description": "参数错误或发送频率限制" }, "500": { "description": "服务器错误" } } } }, "/api/sms/verify": { "post": { "summary": "验证短信验证码", "tags": [ "SMS" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "phone", "code" ], "properties": { "phone": { "type": "string", "description": "手机号码" }, "code": { "type": "string", "description": "验证码" } } } } } }, "responses": { "200": { "description": "验证码验证成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "手机号验证成功" }, "data": { "type": "object", "properties": { "phone": { "type": "string" }, "verified": { "type": "boolean" } } } } } } } }, "400": { "description": "参数错误或验证码错误" }, "500": { "description": "服务器错误" } } } }, "/transfers": { "get": { "summary": "获取转账列表", "tags": [ "Transfers" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "status", "schema": { "type": "string" }, "description": "转账状态过滤" }, { "in": "query", "name": "transfer_type", "schema": { "type": "string" }, "description": "转账类型过滤" }, { "in": "query", "name": "start_date", "schema": { "type": "string", "format": "date" }, "description": "开始日期过滤" }, { "in": "query", "name": "end_date", "schema": { "type": "string", "format": "date" }, "description": "结束日期过滤" }, { "in": "query", "name": "search", "schema": { "type": "string" }, "description": "搜索关键词(用户名或真实姓名)" }, { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" }, { "in": "query", "name": "sort", "schema": { "type": "string" }, "description": "排序字段" }, { "in": "query", "name": "order", "schema": { "type": "string", "enum": [ "asc", "desc" ] }, "description": "排序方向" } ], "responses": { "200": { "description": "成功获取转账列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "transfers": { "type": "array", "items": { "$ref": "#/components/schemas/Transfer" } }, "pagination": { "$ref": "#/components/schemas/Pagination" } } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/transfers/list": { "get": { "summary": "获取转账记录列表", "tags": [ "Transfers" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "status", "schema": { "type": "string" }, "description": "转账状态过滤" }, { "in": "query", "name": "transfer_type", "schema": { "type": "string" }, "description": "转账类型过滤" }, { "in": "query", "name": "start_date", "schema": { "type": "string", "format": "date" }, "description": "开始日期过滤" }, { "in": "query", "name": "end_date", "schema": { "type": "string", "format": "date" }, "description": "结束日期过滤" }, { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" }, { "in": "query", "name": "sort", "schema": { "type": "string" }, "description": "排序字段" }, { "in": "query", "name": "order", "schema": { "type": "string", "enum": [ "asc", "desc" ] }, "description": "排序方向" } ], "responses": { "200": { "description": "成功获取转账记录列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "transfers": { "type": "array", "items": { "$ref": "#/components/schemas/Transfer" } }, "pagination": { "$ref": "#/components/schemas/Pagination" } } } } } } } }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/transfers/public-account": { "get": { "summary": "获取公户信息", "tags": [ "Transfers" ], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "成功获取公户信息", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "data": { "type": "object", "properties": { "id": { "type": "integer", "description": "公户ID" }, "username": { "type": "string", "description": "公户用户名", "example": "public_account" }, "real_name": { "type": "string", "description": "公户名称" }, "balance": { "type": "number", "format": "float", "description": "公户余额" } } } } } } } }, "401": { "description": "未授权" }, "404": { "description": "公户不存在" }, "500": { "description": "服务器错误" } } } }, "/transfers/create": { "post": { "summary": "创建转账记录", "tags": [ "Transfers" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "to_user_id", "amount", "transfer_type" ], "properties": { "to_user_id": { "type": "integer", "description": "接收方用户ID" }, "amount": { "type": "number", "format": "float", "description": "转账金额" }, "transfer_type": { "type": "string", "enum": [ "user_to_user", "user_to_system", "system_to_user" ], "description": "转账类型" }, "remark": { "type": "string", "description": "转账备注" } } } } } }, "responses": { "201": { "description": "转账记录创建成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "转账记录创建成功,等待确认" }, "data": { "type": "object", "properties": { "transfer_id": { "type": "integer", "description": "转账记录ID" } } } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/transfers/admin/create": { "post": { "summary": "管理员创建转账记录", "tags": [ "Transfers" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "from_user_id", "to_user_id", "amount", "transfer_type" ], "properties": { "from_user_id": { "type": "integer", "description": "发送方用户ID" }, "to_user_id": { "type": "integer", "description": "接收方用户ID" }, "amount": { "type": "number", "format": "float", "description": "转账金额" }, "transfer_type": { "type": "string", "enum": [ "user_to_user", "user_to_system", "system_to_user" ], "description": "转账类型" }, "description": { "type": "string", "description": "转账描述" } } } } } }, "responses": { "201": { "description": "转账记录创建成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "转账记录创建成功" }, "data": { "type": "object", "properties": { "transfer_id": { "type": "integer", "description": "转账记录ID" } } } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } }, "/upload/image": { "post": { "summary": "上传图片", "tags": [ "Upload" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "file": { "type": "string", "format": "binary", "description": "要上传的图片文件" }, "type": { "type": "string", "enum": [ "avatar", "product", "document" ], "default": "document", "description": "上传文件类型" } } } } } }, "responses": { "200": { "description": "图片上传成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "url": { "type": "string", "description": "上传后的文件URL" }, "filename": { "type": "string", "description": "上传后的文件名" } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/upload": { "post": { "summary": "多文件上传接口 (支持MediaUpload组件)", "tags": [ "Upload" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "files": { "type": "array", "items": { "type": "string", "format": "binary" }, "description": "要上传的文件列表" }, "type": { "type": "string", "enum": [ "avatar", "product", "document" ], "default": "document", "description": "上传文件类型" } } } } } }, "responses": { "200": { "description": "文件上传成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "文件上传成功" }, "data": { "type": "array", "items": { "type": "object", "properties": { "filename": { "type": "string" }, "originalname": { "type": "string" }, "mimetype": { "type": "string" }, "size": { "type": "integer" }, "path": { "type": "string" }, "url": { "type": "string" } } } } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/upload/single": { "post": { "summary": "单文件上传接口(兼容性接口)", "tags": [ "Upload" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "file": { "type": "string", "format": "binary", "description": "要上传的文件" }, "type": { "type": "string", "enum": [ "avatar", "product", "document" ], "default": "document", "description": "上传文件类型" } } } } } }, "responses": { "200": { "description": "文件上传成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "文件上传成功" }, "url": { "type": "string", "description": "上传后的文件URL" }, "filename": { "type": "string", "description": "上传后的文件名" }, "originalname": { "type": "string", "description": "原始文件名" }, "size": { "type": "integer", "description": "文件大小" } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "500": { "description": "服务器错误" } } } }, "/users": { "post": { "summary": "创建用户(管理员权限)", "tags": [ "Users" ], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "username", "password", "real_name", "id_card" ], "properties": { "username": { "type": "string" }, "password": { "type": "string" }, "role": { "type": "string", "enum": [ "user", "admin", "merchant" ], "default": "user" }, "is_system_account": { "type": "boolean", "default": false }, "real_name": { "type": "string" }, "id_card": { "type": "string" }, "wechat_qr": { "type": "string" }, "alipay_qr": { "type": "string" }, "bank_card": { "type": "string" }, "unionpay_qr": { "type": "string" }, "phone": { "type": "string" } } } } } }, "responses": { "201": { "description": "用户创建成功", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "message": { "type": "string" }, "user": { "$ref": "#/components/schemas/User" } } } } } }, "400": { "description": "请求参数错误" }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } }, "/users/pending-audit": { "get": { "summary": "获取待审核用户列表(管理员权限)", "tags": [ "Users" ], "security": [ { "bearerAuth": [] } ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1 }, "description": "页码" }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 10 }, "description": "每页数量" } ], "responses": { "200": { "description": "成功获取待审核用户列表", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "data": { "type": "object", "properties": { "users": { "type": "array", "items": { "$ref": "#/components/schemas/User" } }, "pagination": { "type": "object", "properties": { "page": { "type": "integer" }, "limit": { "type": "integer" }, "total": { "type": "integer" }, "pages": { "type": "integer" } } } } } } } } } }, "401": { "description": "未授权" }, "403": { "description": "权限不足" }, "500": { "description": "服务器错误" } } } } }, "tags": [ { "name": "Authentication", "description": "用户认证API" }, { "name": "Captcha", "description": "验证码API" }, { "name": "Matching", "description": "匹配订单相关接口" }, { "name": "MatchingAdmin", "description": "匹配订单管理员相关接口" }, { "name": "Orders", "description": "订单管理相关接口" }, { "name": "Points", "description": "积分管理相关接口" }, { "name": "Products", "description": "商品管理API" }, { "name": "Regions", "description": "地区数据API" }, { "name": "RiskManagement", "description": "风险管理API" }, { "name": "SMS", "description": "短信验证码相关接口" }, { "name": "Upload", "description": "文件上传API" }, { "name": "Users", "description": "用户管理API" } ] }