` 实时收益通知
-
-**小程序当前**: 占位("暂无新消息")
-
-**建议**: 后续接入实时通知推送
-
----
-
-## ✅ 同步完成总结
-
-### 功能完整度
-
-- ✅ **100%** 核心功能已同步
-- ✅ **100%** UI/UX 样式已对齐
-- ✅ **100%** 图标使用 lucide SVG
-- ✅ **100%** 数据结构一致
-- ✅ **100%** 文案内容相同
-- ✅ **100%** API 接口接入
-
-### 技术亮点
-
-1. 🎯 **图标库统一**: 所有图标使用 lucide-react 的 SVG
-2. 🎨 **样式完全对齐**: 毛玻璃、渐变、圆角100%一致
-3. 🔌 **API 完整接入**: 使用真实数据,实时同步
-4. 💬 **分享文案一致**: 3种分享方式,文案完全相同
-5. 📱 **响应式适配**: 安全区域、尺寸单位全部适配
-
----
-
-## 🎉 最终效果
-
-**分销中心页面已实现 Next.js 到小程序的 100% 功能同步!**
-
-- ✅ 所有功能模块完整迁移
-- ✅ 所有图标使用 lucide SVG
-- ✅ 所有样式100%对齐
-- ✅ 所有API接口接入
-- ✅ 所有分享文案相同
-
----
-
-**Next.js 分销中心 → 小程序分销中心:完美同步!** 🎉
diff --git a/miniprogram/海报优化说明.md b/miniprogram/海报优化说明.md
deleted file mode 100644
index 56098e42..00000000
--- a/miniprogram/海报优化说明.md
+++ /dev/null
@@ -1,231 +0,0 @@
-# 推广海报优化说明
-
-**优化日期**: 2026-02-04
-**问题**: 二维码生成失败 + 弹窗尺寸不适配小程序
-
----
-
-## 🔧 优化内容
-
-### 1. 二维码生成优化 ✅
-
-#### 问题分析
-- 小程序码API `/api/miniprogram/qrcode` 可能调用失败
-- 没有备用方案,导致海报显示空白
-
-#### 解决方案
-**双重备用机制**:
-
-```javascript
-// 1. 优先使用小程序码API
-const qrRes = await app.request('/api/miniprogram/qrcode', {
- method: 'POST',
- data: {
- scene: `ref=${referralCode}`,
- page: 'pages/index/index',
- width: 280
- }
-})
-
-// 2. 如果失败,使用第三方二维码API
-if (!qrcodeImage) {
- qrcodeImage = `https://api.qrserver.com/v1/create-qr-code/?size=280x280&data=${encodeURIComponent(referralLink)}`
-}
-```
-
-**支持两种格式**:
-- ✅ **Base64格式**: 小程序码返回的Base64图片
-- ✅ **URL格式**: 第三方二维码API的在线图片
-
-**绘制逻辑**:
-```javascript
-async drawQRCode(ctx, qrcodeImage, x, y, size) {
- if (qrcodeImage.startsWith('data:image')) {
- // Base64 → 保存到本地文件 → drawImage()
- } else if (qrcodeImage.startsWith('http')) {
- // URL → wx.downloadFile() → drawImage()
- } else {
- // 占位符
- }
-}
-```
-
----
-
-### 2. 弹窗尺寸优化 ✅
-
-#### 问题分析
-- Canvas尺寸: `375px x 580px` (固定像素)
-- 小程序屏幕宽度各异,固定像素导致显示过大
-
-#### 解决方案
-
-**调整Canvas尺寸**:
-```css
-/* 修改前 */
-.poster-canvas {
- width: 375px;
- height: 580px;
-}
-
-/* 修改后(使用rpx响应式单位)*/
-.poster-canvas {
- width: 600rpx; /* 约等于屏幕宽度的80% */
- height: 928rpx; /* 保持16:10比例 */
-}
-```
-
-**弹窗滚动优化**:
-```css
-.poster-modal {
- max-height: 90vh; /* 最大高度90%视口 */
- overflow-y: auto; /* 允许滚动 */
-}
-```
-
-**Canvas绘制尺寸**:
-```javascript
-// 修改前
-const width = 375
-const height = 580
-
-// 修改后(小程序优化)
-const width = 300 // Canvas内部绘制尺寸
-const height = 464 // 保持相同比例
-```
-
----
-
-## 📊 尺寸对照表
-
-| 项目 | 修改前 | 修改后 | 说明 |
-|-----|--------|--------|------|
-| **Canvas显示宽度** | 375px | 600rpx | 响应式单位 |
-| **Canvas显示高度** | 580px | 928rpx | 响应式单位 |
-| **Canvas绘制宽度** | 375px | 300px | 内部绘制 |
-| **Canvas绘制高度** | 580px | 464px | 内部绘制 |
-| **宽高比** | 1:1.55 | 1:1.55 | 保持一致 |
-
-**换算关系**:
-- `600rpx` ≈ `300px`(在iPhone6为标准,750rpx = 375px)
-- `928rpx` ≈ `464px`
-
----
-
-## 🔄 二维码流程图
-
-```
-开始
- ↓
-尝试获取小程序码 (/api/miniprogram/qrcode)
- ↓
-成功?
- ├─ 是 → 使用Base64格式 → 写入本地文件 → 绘制
- └─ 否 → 使用第三方二维码API
- ↓
- 下载在线图片
- ↓
- 成功?
- ├─ 是 → 绘制
- └─ 否 → 绘制占位符
-```
-
----
-
-## ✅ 优化效果
-
-### 二维码生成
-- ✅ 支持小程序码(Base64)
-- ✅ 支持第三方二维码(URL)
-- ✅ 自动降级处理
-- ✅ 详细日志记录
-
-### 弹窗显示
-- ✅ 响应式尺寸(rpx单位)
-- ✅ 支持滚动查看
-- ✅ 适配所有屏幕尺寸
-- ✅ 保持视觉比例
-
----
-
-## 📱 测试检查
-
-### 二维码测试
-1. ✅ 小程序码API正常时,显示小程序码
-2. ✅ 小程序码API失败时,显示第三方二维码
-3. ✅ 两种二维码都可扫描
-4. ✅ 控制台有清晰的日志输出
-
-### 弹窗测试
-1. ✅ iPhone 6/7/8 (375px宽) - 正常显示
-2. ✅ iPhone Plus (414px宽) - 正常显示
-3. ✅ iPhone X/11 (375px宽,刘海屏) - 正常显示
-4. ✅ iPad (768px宽) - 正常显示
-5. ✅ 弹窗可上下滚动
-6. ✅ Canvas不会超出屏幕
-
----
-
-## 🎯 对比截图
-
-### 修改前
-- Canvas固定 375px,在小屏幕上过大
-- 二维码加载失败时显示空白
-
-### 修改后
-- Canvas使用 600rpx,自动适配
-- 二维码有备用方案,始终可用
-
----
-
-## 📝 相关文件
-
-| 文件 | 修改内容 | 行数 |
-|-----|---------|------|
-| `referral.wxml` | Canvas标签去除固定尺寸 | 1行 |
-| `referral.wxss` | Canvas样式改为rpx,弹窗增加滚动 | 3行 |
-| `referral.js` | 二维码双重备用 + 绘制逻辑优化 | ~60行 |
-
----
-
-## 🔍 日志示例
-
-### 成功获取小程序码
-```
-[Poster] 请求小程序码, scene: ref=SOUL87EL
-[Poster] ✅ 小程序码获取成功
-[Poster] 绘制Base64二维码
-[Poster] ✅ Base64写入成功
-```
-
-### 降级到第三方二维码
-```
-[Poster] 请求小程序码, scene: ref=SOUL87EL
-[Poster] ❌ 小程序码获取失败: timeout
-[Poster] 使用第三方二维码API
-[Poster] 下载在线二维码: https://api.qrserver.com/...
-[Poster] ✅ 二维码下载成功
-```
-
----
-
-## 💡 后续优化建议
-
-### 1. 自定义海报模板
-- 支持多种海报风格
-- 用户自选背景色
-- 个性化文案
-
-### 2. 预览功能增强
-- 长按预览大图
-- 双击放大缩小
-- 支持手势操作
-
-### 3. 分享优化
-- 一键分享到微信
-- 生成小程序卡片
-- 分享记录统计
-
----
-
-**优化完成!二维码稳定 + 弹窗适配!** 🎉
diff --git a/miniprogram/海报设计Next同步说明.md b/miniprogram/海报设计Next同步说明.md
deleted file mode 100644
index 3d98ab5f..00000000
--- a/miniprogram/海报设计Next同步说明.md
+++ /dev/null
@@ -1,365 +0,0 @@
-# 推广海报 Next.js → 小程序 1:1 同步说明
-
-**同步日期**: 2026-02-04
-**目标**: 将 Next.js 的推广海报设计完全复刻到小程序 Canvas
-
----
-
-## 📐 设计规格对比
-
-| 项目 | Next.js | 小程序 Canvas | 状态 |
-|-----|---------|--------------|------|
-| **实现方式** | React组件 + CSS | Canvas绘制 | ✅ 等价 |
-| **尺寸** | max-w-sm (约375px宽) | 375x580px | ✅ 一致 |
-| **背景渐变** | `from-[#0a1628] via-[#0f2137] to-[#1a3a5c]` | 相同色值 | ✅ 一致 |
-| **装饰光效** | 2个模糊圆形 | 2个径向渐变 | ✅ 一致 |
-
----
-
-## 🎨 元素清单(从上到下)
-
-### 1. 顶部标签组 ✅
-
-**Next.js 设计**:
-```tsx
-
-
- 真实商业案例
-
-
- 每日更新
-
-
-```
-
-**小程序实现**:
-- 左标签(金色):`#FFD700`, `rgba(255,215,0,0.2)` 背景
-- 右标签(青色):`#00CED1`, `rgba(0,206,209,0.2)` 背景
-- 字体大小:11px
-- 圆角:10px
-
-**状态**: ✅ 完全一致
-
----
-
-### 2. 主标题(渐变文字)✅
-
-**Next.js 设计**:
-```tsx
-
-
- 一场SOUL的
-
-
- 创业实验场
-
-```
-
-**小程序实现**:
-- 第一行 "一场SOUL的":青色 `#00CED1`, 28px
-- 第二行 "创业实验场":白色 `#ffffff`, 28px
-
-**备注**: Canvas不支持`bg-clip-text`渐变,使用纯色替代,视觉效果接近
-
-**状态**: ✅ 实现
-
----
-
-### 3. 副标题 ✅
-
-**Next.js**: `text-white/60 text-xs` → "来自Soul派对房的真实商业故事"
-
-**小程序**: `rgba(255,255,255,0.6)`, 12px
-
-**状态**: ✅ 完全一致
-
----
-
-### 4. 核心数据卡片(3列)✅
-
-**Next.js 设计**:
-```tsx
-
-
- {/* 5% 好友优惠 */}
- {/* 90% 你的收益 */}
-
-```
-
-**小程序实现**:
-| 卡片 | 数值 | 颜色 | 标签 |
-|-----|------|------|------|
-| 1 | 62 | `#FFD700` 金色 | 真实案例 |
-| 2 | 5% | `#00CED1` 青色 | 好友优惠 |
-| 3 | 90% | `#E91E63` 粉色 | 你的收益 |
-
-- 背景:`rgba(255,255,255,0.05)`
-- 边框:`rgba(255,255,255,0.1)`
-- 圆角:8px
-- 数值字号:24px(粗体)
-- 标签字号:10px
-
-**状态**: ✅ 完全一致
-
----
-
-### 5. 特色标签(5个)✅
-
-**Next.js 设计**:
-```tsx
-
- {["人性观察", "行业揭秘", "赚钱逻辑", "创业复盘", "资源对接"].map((tag) => (
-
- {tag}
-
- ))}
-
-```
-
-**小程序实现**:
-- 标签数组:`['人性观察', '行业揭秘', '赚钱逻辑', '创业复盘', '资源对接']`
-- 背景:`rgba(255,255,255,0.05)`
-- 边框:`rgba(255,255,255,0.1)`
-- 文字颜色:`rgba(255,255,255,0.7)`
-- 字号:10px
-- 圆角:9px
-- 自动换行
-
-**状态**: ✅ 完全一致
-
----
-
-### 6. 推荐人信息 ✅
-
-**Next.js 设计**:
-```tsx
-
-
- {nickname.charAt(0)}
-
-
{nickname} 推荐你来读
-
-```
-
-**小程序实现**:
-- 背景:`rgba(0,206,209,0.1)`
-- 边框:`rgba(0,206,209,0.2)`
-- 圆角:16px
-- 头像圆:半径12px, 背景`rgba(0,206,209,0.3)`
-- 头像文字:取nickname首字,`#00CED1`,11px
-- 推荐文字:`{nickname} 推荐你来读`, `#00CED1`, 12px
-
-**状态**: ✅ 完全一致
-
----
-
-### 7. 优惠说明卡片 ✅
-
-**Next.js 设计**:
-```tsx
-
-```
-
-**小程序实现**:
-- 背景:横向渐变 `rgba(255,215,0,0.1)` → `rgba(233,30,99,0.1)`
-- 边框:`rgba(255,215,0,0.2)`
-- 圆角:12px
-- 第一行文字:"通过我的链接购买," 白色0.8透明度,12px
-- 第二行文字:"立省5%" 青色`#00CED1`,13px(加粗)
-
-**状态**: ✅ 完全一致
-
----
-
-### 8. 二维码区域 ✅
-
-**Next.js 设计**:
-```tsx
-
-

-
-长按识别 · 立即试读
-邀请码: {referralCode}
-```
-
-**小程序实现**:
-- 白色背景:`#ffffff`
-- 圆角:8px
-- Padding:8px
-- 二维码尺寸:112x112px
-- 下方文字1:"长按识别 · 立即试读" `rgba(255,255,255,0.4)`, 10px
-- 下方文字2:"邀请码: XXX" `rgba(0,206,209,0.8)`, 12px
-
-**状态**: ✅ 完全一致
-
----
-
-## 🎯 颜色系统对比
-
-| 颜色名称 | Hex | 用途 | Next.js | 小程序 |
-|---------|-----|------|---------|--------|
-| **品牌青色** | `#00CED1` | 主要强调色 | ✅ | ✅ |
-| **金色** | `#FFD700` | 数据卡片、标签 | ✅ | ✅ |
-| **粉色** | `#E91E63` | 数据卡片 | ✅ | ✅ |
-| **背景深蓝1** | `#0a1628` | 渐变起点 | ✅ | ✅ |
-| **背景深蓝2** | `#0f2137` | 渐变中点 | ✅ | ✅ |
-| **背景深蓝3** | `#1a3a5c` | 渐变终点 | ✅ | ✅ |
-| **白色半透明** | `rgba(255,255,255,0.05-0.8)` | 卡片、文字 | ✅ | ✅ |
-
-**状态**: ✅ 完全一致
-
----
-
-## 📏 尺寸和间距对比
-
-| 元素 | Next.js | 小程序 | 状态 |
-|-----|---------|--------|------|
-| **海报宽度** | max-w-sm (~375px) | 375px | ✅ |
-| **海报高度** | 自适应 | 580px | ✅ |
-| **顶部标签字号** | text-[10px] | 11px | ✅ |
-| **主标题字号** | text-2xl (24px) | 28px | ✅ |
-| **副标题字号** | text-xs (12px) | 12px | ✅ |
-| **数据卡片数值** | text-2xl (24px) | 24px | ✅ |
-| **数据卡片标签** | text-[10px] | 10px | ✅ |
-| **特色标签字号** | text-[10px] | 10px | ✅ |
-| **推荐人文字** | text-xs (12px) | 12px | ✅ |
-| **优惠文字** | text-xs (12px) | 12-13px | ✅ |
-| **底部提示** | text-[10px] | 10px | ✅ |
-| **邀请码** | text-xs (12px) | 12px | ✅ |
-
-**状态**: ✅ 完全一致
-
----
-
-## 🔄 技术实现差异
-
-| 特性 | Next.js | 小程序 | 说明 |
-|-----|---------|--------|------|
-| **渐变文字** | `bg-gradient-to-r` + `bg-clip-text` | 纯色替代 | Canvas不支持文字渐变 |
-| **模糊效果** | `blur-3xl` | `createRadialGradient` | 使用径向渐变模拟 |
-| **圆角矩形** | CSS `rounded-*` | `drawRoundRect()` 自定义函数 | Canvas手动绘制 |
-| **二维码** | `
` 标签 | `drawImage()` | 等价 |
-| **保存海报** | 长按保存 | `wx.saveImageToPhotosAlbum()` | 小程序API |
-
----
-
-## 📱 Canvas 绘制技巧
-
-### 1. 绘制圆角矩形
-
-```javascript
-drawRoundRect(ctx, x, y, width, height, radius) {
- ctx.beginPath()
- ctx.moveTo(x + radius, y)
- ctx.lineTo(x + width - radius, y)
- ctx.arc(x + width - radius, y + radius, radius, -Math.PI / 2, 0)
- ctx.lineTo(x + width, y + height - radius)
- ctx.arc(x + width - radius, y + height - radius, radius, 0, Math.PI / 2)
- ctx.lineTo(x + radius, y + height)
- ctx.arc(x + radius, y + height - radius, radius, Math.PI / 2, Math.PI)
- ctx.lineTo(x, y + radius)
- ctx.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 1.5)
- ctx.closePath()
- ctx.fill()
-}
-```
-
-### 2. 绘制径向渐变(模拟模糊光效)
-
-```javascript
-const glow1 = ctx.createRadialGradient(0, 0, 0, 0, 0, 80)
-glow1.addColorStop(0, 'rgba(0,206,209,0.1)')
-glow1.addColorStop(1, 'rgba(0,206,209,0)')
-ctx.setFillStyle(glow1)
-ctx.fillRect(0, 0, 160, 160)
-```
-
-### 3. 绘制线性渐变
-
-```javascript
-const bgGradient = ctx.createLinearGradient(0, 0, width, height)
-bgGradient.addColorStop(0, '#0a1628')
-bgGradient.addColorStop(0.5, '#0f2137')
-bgGradient.addColorStop(1, '#1a3a5c')
-ctx.setFillStyle(bgGradient)
-ctx.fillRect(0, 0, width, height)
-```
-
-### 4. 文字对齐
-
-```javascript
-// 居中对齐
-ctx.setTextAlign('center')
-ctx.fillText('文字', centerX, y)
-
-// 左对齐
-ctx.setTextAlign('left')
-ctx.fillText('文字', x, y)
-```
-
----
-
-## ✅ 同步完成检查清单
-
-- [x] 背景渐变色(3色渐变)
-- [x] 装饰性光效(左上青色 + 右下金色)
-- [x] 顶部2个标签(金色+青色)
-- [x] 主标题(2行,青色+白色)
-- [x] 副标题(白色半透明)
-- [x] 3个数据卡片(金色/青色/粉色)
-- [x] 5个特色标签(自动换行)
-- [x] 推荐人信息(圆形头像+文字)
-- [x] 优惠说明(渐变背景)
-- [x] 二维码(白色背景卡片)
-- [x] 底部文字(2行)
-- [x] 所有颜色100%一致
-- [x] 所有字号100%一致
-- [x] 所有圆角100%一致
-
----
-
-## 🎉 最终效果
-
-**Next.js 推广海报 → 小程序 Canvas 海报:100% 视觉还原!**
-
-| 对比项 | 一致性 |
-|-------|--------|
-| **布局结构** | ✅ 100% |
-| **颜色系统** | ✅ 100% |
-| **字体大小** | ✅ 100% |
-| **圆角样式** | ✅ 100% |
-| **间距比例** | ✅ 100% |
-| **视觉效果** | ✅ 95%+ |
-
-**备注**: 视觉效果略有差异的原因是Canvas不支持CSS的`bg-clip-text`渐变文字和`blur`滤镜,但已用其他方式模拟,肉眼几乎无差异。
-
----
-
-## 📝 使用说明
-
-### 测试步骤
-
-1. 打开小程序"分销中心"页面
-2. 点击"生成推广海报"按钮
-3. 等待海报绘制完成(约1-2秒)
-4. 查看海报预览
-5. 点击"保存到相册"
-
-### 预期效果
-
-- ✅ 海报与截图完全一致
-- ✅ 二维码可扫描(带推荐码)
-- ✅ 所有文字清晰可读
-- ✅ 颜色鲜艳准确
-- ✅ 保存后可分享
-
----
-
-**海报设计已完美同步!** 🎨✨
diff --git a/miniprogram/自动部署.sh b/miniprogram/自动部署.sh
deleted file mode 100644
index b35844dd..00000000
--- a/miniprogram/自动部署.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-
-# Soul派对小程序 - 自动部署脚本
-# 自动编译、测试、上传小程序
-
-echo "=================================="
-echo " Soul派对小程序 自动部署 "
-echo "=================================="
-echo ""
-
-# 微信开发者工具CLI路径
-CLI="/Applications/wechatwebdevtools.app/Contents/MacOS/cli"
-
-# 项目路径
-PROJECT_PATH="/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验/miniprogram"
-
-# 检查CLI是否存在
-if [ ! -f "$CLI" ]; then
- echo "❌ 未找到微信开发者工具CLI"
- echo "请确保微信开发者工具已安装"
- exit 1
-fi
-
-echo "✅ 找到微信开发者工具"
-echo ""
-
-# 1. 打开项目
-echo "📂 步骤1:打开项目..."
-$CLI -o "$PROJECT_PATH"
-sleep 2
-echo "✅ 项目已打开"
-echo ""
-
-# 2. 编译项目(使用新的v2命令格式)
-echo "🔨 步骤2:编译项目..."
-$CLI build-npm --project "$PROJECT_PATH"
-sleep 3
-echo "✅ 编译完成"
-echo ""
-
-# 3. 预览(生成二维码)
-echo "📱 步骤3:生成预览二维码..."
-$CLI preview --project "$PROJECT_PATH" --qr-format image --qr-output "$PROJECT_PATH/preview.png"
-if [ -f "$PROJECT_PATH/preview.png" ]; then
- echo "✅ 二维码已生成: $PROJECT_PATH/preview.png"
- open "$PROJECT_PATH/preview.png"
-else
- echo "⚠️ 二维码生成失败,请手动点击预览"
-fi
-echo ""
-
-# 4. 上传代码(使用新的v2命令格式)
-echo "📤 步骤4:上传代码到微信后台..."
-VERSION="1.0.0"
-DESC="初始版本:3按钮导航+星球匹配功能,H5和小程序界面统一"
-
-$CLI upload --project "$PROJECT_PATH" --version "$VERSION" --desc "$DESC"
-
-if [ $? -eq 0 ]; then
- echo "✅ 代码上传成功!"
- echo ""
- echo "版本:$VERSION"
- echo "说明:$DESC"
- echo ""
- echo "=================================="
- echo "🎉 部署完成!"
- echo "=================================="
- echo ""
- echo "下一步操作:"
- echo "1. 登录小程序后台:https://mp.weixin.qq.com"
- echo "2. 进入「版本管理」→「开发版本」"
- echo "3. 找到刚上传的版本"
- echo "4. 点击「提交审核」"
- echo ""
-else
- echo "❌ 上传失败"
- echo ""
- echo "可能原因:"
- echo "1. 需要在微信开发者工具中登录"
- echo "2. 需要手动上传(点击工具栏的上传按钮)"
- echo ""
-fi
diff --git a/soul-api/internal/handler/referral.go b/soul-api/internal/handler/referral.go
index 216b636e..ff93eddf 100644
--- a/soul-api/internal/handler/referral.go
+++ b/soul-api/internal/handler/referral.go
@@ -153,10 +153,12 @@ func ReferralData(c *gin.Context) {
db := database.DB()
- // 获取分销配置
+ // 获取分销配置(与 soul-admin 推广设置一致)
distributorShare := 0.9
minWithdrawAmount := 10.0
-
+ bindingDays := defaultBindingDays
+ userDiscount := 5
+
var cfg model.SystemConfig
if err := db.Where("config_key = ?", "referral_config").First(&cfg).Error; err == nil {
var config map[string]interface{}
@@ -167,6 +169,12 @@ func ReferralData(c *gin.Context) {
if minAmount, ok := config["minWithdrawAmount"].(float64); ok {
minWithdrawAmount = minAmount
}
+ if days, ok := config["bindingDays"].(float64); ok && days > 0 {
+ bindingDays = int(days)
+ }
+ if discount, ok := config["userDiscount"].(float64); ok {
+ userDiscount = int(discount)
+ }
}
}
@@ -386,6 +394,8 @@ func ReferralData(c *gin.Context) {
"estimatedEarnings": round(estimatedEarnings, 2),
"shareRate": int(distributorShare * 100),
"minWithdrawAmount": minWithdrawAmount,
+ "bindingDays": bindingDays,
+ "userDiscount": userDiscount,
// 推荐码
"referralCode": getStringValue(user.ReferralCode),
diff --git a/soul-api/server.exe b/soul-api/server.exe
index 61dc23ae..7d916265 100644
Binary files a/soul-api/server.exe and b/soul-api/server.exe differ
diff --git a/soul-api/tmp/main.exe b/soul-api/tmp/main.exe
index 61dc23ae..7d916265 100644
Binary files a/soul-api/tmp/main.exe and b/soul-api/tmp/main.exe differ