|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author wzy | 
|---|
|  |  |  | 
|---|
|  |  |  | private final IApiMallTeamLeaderService iApiMallTeamLeaderService; | 
|---|
|  |  |  | private final IMallElectronicFenceService iMallElectronicFenceService; | 
|---|
|  |  |  | private final MallElectronicFenceMapper mallElectronicFenceMapper; | 
|---|
|  |  |  | private final MallMemberCouponMapper mallMemberCouponMapper; | 
|---|
|  |  |  | private final MallGoodsCouponMapper mallGoodsCouponMapper; | 
|---|
|  |  |  | private final CouponGoodsMapper couponGoodsMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); | 
|---|
|  |  |  | //是否使用优惠卷 | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(addOrderDto.getMemberCouponId())){ | 
|---|
|  |  |  | Long memberCouponId = addOrderDto.getMemberCouponId(); | 
|---|
|  |  |  | MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(memberCouponId); | 
|---|
|  |  |  | if(ObjectUtil.isEmpty(mallMemberCoupon)){ | 
|---|
|  |  |  | throw new FebsException(mallMemberCoupon.getCouponName()+"无法使用"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Integer state = mallMemberCoupon.getState(); | 
|---|
|  |  |  | if(1 != state){ | 
|---|
|  |  |  | throw new FebsException(mallMemberCoupon.getCouponName()+"无法使用"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //卷是否和商品绑定 | 
|---|
|  |  |  | Long skuGoodsId = sku.getGoodsId(); | 
|---|
|  |  |  | Long couponId = mallMemberCoupon.getCouponId(); | 
|---|
|  |  |  | List<CouponGoods> couponGoods = couponGoodsMapper.selectByGoodIdAndCouponId(skuGoodsId, couponId); | 
|---|
|  |  |  | if(ObjectUtil.isEmpty(couponGoods)){ | 
|---|
|  |  |  | throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                        Long goodsId = mallMemberCoupon.getGoodsId(); | 
|---|
|  |  |  | //                        if(goodsId != sku.getGoodsId()){ | 
|---|
|  |  |  | //                            throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName()); | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(mallMemberCoupon.getCouponId()); | 
|---|
|  |  |  | if(ObjectUtil.isEmpty(mallGoodsCoupon)){ | 
|---|
|  |  |  | throw new FebsException(mallGoodsCoupon.getName()+"无法使用"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Integer stateCoupon = mallGoodsCoupon.getState(); | 
|---|
|  |  |  | if(2 != stateCoupon){ | 
|---|
|  |  |  | throw new FebsException(mallGoodsCoupon.getName()+"无法使用"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | BigDecimal costAmount = mallGoodsCoupon.getCostAmount(); | 
|---|
|  |  |  | BigDecimal realAmount = mallGoodsCoupon.getRealAmount(); | 
|---|
|  |  |  | if(amount.compareTo(costAmount) >= 0){ | 
|---|
|  |  |  | amount = (amount.subtract(realAmount).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(realAmount) : BigDecimal.ZERO); | 
|---|
|  |  |  | orderItem.setMemberCouponId(memberCouponId); | 
|---|
|  |  |  | mallMemberCoupon.setState(2); | 
|---|
|  |  |  | mallMemberCouponMapper.updateById(mallMemberCoupon); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderItem.setAmount(amount); | 
|---|
|  |  |  | orderItem.setCnt(item.getCnt()); | 
|---|
|  |  |  | orderItem.setOrderId(orderInfo.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | orderItem.setGoodsName(sku.getGoodsName()); | 
|---|
|  |  |  | orderItem.setSkuId(sku.getId()); | 
|---|
|  |  |  | orderItem.setState(1); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(member.getReferrerId())){ | 
|---|
|  |  |  | orderItem.setMemberInviteId(member.getReferrerId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(addOrderDto.getMemberInviteId())){ | 
|---|
|  |  |  | orderItem.setMemberInviteId(addOrderDto.getMemberInviteId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderItem.setStyleName(sku.getStyleName()); | 
|---|
|  |  |  | orderItem.setSkuName(sku.getSkuName()); | 
|---|
|  |  |  | orderItem.setSkuImage(sku.getSkuImage()); | 
|---|
|  |  |  | 
|---|
|  |  |  | Integer skuResult = mallGoodsSkuMapper.updateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt()); | 
|---|
|  |  |  | if(1 != skuResult){ | 
|---|
|  |  |  | throw new FebsException(sku.getSkuName() + "库存不足"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Long memberCouponId = mallOrderItem.getMemberCouponId(); | 
|---|
|  |  |  | MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(memberCouponId); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(mallMemberCoupon)){ | 
|---|
|  |  |  | mallMemberCoupon.setState(1); | 
|---|
|  |  |  | mallMemberCouponMapper.updateById(mallMemberCoupon); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | agentProducer.sendOrderCoupon(orderInfo.getId()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "4": | 
|---|
|  |  |  | if (orderInfo.getOrderType() != 2) { | 
|---|