订单模块业务处理流程梳理记录

本文详细梳理了订单模块的业务处理流程,包括收集信息并准备数据,执行数据库操作如减少库存、删除购物车商品、新增订单及订单项,以及准备返回值给前端。在数据准备阶段,涉及订单对象初始化、属性赋值、订单项信息处理等;在数据库操作中,重点介绍了库存减少的逻辑和异常处理,以及购物车商品的删除操作。
摘要由CSDN通过智能技术生成

一.第一部分:收集信息,准备数据

1.先实例化OmsOrder对象

2.当前方法参数orderAddDTO有很多order需要的同名属性,直接赋值接口

3.orderAddDTO中属性比OmsOrder要少,缺少的属性要我们自己赋值或生成

4.可以编写一个专门的方法,来进行数据的收集,然后调用,到此为止,order的普通属性全部赋值完毕

(①给id赋值,订单业务不使用数据库自增列做id,而使用Leaf分布式序列生成系统
②生成订单号,直接使用UUID即可       

③赋值UserId,以后秒杀业务调用这个方法时,userId属性是会被赋值的,

所以这里要判断一下userId是否已经有值,没有则从SpringSecurity上下文中获得当前登录用户id

④为订单状态赋值,订单状态如果为null ,将其设默认值0,表示未支付

⑤为了保证下单时间和数据创建时间和最后修改时间一致,我们给他们赋相同的值

⑥验算实际支付金额,实际支付金额=原价-优惠+运费

)

5.下面要将参数orderAddDTO中包含的订单项(orderItem集合)信息赋值

6.首先取出这个集合,也就是当前订单中包含的所有商品的集合

7.加判断buweinull或者不为空-抛异常:如果当前订单中没有商品,就无法继续生成订单了

8.我们最终的目标是将当前订单中包含的订单项新增到数据库;   

   当前集合泛型是OrderItemAddDTO,我们编写的新增到数据库的方法泛型是OmsOrderItem;

   所以我们要编写代码将上集合转换为List<OmsOrderItem>集合

   声明List<OmsOrderItem>集合

   遍历OrderItemAddDTO集合:

        先实例化一个OmsOrderItem对象,以备赋值使用

        将同名属性赋值到orderItem对象中

        将addDTO对象中没有的id和orderId属性赋值

        将赋好值的对象添加到omsOrderItems集合中

第二部分:执行操作数据库的指令

1.减少库存

1)当前循环是订单中的一件商品,我们可以在此处对这个商品进行库存的减少

2)当前对象属性中是包含skuId和要购买的商品数量的,所以可以执行库存的修改

3)先获取skuId,修改库存是Dubbo调用的(调用商品库存模块操作数据库),然后根据返回结果进行判断,库存不足不能继续生成订单,抛出异常,终止事务进行回滚

2.删除勾选的购物车商品

实例化一个购物车实体,通过获取的商品id和用户id,执行删除的方法。

3.执行新增订单

4.新增订单中所有商品的订单项信息

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值