老师我这取消订单增加库存 写的有毛病没啊?
来源: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回答
-
看逻辑应该是ok的,同时自测一下哟,真赞你。不错不错。
00 -
qq_朱怕撞_03653136
2018-03-08
这里应该查询order_Item表,得到库存;然后再更新product表。
你加的那段逻辑,若遇到以下情况:
如果某用户有下单了但是未支付,购物车里又没有未下单的商品呢?
List<OrderItem> orderItemList = orderItemMapper.getByOrderNoUserId(orderNo,userId);
this.addProductStock(orderItemList);312018-04-11 -
weibo_追求着快乐着_0
2018-07-09
这里是不是搞错啦
00
相似问题