xiaoyong931011
2022-12-22 ff549073aeb7d2ff8adaf2e5aa152c631ceb3683
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -99,6 +99,9 @@
        if(memberLevelCode < goodsStarCode){
            throw new FebsException("会员等级不够");
        }
        if (MallGoods.ISSALE_STATUS_DISABLED.equals(goods.getIsSale())) {
            throw new FebsException(goods.getGoodsName() + "已下架");
        }
        /**
         * 会员一天最多下单次数
         */
@@ -114,135 +117,54 @@
            throw new FebsException("会员今日已无法购买");
        }
//        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
//        if (address == null) {
//            throw new FebsException("地址不存在");
//        }
        String orderNo = MallUtils.getOrderNum();
        MallOrderInfo orderInfo = new MallOrderInfo();
        orderInfo.setOrderNo(orderNo);
        orderInfo.setOrderTime(new Date());
        orderInfo.setMemberId(member.getId());
        orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
//        orderInfo.setName(address.getName());
//        orderInfo.setAddress(address.getArea() + address.getAddress());
//        orderInfo.setPhone(address.getPhone());
//        orderInfo.setLatitude(address.getLatitude());
//        orderInfo.setLongitude(address.getLongitude());
        orderInfo.setRemark(addOrderDto.getRemark());
        orderInfo.setOrderType(addOrderDto.getOrderType());
        //补贴金额
        orderInfo.setSubsidyAmount(goods.getSubsidyAmount());
        if (CollUtil.isEmpty(addOrderDto.getItems())) {
            throw new FebsException("参数错误");
        }
//        int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType();
//        if(2 == deliverType){
//            if(ObjectUtil.isEmpty(addOrderDto.getShopId())){
//                throw new FebsException("请选择门店");
//            }
//            Long shopId = addOrderDto.getShopId();
//            MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId);
//            if(ObjectUtil.isEmpty(mallShopApply)){
//                throw new FebsException("请选择门店");
//            }
//            if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){
//                throw new FebsException("请选择门店");
//            }
//            orderInfo.setShopId(shopId);
//        }
        this.baseMapper.insert(orderInfo);
        BigDecimal total = BigDecimal.ZERO;
        BigDecimal carriage = BigDecimal.ZERO;
        for (AddOrderItemDto item : addOrderDto.getItems()) {
            MallOrderItem orderItem = new MallOrderItem();
            // 积分商品提交订单
            if (addOrderDto.getOrderType() == 2) {
                MallGoods mallGoods = mallGoodsMapper.selectById(item.getSkuId());
                if (mallGoods.getStock() < item.getCnt()) {
                    throw new FebsException(mallGoods.getGoodsName() + "库存不足");
                }
                if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                    throw new FebsException(mallGoods.getGoodsName() + "已下架");
                }
                BigDecimal amount = mallGoods.getScore().multiply(BigDecimal.valueOf(item.getCnt()));
                orderItem.setAmount(amount);
                orderItem.setCnt(item.getCnt());
                orderItem.setOrderId(orderInfo.getId());
                orderItem.setPrice(mallGoods.getScore());
                orderItem.setGoodsId(mallGoods.getId());
                orderItem.setGoodsName(mallGoods.getGoodsName());
                orderItem.setStyleName(mallGoods.getGoodsName());
                orderItem.setSkuName(mallGoods.getGoodsName());
                orderItem.setSkuImage(mallGoods.getThumb());
                total = total.add(amount);
            } else {
                MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
        List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectSkuByGoodsId(goods.getId());
        for (MallGoodsSku sku : mallGoodsSkus) {
                MallOrderItem orderItem = new MallOrderItem();
                if (sku == null) {
                    throw new FebsException("购买商品或sku不存在");
                }
                if (sku.getStock() < item.getCnt()) {
                if (sku.getStock() < 1) {
                    throw new FebsException(sku.getSkuName() + "库存不足");
                }
                MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
                // 零撸专区购买
                if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
                    List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
                    if (CollUtil.isNotEmpty(items)) {
                        throw new FebsException("无法重复领取同一个商品");
                    }
                }
                if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                    throw new FebsException(mallGoods.getGoodsName() + "已下架");
                }
                BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(1));
                orderItem.setAmount(amount);
                orderItem.setCnt(item.getCnt());
                orderItem.setCnt(1);
                orderItem.setOrderId(orderInfo.getId());
                orderItem.setPrice(sku.getPresentPrice());
                orderItem.setGoodsId(sku.getGoodsId());
                orderItem.setGoodsName(sku.getGoodsName());
                orderItem.setGoodsName(goods.getGoodsName());
                orderItem.setSkuId(sku.getId());
                orderItem.setStyleName(sku.getStyleName());
                orderItem.setSkuName(sku.getSkuName());
                orderItem.setSkuImage(sku.getSkuImage());
                orderItem.setIsNormal(mallGoods.getIsNormal());
                orderItem.setIsNormal(goods.getIsNormal());
                orderItem.setCostPrice(sku.getCostPrice());
                total = total.add(amount);
                carriage = carriage.add(mallGoods.getCarriage());
                sku.setStock(sku.getStock() - item.getCnt());
                sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
                sku.setStock(sku.getStock() - 1);
                sku.setSkuVolume(sku.getSkuVolume() + 1);
                mallGoodsSkuMapper.updateById(sku);
                if (addOrderDto.getType() == 1) {
                if (1 == addOrderDto.getType() ) {
                    mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
                }
            }
            mallOrderItemMapper.insert(orderItem);
                mallOrderItemMapper.insert(orderItem);
        }
        orderInfo.setAmount(total);
//        if(2 == deliverType){
//            orderInfo.setDeliverType(2);
//            orderInfo.setCarriage(BigDecimal.ZERO);
//        }else{
//            orderInfo.setDeliverType(1);
//            orderInfo.setCarriage(carriage);
//        }
        BigDecimal presentPrice = new BigDecimal(goods.getPresentPrice()).setScale(2,BigDecimal.ROUND_DOWN);
        orderInfo.setAmount(presentPrice);
        this.baseMapper.updateById(orderInfo);
        agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);