- 将获取 STS Token 的接口地址由 paopao-api 改为 guilixu-api - 更新图片上传接口地址为新的 guilixu-api 域名 - 修改用户推广页面中邀请码链接和二维码接口的域名 - 更改注册页微信登录接口请求的域名为 guilixu-api
37 lines
2.2 KiB
Markdown
37 lines
2.2 KiB
Markdown
# 2026-06-17
|
||
|
||
## 微信小程序"登录后才能看商品"过审方案
|
||
|
||
### 背景
|
||
客户要求登录才能看到商品,但微信审核禁止"一进入就强制登录"。实施游客态 + 行为节点拦截。
|
||
|
||
### 改动落点(6 个文件)
|
||
|
||
1. **src/utils/auth.ts** — 新增 `getUserMode()` / `isGuest()`,导出 `UserMode` 类型
|
||
2. **src/utils/login-guard.ts** — 新增 `requireLogin({ action, redirect, silent })` 拦截器
|
||
- 非阻塞:默认用 `Taro.showModal` 二次确认,**不要直接 navigateTo 注册页**
|
||
- `action` 类型枚举:`addToCart | buyNow | checkout | favorite | receiveCoupon | viewOrder | payOrder | submitComment`
|
||
- 内置每个 action 的默认 redirect 文案
|
||
3. **src/components/common/Price/index.tsx** — 新增 `loginMask` 模式 + `maskText` 自定义
|
||
- 游客态 + `loginMask=true` → 显示"登录后查看价格"
|
||
- 登录态 → 走原逻辑,所有 Price 调用点零改动兼容
|
||
4. **src/components/common/ProductCard/index.tsx** — 给 `<Price>` 加 `loginMask`,划线价游客态隐藏
|
||
5. **src/pages/shop/product-detail.tsx** — 主价签 `loginMask`;划线价/会员价游客态隐藏
|
||
- `toggleFavorite` / `handleAddCart` / `handleBuyNow` 改用 `requireLogin` 替换原来的 showToast + setTimeout navigateTo
|
||
6. **src/pages/shop/cart.tsx** — 去掉"未登录直接挡"
|
||
- 游客态:显示空购物车 + 推荐位 + "去登录后查看购物车"按钮
|
||
- 推荐位价格统一显示"登录后查看价格"
|
||
- 顺手修了 `setRecommendGoods` 未声明的潜在运行 bug
|
||
|
||
### 关键经验
|
||
- **绝不在 useLaunch / onLoad / tabBar 切换时调登录**(审核必毙)
|
||
- **价格脱敏是过审最稳方案**,比"行为拦截+保留价格"风险低
|
||
- 拦截用 `Taro.showModal` 而非 `navigateTo`,避免被判"拒绝服务"
|
||
- 项目里 `Price` 公共组件是天然改造点,加一个 `loginMask` prop 一处改全场生效
|
||
|
||
### 还没改的(可后续)
|
||
- checkout.tsx 已是登录后路径,但里面的价格 / 余额展示可以加 `loginMask` 兜底
|
||
- 各 `index.tsx` 页面(首页/分类/搜索)的非 ProductCard 价格展示位(如果有)
|
||
- 优惠券中心 `receiveCoupon` 行为点
|
||
- SkuSelector 内部价格
|