老师我这取消订单增加库存 写的有毛病没啊?

来源:12-4 取消订单,获取购物车中商品信息功能开发

MatchlessHero

2017-10-02

//取消订单
public ServerResponse cancle(Integer userId,Long orderNo){
    //判断订单是否存在
    Order order= orderMapper.selectByUserIdAndOrderNo(userId, orderNo);
    if(order == null){
        return ServerResponse.createByErrorMessage("该用户不存在该订单");
    }
    //判断订单状态
    if(order.getStatus() != Const.OrderStatusEnum.NO_PAT.getCode()){
        return ServerResponse.createByErrorMessage("该订单已付款,无法取消");
    }

    //拿到购物车被勾选的商品list
    List<Cart> cartList = cartMapper.selectCheckedCartByUserId(userId);

    ServerResponse serverResponse = this.getCartOrderItem(userId, cartList);
    if(!serverResponse.isSuccess()){
        //把错误返回给前端
        return serverResponse;
    }

    List<OrderItem> orderItemList = (List<OrderItem>) serverResponse.getData();

    //更改订单状态
    Order updateOrder = new Order();
    updateOrder.setUserId(userId);
    updateOrder.setStatus(Const.OrderStatusEnum.CANCELED.getCode());
    int rowCount = orderMapper.updateByPrimaryKeySelective(updateOrder);
    if(rowCount > 0){
    
        //取消顶到成功--->增加库存
      this.addProductStock(orderItemList);
      
        return ServerResponse.createBySuccess();
    }
    return ServerResponse.createByError();
}
//更新库存 增加
private void addProductStock(List<OrderItem> orderItemList){
    //遍历
    for(OrderItem orderItem : orderItemList){
        Product product = productMapper.selectByPrimaryKey(orderItem.getId());
        product.setStock(product.getStock() + orderItem.getQuantity());
        //更新
        productMapper.updateByPrimaryKeySelective(product);
    }
}


写回答

3回答

Geely

2017-10-02

看逻辑应该是ok的,同时自测一下哟,真赞你。不错不错。

0
0

qq_朱怕撞_03653136

2018-03-08

这里应该查询order_Item表,得到库存;然后再更新product表。

你加的那段逻辑,若遇到以下情况:

如果某用户有下单了但是未支付,购物车里又没有未下单的商品呢?

List<OrderItem> orderItemList = orderItemMapper.getByOrderNoUserId(orderNo,userId);

this.addProductStock(orderItemList);

3
1
Developer_Huang
同意楼上看法,创建订单的时候,已经清空了购物车。 所以取消订单的时候,应该是查订单项orderItem表。
2018-04-11
共1条回复

weibo_追求着快乐着_0

2018-07-09

//img.mukewang.com/szimg/5b4320bb0001a7c207150151.jpg

这里是不是搞错啦

0
0

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程