Files
soul-yongping/开发文档/8、部署/管理端推广配置与小程序对接说明.md

385 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 管理端推广配置与小程序对接说明
## 📋 配置项说明
### 管理端配置
**位置**: `/admin/referral-settings`
**配置项**:
1. **distributorShare** - 分销比例例如90 表示 90%
2. **minWithdrawAmount** - 最低提现金额例如10 表示 10元
3. **bindingDays** - 绑定天数例如30 表示 30天
4. **userDiscount** - 好友优惠例如5 表示 5% 折扣)
5. **enableAutoWithdraw** - 是否启用自动提现
**存储位置**: `system_config` 表,键名 `referral_config`
---
## ✅ 已对接的配置
### 1. distributorShare分销比例
#### 后端使用
**文件**: `app/api/miniprogram/pay/notify/route.ts`
**用途**: 计算推荐人佣金
```typescript
// 获取配置
const config = await getConfig('referral_config')
const distributorShare = config.distributorShare / 100 // 90 → 0.9
// 计算佣金
const commission = amount * distributorShare // 1元 * 0.9 = 0.9元
```
#### 前端显示
**文件**: `miniprogram/pages/referral/referral.wxml`
**位置**: 分销中心页面
```xml
<text class="commission-rate">{{shareRate}}% 返利</text>
```
**数据来源**: `/api/referral/data` 接口返回 `shareRate`
**对接状态**: ✅ 已完成
- 后端从配置读取
- API返回给前端
- 前端动态显示
---
### 2. minWithdrawAmount最低提现金额
#### 后端使用
**文件**: `app/api/withdraw/route.ts`
**用途**: 验证提现金额
```typescript
// 获取配置
const config = await getConfig('referral_config')
const minWithdrawAmount = config.minWithdrawAmount || 10
// 验证金额
if (amount < minWithdrawAmount) {
return error('提现金额不能低于' + minWithdrawAmount + '元')
}
```
#### 前端显示
**文件**: `miniprogram/pages/referral/referral.wxml`
**位置**: 提现按钮
```xml
<!-- 旧代码(硬编码) -->
<view class="withdraw-btn {{earnings < 10 ? 'btn-disabled' : ''}}">
{{earnings < 10 ? '满10元可提现' : '申请提现'}}
</view>
<!-- 新代码(动态配置) -->
<view class="withdraw-btn {{pendingEarnings < minWithdrawAmount ? 'btn-disabled' : ''}}">
{{pendingEarnings < minWithdrawAmount ? '满' + minWithdrawAmount + '元可提现' : '申请提现'}}
</view>
```
**数据来源**: `/api/referral/data` 接口返回 `minWithdrawAmount`
**对接状态**: ✅ 刚完成
- 后端从配置读取
- API新增返回字段
- 前端动态显示
---
### 3. bindingDays绑定天数
#### 后端使用
**文件**: `app/api/referral/bind/route.ts`
**用途**: 计算绑定过期时间
```typescript
// 获取配置
const config = await getConfig('referral_config')
const bindingDays = config.bindingDays || 30
// 计算过期时间
const expiryDate = new Date()
expiryDate.setDate(expiryDate.getDate() + bindingDays)
```
**对接状态**: ✅ 已完成
- 后端从配置读取
- 自动应用于绑定逻辑
- 前端无需显示(内部逻辑)
---
### 4. userDiscount好友优惠
#### 后端使用
**文件**: `app/api/miniprogram/pay/route.ts`
**用途**: 计算好友购买折扣
```typescript
// 获取配置
const config = await getConfig('referral_config')
const userDiscount = config.userDiscount || 0
// 计算折后价
if (userDiscount > 0 && referralCode) {
finalAmount = amount * (1 - userDiscount / 100) // 1元 * (1 - 0.05) = 0.95元
}
```
**对接状态**: ✅ 已完成
- 后端从配置读取
- 自动应用于支付流程
- 前端无需显示(微信支付弹窗自动显示折后价)
---
### 5. enableAutoWithdraw自动提现
**对接状态**: ⏸️ 功能待开发
- 配置已存在
- 后端逻辑待实现
- 前端UI待实现
---
## 🔄 数据流向图
```
管理端修改配置
保存到 system_config 表
后端API读取配置getConfig
├─→ /api/referral/bind → 使用 bindingDays
├─→ /api/miniprogram/pay → 使用 userDiscount
├─→ /api/miniprogram/pay/notify → 使用 distributorShare
├─→ /api/withdraw → 使用 minWithdrawAmount
└─→ /api/referral/data → 返回 shareRate + minWithdrawAmount
小程序获取数据
动态显示配置
```
---
## 📝 本次修改内容
### 1. 后端API修改
**文件**: `app/api/referral/data/route.ts`
**修改内容**:
```typescript
// 新增读取 minWithdrawAmount
let minWithdrawAmount = 10
try {
const config = await getConfig('referral_config')
if (config?.minWithdrawAmount) {
minWithdrawAmount = Number(config.minWithdrawAmount)
}
} catch (e) { /* 使用默认 */ }
// 返回数据中新增字段
return {
shareRate: Math.round(distributorShare * 100),
minWithdrawAmount, // 新增
// ... 其他字段
}
```
---
### 2. 小程序JS修改
**文件**: `miniprogram/pages/referral/referral.js`
**修改内容**:
```javascript
// data 中新增字段
data: {
minWithdrawAmount: 10, // 新增
shareRate: 90,
// ...
}
// 从API获取配置
setData({
shareRate: realData?.shareRate || 90,
minWithdrawAmount: realData?.minWithdrawAmount || 10, // 新增
// ...
})
```
---
### 3. 小程序WXML修改
**文件**: `miniprogram/pages/referral/referral.wxml`
**旧代码**:
```xml
<view class="withdraw-btn {{earnings < 10 ? 'btn-disabled' : ''}}">
{{earnings < 10 ? '满10元可提现' : '申请提现'}}
</view>
```
**新代码**:
```xml
<view class="withdraw-btn {{pendingEarnings < minWithdrawAmount ? 'btn-disabled' : ''}}">
{{pendingEarnings < minWithdrawAmount ? '满' + minWithdrawAmount + '元可提现' : '申请提现'}}
</view>
```
---
## ✅ 对接完成度
| 配置项 | 后端使用 | API返回 | 小程序显示 | 状态 |
|--------|---------|---------|------------|------|
| distributorShare | ✅ | ✅ | ✅ | 已完成 |
| minWithdrawAmount | ✅ | ✅ | ✅ | 刚完成 |
| bindingDays | ✅ | - | - | 已完成(内部逻辑)|
| userDiscount | ✅ | - | - | 已完成(自动应用)|
| enableAutoWithdraw | ⏸️ | - | - | 待开发 |
---
## 🧪 测试验证
### 1. 修改配置
1. 登录管理后台
2. 进入「推广设置」页面
3. 修改配置:
- 分销比例:改为 85%
- 最低提现金额:改为 20元
4. 保存配置
### 2. 验证后端
```bash
# 测试分销中心API
curl "https://soul.quwanzhi.com/api/referral/data?userId=xxx"
# 预期返回
{
"shareRate": 85,
"minWithdrawAmount": 20,
...
}
```
### 3. 验证小程序
1. 打开小程序「分销中心」页面
2. 检查显示:
- 「85% 返利」(而不是 90%
- 「满20元可提现」而不是满10元
3. 尝试提现时应该验证是否满20元
---
## 🚀 部署步骤
### 1. 部署后端
```bash
pnpm build
python devlop.py
pm2 restart soul
```
### 2. 测试API
```bash
curl "https://soul.quwanzhi.com/api/referral/data?userId=xxx"
```
### 3. 上传小程序
- 在微信开发者工具上传代码
- 提交审核
- 发布新版本
---
## 📊 配置示例
### 默认配置
```json
{
"distributorShare": 90,
"minWithdrawAmount": 10,
"bindingDays": 30,
"userDiscount": 5,
"enableAutoWithdraw": false
}
```
### 修改后效果
#### 场景1: 提高最低提现门槛
```json
{ "minWithdrawAmount": 50 }
```
**效果**:
- 后端验证必须满50元才能提现
- 小程序显示「满50元可提现」
#### 场景2: 降低分成比例
```json
{ "distributorShare": 70 }
```
**效果**:
- 后端计算:推荐人获得 70% 佣金
- 小程序显示「70% 返利」
#### 场景3: 增加好友优惠
```json
{ "userDiscount": 10 }
```
**效果**:
- 后端计算:好友购买打 9折
- 微信支付:显示折后价(例如 1元 → 0.9元)
---
## 🔍 问题排查
### 问题1: 小程序显示的分成比例不对
**原因**: 前端没有重新加载数据
**解决**: 下拉刷新页面,重新调用 `/api/referral/data`
### 问题2: 提现验证还是用的旧金额
**原因**: 后端缓存或配置未更新
**解决**:
1. 检查数据库 `system_config`
2. 重启PM2服务
### 问题3: 修改配置后小程序不生效
**原因**: 小程序使用了旧版本
**解决**:
1. 确保上传了新版本小程序
2. 用户需要重启小程序
---
## ✅ 总结
**已完成对接**
- ✅ distributorShare分销比例- 后端计算 + 小程序显示
- ✅ minWithdrawAmount最低提现金额- 后端验证 + 小程序显示
- ✅ bindingDays绑定天数- 后端逻辑
- ✅ userDiscount好友优惠- 后端计算
**待开发功能**
- ⏸️ enableAutoWithdraw自动提现
**优势**
- 管理员可以在后台随时调整配置
- 无需修改代码即可生效
- 用户看到的是实时配置
---
**现在管理端的推广配置已完全对接到小程序逻辑!**