Files
xinlong-shop-taro/.workbuddy/memory/2026-07-14.md
赵忠林 a353bc9ea8 fix(privacy): 修复微信隐私协议导致的chooseImage错误
- 在 app.config.ts 的requiredPrivateInfos中添加chooseImage和chooseMedia权限声明
- 在上传文件接口uploadFile中调用ensurePrivacyAuthorized函数,预先检查用户隐私授权
- 在 app.tsx 的 useLaunch 钩子中注册 onNeedPrivacyAuthorization 回调,自定义弹窗提示用户协议
- ensurePrivacyAuthorized兼容旧版本微信基础库,未提供隐私授权函数时默认放行
- 更新文档说明隐私协议错误码errno:112的原因及修复方案
- 提醒绕过uploadFile调用chooseImage的页面需单独添加隐私授权预检机制
2026-07-14 23:26:49 +08:00

36 lines
3.1 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-07-14 工作日志
## 门店订单页商品图片修复
- 文件:`src/pages/store/orders/index.tsx`
- 问题:订单商品图片不显示,字段名与模型不匹配
- 修复:`coverImage``image``specInfo``spec``quantity``totalNum`(按 `ShopOrderGoods` 模型定义)
- 图片压缩:`getCompressedImageUrl(goods.image, { width: 80 })`,展示尺寸 w-16 h-1664px压缩宽度 80 够用
## 门店中心新增用户管理功能
- 新页面:`src/pages/store/users/index.tsx`
- 功能:分页查询用户列表、搜索(昵称/手机号、Tab 筛选(全部/正常/已禁用)、查看用户详情弹窗、禁用/启用用户
- 使用的 API`pageUsers``/system/user/page`)、`updateUserStatus``/system/user/status`,参数 userId + status0=正常 1=禁用)
- 入口:`src/pages/store/center/index.tsx` FEATURE_CARDS 中,在 VIP会员审核上方加了"用户管理"卡片(蓝色主题 👥 图标)
- 路由注册:`src/app.config.ts` 新增 `pages/store/users/index`
## 禁用用户拦截(防止被禁用用户仍可浏览小程序)
- 新增工具函数:`src/utils/auth.ts``isUserDisabled(user)``blockDisabledUser(user)`(清登录态+弹窗+跳转登录页)
- 拦截层级:
1. **UserContext 启动校验**`src/contexts/UserContext.tsx`init 时先用缓存快速显示,再异步调 `getUserInfo()` 校验 status若被禁用则 `blockDisabledUser` 拦截
2. **UserContext refreshUser / syncFromStorage / loginUser**:均加了 `isUserDisabled` 检查
3. **登录 API**`src/api/passport/login/index.ts``login()``loginBySms()``saveStorageByLoginUser` 前检查 status被禁用则 reject
4. **登录页面**`passport/login.tsx``passport/register.tsx``pages/store/login/index.tsx` 在保存登录态前检查 status被禁用则弹窗拦截
- 用户状态约定:`status === 0` 正常,`status === 1` 禁用(通过 `updateUserStatus(userId, status)` 接口控制)
## 微信隐私协议chooseImage errno:112修复
- 报错:`MiniProgramError {errMsg:"chooseImage:fail api scope is not declared in the privacy agreement", errno:112}`(基础库 3.16.1+ 强制)
- 影响范围:所有调用 `Taro.chooseImage` 的地方,本轮修复统一入口 `uploadFile`(商品管理页、订单评价、售后申请、门店订单都走这个)
- 修复三处:
1. **`src/app.config.ts`** — `requiredPrivateInfos` 补齐 `chooseImage``chooseMedia`
2. **`src/api/system/file/index.ts`** — `uploadFile``ensurePrivacyAuthorized()` 预检(`getPrivacySetting` + `requirePrivacyAuthorize`
3. **`src/app.tsx`** — `useLaunch` 里注册 `Taro.onNeedPrivacyAuthorization` 回调,弹自定义 showModal 协议弹窗,同意 resolve({event:'agree'}) 拒绝 resolve({event:'disagree'})
- 旧基础库兼容:`typeof wxAny.requirePrivacyAuthorize !== 'function'` 时直接放行
- 后续若别的页面直接调 `Taro.chooseImage`(如 `evaluate/index.tsx``after-sale/apply/index.tsx``store/orders/index.tsx`),仍要单独加 `ensurePrivacyAuthorized` 预检