From ff549073aeb7d2ff8adaf2e5aa152c631ceb3683 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 22 Dec 2022 14:51:41 +0800 Subject: [PATCH] 20221221 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 114 +++++++++------------------------------------------------ 1 files changed, 18 insertions(+), 96 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 5832db5..9a2c5a5 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 @@ -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); @@ -371,7 +293,7 @@ Long payFlowId = mallMoneyFlowService.addMoneyFlow( member.getId(), orderInfo.getOrderNo(), - orderInfo.getAmount().negate().setScale(BigDecimal.ROUND_DOWN, 2), + orderInfo.getAmount().negate().setScale(2, BigDecimal.ROUND_DOWN), MallMoneyFlowTypeEnum.PAY.getCode(), MallMoneyFlow.STATUS_SUCCESS, MallMoneyFlow.IS_RETURN_N, -- Gitblit v1.9.1