SpringBoot构建电商秒杀项目(四)交易模块开发

第四章 交易模块开发

4.1 交易模型管理–交易模型创建

1. 创建用户下单模型OrderModel

//用户下单的交易模型
public class OrderModel {
   
    //交易单号,例如2019052100001212,使用string类型
    private String id;

    //购买的用户id
    private Integer userId;

    //购买的商品id
    private Integer itemId;

    //购买时商品的单价
    private BigDecimal itemPrice;

    //购买数量
    private Integer amount;

    //购买总金额
    private BigDecimal orderPrice;
    
}

2. 数据库创建order_info表

类型 说明
id String 交易号
userId Integer 购买用户id
itemId Integer 购买商品id
itemPrice BigDecimal 购买商品单价
amount Integer 购买数量
orderPrice BigDecimal 购买总金额

3. mybatis generator生成数据库映射

mybatis generator生成order_info表及OrderDO
运行 mvn mybatis-generator:generate

<table tableName="order_info" domainObjectName="OrderDO"
       enableCountByExample="false"
       enableUpdateByExample="false"
       enableDeleteByExample="false"
       enableSelectByExample="false"
       selectByExampleQueryId="false" ></table>

4.2 交易模型管理-交易下单

1.OrderService接口部分

实现createOrder函数,通过用户id,商品id以及购买数量创建订单

 OrderModel createOrder(Integer userId, Integer itemId, Integer amount) throws BusinessException;

2.OrderServiceImpl实现类

用户下单的流程主要包括:

  • 校验下单状态,包括下单商品是否存在,用户是否合法,购买数量是否正确
  • 减少库存量(落单减库存)
  • 订单入库
  • 返回前端
1. 校验下单状态

校验下单商品是否存在是通过商品id在itemService查询itemModel,校验用户是否合法是用userId在userService里查找userModel,校验购买数量我们规定一个用户最少购买1件最多不超过100

 //1.校验下单状态,下单的商品是否存在,用户是否合法,购买数量是否正确
    ItemModel itemModel = itemService.getItemById(itemId);
    if (itemModel == null) {
   
        throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "商品信息不存在");
    }

    UserModel userModel = userService.getUserById(userId);
    if (userModel == null) {
   
        throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "用户信息不存在");
    }

    if (amount <= 0 || amount > 99) {
   
        throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "数量信息不存在");
    }
2. 落单减库存

减少库存量有两种方式:落单减库存以及支付减库存
对应的就是在用户下单成功还是支付成功后减少库存,支付成功后减库存因为支付时未加库存锁,所以会出现支付成功但因库存不够退单情况。而落单减库存则可能出现恶意刷单的情况。这里我们采取落单减库存的方式。

ItemStockMapper增加对item_stock数据库减操作
ItemStockMapper.xml

  <update id="decreaseStock"></
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值