From 7f2d3e9bcb89311a5cbfaa617fde71ea412f9bc3 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 16 Sep 2022 11:01:34 +0800 Subject: [PATCH] 20220902 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 171 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 99 insertions(+), 72 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 3b7b6ca..f9b0dc0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -76,10 +76,13 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallLeaderAchieveMapper mallLeaderAchieveMapper; private final IApiMallTeamLeaderService iApiMallTeamLeaderService; + private final IMallElectronicFenceService iMallElectronicFenceService; + private final MallElectronicFenceMapper mallElectronicFenceMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createOrder(AddOrderDto addOrderDto) { + synchronized(this){ MallMember member = LoginUserUtil.getLoginUser(); String takeUniqueCode = addOrderDto.getTakeUniqueCode(); if(StrUtil.isEmpty(takeUniqueCode)){ @@ -90,6 +93,17 @@ if(ObjectUtil.isEmpty(mallTeamLeader)){ throw new FebsException("请重新选择团长"); } + + //订单范围内才允许下单 + MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); +// MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode()); +// if(ObjectUtil.isNotEmpty(mallElectronicFence)){ +// String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(), +// mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid()); +// if("1".equals(inStr)){ +// throw new FebsException("不在当前团长的配送范围内"); +// } +// } String orderNo = MallUtils.getOrderNum(); MallOrderInfo orderInfo = new MallOrderInfo(); @@ -111,83 +125,92 @@ BigDecimal total = BigDecimal.ZERO; BigDecimal carriage = BigDecimal.ZERO; for (AddOrderItemDto item : addOrderDto.getItems()) { - MallOrderItem orderItem = new MallOrderItem(); + 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 (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() + "已下架"); - } + 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()); - orderItem.setState(1); + 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()); + orderItem.setState(1); - total = total.add(amount); - } else { - MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); - if (sku == null) { - throw new FebsException("购买商品或sku不存在"); - } + total = total.add(amount); + } else { + MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); + if (sku == null) { + throw new FebsException("购买商品或sku不存在"); + } - if (sku.getStock() < item.getCnt()) { - throw new FebsException(sku.getSkuName() + "库存不足"); - } + if (sku.getStock() < item.getCnt()) { + throw new FebsException(sku.getSkuName() + "库存不足"); + } - MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); + 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 (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() + "已下架"); + } + +// mallGoods.setStock(mallGoods.getStock() - item.getCnt()); +// mallGoods.setVolume(mallGoods.getVolume() + item.getCnt()); + Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), item.getCnt()); + if(1 != goodsResult){ + throw new FebsException(mallGoods.getGoodsName() + "库存不足"); + } + + BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); + orderItem.setAmount(amount); + orderItem.setCnt(item.getCnt()); + orderItem.setOrderId(orderInfo.getId()); + orderItem.setPrice(sku.getPresentPrice()); + orderItem.setGoodsId(sku.getGoodsId()); + orderItem.setGoodsName(sku.getGoodsName()); + orderItem.setSkuId(sku.getId()); + orderItem.setState(1); + orderItem.setStyleName(sku.getStyleName()); + orderItem.setSkuName(sku.getSkuName()); + orderItem.setSkuImage(sku.getSkuImage()); + orderItem.setIsNormal(mallGoods.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()); +// mallGoodsSkuMapper.updateById(sku); + Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),item.getCnt()); + if(1 != skuResult){ + throw new FebsException(sku.getSkuName() + "库存不足"); + } + if (addOrderDto.getType() == 1) { + mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId()); } } - - if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) { - throw new FebsException(mallGoods.getGoodsName() + "已下架"); - } - - BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); - orderItem.setAmount(amount); - orderItem.setCnt(item.getCnt()); - orderItem.setOrderId(orderInfo.getId()); - orderItem.setPrice(sku.getPresentPrice()); - orderItem.setGoodsId(sku.getGoodsId()); - orderItem.setGoodsName(sku.getGoodsName()); - orderItem.setSkuId(sku.getId()); - orderItem.setState(1); - orderItem.setStyleName(sku.getStyleName()); - orderItem.setSkuName(sku.getSkuName()); - orderItem.setSkuImage(sku.getSkuImage()); - orderItem.setIsNormal(mallGoods.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()); - mallGoodsSkuMapper.updateById(sku); - - if (addOrderDto.getType() == 1) { - mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId()); - } - } - mallOrderItemMapper.insert(orderItem); + mallOrderItemMapper.insert(orderItem); } //配送费 BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount(); @@ -197,7 +220,6 @@ } orderInfo.setAmount(total); - MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); orderInfo.setName(address.getName()); orderInfo.setPhone(address.getPhone()); orderInfo.setIsHome(addOrderDto.getIsHome()); @@ -214,6 +236,7 @@ agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); return orderInfo.getId(); + } } @@ -462,7 +485,8 @@ @Override public OrderDetailVo findOrderDetailsById(Long id) { MallOrderInfo orderInfo = this.baseMapper.selectOrderDetailsById(id); - if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { +// if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { + if (ObjectUtil.isNull(orderInfo)) { throw new FebsException("订单不存在"); } @@ -519,8 +543,11 @@ Long orderInfoId = orderInfo.getId(); List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId); if(CollUtil.isNotEmpty(mallOrderItemList)){ - DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); - BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); + + MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode()); + BigDecimal bonusPercent =new BigDecimal(mallTeamLeader.getBonusPercent()==null?"0":mallTeamLeader.getBonusPercent()); +// DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); +// BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); for(MallOrderItem mallOrderItem : mallOrderItemList){ Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState(); if(1 == state){ -- Gitblit v1.9.1