# 提现接口文档 ## 基础信息 | 项目 | 值 | |------|-----| | Base URL | `/v1/public/user` | | 认证方式 | JWT Token(`AuthMiddleware` + `DeviceMiddleware`) | | 数据表 | `user_withdrawal` | ## 数据模型 ### user_withdrawal 表 | 字段 | 类型 | 说明 | |------|------|------| | `id` | int64 | 主键 | | `user_id` | int64 | 用户 ID | | `amount` | int64 | 提现金额(单位:分) | | `content` | text | 收款信息(账号、姓名等) | | `status` | tinyint | 0=待审核, 1=已通过, 2=已拒绝 | | `reason` | varchar(500) | 拒绝原因(通过时为空) | | `created_at` | datetime | 创建时间 | | `updated_at` | datetime | 更新时间 | ### status 枚举 | 值 | 含义 | 说明 | |----|------|------| | 0 | Pending(待审核) | 用户提交申请后的初始状态 | | 1 | Approved(已通过) | 管理员审核通过,佣金已扣减 | | 2 | Rejected(已拒绝) | 管理员拒绝,无需退款(申请时未扣款) | --- ## 用户端接口 ### 1. 申请提现 申请佣金提现,创建一条待审核记录。申请时**不扣余额**,管理员审核通过后才扣。 ``` POST /v1/public/user/commission_withdraw ``` #### 请求体 ```json { "amount": 1000, "content": "支付宝:138xxxx1234 / 张三" } ``` | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | `amount` | int64 | 是 | 提现金额(单位:分) | | `content` | string | 是 | 收款信息(支付宝/银行卡等) | #### 成功响应 ```json { "data": { "id": 1, "user_id": 10001, "amount": 1000, "content": "支付宝:138xxxx1234 / 张三", "status": 0, "reason": "", "created_at": 1716624000000, "updated_at": 1716624000000 } } ``` > **注意**:此接口的 `created_at` / `updated_at` 返回**毫秒级**时间戳(`.UnixMilli()`),与项目其他接口的秒级时间戳不一致。 #### 业务逻辑 1. 查询该用户所有 status=0(待审核)的提现记录,求和得 `pendingTotal` 2. 校验可用余额:`commission >= amount + pendingTotal` 3. 创建 `user_withdrawal` 记录,status=0 4. **不扣减** `user.commission`,等审核通过才扣 #### 错误码 | 错误码 | 常量 | 说明 | |--------|------|------| | 20010 | `UserCommissionNotEnough` | 可用余额不足(余额 = commission - 所有 pending 提现总额) | | 40005 | `InvalidAccess` | 未登录 / Token 无效 | #### 源码位置 - Handler: `internal/handler/public/user/commissionWithdrawHandler.go` - Logic: `internal/logic/public/user/commissionWithdrawLogic.go` --- ### 2. 查询提现记录 分页查询当前用户的提现记录。 ``` GET /v1/public/user/withdrawal_log ``` #### 请求参数(Query) | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | `page` | int | 否 | 页码 | | `size` | int | 否 | 每页数量 | #### 成功响应 ```json { "data": { "list": [ { "id": 1, "user_id": 10001, "amount": 1000, "content": "支付宝:138xxxx1234", "status": 0, "reason": "", "created_at": 1716624000, "updated_at": 1716624000 } ], "total": 1 } } ``` #### 源码位置 - Handler: `internal/handler/public/user/queryWithdrawalLogHandler.go` - Logic: `internal/logic/public/user/queryWithdrawalLogLogic.go` > **Warning**: Logic 层尚未实现(仍为 TODO),调用会返回空响应。 ---