微服务电商-购物车、订单功能
一、购物车
启动类引入goods.feign接口路径、屏蔽数据库
数据:用MongoDB存储(弱一致性保证高性能;内存映射,低延迟;天然支持 JSON 文档,一次读写)
功能:
1.添加:void add(); //添加; List<Cart> list(); //显示购物车列表信息

2.将购物车中勾选的信息查询出来,传到订单页面,并传入CartFeign接口:
List<Cart> list(List<String> ids){}
3.下单后,删除购物车中结算的商品,并传入CartFeign接口:
void delete(List<String> ids){ MongoTemplate.remove()}
二、收件地址
创建mall-user-api,创建Address.java和表address映射。再用MP的QueryWrapper去构造查询数据库中的收件人地址。
三、下单
映射:mall-order-api:创建Order.java(订单)和OrderSku.java(订单明细),分别与表order_info和order_sku映射
功能:
1.(商品goods)库存递减:
SkuController:接收购物车(List<Cart> carts)中商品的的id和num。封装到SkuFeign中。
SkuMapper:为了防止超卖,用数据库update操作(行级锁)
@Update("update sku set num = num - #{num} where id = #{id} and num >= #{num}")
int dcount(@Param("id") String id, @Param("num") Integer num);
SkuService(Impl):for(Cart cart : carts){}循环扣减(可扩展性强(报错、定位......))
2.下单
启动类需扫描order.mapper包和feign接口包路径
// 1.查询购物车数据(cartFeign.list(order.getCartIds())再换成carts)
// 2.递减库存(skuFeign.dcount())
// 3.添加订单明细:for循环将Cart数据转换成OrderSku,并set缺失的属性
// 4.添加订单(在订单明细的for循环中计算出总数量和总金额),并set缺失的属性
// 5.删除购物车中的数据(cartFeign.delete())
更多推荐

所有评论(0)