# 抽奖盲盒系统API接口文档

## 1. 接口概览

### 基础信息
- **基础URL**: `https://api.zfunbox.cn/api/`
- **API版本**: `v1`
- **数据格式**: `JSON`
- **字符编码**: `UTF-8`
- **认证方式**: `Token认证`
- **签名方式**: `MD5签名 + 时间戳防重放`

### 通用响应格式
```json
{
    "status": 1,
    "msg": "success",
    "data": {},
    "timestamp": 1640995200
}
```

### 状态码说明
| 状态码 | 说明 |
|--------|------|
| 1 | 请求成功 |
| 0 | 请求失败 |
| -1 | 未登录 |
| -9 | 需要绑定手机号 |
| 2222 | 特殊状态（如已领取等） |

### 请求签名机制
所有POST请求都需要包含以下参数：
- `timestamp`: 当前时间戳
- `nonce`: 随机字符串
- `sign`: MD5签名

签名算法：
1. 将所有参数按键名排序
2. 拼接为 `key1=value1&key2=value2` 格式
3. 添加密钥：`host + timestamp`
4. 对整个字符串进行MD5加密

## 2. 用户认证接口

### 2.1 发送短信验证码
```http
POST /v2/account/sendSms
```

**请求参数:**
```json
{
    "phone": "13800138000"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| phone | string | 是 | 手机号 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "验证码发送成功",
    "data": 60
}
```

### 2.2 手机号登录
```http
POST /mobileLogin
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/mobileLogin`

**请求参数:**
```json
{
    "mobile": "13800138000",
    "code": "123456",
    "pid": 0,
    "clickId": ""
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| mobile | string | 是 | 手机号 |
| code | string | 是 | 验证码 |
| pid | int | 否 | 推荐人ID |
| clickId | string | 否 | 点击ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "登录成功",
    "data": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
```

### 2.3 微信授权登录
```http
POST /login
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/login`

**请求参数:**
```json
{
    "code": "wx_auth_code",
    "pid": 0,
    "clickId": ""
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| code | string | 是 | 微信授权code |
| pid | int | 否 | 推荐人ID |
| clickId | string | 否 | 点击ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "登录成功",
    "data": "token_string"
}
```

### 2.4 获取用户信息
```http
POST /user
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/user`

**请求头:**
```
Authorization: Bearer {token}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "userinfo": {
            "id": 1001,
            "phone": "138****8000",
            "nickname": "用户昵称",
            "avatar": "头像URL",
            "money": "100.00",
            "integral": "50.00",
            "money2": "20.00",
            "level": 1,
            "mobile_is": 1
        }
    }
}
```

### 2.5 更新用户信息
```http
POST /update_userinfo
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/update_userinfo`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "nickname": "新昵称",
    "headimg": "头像URL",
    "imagebase": "Base64编码的图片数据"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| nickname | string | 否 | 新昵称 |
| headimg | string | 否 | 头像URL（直接使用URL） |
| imagebase | string | 否 | Base64编码的图片数据（优先使用） |

**响应示例:**
```json
{
    "status": 1,
    "msg": "更新成功"
}
```

### 2.6 注销账号
```http
POST /user_log_off
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/user_log_off`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "type": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type | int | 否 | 类型：0-注销账号，1-取消注销 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "注销成功"
}
```

### 2.6 微信授权绑定手机号
```http
POST /login_bind_mobile
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/login_bind_mobile`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "code": "wx_phone_auth_code"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| code | string | 是 | 微信获取手机号授权code |

**响应示例:**
```json
{
    "status": 1,
    "msg": "绑定成功",
    "data": {
        "token": "new_token_if_account_merged"
    }
}
```

**说明:**
- 如果手机号已被其他用户绑定，会进行账户合并，返回新的token
- 如果手机号未被绑定，直接绑定到当前用户，token为null

### 2.7 验证码绑定手机号
```http
POST /bindMobile
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/bindMobile`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "mobile": "13800138000",
    "code": "123456"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| mobile | string | 是 | 手机号 |
| code | string | 是 | 短信验证码 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "绑定成功",
    "data": {
        "token": "new_token_if_account_merged"
    }
}
```

**说明:**
- 如果手机号已被其他用户绑定，会进行账户合并，返回新的token
- 如果手机号未被绑定，直接绑定到当前用户，token为null

### 2.8 记录用户登录
```http
GET|POST /login_record
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `GET|POST /api/login_record`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "device": "android",
    "deviceInfo": "设备信息"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| device | string | 否 | 设备类型 |
| deviceInfo | string | 否 | 设备信息 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "uid": "100001",
        "nickname": "用户昵称",
        "headimg": "头像URL"
    }
}
}
```

## 3. 商品相关接口

### 3.1 获取首页商品列表
```http
POST /goods
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_list`

**请求参数:**
```json
{
    "page": 1,
    "type": 0,
    "keyword": ""
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码，从1开始 |
| type | int | 否 | 商品类型：0-全部，1-一番赏，2-无限赏等 |
| keyword | string | 否 | 搜索关键词 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 1001,
                "title": "精美手办盲盒",
                "imgurl": "商品图片URL",
                "price": "29.90",
                "type": 1,
                "stock": 100,
                "sale_stock": 50,
                "status": 1,
                "prize_num": 1,
                "show_price": "29.9元/抽"
            }
        ],
        "total": 100,
        "current_page": 1,
        "last_page": 10
    }
}
```

### 3.2 获取商品详情（一番赏）
```http
POST /goodsdetail
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_detail`

**请求参数:**
```json
{
    "goods_id": 1001,
    "num": 0
}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "goods": {
            "id": 1001,
            "title": "精美手办盲盒",
            "imgurl": "商品封面图",
            "imgurl_detail": "商品详情图",
            "price": "29.90",
            "type": 1,
            "stock": 100,
            "prize_num": 1,
            "goods_describe": "商品描述"
        },
        "goods_list": [
            {
                "id": 2001,
                "title": "限定手办A",
                "imgurl": "奖品图片",
                "price": "299.00",
                "money": "150.00",
                "real_pro": "0.05000",
                "goods_type": 1,
                "prize_code": "A001"
            }
        ]
    }
}
```

### 3.3 获取商品子奖品
```http
POST /goods_children
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_children`

**请求参数:**
```json
{
    "goods_id": 1001,
    "goods_num": 0,
    "goods_list_id": 2001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| goods_num | int | 否 | 箱号，默认0 |
| goods_list_id | int | 是 | 奖品ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "id": 3001,
            "title": "子奖品名称",
            "imgurl": "子奖品图片",
            "price": "99.00",
            "real_pro": "0.05000",
            "shang_info": {
                "id": 1,
                "title": "A赏",
                "color": "#FF0000"
            }
        }
    ]
}
```

### 3.4 获取商品扩展配置
```http
POST /goods_extend
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_extend`

**请求参数:**
```json
{
    "goods_id": 1001,
    "goods_type": 1
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| goods_type | int | 否 | 商品类型 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "pay_wechat": 1,
        "pay_balance": 1,
        "pay_currency": 1,
        "pay_currency2": 1,
        "dk_money": 1,
        "dk_integral": 1,
        "dk_money2": 1
    }
}
```

### 3.5 获取箱号列表
```http
POST /goods_num_list
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_num_list`

**请求参数:**
```json
{
    "goods_id": 1001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "start": 1,
            "end": 10,
            "text": "1-10"
        },
        {
            "start": 11,
            "end": 20,
            "text": "11-20"
        }
    ]
}
```

### 3.6 获取箱号详情
```http
POST /goods_num_detail
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_num_detail`

**请求参数:**
```json
{
    "goods_id": 1001,
    "page_no": 0,
    "sort": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| page_no | int | 否 | 页码，默认0（第一组） |
| sort | int | 否 | 排序：0-箱号升序，1-箱号降序，2-余量降序 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "num": 1,
            "surplus_all_stock": 50,
            "goods_list": [
                {
                    "id": 2001,
                    "title": "奖品名称",
                    "imgurl": "奖品图片",
                    "surplus_stock": 5
                }
            ]
        }
    ]
}
```

### 3.7 获取无限赏商品详情
```http
POST /infinite_goodsdetail
```

**请求参数:**
```json
{
    "goods_id": 1001
}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "goods": {
            "id": 1001,
            "title": "无限赏盲盒",
            "imgurl": "商品图片",
            "price": "19.90",
            "type": 2,
            "lingzhu_is": 1,
            "king_user_id": 1234
        },
        "goods_list": [
            {
                "id": 2001,
                "title": "稀有奖品",
                "imgurl": "奖品图片",
                "price": "199.00",
                "real_pro": "0.01000"
            }
        ]
    }
}
```

### 3.4 获取商品奖品数量统计
```http
POST /goodslist_count
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_prize_count`

**请求参数:**
```json
{
    "goods_id": 1001
}
```

### 3.5 获取商品奖品内容
```http
POST /goodslist_content
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_prize_content`

**请求参数:**
```json
{
    "goods_id": 1001,
    "num": 0
}
```

### 3.6 获取预售日历
```http
POST /yushourili
```

**请求参数:**
```json
{
    "page": 1
}
```

## 4. 订单相关接口

### 4.1 计算订单金额（一番赏）
```http
POST /ordermoney
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/ordermoney`

**请求参数:**
```json
{
    "goods_id": 1001,
    "num": 0,
    "prize_num": 1,
    "coupon_id": "",
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| num | int | 是 | 第几套 |
| prize_num | int | 是 | 抽奖数量 |
| coupon_id | string | 否 | 优惠券ID |
| use_money_is | int | 否 | 是否使用余额：1-是，2-否 |
| use_integral_is | int | 否 | 是否使用积分：1-是，2-否 |
| use_money2_is | int | 否 | 是否使用哈尼券：1-是，2-否 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "order_total": "29.90",
        "price": "29.90",
        "goods_info": {
            "id": 1001,
            "title": "精美手办盲盒",
            "imgurl": "商品图片"
        },
        "goodsExtend": {
            "pay_wechat": 1,
            "pay_balance": 1,
            "pay_currency": 1,
            "pay_currency2": 1
        }
    }
}
```

### 4.2 创建订单并支付（一番赏）
```http
POST /orderbuy
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/orderbuy`

**请求参数:**
```json
{
    "goods_id": 1001,
    "num": 0,
    "prize_num": 1,
    "coupon_id": "",
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2
}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "status": 1,
        "order_num": "202401010001",
        "res": {
            "appId": "wx123456789",
            "timeStamp": "1640995200",
            "nonceStr": "abc123",
            "package": "prepay_id=wx123456789",
            "signType": "RSA",
            "paySign": "signature"
        }
    }
}
```

### 4.3 无限赏订单金额计算
```http
POST /infinite_ordermoney
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/infinite_ordermoney`

**请求参数:**
```json
{
    "goods_id": 1001,
    "prize_num": 1,
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2,
    "coupon_id": ""
}
```

### 4.4 无限赏创建订单
```http
POST /infinite_orderbuy
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/infinite_orderbuy`

**请求参数:**
```json
{
    "goods_id": 1001,
    "prize_num": 1,
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2,
    "coupon_id": ""
}
```

### 4.5 商城订单金额计算
```http
POST /mall_ordermoney
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/mall_ordermoney`

**请求参数:**
```json
{
    "goods_id": 1001,
    "prize_num": 1,
    "goods_num": 1,
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2
}
```

### 4.6 获取订单列表
```http
POST /order_list
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/order_list`

**请求参数:**
```json
{
    "page": 1,
    "page_size": 20
}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 10001,
                "order_num": "202401010001",
                "goods_title": "精美手办盲盒",
                "goods_imgurl": "商品图片",
                "order_total": "29.90",
                "price": "29.90",
                "prize_num": 1,
                "status": 1,
                "addtime": 1640995200,
                "pay_time": 1640995300
            }
        ],
        "total": 50,
        "current_page": 1,
        "last_page": 3
    }
}
```

### 4.7 获取订单详情
```http
POST /order_detail
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/order_detail`

**请求参数:**
```json
{
    "order_num": "202401010001"
}
```

## 5. 抽奖相关接口

### 5.1 获取抽奖结果（一番赏）
```http
POST /prizeorderlog
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/prizeorderlog`

**请求参数:**
```json
{
    "order_num": "202401010001"
}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "id": 20001,
            "order_id": 10001,
            "goodslist_title": "限定手办A",
            "goodslist_imgurl": "奖品图片",
            "goodslist_price": "299.00",
            "goodslist_money": "150.00",
            "goodslist_type": 1,
            "status": 0,
            "addtime": 1640995300,
            "prize_code": "A001",
            "luck_no": 1
        }
    ]
}
```

### 5.2 获取无限赏抽奖结果
```http
POST /infinite_prizeorderlog
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/infinite_prizeorderlog`

**请求参数:**
```json
{
    "order_num": "202401010001"
}
```

### 5.3 获取中奖记录
```http
POST /shang_log
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/goods_prize_logs`

**请求参数:**
```json
{
    "goods_id": 1001,
    "goods_num": 0,
    "shang_id": 0,
    "page": 1,
    "page_size": 15
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| goods_num | int | 否 | 箱号，默认0 |
| shang_id | int | 否 | 赏品分类ID，0=全部 |
| page | int | 否 | 页码，默认1 |
| page_size | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "category": [
            {
                "id": 1,
                "title": "A赏",
                "color": "#FF0000"
            }
        ],
        "data": [
            {
                "user_nickname": "用户***",
                "user_headimg": "头像URL",
                "goodslist_title": "限定手办A",
                "goodslist_imgurl": "奖品图片",
                "shang_info": {
                    "id": 1,
                    "title": "A赏",
                    "color": "#FF0000"
                },
                "addtime": "2024-01-01 10:30:00",
                "luck_no": 1
            }
        ],
        "last_page": 10
    }
}
```

### 5.4 获取无限赏中奖记录
```http
POST /infinite_shang_log
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/infinite_shang_log`

**请求参数:**
```json
{
    "goods_id": 1001,
    "shang_id": 0,
    "is_mibao": 0,
    "page": 1,
    "page_size": 100
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| shang_id | int | 否 | 赏品等级ID，0表示全部 |
| is_mibao | int | 否 | 是否秘宝池，0=否，1=是 |
| page | int | 否 | 页码，默认1 |
| page_size | int | 否 | 每页数量，默认100 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "category": [
            {"shang_id": 0, "shang_title": "全部"},
            {"shang_id": 34, "shang_title": "A赏"}
        ],
        "data": [
            {
                "id": 1,
                "user_id": 100,
                "goodslist_title": "奖品名称",
                "goodslist_imgurl": "https://example.com/image.jpg",
                "shang_id": 34,
                "shang_title": "A赏",
                "shang_color": "#FF0000",
                "addtime": "2025-01-03 10:30:00",
                "luck_no": 1,
                "doubling": 1,
                "is_lingzhu": 0,
                "user_info": {
                    "nickname": "用***户",
                    "headimg": "https://example.com/avatar.jpg"
                }
            }
        ],
        "last_page": 10,
        "total": 100
    }
}
```

### 5.5 获取用户抽奖记录（盒子抽奖记录）
```http
POST /infinite_prizerecords
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/infinite_prizerecords`

**请求参数:**
```json
{
    "goods_id": 1001,
    "page": 1,
    "page_size": 100
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| page | int | 否 | 页码，默认1 |
| page_size | int | 否 | 每页数量，默认100 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "user_id": 10001,
                "goodslist_title": "限定手办A",
                "goodslist_imgurl": "https://example.com/prize.jpg",
                "addtime": "2025-01-03 10:30:00"
            }
        ],
        "current_page": 1,
        "last_page": 1,
        "per_page": 100,
        "total": 1
    }
}
```

### 5.6 使用道具卡抽奖
```http
POST /item_card_chou
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/item_card_chou`

**请求参数:**
```json
{
    "goods_id": 1001,
    "order_list_ids": "1,2,3"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| order_list_ids | string | 是 | 要重抽的订单项ID列表（逗号分隔） |

**响应示例:**
```json
{
    "status": 1,
    "msg": "重抽成功",
    "data": {
        "status": 0,
        "order_num": "MH_20260103120000001234",
        "prizes": [
            {
                "id": 10001,
                "title": "限定手办A",
                "img_url": "奖品图片",
                "shang_id": 34,
                "shang_title": "A赏",
                "shang_color": "#FF0000",
                "price": "299.00",
                "sc_money": "150.00",
                "prize_code": "P202601031200001234",
                "luck_no": 1
            }
        ],
        "remaining_cards": 2
    }
}
```

## 6. 盒柜（仓库）相关接口

### 6.1 获取仓库首页
```http
POST /warehouse_index
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_index`

**请求参数:**
```json
{
    "page": 1,
    "status": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| status | int | 否 | 状态：0-待选择，1-回收，2-发货，3-集市 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 20001,
                "goodslist_title": "限定手办A",
                "goodslist_imgurl": "奖品图片",
                "goodslist_price": "299.00",
                "goodslist_money": "150.00",
                "status": 0,
                "addtime": 1640995300
            }
        ]
    }
}
```

### 6.2 回收奖品
```http
POST /warehouse_recovery
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_recovery`

**请求参数:**
```json
{
    "order_list_ids": "20001,20002"
}
```

### 6.3 发货奖品
```http
POST /warehouse_send
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_send`

**请求参数:**
```json
{
    "order_list_ids": "20001,20002",
    "name": "张三",
    "mobile": "13800138000",
    "address": "北京市朝阳区xxx街道xxx号",
    "message": "请小心轻放"
}
```

### 6.4 确认发货
```http
POST /warehouse_send_confirm
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_send_confirm`

**请求参数:**
```json
{
    "id": 70001
}
```

### 6.5 获取发货记录
```http
POST /warehouse_send_record
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_send_record`

**请求参数:**
```json
{
    "page": 1
}
```

### 6.6 获取发货记录详情
```http
POST /warehouse_send_record_detail
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_send_record_detail`

**请求参数:**
```json
{
    "id": 70001
}
```

### 6.7 获取回收记录
```http
POST /warehouse_recovery_record
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_recovery_record`

**请求参数:**
```json
{
    "page": 1
}
```

### 6.8 获取物流信息
```http
POST /warehouse_order_logistics
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/warehouse_order_logistics`

**请求参数:**
```json
{
    "id": 70001
}
```

## 7. 财务相关接口

### 7.1 获取资金明细
```http
POST /profitMoney
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/profitMoney`

**请求参数:**
```json
{
    "page": 1,
    "type": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| type | int | 否 | 类型：0-全部，1-收入，2-支出，3-提现 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "list": [
            {
                "changeMoney": "+150.00",
                "content": "背包回收",
                "addTime": "2024-01-01 10:30:00"
            }
        ],
        "lastPage": 10,
        "currentPage": 1,
        "total": 100
    }
}
```

### 7.2 获取吧唧币明细
```http
POST /profitIntegral
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/profitIntegral`

**请求参数:**
```json
{
    "page": 1,
    "type": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| type | int | 否 | 类型：0-全部，1-收入，2-支出 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "list": [
            {
                "changeMoney": "+50.00",
                "content": "任务奖励",
                "addTime": "2024-01-01 10:30:00"
            }
        ],
        "lastPage": 5,
        "currentPage": 1,
        "total": 50
    }
}
```

### 7.3 获取积分明细
```http
POST /profitScore
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/profitScore`

**请求参数:**
```json
{
    "page": 1,
    "type": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| type | int | 否 | 类型：0-全部，1-收入，2-支出 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "list": [
            {
                "changeMoney": "+20.00",
                "content": "签到奖励",
                "addTime": "2024-01-01 10:30:00"
            }
        ],
        "lastPage": 3,
        "currentPage": 1,
        "total": 30
    }
}
```

### 7.4 获取支付明细
```http
POST /profitPay
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/profitPay`

**请求参数:**
```json
{
    "page": 1
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "list": [
            {
                "changeMoney": "-29.90",
                "content": "购买商品",
                "addTime": "2024-01-01 10:30:00"
            }
        ],
        "lastPage": 5,
        "currentPage": 1,
        "total": 50
    }
}
```

### 7.4 获取优惠券列表
```http
POST /coupon_list
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/coupon_list`

**请求参数:**
```json
{
    "page": 1,
    "status": 1,
    "limit": 15
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 是 | 页码 |
| status | int | 否 | 状态：1-未使用，2-已分享 |
| limit | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "list": [
            {
                "id": 60001,
                "status": 1,
                "level": 3,
                "levelText": "高级赏券",
                "levelImg": "/storage/coupon/coupon_c.png",
                "title": "高级赏券",
                "num": "500",
                "klNum": 6,
                "klNum2": 6,
                "yiLing": 0
            }
        ],
        "lastPage": 10,
        "yCount": 5,
        "zCount": 50,
        "userIntegral": 1000.00,
        "keHcCount": 20,
        "sunHao": "10%"
    }
}
```

### 7.4.1 获取优惠券详情
```http
POST /coupon_detail
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/coupon_detail`

**请求参数:**
```json
{
    "id": 60001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | int | 是 | 优惠券ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "id": 60001,
        "level": 3,
        "levelText": "高级赏券",
        "levelImg": "/storage/coupon/coupon_c.png",
        "shareTime": "2024-01-01 10:30:00",
        "userId": 1001,
        "num": "500",
        "klNum2": 6,
        "own2": 100.00,
        "ylCount": 3,
        "ylIntegralCount": 150.00,
        "shareUserNickname": "用户昵称",
        "shareUserHeadimg": "头像URL",
        "ylList": [
            {
                "userId": 1002,
                "nickname": "领取者昵称",
                "headimg": "头像URL",
                "lNum": 50.00,
                "addTime": "2024-01-01 11:00:00",
                "luckyKing": 1
            }
        ]
    }
}
```

### 7.5 领取优惠券
```http
POST /coupon_ling
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/coupon_ling`

**请求参数:**
```json
{
    "id": 60001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | int | 是 | 优惠券ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "amount": 50.00,
        "luckyKing": false
    }
}
```

**错误码说明:**
| 错误码 | 说明 |
|--------|------|
| 2222 | 请勿开启自己的劵 / 你已经领取过了 / 来晚了, 已经被人领完了 |
| 0 | 每天最多领取N次 |

### 7.6 分享优惠券
```http
POST /coupon_share
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/coupon_share`

**请求参数:**
```json
{
    "id": 60001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | int | 是 | 优惠券ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "分享成功"
}
```

### 7.7 合成优惠券
```http
POST /coupon_synthesis
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/coupon_synthesis`

**请求参数:**
```json
{
    "couponIds": "60001,60002,60003"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| couponIds | string | 是 | 优惠券ID列表，逗号分隔，最多20个 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "合成成功"
}
```

**错误说明:**
- 特级、终极赏券不能合成
- 最多只能20个合成

### 7.8 计算优惠券合成
```http
POST /coupon_ji_suan
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/coupon_ji_suan`

**请求参数:**
```json
{
    "couponIds": "60001,60002,60003"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| couponIds | string | 是 | 优惠券ID列表，逗号分隔，最多20个 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "coupon": {
            "title": "高级赏券",
            "level": 3
        },
        "sumNum": 1000.00,
        "shNum": 900.00
    }
}
```

**说明:**
- sumNum: 原始总价值
- shNum: 合成后价值（扣除10%损耗）

## 8. 福利相关接口

### 8.1 获取福利屋列表
```http
POST /welfare_house_list
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/welfare_house_list`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "type": 1,
    "page": 1,
    "limit": 15
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type | int | 否 | 类型：1-进行中，3-已结束，默认1 |
| page | int | 否 | 页码，默认1 |
| limit | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "list": [
            {
                "id": 1001,
                "title": "每日福利",
                "imgurl": "福利图片",
                "price": 0.00,
                "type": 15,
                "newIs": 0,
                "quanjuXiangou": 0,
                "choujiangXianzhi": 0,
                "goodsDescribe": "福利描述",
                "isOpen": 0,
                "unlockAmount": 0.00,
                "joinCount": 100,
                "flwStartTime": "2024-01-01 00:00:00",
                "flwEndTime": "2024-01-31 23:59:59",
                "openTime": "2024-02-01 10:00:00",
                "goodslist": [
                    {
                        "title": "奖品名称",
                        "imgurl": "奖品图片",
                        "stock": 10,
                        "price": 99.00,
                        "scMoney": 50.00
                    }
                ]
            }
        ],
        "lastPage": 10,
        "total": 100
    }
}
```

### 8.2 获取福利屋详情
```http
POST /fuliwu_detail
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/fuliwu_detail`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "goodsId": 1001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goodsId | int | 是 | 商品ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "goods": {
            "id": 1001,
            "title": "福利屋活动",
            "imgurl": "商品图片",
            "imgurlDetail": "详情图片",
            "price": 0.00,
            "type": 15,
            "newIs": 0,
            "quanjuXiangou": 0,
            "choujiangXianzhi": 0,
            "goodsDescribe": "活动描述",
            "isOpen": 0,
            "unlockAmount": 100.00,
            "sort": 0,
            "flwStartTime": "2024-01-01 00:00",
            "flwEndTime": "2024-01-31 23:59",
            "openTime": "2024-02-01 10:00"
        },
        "goodslist": [
            {
                "id": 2001,
                "title": "奖品名称",
                "imgurl": "奖品图片",
                "imgurlDetail": "奖品详情图",
                "stock": 10,
                "price": 99.00,
                "scMoney": 50.00,
                "shangId": 1,
                "surplusStock": 5,
                "sort": 0,
                "shangTitle": "特等奖",
                "shangColor": "#FF0000"
            }
        ],
        "joinCount": 100,
        "currentTime": "2024-01-15 10:30:00",
        "userCount": 5,
        "userConsumption": {
            "totalAmount": 500.00,
            "orderCount": 10
        },
        "status": "ongoing",
        "statusText": "进行中"
    }
}
```

**状态说明:**
| status | statusText | 说明 |
|--------|------------|------|
| waiting | 即将开始 | 当前时间 < 开始时间 |
| ongoing | 进行中 | 开始时间 <= 当前时间 < 结束时间 |
| ended | 已结束，等待开奖 | 结束时间 <= 当前时间 < 开奖时间 |
| to_open | 待开奖 | 当前时间 >= 开奖时间 且 未开奖 |
| opened | 已开奖 | 当前时间 >= 开奖时间 且 已开奖 |

### 8.3 获取福利屋参与者
```http
POST /fuliwu_participants
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/fuliwu_participants`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "goodsId": 1001,
    "page": 1,
    "limit": 15
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goodsId | int | 是 | 商品ID |
| page | int | 否 | 页码，默认1 |
| limit | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "nickname": "用户昵称",
            "avatar": "头像URL",
            "createTime": "2024-01-15 10:30"
        }
    ]
}
```

### 8.4 获取福利屋开奖记录
```http
POST /fuliwu_records
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/fuliwu_records`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "goodsId": 1001,
    "page": 1,
    "limit": 15
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goodsId | int | 是 | 商品ID |
| page | int | 否 | 页码，默认1 |
| limit | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "nickname": "用户昵称",
            "avatar": "头像URL",
            "goodslistTitle": "奖品名称",
            "shangId": 1,
            "createTime": "2024-01-15 10:30"
        }
    ]
}
```

### 8.5 获取用户福利屋参与记录
```http
GET /fuliwu_user_records
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `GET /api/fuliwu_user_records`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码，默认1 |
| limit | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "goodsId": 1001,
            "goodsTitle": "福利屋活动",
            "goodslistTitle": "奖品名称",
            "shangId": 1,
            "createTime": "2024-01-15 10:30"
        }
    ]
}
```

### 8.6 获取用户福利屋中奖记录
```http
GET /fuliwu_user_winning_records
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `GET /api/fuliwu_user_winning_records`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码，默认1 |
| limit | int | 否 | 每页数量，默认15 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "goodsId": 1001,
            "goodsTitle": "福利屋活动",
            "goodslistTitle": "奖品名称",
            "shangId": 1,
            "createTime": "2024-02-01 10:00"
        }
    ]
}
```

### 8.7 获取任务列表
```http
POST /task_list
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/task_list`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "type": 1
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type | int | 否 | 任务类型：1-每日任务，2-每周任务，默认1 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "taskList": [
            {
                "id": 1,
                "type": 1,
                "cate": 1,
                "title": "邀请1位好友注册",
                "number": 1,
                "zNumber": 10,
                "isComplete": 0,
                "percentage": 0,
                "ywcCount": 0
            },
            {
                "id": 2,
                "type": 1,
                "cate": 2,
                "title": "完成1次抽赏",
                "number": 1,
                "zNumber": 5,
                "isComplete": 1,
                "percentage": 100,
                "ywcCount": 1
            }
        ]
    }
}
```

**字段说明:**
| 字段 | 说明 |
|------|------|
| id | 任务ID |
| type | 任务类型：1-每日，2-每周 |
| cate | 任务分类：1-邀请，2-抽赏 |
| title | 任务标题 |
| number | 目标完成数量 |
| zNumber | 奖励欧气值 |
| isComplete | 完成状态：0-未完成，1-已完成，2-已领取 |
| percentage | 完成百分比(0-100) |
| ywcCount | 已完成次数 |

### 8.8 领取任务奖励
```http
POST /ling_task
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/ling_task`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "taskListId": 1001
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| taskListId | int | 是 | 任务ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "reward": 10,
        "currentOuQi": 150
    }
}
```

**字段说明:**
| 字段 | 说明 |
|------|------|
| reward | 本次获得的欧气值奖励 |
| currentOuQi | 当前欧气值总数 |

**错误说明:**
- 任务不存在：返回 "任务不存在"
- 任务未完成：返回 "任务未完成"
- 已领取过：返回 "你已经领取过了"

## 9. 系统配置接口

### 9.1 获取全局配置
```http
GET /config
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "good_type": [
            {
                "value": 1,
                "name": "一番赏",
                "is_show": 1,
                "pay_wechat": 1,
                "pay_balance": 1
            }
        ],
        "app_setting": {
            "app_name": "友达赏",
            "balance_name": "钻石",
            "currency1_name": "UU币",
            "currency2_name": "哈尼券",
            "applet_version": "v1.0.3"
        }
    }
}
```

### 9.2 获取轮播图
```http
GET /getAdvert
```

**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type_id | int | 否 | 类型：1-首页轮播，2-抽卡机轮播 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "id": 1,
            "imgurl": "轮播图URL",
            "url": "跳转链接",
            "ttype": 2,
            "goods_id": 1001
        }
    ]
}
```

### 9.3 获取单页内容
```http
GET /getDanye
```

**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type | int | 是 | 页面类型：1-服务协议，2-隐私政策，3-公告 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "title": "用户协议",
        "content": "协议内容..."
    }
}
```

### 9.4 获取优惠券中心
```http
POST /coupon
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "status": 1,
        "goods": {
            "list": [
                {
                    "id": 60001,
                    "title": "新人券",
                    "price": "5.00"
                }
            ]
        }
    }
}
```

### 9.5 领取优惠券
```http
POST /receive
```

**请求参数:**
```json
{
    "coupon_id": "60001,60002"
}
```

### 9.6 添加收藏
```http
POST /addCollect
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/addCollect`

**请求参数:**
```json
{
    "goods_id": 1001,
    "goods_num": 0
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| goods_id | int | 是 | 商品ID |
| goods_num | int | 否 | 箱号，默认0 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "操作成功"
}
```

### 9.7 收藏列表
```http
POST /listCollect
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/listCollect`

**请求参数:**
```json
{
    "type": 0,
    "page": 1,
    "page_size": 100
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type | int | 否 | 商品类型，0=全部 |
| page | int | 否 | 页码，默认1 |
| page_size | int | 否 | 每页数量，默认100 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 1,
                "goods_id": 1001,
                "type": 1,
                "num": 0,
                "goods_title": "商品标题",
                "goods_price": "99.00",
                "imgurl": "图片URL",
                "stock": 100,
                "surplus_stock": 50
            }
        ],
        "last_page": 1
    }
}
```

### 9.8 删除收藏
```http
POST /delCollect
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/delCollect`

**请求参数:**
```json
{
    "id": 1
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | int | 是 | 收藏记录ID |

**响应示例:**
```json
{
    "status": 1,
    "msg": "删除成功"
}
```

## 10. 其他功能接口

### 10.1 获取排行榜
```http
GET /getRankList
```

**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| type | string | 是 | 排行榜类型：invite-邀请榜，consume-消费榜 |

### 10.1.1 获取周榜
```http
GET /rank_week
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `GET /api/rank_week`

**请求头:**
```
Authorization: Bearer {token}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "date": "01月01日-01月07日",
        "end_date": 1704643199,
        "my_rank": {
            "my_rank": 5,
            "my_prize_title": "限定手办",
            "my_prize_imgurl": "奖品图片URL",
            "my_order_total": 1500.00,
            "my_nickname": "用户昵称",
            "my_headimg": "头像URL"
        },
        "data": [
            {
                "rank": 1,
                "user_id": 1001,
                "nickname": "用户昵称",
                "headimg": "头像URL",
                "order_total": 5000.00,
                "prize_title": "特等奖",
                "prize_imgurl": "奖品图片URL"
            }
        ]
    }
}
```

**字段说明:**
| 字段 | 说明 |
|------|------|
| date | 周榜日期范围 |
| end_date | 周榜结束时间戳 |
| my_rank | 当前用户排名信息（未上榜时为"暂未上榜"） |
| my_prize_title | 当前用户对应奖品标题（未上榜时为0） |
| my_prize_imgurl | 当前用户对应奖品图片（未上榜时为0） |
| my_order_total | 当前用户本周消费金额 |
| data | 排行榜前30名列表 |

### 10.1.2 获取月榜
```http
GET /rank_month
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `GET /api/rank_month`

**请求头:**
```
Authorization: Bearer {token}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "date": "01月01日-01月31日",
        "end_date": 1706716799,
        "my_rank": {
            "my_rank": "暂未上榜",
            "my_prize_title": 0,
            "my_prize_imgurl": 0,
            "my_order_total": 500.00,
            "my_nickname": "用户昵称",
            "my_headimg": "头像URL"
        },
        "data": [
            {
                "rank": 1,
                "user_id": 1001,
                "nickname": "用户昵称",
                "headimg": "头像URL",
                "order_total": 15000.00,
                "prize_title": "月度特等奖",
                "prize_imgurl": "奖品图片URL"
            }
        ]
    }
}
```

**字段说明:**
| 字段 | 说明 |
|------|------|
| date | 月榜日期范围 |
| end_date | 月榜结束时间戳 |
| my_rank | 当前用户排名信息（未上榜时为"暂未上榜"） |
| my_prize_title | 当前用户对应奖品标题（未上榜时为0） |
| my_prize_imgurl | 当前用户对应奖品图片（未上榜时为0） |
| my_order_total | 当前用户本月消费金额 |
| data | 排行榜前30名列表 |

### 10.2 获取邀请信息
```http
POST /invitation
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/invitation`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "page": 1
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | int | 否 | 页码，默认1 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "share_title": "分享标题",
        "share_image": "",
        "count": 10,
        "money": 150.00,
        "data": [
            {
                "id": 1002,
                "nickname": "被邀请用户",
                "headimg": "头像URL",
                "pid": 1001,
                "addtime": "2024-01-01 10:30:00",
                "commission_money": 15.00
            }
        ],
        "last_page": 1
    }
}
```

**字段说明:**
| 字段 | 说明 |
|------|------|
| share_title | 分享标题 |
| share_image | 分享图片URL |
| count | 总邀请人数 |
| money | 总奖励金额 |
| data | 邀请记录列表 |
| last_page | 最后一页页码 |

### 10.3 绑定邀请码
```http
POST /bind_invite_code
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/bind_invite_code`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "invite_code": "ABC123"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| invite_code | string | 是 | 邀请码（邀请人的UID） |

**响应示例:**
```json
{
    "status": 1,
    "msg": "绑定成功"
}
```

**错误说明:**
- 用户不存在：返回 "用户不存在"
- 已绑定过：返回 "您已绑定过邀请码"
- 超过24小时：返回 "新用户注册24小时内才可以绑定邀请码"
- 绑定自己：返回 "不能绑定自己"
- 邀请码不存在：返回 "邀请码不存在"

### 10.4 获取VIP列表
```http
POST /vip_list
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/vip_list`

**请求头:**
```
Authorization: Bearer {token}
```

**响应示例:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "userinfo": {
            "nickname": "用户昵称",
            "headimg": "头像URL",
            "vip": 2,
            "upgrade_money": "500.00",
            "last_vip": 3,
            "jin_du": 60.5,
            "notice": "VIP2会员"
        },
        "data": [
            {
                "id": 1,
                "level": 1,
                "title": "VIP1",
                "imgurl": "",
                "condition": 100,
                "discount": 0,
                "notice": "VIP1会员"
            },
            {
                "id": 2,
                "level": 2,
                "title": "VIP2",
                "imgurl": "",
                "condition": 500,
                "discount": 0,
                "notice": "VIP2会员"
            }
        ]
    }
}
```

### 10.5 使用兑换码
```http
POST /used
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/used`

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "code": "EXCHANGE123"
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| code | string | 是 | 兑换码 |

**响应示例:**
```json
{
    "status": 1,
    "msg": "兑换成功，获得100吧唧币",
    "data": {
        "success": true,
        "message": "兑换成功，获得100吧唧币",
        "rewardType": "integral",
        "rewardAmount": 100.00
    }
}
```

**字段说明:**
| 字段 | 说明 |
|------|------|
| success | 是否成功 |
| message | 提示消息 |
| rewardType | 奖励类型：money=余额, integral=吧唧币, score=积分 |
| rewardAmount | 奖励数量 |

**错误说明:**
- 兑换码无效：返回 "兑换码无效"
- 兑换码已被使用：返回 "兑换码已被使用"
- 兑换码已过期：返回 "兑换码已过期"

## 11. 错误码说明

| 错误码 | 说明 |
|--------|------|
| 1 | 请求成功 |
| 0 | 请求失败 |
| -1 | 用户未登录 |
| -9 | 需要绑定手机号 |
| 2222 | 特殊状态（如已领取、已完成等） |

## 12. UniApp小程序接口调用示例

### 12.1 请求封装使用
```javascript
// 在小程序页面中调用API
export default {
    methods: {
        // 获取商品列表
        async getGoodsList() {
            try {
                const res = await this.$request.post('goods', {
                    page: 1,
                    type: 0
                });
                
                if (res.status === 1) {
                    this.goodsList = res.data.data;
                } else {
                    this.$c.toast(res.msg);
                }
            } catch (error) {
                console.error('获取商品列表失败:', error);
            }
        },
        
        // 创建订单并支付
        async createOrder() {
            const res = await this.req({
                url: 'orderbuy',
                data: {
                    goods_id: this.goodsId,
                    num: 0,
                    prize_num: 1,
                    use_money_is: 2,
                    use_integral_is: 2
                }
            });
            
            if (res.status === 1 && res.data.status === 1) {
                // 调起微信支付
                const payResult = await this.$platform.pay({
                    data: res.data.res
                }, this);
                
                if (payResult === 'success') {
                    // 支付成功，获取抽奖结果
                    this.getPrizeResult(res.data.order_num);
                }
            }
        },
        
        // 获取抽奖结果
        async getPrizeResult(orderNum) {
            const res = await this.$request.post('prizeorderlog', {
                order_num: orderNum
            });
            
            if (res.status === 1) {
                // 显示中奖结果
                this.showPrizeResult(res.data);
            }
        }
    }
}
```

### 12.2 配置管理使用
```javascript
// 获取全局配置
const appName = this.$config.getAppSetting('app_name');
const balanceName = this.$config.getAppSetting('balance_name');

// 获取商品类型配置
const goodTypes = this.$config.getGoodType();

// 检查支付方式
const goodTypeConfig = this.$config.getGoodTypeFind(1); // 一番赏
if (goodTypeConfig.pay_wechat === 1) {
    // 支持微信支付
}
```

### 12.3 路由跳转使用
```javascript
// 跳转到商品详情页
this.$c.to({
    url: '/pages/shouye/detail',
    query: {
        goods_id: 1001,
        num: 0
    }
});

// 跳转到用户中心
this.$customRouter.navigateTo('/pages/user/index');
```

### 12.4 平台适配使用
```javascript
// 调起支付（自动适配不同平台）
const payResult = await this.$platform.pay({
    data: payParams
}, this);

// 平台特定功能
if (this.$platform.code === 'mp-weixin') {
    // 微信小程序特有功能
    wx.requestPayment(payParams);
}
```

这份更新后的API文档基于小程序中实际使用的接口，包含了完整的请求参数、响应格式和使用示例，更贴近实际开发需求。

## 13. 支付回调接口

### 13.1 微信支付回调
```http
POST /api/notify/order_notify
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/notify/order_notify`

**说明:**
此接口由微信支付服务器调用，用于通知支付结果。不需要前端调用。

**请求格式:** XML

**请求示例:**
```xml
<xml>
    <return_code><![CDATA[SUCCESS]]></return_code>
    <return_msg><![CDATA[OK]]></return_msg>
    <appid><![CDATA[wx1234567890]]></appid>
    <mch_id><![CDATA[1234567890]]></mch_id>
    <nonce_str><![CDATA[abc123]]></nonce_str>
    <sign><![CDATA[SIGN_STRING]]></sign>
    <result_code><![CDATA[SUCCESS]]></result_code>
    <openid><![CDATA[user_openid]]></openid>
    <trade_type><![CDATA[JSAPI]]></trade_type>
    <total_fee>100</total_fee>
    <out_trade_no><![CDATA[ORDER_NO]]></out_trade_no>
    <attach><![CDATA[order_yfs]]></attach>
    <time_end><![CDATA[20240101120000]]></time_end>
</xml>
```

**attach参数说明:**
| attach值 | 订单类型 | 说明 |
|----------|---------|------|
| user_recharge | 余额充值 | 用户充值订单 |
| order_yfs | 一番赏订单 | 一番赏抽奖订单 |
| order_lts | 擂台赏订单 | 擂台赏抽奖订单 |
| order_zzs | 转转赏订单 | 转转赏抽奖订单 |
| order_flw | 福利屋订单 | 福利屋抽奖订单 |
| order_scs | 商城赏订单 | 商城赏抽奖订单 |
| order_wxs | 无限赏订单 | 无限赏抽奖订单 |
| order_fbs | 翻倍赏订单 | 翻倍赏抽奖订单 |
| order_ckj | 抽卡机订单 | 抽卡机抽奖订单 |
| order_list_send | 发货运费 | 背包发货运费订单 |

**响应格式:** XML

**响应示例:**
```xml
<xml>
    <return_code><![CDATA[SUCCESS]]></return_code>
    <return_msg><![CDATA[OK]]></return_msg>
</xml>
```

**处理流程:**
1. 验证签名确保数据安全
2. 检查订单是否已处理（幂等性）
3. 根据attach类型路由到对应处理方法
4. 更新订单状态、扣减用户资产
5. 触发抽奖逻辑（如适用）
6. 返回XML响应给微信

### 13.2 微信支付统一下单
```http
POST /api/pay
```

**迁移状态**: ✅ 已迁移到 .NET 8
**新接口地址**: `POST /api/pay`

**说明:**
创建微信支付订单，返回支付参数供前端调起微信支付。

**请求头:**
```
Authorization: Bearer {token}
```

**请求参数:**
```json
{
    "order_no": "YFS_20240101120000_1001",
    "amount": 9.90,
    "body": "一番赏抽奖",
    "attach": "order_yfs",
    "open_id": ""
}
```

**参数说明:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| order_no | string | 是 | 订单号 |
| amount | decimal | 是 | 支付金额（单位：元） |
| body | string | 否 | 商品描述，默认"商品购买" |
| attach | string | 是 | 订单类型（见attach参数说明） |
| open_id | string | 否 | 用户OpenId，不传则从用户信息获取 |

**响应示例（成功）:**
```json
{
    "status": 1,
    "msg": "success",
    "data": {
        "appId": "wx1234567890",
        "timeStamp": "1640995200",
        "nonceStr": "abc123def456",
        "package": "prepay_id=wx123456789",
        "signType": "MD5",
        "paySign": "SIGN_STRING",
        "is_weixin": 1
    }
}
```

**响应示例（失败）:**
```json
{
    "status": 0,
    "msg": "订单号不能为空",
    "data": null
}
```

**前端调起支付示例:**
```javascript
// 获取支付参数
const payResult = await request({
    url: '/api/pay',
    method: 'POST',
    data: {
        order_no: orderNo,
        amount: totalPrice,
        body: '一番赏抽奖',
        attach: 'order_yfs'
    }
});

if (payResult.status === 1 && payResult.data) {
    // 调起微信支付
    wx.requestPayment({
        timeStamp: payResult.data.timeStamp,
        nonceStr: payResult.data.nonceStr,
        package: payResult.data.package,
        signType: payResult.data.signType,
        paySign: payResult.data.paySign,
        success: function(res) {
            // 支付成功
        },
        fail: function(res) {
            // 支付失败
        }
    });
}
```