| | |
| | | if(memberLevelCode < goodsStarCode){ |
| | | throw new FebsException("会员等级不够"); |
| | | } |
| | | if (MallGoods.ISSALE_STATUS_DISABLED.equals(goods.getIsSale())) { |
| | | throw new FebsException(goods.getGoodsName() + "已下架"); |
| | | } |
| | | /** |
| | | * 会员一天最多下单次数 |
| | | */ |
| | |
| | | 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); |
| | |
| | | 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, |