fengketrade/database/migrations/FRONTEND_CHANGES.md
2025-10-29 12:01:14 +08:00

6.3 KiB
Raw Blame History

前端修改说明

📝 修改文件清单

✅ 已修改的文件3个
frontend/
├── pages/order/confirm.vue                   # 订单确认页(+40行
├── pages/commission/components/
│   └── commission-info.vue                   # 分销中心个人信息(+30行
└── sheep/api/
    ├── invite.js                             # 新增邀请码API新建
    └── index.js                              # 注册邀请码API+2行

🎯 功能说明

1. 订单确认页 - 邀请码输入框

位置: 订单备注下方

功能:

  • 仅未绑定上级的用户显示(v-if="!userInfo.parent_user_id"
  • 非必填6位大写字母+数字
  • 失焦自动验证(调用 /invite/validate 接口)
  • 验证成功显示绿色勾号
  • 提交订单时自动携带 invite_code 参数

代码片段:

<uni-easyinput
  maxlength="6"
  placeholder="选填(6位大写字母+数字)"
  v-model="state.inviteCode"
  @blur="onValidateInvite"
/>

验证逻辑:

async function onValidateInvite() {
  const code = state.inviteCode.trim().toUpperCase();
  if (code.length !== 6) {
    sheep.$helper.toast('邀请码格式错误');
    return;
  }

  const { code: resCode } = await sheep.$api.invite.validate({ invite_code: code });
  if (resCode === 1) {
    state.inviteValidated = true;
    sheep.$helper.toast('邀请码验证成功');
  }
}

提交订单:

if (state.inviteValidated && state.inviteCode) {
  state.orderPayload.invite_code = state.inviteCode;
}
const { code, data } = await sheep.$api.order.create(state.orderPayload);

2. 个人中心 - 显示邀请码

位置: 分销中心个人信息卡片,等级标签下方

功能:

  • 自动获取邀请码(/invite/myCode
  • 点击复制邀请码到剪贴板
  • 复制成功提示

代码片段:

<view class="invite-code-box" @tap="onCopyCode">
  <text class="invite-label">我的邀请码:</text>
  <text class="invite-code">{{ state.inviteCode }}</text>
  <text class="ss-iconfont uicon-copy"></text>
</view>

逻辑:

// 页面加载时获取邀请码
async function getInviteCode() {
  const { code, data } = await sheep.$api.invite.myCode();
  if (code === 1) {
    state.inviteCode = data.invite_code;
  }
}

// 复制邀请码
function onCopyCode() {
  sheep.$helper.copyText(state.inviteCode);
  sheep.$helper.toast('邀请码已复制');
}

onMounted(() => {
  getInviteCode();
});

🔌 API 接口

新增 sheep.$api.invite 模块

// 1. 获取我的邀请码
sheep.$api.invite.myCode()
// 响应: { code: 1, data: { invite_code: "ABC123", invite_count: 5 } }

// 2. 验证邀请码
sheep.$api.invite.validate({ invite_code: "ABC123" })
// 响应: { code: 1, msg: "邀请码有效", data: { ... } }

// 3. 我邀请的用户列表
sheep.$api.invite.myInvites({ page: 1 })
// 响应: { code: 1, data: { total: 10, data: [...] } }

🎨 样式调整

订单确认页样式

.invite-input-box {
  position: relative;

  .validate-tag {
    margin-left: 10rpx;
    font-size: 32rpx;
  }
}

个人中心样式

.invite-code-box {
  margin-top: 12rpx;
  padding: 4rpx 12rpx;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 20rpx;
  border: 1rpx solid rgba(255, 255, 255, 0.3);

  .invite-code {
    font-size: 26rpx;
    font-weight: bold;
    color: #fff;
    letter-spacing: 2rpx;
  }
}

🧪 测试步骤

测试1: 订单页邀请码输入

# 1. 登录建行生活用户(未绑定上级)
# 2. 加入购物车,进入订单确认页
# 3. 查看是否显示"邀请码"输入框
# 4. 输入邀请码ABC123
# 5. 失焦后查看是否显示验证成功图标
# 6. 提交订单
# 7. 后台检查是否绑定成功:
SELECT parent_user_id, invite_code_used FROM user WHERE id = 新用户ID;

测试2: 个人中心显示邀请码

# 1. 进入分销中心页面
# 2. 查看个人信息卡片,等级标签下方
# 3. 确认显示"我的邀请码: XXXXXX"
# 4. 点击邀请码
# 5. 确认提示"邀请码已复制"
# 6. 粘贴验证是否成功复制

测试3: 已绑定用户不显示输入框

# 1. 登录已有上级的用户
# 2. 进入订单确认页
# 3. 确认不显示"邀请码"输入框

🐛 常见问题

问题1: 邀请码输入框不显示

检查:

// 确认用户是否已绑定
console.log(userInfo.parent_user_id); // 应为 null

问题2: 验证失败

检查:

# 查看API响应
curl -X POST http://your-domain/invite/validate -d "invite_code=ABC123"

# 查看后端日志
tail -f runtime/log/$(date +%Y%m)/$(date +%d).log | grep "邀请码"

问题3: 个人中心不显示邀请码

检查:

// 检查API是否成功
const res = await sheep.$api.invite.myCode();
console.log(res);

// 检查用户是否有邀请码
SELECT invite_code FROM user WHERE id = 你的用户ID;

📱 界面预览

订单确认页

┌────────────────────────────────┐
│  商品信息                       │
├────────────────────────────────┤
│  订单备注  [建议留言前先与商家沟通]│
├────────────────────────────────┤
│  邀请码    [选填(6位大写字母+数字)] ✓│  ← 新增
└────────────────────────────────┘

个人中心

┌────────────────────────────────┐
│  👤 张三                        │
│  🏷️ 分销商等级                  │
│  📋 我的邀请码: ABC123 📋       │  ← 新增
└────────────────────────────────┘

完成检查清单

  • 订单页显示邀请码输入框
  • 邀请码验证功能正常
  • 订单提交携带邀请码参数
  • 个人中心显示邀请码
  • 点击复制邀请码功能正常
  • 已绑定用户不显示输入框
  • API接口注册成功

最后更新: 2024-01-15 维护人员: Billy