zoukankan      html  css  js  c++  java
  • 关于买家买入一件商品以后需要进行的逻辑

     public OrderDTO create(OrderDTO orderDTO) {
    
            String orderId = KeyUtil.genUniqueKey();
            BigDecimal orderAmount = new BigDecimal(BigInteger.ZERO);
    
    
            //1.查询商品(数量,价格)
            for (OrderDetail orderDetail : orderDTO.getOrderDetailList()) {
                ProductInfo productInfo = productService.findById(orderDetail.getProductId());
                if (null == productInfo) {
                    throw new SellerException(ResultEnum.PRODUCT_NOT_EXIST);
                }
                //2.计算总价
                orderAmount = productInfo.getProductPrice().multiply(new BigDecimal(orderDetail.getProductCount())).add(orderAmount);
                //3.订单详情入库
                BeanUtils.copyProperties(productInfo, orderDetail);
                orderDetail.setDetailId(KeyUtil.genUniqueKey());
                orderDetail.setOrderId(orderId);
                OrderDetail orderDetail1 = orderDetailRepository.save(orderDetail);
                orderDetailRepository.save(orderDetail);
            }
    
    
            //3.写入订单数据库
            OrderMaster orderMaster = new OrderMaster();
            BeanUtils.copyProperties(orderDTO, orderMaster);
            orderMaster.setOrderId(orderId);
            orderMaster.setOrderAmount(orderAmount);
            orderMaster.setOrderStatus(OrderStatusEnum.NEW.getCode());
            orderMaster.setPayStatus(PayStatusEnum.WAIT.getCode());
            orderMasterRepository.save(orderMaster);
    
            //todo  4.扣库存
    
            List<CartDTO> cartDTOList = orderDTO.getOrderDetailList()
                    .stream()
                    .map(e -> new CartDTO(e.getProductId(), e.getProductCount()))
                    .collect(Collectors.toList());
            productService.decreaseStock(cartDTOList);
            return null;
        }

    如果涉及到高并发,需要使用redis的锁机制,来防止出现超卖的现象

  • 相关阅读:
    使用PHP类库PHPqrCode生成二维码
    ABAP报表中建立过滤器,并相互切换
    MM定价计算方案确定详细图解
    MIGO 屏幕增强
    SE14 激活表时提示进程正在运行
    供应商寄售
    屏蔽VA01的TA類型的銷售部門和銷售組
    屏蔽標準TCODE上的一些字段的顯示、隱藏或者強制輸入(轉)
    采购订单流程
    SAP 中如何修改透明表数据
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/12000307.html
Copyright © 2011-2022 走看看