| | |
| | | import cc.mrbird.febs.pay.service.IXcxPayService; |
| | | import cc.mrbird.febs.pay.util.WeixinServiceUtil; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | | import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService; |
| | | import cc.mrbird.febs.vip.service.IMallVipConfigService; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | |
| | | |
| | | 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; |
| | | |
| | | private final IMallVipConfigService mallVipConfigService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | orderItem.setSkuImage(mallGoods.getThumb()); |
| | | orderItem.setState(1); |
| | | |
| | | if (addOrderDto.getType() == 1) { |
| | | mallShoppingCartMapper.delBySkuId(mallGoods.getId(), member.getId()); |
| | | } |
| | | total = total.add(amount); |
| | | } else { |
| | | MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); |
| | |
| | | if(1 != goodsResult){ |
| | | throw new FebsException(mallGoods.getGoodsName() + "库存不足"); |
| | | } |
| | | BigDecimal amount = BigDecimal.ZERO; |
| | | if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){ |
| | | //普通用户使用原价购买 |
| | | amount = sku.getOriginalPrice().multiply(BigDecimal.valueOf(item.getCnt())); |
| | | }else{ |
| | | //合伙人使用折扣价 |
| | | amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); |
| | | |
| | | 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(); |
| | | 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()+"无法使用"); |
| | | } |
| | | 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()); |
| | | // } |
| | | BigDecimal costAmount = mallGoodsCoupon.getCostAmount(); |
| | | BigDecimal realAmount = mallGoodsCoupon.getRealAmount(); |
| | | if(amount.compareTo(costAmount) >= 0){ |
| | | Integer type = mallGoodsCoupon.getType(); |
| | | if(MallGoodsCoupon.TYPE_TWO == type){ |
| | | BigDecimal divideTime = amount.divide(costAmount, 0, BigDecimal.ROUND_DOWN);//累计减免次数 |
| | | BigDecimal multiply = divideTime.multiply(realAmount);//实际减免金额 |
| | | amount = (amount.subtract(multiply).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(multiply) : BigDecimal.ZERO); |
| | | } |
| | | if(MallGoodsCoupon.TYPE_ONE == type){ |
| | | amount = (amount.subtract(realAmount).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(realAmount) : BigDecimal.ZERO); |
| | | } |
| | | orderItem.setMemberCouponId(memberCouponId); |
| | | mallMemberCoupon.setState(2); |
| | | mallMemberCouponMapper.updateById(mallMemberCoupon); |
| | | } |
| | | } |
| | | // BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); |
| | | 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()); |
| | |
| | | return orderInfo.getId(); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | BigDecimal bigDecimal = new BigDecimal(980); |
| | | BigDecimal divide = bigDecimal.divide(new BigDecimal(100), 0, BigDecimal.ROUND_DOWN); |
| | | System.out.println(divide); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF); |
| | | this.baseMapper.updateById(orderInfo); |
| | | |
| | | if (orderInfo.getOrderType() == 2) { |
| | | |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue()); |
| | | memberWalletService.add(orderInfo.getAmount(), member.getId(), "prizeScore"); |
| | | return; |
| | | } |
| | | |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId()); |
| | | if(CollUtil.isNotEmpty(mallOrderItemList)){ |
| | |
| | | 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.setPayResult("1"); |
| | | orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2); |
| | | |
| | | agentProducer.sendOrderCoupon(orderInfo.getId()); |
| | | agentProducer.sendGetScoreMsg(orderInfo.getId()); |
| | | break; |
| | | case "4": |
| | | if (orderInfo.getOrderType() != 2) { |
| | |
| | | |
| | | this.baseMapper.updateById(orderInfo); |
| | | |
| | | |
| | | |
| | | // OrderStateDto orderStateDto = new OrderStateDto(); |
| | | // orderStateDto.setOrderNo(orderInfo.getOrderNo()); |
| | | // String productNames = getProductNames(orderInfo.getMemberId(), orderInfo.getId()); |
| | | // orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames); |
| | | // orderStateDto.setOrderState("已送达自提点"); |
| | | // orderStateDto.setTakeCode(orderInfo.getTakeCode()); |
| | | // String takeUniqueCode = orderInfo.getTakeUniqueCode(); |
| | | // MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode); |
| | | // orderStateDto.setAddressArea(mallTeamLeader.getAddressArea()); |
| | | // orderStateDto.setOpenId(mallMemberMapper.selectById(orderInfo.getMemberId()).getOpenId()); |
| | | // DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode()); |
| | | // orderStateDto.setTemplateId(dataDictionaryCustom.getValue()); |
| | | //// iXcxPayService.pushOrderToAddress(orderStateDto); |
| | | // iXcxPayService.uniformMessageSend(orderStateDto); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("orderInfo", payResultStr); |
| | | map.put("orderNo", orderInfo.getOrderNo()); |
| | |
| | | throw new FebsException("支付密码错误"); |
| | | } |
| | | |
| | | int reduce = memberWalletService.reduce(orderInfo.getAmount().add(orderInfo.getCarriage()), mallMember.getId(), field); |
| | | int reduce = memberWalletService.reduce(orderInfo.getAmount(), mallMember.getId(), field); |
| | | if (reduce == 2) { |
| | | throw new FebsException("余额不足"); |
| | | } |
| | |
| | | } |
| | | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | System.out.print(AgentLevelEnum.ZERO_LEVEL.name()); |
| | | } |
| | | |
| | | } |