老师我这取消订单增加库存 写的有毛病没啊?
来源: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
相似问题
