Files
xinlong-shop-taro/.workbuddy/memory/2026-06-17.md
赵忠林 8975197522 fix(api): 替换所有接口请求的域名为 guilixu-api.websoft.top
- 将获取 STS Token 的接口地址由 paopao-api 改为 guilixu-api
- 更新图片上传接口地址为新的 guilixu-api 域名
- 修改用户推广页面中邀请码链接和二维码接口的域名
- 更改注册页微信登录接口请求的域名为 guilixu-api
2026-06-17 16:50:30 +08:00

37 lines
2.2 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.

# 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 内部价格