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

2.2 KiB
Raw Permalink Blame History

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