Files
xinlong-shop-taro/.workbuddy/memory/2026-07-06.md
赵忠林 082646a613 feat(image): 全项目应用图片压缩优化
- 将图片显示统一替换为 getCompressedImageUrl 函数处理压缩
- 覆盖 35 个文件,包括 4 个组件和 31 个页面
- 主要组件:LazyImage、ProductCard、OrderCard、SkuSelector 内部自动压缩图片
- 主要页面:购物车、订单、积分、活动、拼团、秒杀、收藏、浏览历史等
- 跳过用户头像、二维码、商品详情大图及所有 Taro.previewImage 调用
- 调整压缩默认宽度为 300,保持质量90,启用压缩功能
2026-07-06 12:21:39 +08:00

7.2 KiB
Raw Permalink Blame History

2026-07-06 工作日志

修复收藏列表页面空白问题

  • 文件: src/api/shop/shopGoodsFavorite/index.ts
  • 问题: listShopGoodsFavoritepageShopGoodsFavorite 使用 request.get(默认 returnRaw: true),返回完整 { code, message, data } 对象而非业务数据,页面拿到对象当数组用导致 list.lengthundefined,始终显示空状态
  • 修复: 改为与同文件 addShopGoodsFavorite 等函数一致的模式 — 接收 ApiResult<T>,检查 res.code === 0 后返回 res.data
  • 注意: src/pages/favorite-list.tsxsrc/pages/user/favorite-list/index.tsx 的重复文件,内容完全一样

修复领券中心页面 SQL 报错

  • 错误: Unknown column 'venue_type' in 'field list'
  • 根因: 后端运行中的 ShopCoupon 实体类包含 venue_typevenue_iduse_countuse_duration 字段,但数据库表 shop_coupon 缺少这 4 列
  • 后端项目路径: /Users/gxwebsoft/JAVA/guilixu-java(实际运行项目)
  • 修复内容:
    1. 更新后端实体类 ShopCoupon.java,补充 receiveTargetreceiveUserIdsvenueTypevenueIduseCountuseDuration 字段(源码之前缺失,与运行时版本对齐)
    2. enabled 字段从 Boolean 改为 Integer,解决 Jackson 反序列化 "1" 失败
    3. 修正 ShopCouponController.page()expire_type 查询条件:0/1 改为 10/20(与数据库实际枚举值一致)
    4. 生成数据库迁移 SQLsrc/main/resources/sql/shop_coupon_add_venue_fields.sql
  • 需执行: 重新编译部署后端

补充商品数据解决微信审核驳回

背景

微信小程序审核被驳回:「积分商城」页面无具体运营内容。根本原因是 tenant_id=10611鑫龙家电下没有任何商品分类和商品数据。

数据创建

通过 Python + pymysql 直连 MySQL 数据库47.119.165.234:13308/modules为 tenant 10611 创建:

  • 5 个一级分类:大家电、厨房电器、生活电器、个护健康、智能设备
  • 15 个二级分类:冰箱、洗衣机、空调、电视、电饭煲、微波炉、抽油烟机、吸尘器、电风扇、加湿器、电动牙刷、理发器、智能音箱、智能门锁、智能手表
  • 34 个商品(全部 status=0 上架):
    • 每个分类 2-3 个商品
    • 包含真实品牌名(美的、海尔、格力、小米、华为等)、型号、规格
    • 三档价格price到手价、sale_price市场价划线、dealer_priceVIP 价)
    • 12 个商品标记为推荐recommend=1
    • 图片复用 oss.wsdns.cn 已有图片 URL
    • 商品详情为 HTML 格式,含商品描述和图片
    • 轮播图字段files为 JSON 数组格式
  • 分类 count 字段已同步更新

注意事项

  • 图片是复用其他租户的商品图片,后续可替换为真实商品图
  • 商品数据为模拟数据,用于通过审核,后续可在后台管理系统中编辑替换

修复门店商品管理页 Tab 标签不一致

  • 文件: src/pages/store/goods/index.tsx
  • 问题: 商品状态 status=0 在后端定义是「已上架」,但页面 Tab 标签写的是「出售中」,与商品状态标签文字不一致
  • 修复: Tab「出售中」→「已上架」让 Tab 标签与商品状态文字保持一致
  • 附带修复: src/api/shop/shopGoods/model/index.tsShopGoodsParam.status 注释从「0上架 1下架」改为「0上架 1待上架 2待审核 3审核不通过」

门店商品管理页编辑弹窗补充会员价字段

  • 文件: src/pages/store/goods/index.tsx
  • 问题: 编辑弹窗只有到手价和市场价缺少会员价dealerPrice输入框
  • 修复:
    1. editForm state 新增 dealerPrice: ''
    2. openEditModal 中填充 dealerPrice: goods.dealerPrice || ''
    3. 表单 UI 在市场价和库存之间新增会员价输入框
    4. submitEdit 提交时携带 dealerPrice

修复门店商品管理页选择分类需点击两次才生效

  • 文件: src/pages/store/goods/index.tsx
  • 问题: handleSelectCategory 中先 setSelectedCategory 再立即调用 loadGoods,但 loadGoods 通过闭包读取到的 selectedCategory 仍是旧值,导致第一次点击实际用的是上次选中的分类
  • 修复: loadGoods 增加可选参数 categoryIdhandleSelectCategory 选择分类后直接把新的 cat?.categoryId 传入 loadGoods,避免闭包取到旧状态

门店商品管理页添加图片上传/更换功能

  • 文件: src/pages/store/goods/index.tsx
  • 问题: 编辑弹窗只能修改价格库存等字段,缺少商品图片上传和更换功能
  • 修复:
    1. 引入 uploadFile from @/api/system/file
    2. 新增 uploadingImage 状态追踪上传进度
    3. 新增 handleUploadImage 函数:调用 uploadFile() 上传图片,获取返回的 path 更新 editGoods.image
    4. 编辑弹窗商品信息区:图片改为可点击触发上传,蒙层显示「更换」/「上传中...」,无图时显示照相机占位符
    5. submitEdit 提交时携带 editGoods.image 保存新图片

门店商品管理页添加轮播图上传/删除功能

  • 文件: src/pages/store/goods/index.tsx
  • 问题: 编辑弹窗缺少轮播图(files 字段)管理能力;实际 files 为对象数组 [{uid,url,status}],首次实现只按字符串数组解析导致图片无法显示
  • 修复:
    1. editForm 新增 files 状态,元素为 { uid?, url, status? } 对象
    2. openEditModal 解析 goods.files:兼容对象数组 [{uid,url,status}]、字符串数组 ["url"]、逗号分隔字符串三种格式
    3. 新增 handleAddBanner 上传新轮播图(生成 { uid: file.id, url, status: 'done' }handleRemoveBanner 删除指定位置轮播图
    4. 编辑弹窗新增轮播图区域:显示现有图片+删除按钮,底部「上传」入口
    5. submitEdit 提交时将 files 数组 JSON.stringify 后保存

新增图片压缩工具函数

  • 文件: src/utils/image.ts(新建)
  • 函数: getCompressedImageUrl(url, options?) — 给 OSS 图片 URL 拼接阿里云图片处理参数
  • 默认参数: width=750, quality=90, enabled=true
  • 安全处理: 空 URL 返回空串、已含 x-oss-process 不重复拼接、根据已有 query 参数自动选 ?/& 分隔符
  • 使用约定: 列表/卡片等缩略图场景使用此函数;预览大图(Taro.previewImage)直接用原 URL不调用此函数

全项目应用 getCompressedImageUrl

  • 修改范围: 35 个文件4 个组件 + 31 个页面文件)
  • 组件: LazyImage、ProductCard、OrderCard、SkuSelector — 组件内部自动压缩
  • 页面: shop/cart/checkout/category/index/seckill-list/group-buy-list/group-buy-detail, order/detail/evaluate/evaluate-detail/after-sale-, order-list, user/favorite-list/history-list/benefit-, points/, store/goods/orders, index/index/article-list, activity/event/, group-buy-list/detail, seckill-list/detail, history-list, favorite-list
  • 跳过(不压缩): 头像(user/user, user/member, user/profile, user/index, user/team, store/center)、二维码(share, user/promotion)、商品详情大图/轮播(shop/product-detail, shop/seckill-detail)、所有 Taro.previewImage 调用