一、模块位置与文件结构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_productproduct_sku_idbigintSKU ID关联 pms_sku_stockmember_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_status1 表示删除价格快照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 分组对每个商品计算最优促销支持三种促销类型单品促销promotionType1使用 SKU 上的 promotionPrice阶梯打折promotionType3如 买3件打8折基于 pms_product_ladder满减优惠promotionType4如 满100减20基于 pms_product_full_reduction结果为 CartPromotionItem包含 promotionMessage促销描述、reduceAmount优惠金额、realStock实际库存等信息3. 修改规格updateAttr软删除旧的购物车记录deleteStatus1清空 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. 与促销模块深度集成支持单品促销、阶梯折扣、满减三种优惠方式