aae0c03dd8
- image.ts 中 getCompressedImageUrl 增加缓存,避免列表重渲染时重复计算压缩 URL - shopGoods 页面用原生 img 标签替换 antdv a-image,支持浏览器懒加载减少首屏网络压力 - shopGoods 页面数据加载流程优化,取消表格自动首屏加载,改为手动触发,合并请求避免重复调用 - 首屏分类数据延迟加载,不阻塞首屏渲染,提升页面响应速度 - search.vue 中用 onMounted 替代 watch immediate,防止首次入场重复触发请求 - 新增商品封面图样式,保证图片大小固定且样式统一
58 lines
5.0 KiB
Markdown
58 lines
5.0 KiB
Markdown
# 项目长期记忆
|
||
|
||
## 项目结构
|
||
|
||
### 关键项目路径
|
||
- **管理后台**:`/Users/gxwebsoft/VUE/guilixu-admin`(Vue3 + Ant Design Vue)
|
||
- **用户端小程序**:`/Users/gxwebsoft/VUE/guilixu-taro`(Taro + React)
|
||
- **商家端小程序**:`/Users/gxwebsoft/VUE/xinlong-shop-taro`(Taro + React)
|
||
|
||
### ⚠️ 跨项目教训(重要)
|
||
- 商家端发货/门店/订单相关功能在 **xinlong-shop-taro**,不要改到 guilixu-taro
|
||
- 用户端订单详情等功能在 **guilixu-taro**
|
||
- 跨项目改动前,先用 grep/glob 在多个候选项目里确认"哪个项目有该功能源码",再动手
|
||
- 已发生两次误改 guilixu-taro 的教训(useClerk 全局上下文、订单详情 deliveryType 修复)
|
||
|
||
## 业务约定
|
||
|
||
### deliveryType 配送方式枚举
|
||
- `0` = 快递配送
|
||
- `1` = 无需发货 / 自提
|
||
- `2` = 商家送货
|
||
|
||
来源:管理后台 `src/views/shop/shopOrder/components/deliveryModal.vue`
|
||
|
||
## Java 后端架构(重要)
|
||
|
||
### 双后端 / MODULES_API_URL 模式(2026-07-25 分析结论)
|
||
- **mp-java**(`/Users/gxwebsoft/JAVA/mp-java`)= 独立的「modules 服务」,用 `modules` 库;cms(235类)、shop 等业务模块都在它这里,持续高频开发。
|
||
- **guilixu-java**(`/Users/gxwebsoft/JAVA/guilixu-java`)= 桂礼序主后端,用 `db_guilixu` 库;是 mp-java 的「子集分叉」。
|
||
- **guilixu-admin 前端已预设双基地址**:`SERVER_API_URL`(主后端) + `MODULES_API_URL`(localStorage ApiUrl / VITE_API_URL)。
|
||
- ⚠️ **运行时实际指向以 `localStorage ApiUrl` 为准**(2026-08-06 用户纠正):**guilixu-admin 的「商城」接口实际调 `https://shop-api.websoft.top`(= guilixu-java)**,并非 mp-java。**判断"改哪个后端才生效"不能默认 MODULES_API_URL=mp-java,必须查 ApiUrl 运行时配置。** cms 接口另走 `VITE_CMS_API_URL`=cms-api.websoft.top(mp-java)。
|
||
- **结论(仅限 cms 模块):guilixu-java 里的 cms 包(152类)是 mp-java cms 的旧分叉子集、且前端并不调它(前端调 modules 服务),属重复/死代码,应删除而非复制或扩展。**
|
||
- 复制「整个 cms 到 guilixu-java」不可行:mp-java 完整 cms 的 CmsApp/CmsWebsiteService 依赖 `project` 模块(guilixu-java 没有),会编译失败。
|
||
- 注意:mp-java 与 guilixu-java 是独立 git 仓库(`git.websoft.top/gxwebsoft/mp-java.git` 与 `guilixu-java.git`),各自独立部署、独立库。
|
||
|
||
### ⚠️ 双后端改动同步规则(2026-08-05 修正)
|
||
- **cms 模块**改动:仅 mp-java(guilixu-java 的 cms 是死代码)。
|
||
- **shop 等共享业务模块**(如 `ShopGoodsController` / Service / Mapper / task):**mp-java 与 guilixu-java 都有活代码且结构一致(同 `com.gxwebsoft.shop` 包)**,用户确认改动要**两端同步**(例:2026-08-05 shopGoods `/data` 统计优化,两端各改 6 处)。
|
||
- 改动前先 grep 两端确认文件是否存在,避免只改一处导致另一端行为不一致。
|
||
|
||
### ⚠️ 运费模板不发货地区需求(2026-08-06 结论,已按用户纠正修正)
|
||
- 需求:运费模板支持「不发货地区(黑名单)」,ShopExpressTemplateDetail 加 regionMode/regionIds 字段 + DeliveryRegionChecker 下单校验。
|
||
- **后端(guilixu-java)已完整实现**:entity/param/迁移SQL/DeliveryRegionChecker/RegionCodeResolver/OrderBusinessService 接入(第 87 行调用 validateDeliveryRegionIfNeeded)均就位。
|
||
- **关键事实(用户 2026-08-06 18:09 纠正):guilixu-admin 的「商城」接口实际调 `https://shop-api.websoft.top`(= guilixu-java)**。前端 shopExpressTemplateDetail 用默认 `@/utils/request`,baseURL = MODULES_API_URL = localStorage ApiUrl || VITE_API_URL;本部署的 ApiUrl 即 shop-api.websoft.top/api。故 guilixu-java 是生效后端,其实现正确生效,不是死代码。
|
||
- **结论:本功能(admin 配置)无需改 mp-java**(本部署 商城不走 mp-java)。
|
||
- **端到端风险(待确认)**:下单校验读 guilixu-java 的 db_guilixu。若「用户端小程序 guilixu-taro 的 下单」走 mp-java(不同库 modules),黑名单配置不被 下单看到、不发货地区不拦截,需确认 下单后端;若 下单也走 guilixu-java 则功能完整闭环。
|
||
- **剩余工作 = 纯前端(guilixu-admin)**:model 加 regionMode/regionIds + 新建双栏多选地区组件(替换单路径级联 RegionsSelect,支持"全国/指定配送/指定不发货"模式切换+多选多省)+ 编辑表单模式切换 + 列表回显模式与地区汇总。
|
||
- 接口方案文档:`docs/运费模板-不发货地区-接口方案.md`。
|
||
|
||
### shopGoods status 字段(上架/下架)
|
||
- `0` = 已上架 / 上架
|
||
- `1` = 待上架 / 下架
|
||
- `2` = 待审核,`3` = 审核不通过
|
||
- 编辑表单「状态」radio 绑定 `form.status`:0=上架、1=下架。
|
||
- 一键上下架、批量上下架均通过 `updateShopGoods({ ...record, status })` 直接改 status 实现(不额外用 isShow 字段)。
|
||
- 列表 tag 仍显示:0=已上架、1=待上架、2=待审核、3=审核不通过。
|
||
|