344 lines
7.7 KiB
Markdown
344 lines
7.7 KiB
Markdown
# 分销中心设置功能说明
|
||
|
||
## 一、功能概述
|
||
|
||
分销中心右上角设置按钮提供两个功能:
|
||
1. **自动提现设置** - 配置自动提现功能
|
||
2. **收益通知设置** - 配置收益通知提醒
|
||
|
||
## 二、自动提现设置
|
||
|
||
### 功能说明
|
||
|
||
**目的**:方便用户自动提现,无需手动操作
|
||
|
||
**工作流程**:
|
||
1. 用户设置自动提现阈值(例如:¥50)
|
||
2. 开启自动提现
|
||
3. 当可提现金额 ≥ 阈值时,自动发起提现申请
|
||
|
||
### 使用方法
|
||
|
||
#### 1. 开启自动提现
|
||
|
||
```
|
||
点击设置 → 自动提现设置 → 开启
|
||
```
|
||
|
||
**弹窗内容**:
|
||
- 当前状态:已关闭/已开启
|
||
- 自动提现阈值:¥XX
|
||
- 说明文字
|
||
- 按钮:开启/关闭、修改阈值
|
||
|
||
#### 2. 设置阈值
|
||
|
||
```
|
||
点击设置 → 自动提现设置 → 修改阈值
|
||
```
|
||
|
||
**输入要求**:
|
||
- 最低金额:等于系统配置的最低提现金额(默认¥10)
|
||
- 必须是数字
|
||
- 小数点后最多2位
|
||
|
||
**示例**:
|
||
- ✅ 10
|
||
- ✅ 50.5
|
||
- ✅ 100.00
|
||
- ❌ 5(低于最低金额)
|
||
- ❌ abc(不是数字)
|
||
|
||
#### 3. 自动提现触发
|
||
|
||
**触发时机**:
|
||
- 用户开启自动提现后,立即检查当前金额
|
||
- 每次收到新佣金时检查
|
||
- 用户进入分销中心时检查
|
||
|
||
**触发流程**:
|
||
```
|
||
检测到 可提现金额 ≥ 阈值
|
||
↓
|
||
弹窗确认:是否立即提现?
|
||
↓
|
||
用户确认 → 调用提现接口
|
||
```
|
||
|
||
### 数据存储
|
||
|
||
**存储位置**:微信本地存储(`wx.setStorageSync`)
|
||
|
||
**存储格式**:
|
||
```javascript
|
||
// 自动提现开关
|
||
`autoWithdraw_${userId}`: boolean
|
||
|
||
// 自动提现阈值
|
||
`autoWithdrawThreshold_${userId}`: number
|
||
```
|
||
|
||
**示例**:
|
||
```javascript
|
||
// 用户ID为 user_123
|
||
autoWithdraw_user_123: true
|
||
autoWithdrawThreshold_user_123: 50
|
||
```
|
||
|
||
### 代码实现
|
||
|
||
#### 主要函数
|
||
|
||
```javascript
|
||
// 显示自动提现设置
|
||
showAutoWithdrawSettings()
|
||
|
||
// 切换自动提现开关
|
||
toggleAutoWithdraw(enabled, threshold)
|
||
|
||
// 设置自动提现阈值
|
||
setAutoWithdrawThreshold(currentEnabled, currentThreshold)
|
||
```
|
||
|
||
#### 调用流程
|
||
|
||
```javascript
|
||
点击设置按钮
|
||
↓
|
||
showSettings() - 显示菜单
|
||
↓
|
||
选择"自动提现设置"
|
||
↓
|
||
showAutoWithdrawSettings() - 显示设置弹窗
|
||
↓
|
||
用户选择:
|
||
├─ 开启/关闭 → toggleAutoWithdraw()
|
||
└─ 修改阈值 → setAutoWithdrawThreshold()
|
||
```
|
||
|
||
## 三、收益通知设置
|
||
|
||
### 功能说明
|
||
|
||
**目的**:及时通知用户有新的收益入账
|
||
|
||
**通知时机**:
|
||
- 有新用户付款,获得佣金时
|
||
- 有用户续费,获得佣金时
|
||
- 提现成功时
|
||
|
||
### 使用方法
|
||
|
||
#### 1. 开启通知
|
||
|
||
```
|
||
点击设置 → 收益通知设置 → 开启通知
|
||
```
|
||
|
||
**弹窗内容**:
|
||
- 当前状态:已开启/已关闭
|
||
- 说明文字
|
||
- 按钮:开启通知/关闭通知
|
||
|
||
#### 2. 授权通知权限
|
||
|
||
开启通知后会自动请求微信订阅消息权限
|
||
|
||
**订阅消息模板**:
|
||
```
|
||
模板ID:需在微信公众平台配置
|
||
模板内容:
|
||
- 收益金额:¥XX
|
||
- 收益来源:用户XXX购买XXX
|
||
- 收益时间:XXXX-XX-XX XX:XX
|
||
```
|
||
|
||
### 数据存储
|
||
|
||
**存储位置**:微信本地存储
|
||
|
||
**存储格式**:
|
||
```javascript
|
||
// 收益通知开关(默认true)
|
||
`earningsNotify_${userId}`: boolean
|
||
```
|
||
|
||
### 代码实现
|
||
|
||
```javascript
|
||
// 显示收益通知设置
|
||
showNotificationSettings()
|
||
```
|
||
|
||
## 四、完整代码
|
||
|
||
### JS部分 (`miniprogram/pages/referral/referral.js`)
|
||
|
||
```javascript
|
||
// 显示设置
|
||
showSettings() {
|
||
wx.showActionSheet({
|
||
itemList: ['自动提现设置', '收益通知设置'],
|
||
success: (res) => {
|
||
if (res.tapIndex === 0) {
|
||
this.showAutoWithdrawSettings()
|
||
} else {
|
||
this.showNotificationSettings()
|
||
}
|
||
}
|
||
})
|
||
},
|
||
|
||
// 自动提现设置
|
||
async showAutoWithdrawSettings() {
|
||
const app = getApp()
|
||
const { userInfo } = app.globalData
|
||
|
||
if (!userInfo) {
|
||
wx.showToast({ title: '请先登录', icon: 'none' })
|
||
return
|
||
}
|
||
|
||
// 获取当前设置
|
||
let autoWithdrawEnabled = wx.getStorageSync(`autoWithdraw_${userInfo.id}`) || false
|
||
let autoWithdrawThreshold = wx.getStorageSync(`autoWithdrawThreshold_${userInfo.id}`) || this.data.minWithdrawAmount || 10
|
||
|
||
wx.showModal({
|
||
title: '自动提现设置',
|
||
content: `当前状态:${autoWithdrawEnabled ? '已开启' : '已关闭'}\n自动提现阈值:¥${autoWithdrawThreshold}\n\n开启后,当可提现金额达到阈值时将自动发起提现申请。`,
|
||
confirmText: autoWithdrawEnabled ? '关闭' : '开启',
|
||
cancelText: '修改阈值',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
this.toggleAutoWithdraw(!autoWithdrawEnabled, autoWithdrawThreshold)
|
||
} else if (res.cancel) {
|
||
this.setAutoWithdrawThreshold(autoWithdrawEnabled, autoWithdrawThreshold)
|
||
}
|
||
}
|
||
})
|
||
},
|
||
|
||
// ... 其他函数 ...
|
||
```
|
||
|
||
## 五、扩展功能(未来)
|
||
|
||
### 1. 服务器端自动提现
|
||
|
||
**当前**:本地存储,小程序内检测
|
||
|
||
**优化**:
|
||
- 将设置保存到服务器
|
||
- 服务器定时任务检测
|
||
- 自动发起提现,无需用户确认
|
||
|
||
**实现方案**:
|
||
```sql
|
||
-- 添加用户设置表
|
||
CREATE TABLE user_settings (
|
||
user_id VARCHAR(64) PRIMARY KEY,
|
||
auto_withdraw_enabled BOOLEAN DEFAULT FALSE,
|
||
auto_withdraw_threshold DECIMAL(10,2) DEFAULT 10.00,
|
||
earnings_notify_enabled BOOLEAN DEFAULT TRUE,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||
);
|
||
```
|
||
|
||
```javascript
|
||
// 后端API
|
||
POST /api/user/settings
|
||
GET /api/user/settings
|
||
|
||
// 定时任务(每小时执行)
|
||
async function autoWithdrawTask() {
|
||
// 查询所有开启自动提现的用户
|
||
const users = await query(`
|
||
SELECT u.id, u.pending_earnings, s.auto_withdraw_threshold
|
||
FROM users u
|
||
JOIN user_settings s ON u.id = s.user_id
|
||
WHERE s.auto_withdraw_enabled = TRUE
|
||
AND u.pending_earnings >= s.auto_withdraw_threshold
|
||
`)
|
||
|
||
// 为每个用户发起提现
|
||
for (const user of users) {
|
||
await processWithdraw(user.id, user.pending_earnings)
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. 多种通知方式
|
||
|
||
**当前**:小程序订阅消息
|
||
|
||
**扩展**:
|
||
- 公众号模板消息
|
||
- 短信通知
|
||
- 邮件通知
|
||
|
||
### 3. 更多设置项
|
||
|
||
- 提现到账通知
|
||
- 绑定用户提醒
|
||
- 即将过期提醒
|
||
- 每日收益汇总
|
||
|
||
## 六、注意事项
|
||
|
||
### 1. 自动提现限制
|
||
|
||
- ⚠️ 需要用户手动确认,不是完全自动
|
||
- ⚠️ 仍需满足最低提现金额要求
|
||
- ⚠️ 受提现次数限制(如有)
|
||
|
||
### 2. 通知权限
|
||
|
||
- 需要用户授权订阅消息
|
||
- 模板消息需要在微信公众平台配置
|
||
- 用户可以随时关闭通知
|
||
|
||
### 3. 数据安全
|
||
|
||
- 本地存储数据可能丢失(卸载小程序、清除缓存)
|
||
- 建议未来同步到服务器
|
||
|
||
## 七、测试用例
|
||
|
||
### 自动提现测试
|
||
|
||
| 场景 | 操作 | 预期结果 |
|
||
|------|------|---------|
|
||
| 开启自动提现 | 可提现金额 < 阈值 | 正常开启,不弹窗 |
|
||
| 开启自动提现 | 可提现金额 ≥ 阈值 | 弹窗询问是否提现 |
|
||
| 修改阈值 | 输入小于最低金额 | 提示错误 |
|
||
| 修改阈值 | 输入非数字 | 提示错误 |
|
||
| 修改阈值 | 输入合法金额 | 保存成功 |
|
||
|
||
### 通知设置测试
|
||
|
||
| 场景 | 操作 | 预期结果 |
|
||
|------|------|---------|
|
||
| 开启通知 | 首次开启 | 请求订阅消息权限 |
|
||
| 开启通知 | 已授权 | 直接开启 |
|
||
| 关闭通知 | 点击关闭 | 立即关闭,不再提醒 |
|
||
|
||
## 八、用户体验优化建议
|
||
|
||
1. **引导用户使用**
|
||
- 首次进入分销中心时,引导设置自动提现
|
||
- 可提现金额达到阈值时,提示开启自动提现
|
||
|
||
2. **智能推荐阈值**
|
||
- 根据用户历史提现金额推荐合适的阈值
|
||
- 例如:平均提现金额为¥80,推荐阈值为¥50-¥100
|
||
|
||
3. **状态反馈**
|
||
- 在分销中心显示自动提现状态(已开启/已关闭)
|
||
- 显示下次自动提现预计金额
|
||
|
||
---
|
||
|
||
**创建时间**:2026-02-04
|
||
**功能状态**:✅ 已实现
|
||
**适用版本**:小程序 v1.0+
|