当前位置: 首页 > news >正文

mall项目-购物车模块

一、模块位置与文件结构

ControllerOmsCartItemController.javamall-portal/.../controller/
Service 接口OmsCartItemService.javamall-portal/.../service/
Service 实现OmsCartItemServiceImpl.javamall-portal/.../service/impl/
实体OmsCartItem.javamall-mbg/.../model/
MapperOmsCartItemMapper.java + .xmlmall-mbg/.../mapper/
扩展 DomainCartProduct.java、CartPromotionItem.java、PromotionProduct.javamall-portal/.../domain/

二、数据模型(oms_cart_item 表)

idbigint主键
product_idbigint商品 ID(关联 pms_product)
product_sku_idbigintSKU ID(关联 pms_sku_stock)
member_idbigint会员 ID(关联 ums_member,归属用户)
quantityint购买数量
pricedecimal(10,2)添加时的快照价格
product_picvarchar商品主图(反范式冗余)
product_namevarchar商品名称(反范式冗余)
product_attrvarchar销售属性 JSON,如 [{"key":"颜色","value":"红色"}]
delete_statusint软删除标志:0=正常,1=已删除

设计特点:
反范式冗余:product_name、product_pic、product_brand 等字段冗余存储,避免查询时频繁 JOIN
软删除:物理记录永远保留,delete_status=1 表示删除
价格快照:price 在加入购物车时记录,不随商品价格变动而更新

三、API 接口一览

POST/cart/add添加商品到购物车
GET/cart/list获取购物车列表
GET/cart/list/promotion获取购物车列表(含促销信息)
GET/cart/update/quantity修改购物车商品数量
GET/cart/getProduct/{productId}获取商品规格(用于重新选择规格)
POST/cart/update/attr修改购物车商品规格
POST/cart/delete删除指定购物车商品
POST/cart/clear清空购物车

四、核心业务逻辑

1. 添加商品(add)

查询当前会员的购物车中是否存在 相同 productId + productSkuId 且未删除的记录
如果存在:累加数量(quantity = quantity + 1)
如果不存在:新增一条记录,冗余写入商品名称、图片、品牌等信息
整个操作在 @Transactional 事务中执行

2. 促销计算(OmsPromotionService.calcCartPromotion)

按 productId 分组,对每个商品计算最优促销
支持三种促销类型:
单品促销(promotionType=1):使用 SKU 上的 promotionPrice
阶梯打折(promotionType=3):如 "买3件打8折",基于 pms_product_ladder
满减优惠(promotionType=4):如 "满100减20",基于 pms_product_full_reduction
结果为 CartPromotionItem,包含 promotionMessage(促销描述)、reduceAmount(优惠金额)、realStock(实际库存)等信息

3. 修改规格(updateAttr)

软删除旧的购物车记录(deleteStatus=1)
清空 ID 后重新调用 add() 插入新记录
整个操作在 @Transactional 中执行,确保原子性

4. 成员数据隔离

所有操作均通过 UmsMemberService.getCurrentMember() 获取当前登录会员
每个方法都限定 memberId,用户只能操作自己的购物车数据

五、模块依赖关系

OmsCartItemController

OmsCartItemServiceImpl
├──→ OmsCartItemMapper (oms_cart_item 表的 CRUD)
├──→ UmsMemberService (获取当前认证会员)
├──→ PortalProductDao (查询商品详情 + SKU + 属性)
└──→ OmsPromotionService (促销优惠计算)
└──→ PortalProductDao (查询促销相关信息: ladder, full_reduction)
涉及的数据库表:
oms_cart_item — 购物车主表
pms_product / pms_sku_stock — 商品 / SKU 库存
pms_product_ladder / pms_product_full_reduction — 阶梯价 / 满减规则
ums_member — 会员用户

六、总结

购物车模块采用标准的 Controller → Service (接口+实现) → Mapper 分层架构,属于典型的 Spring Boot 单体后端实现。核心特点是:
1. 反范式设计减少 JOIN 查询
2. 软删除保障数据安全
3. 价格快照确保下单时价格一致
4. 与促销模块深度集成,支持单品促销、阶梯折扣、满减三种优惠方式

http://www.jsqmd.com/news/1038066/

相关文章:

  • 2026年精选:口碑靠谱的激光切割专用螺杆空压机厂家推荐 山东性价比之王 - 资讯纵览
  • Gemini Pro定价背后的AI服务真实成本逻辑
  • 重庆可燃气体报警器哪家强?六大品牌多维深度测评 - 资讯纵览
  • 搬家猫深耕北京搬家行业二十载 ,以中式匠心打造本土靠谱搬家品牌 - 信息热点
  • 2026年企业网站SEO基础优化能力评测:十大品牌搜索友好度与流量增长能力对比 - 资讯纵览
  • 抖音无水印下载器终极指南:从零开始构建个人视频资源库
  • 深入分析HCCL集合通信库中Ring AllReduce和Recursive Halving-Doubling两种通信算法在昇腾NPU多卡拓扑上的实现差异,探讨HCCS和RoCE物理链路对算法选择的约
  • 八汇达控股(山东):2026企业数字化营销新选择,GEO优化+豆包广告,助力品牌抢占AI流量高地 - 信息热点
  • 2026年长沙配电箱代理热门厂家选择指南:聚焦服务商解析 - 资讯纵览
  • 2026年全自动吨袋包装称推荐榜单:定量/FFS重膜/高速/底充式螺旋/锂电零排放/铜精粉吨包秤厂家实力解析 - 品牌发掘
  • 2026年 抚顺漏水检测 + 漏水维修|本地正规资质商家,抚顺大禹测漏查漏水检测,卫生间/地暖管/消防/自来水管道漏水检测全覆盖 - 资讯纵览
  • 合肥庐江县管道疏通|维小达|马桶疏通、蹲便器疏通、地漏疏通、洗菜盆疏通、洗手盆疏通、浴缸疏通、主管道清淤一站式养护服务 - 维小达科技
  • 1.ROS和ROS2是什么?
  • 深入浅出:计算机数据存储、数据类型与信号传输底层原理
  • 传统观念:牛市任何策略都赚钱。编程同一策略在牛,熊,震荡市分别回测,量化行情对策略有效性影响。
  • 2026国内双肩包批发定制工厂综合盘点:产能、定制能力与售后全维度评测 - 互联网科技品牌测评
  • 双变量热力图实战:用温湿度联合分布指导共享单车调度
  • 2026年6月北京学生毕业搬家、长短途搬家、居民家庭搬家、公司单位搬迁,同城搬家搬运专业搬家公司联系方式与选择指南 - 信息热点
  • 权威榜单出炉!2026 石家庄婚恋机构排名公布,将爱婚恋六项核心指标登顶行业榜首 - 星际AI
  • 证件照尺寸怎么调整?秒转工具箱内置模板直接选 - 效率工具研究所
  • 大数据工程师转 AI,这套课的数据处理模块够硬吗
  • Mermaid Live Editor终极指南:免费在线图表编辑神器,告别绘图烦恼
  • 2026武汉梅雨季节装修指南:旧房翻新防潮防霉全攻略 - 资讯纵览
  • 2026年深耕19年雕刻机真空泵源头厂家盘点,无中间商直供 - 资讯纵览
  • 克劳德4.8
  • 2026 石家庄正规婚介权威榜单出炉!6 家合规靠谱婚恋机构,告别婚托安心脱单 - 星际AI
  • 终极炉石传说插件完整指南:HsMod 55项功能深度解析与专业配置
  • 2026年PEEK注塑厂家:模具开发/精密零件/非标定制,采购选型综合实力分析 - 资讯纵览
  • 深度剖析Cursor Pro自动化管理工具:破解设备限制的实战指南
  • 世客通:外贸企业短视频营销的技术方案与运营实践