xiaoyong931011
2023-04-07 4e01b27642aa6195e4c8a5f49a64e76dd7dea06d
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -18,6 +18,7 @@
import cc.mrbird.febs.pay.model.AgreementPayDto;
import cc.mrbird.febs.pay.model.AgreementSignDto;
import cc.mrbird.febs.pay.model.UnipayDto;
import cc.mrbird.febs.pay.service.IAliPayService;
import cc.mrbird.febs.pay.service.IPayService;
import cc.mrbird.febs.pay.service.UnipayService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -68,9 +69,10 @@
    private final RedisUtils redisUtils;
    private final AgentProducer agentProducer;
    private final IPayService payService;
    private final IAliPayService payService;
    private final IMallAchieveService mallAchieveService;
    private final UnipayService unipayService;
    private final IPayService wechatPayService;
    private final MallMemberBankSignMapper mallMemberBankSignMapper;
    private final MallMemberBankMapper mallMemberBankMapper;
@@ -277,30 +279,15 @@
        String rcResult = "";
        switch (payOrderDto.getType()) {
            case "1":
                UnipayDto unipayDtoWx = new UnipayDto();
//                unipayDto.setAmount(new BigDecimal("0.01"));
                unipayDtoWx.setAmount(orderInfo.getAmount());
                unipayDtoWx.setFrpCode("WEIXIN_APP3");
                unipayDtoWx.setTradeMerchantNo("777180800385820");
                unipayDtoWx.setOrderNo(orderInfo.getOrderNo());
                List<MallOrderItem> itemsWx = orderInfo.getItems();
                if(CollUtil.isEmpty(itemsWx)){
                    unipayDtoWx.setProductName("商品");
                    orderInfo.setName("商品");
                }else{
                    unipayDtoWx.setProductName(itemsWx.get(0).getGoodsName());
                    orderInfo.setName(itemsWx.get(0).getGoodsName());
                }
                String unipayStrWx = unipayService.unipay(unipayDtoWx);
                if("fail" == unipayStrWx){
                    throw new FebsException("支付失败");
                }else{
//                    JSONUtil.parseObj(unipayStr);
                    JSONObject jsonObject = JSONUtil.parseObj(unipayStrWx);
                    payResultStr = (String) jsonObject.get("r7_TrxNo");
                    rcResult = (String) jsonObject.get("rc_Result");
                }
                payResultStr = wechatPayService.pay(orderInfo);
                orderInfo.setPayOrderNo(payResultStr);
//                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
//                orderInfo.setPayImage(payOrderDto.getPayImage());
                orderInfo.setPayMethod("微信支付");
                break;
            case "2":
@@ -342,6 +329,7 @@
                orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
                orderInfo.setPayTime(new Date());
                orderInfo.setPayResult("1");
                this.baseMapper.updateById(orderInfo);
                changeWallet(orderInfo.getId());
                /**
@@ -448,6 +436,7 @@
         * 所有合伙人补贴至消费礼包的三倍额度需要复购一次。
         */
        BigDecimal scoreSum = BigDecimal.ZERO;
        BigDecimal achieveSum = BigDecimal.ZERO;
        List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
        if (CollUtil.isNotEmpty(orderItems)) {
            for (MallOrderItem orderItem : orderItems) {
@@ -467,7 +456,30 @@
//                                    .multiply(new BigDecimal(orderItem.getCnt()))
//                                    .abs()
//                                    .setScale(2,BigDecimal.ROUND_DOWN));
                    String goodsName = mallGoods.getGoodsName();
                    /**
                     * 1-2档投资级别,2.5倍
                     * 3-4档投资级别,2.8倍
                     * 5-6档投资级别,3倍
                     * 目前紧急修改成按照商品名称
                     */
                    BigDecimal basePercent = new BigDecimal("3");
                    if(goodsName.equals("礼包一") || goodsName.equals("礼包二")){
                        basePercent = new BigDecimal("2.5");
                    }
                    if(goodsName.equals("礼包三") || goodsName.equals("礼包四")){
                        basePercent = new BigDecimal("2.8");
                    }
                    if(goodsName.equals("礼包五") || goodsName.equals("礼包六")){
                        basePercent = new BigDecimal("3");
                    }
                    scoreSum = scoreSum.add(
                            new BigDecimal(mallGoods.getPresentPrice())
                                    .multiply(new BigDecimal(orderItem.getCnt()))
                                    .multiply(basePercent)
                                    .abs()
                                    .setScale(2,BigDecimal.ROUND_DOWN));
                    achieveSum = achieveSum.add(
                            new BigDecimal(mallGoods.getPresentPrice())
                                    .multiply(new BigDecimal(orderItem.getCnt()))
                                    .abs()
@@ -496,7 +508,8 @@
                                    starSum,
                                    MoneyFlowTypeEnum.STAR.getValue(),
                                    orderInfo.getOrderNo(),
                                    FlowTypeEnum.STAR.getValue());
                                    FlowTypeEnum.STAR.getValue(),
                                    2);
                        }
                        if(starGet.compareTo(star) > 0){
                            BigDecimal subtract = starGet.subtract(star);
@@ -509,7 +522,8 @@
                                    starSum,
                                    MoneyFlowTypeEnum.STAR.getValue(),
                                    orderInfo.getOrderNo(),
                                    FlowTypeEnum.STAR.getValue());
                                    FlowTypeEnum.STAR.getValue(),
                                    2);
                        }
                    }else{
                        mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
@@ -518,7 +532,8 @@
                                starSum,
                                MoneyFlowTypeEnum.STAR.getValue(),
                                orderInfo.getOrderNo(),
                                FlowTypeEnum.STAR.getValue());
                                FlowTypeEnum.STAR.getValue(),
                                2);
                    }
                }
            }
@@ -526,24 +541,29 @@
             * 增加补贴额度
             */
            if (scoreSum.compareTo(BigDecimal.ZERO) > 0) {
                MallMember mallMember = memberMapper.selectById(memberId);
                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){
                    scoreSum = scoreSum.multiply(new BigDecimal(3));
                }
                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3
                &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){
                    scoreSum = scoreSum.multiply(new BigDecimal(2.8));
                }
                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){
                    scoreSum = scoreSum.multiply(new BigDecimal(2.5));
                }
//                MallMember mallMember = memberMapper.selectById(memberId);
//                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){
//                    scoreSum = scoreSum.multiply(new BigDecimal(3));
//                }
//                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3
//                &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){
//                    scoreSum = scoreSum.multiply(new BigDecimal(2.8));
//                }
//                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){
//                    scoreSum = scoreSum.multiply(new BigDecimal(2.5));
//                }
                memberWalletService.add(scoreSum, memberId, "totalScore");
                mallMoneyFlowService.addMoneyFlow(
                        memberId,
                        scoreSum,
                        MoneyFlowTypeEnum.TOTAL_SCORE.getValue(),
                        orderInfo.getOrderNo(),
                        FlowTypeEnum.TOTAL_SCORE.getValue());
                        "",
                        scoreSum.toString(),
                        memberId,
                        1,
                        FlowTypeEnum.TOTAL_SCORE.getValue(),
                        2);
            }
        }
@@ -582,13 +602,15 @@
        /**
         * 产生一条业绩记录
         */
        MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
        mallAchieveRecord.setMemberId(memberId);
        mallAchieveRecord.setAchieveTime(new Date());
        mallAchieveRecord.setAmount(orderInfo.getAmount().subtract(orderInfo.getScoreAmount()));
        mallAchieveRecord.setOrderId(orderId);
        mallAchieveRecord.setPayTime(orderInfo.getPayTime());
        mallAchieveRecordMapper.insert(mallAchieveRecord);
        if(achieveSum.compareTo(BigDecimal.ZERO) > 0){
            MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
            mallAchieveRecord.setMemberId(memberId);
            mallAchieveRecord.setAchieveTime(new Date());
            mallAchieveRecord.setAmount(achieveSum.subtract(orderInfo.getScoreAmount()));
            mallAchieveRecord.setOrderId(orderId);
            mallAchieveRecord.setPayTime(orderInfo.getPayTime());
            mallAchieveRecordMapper.insert(mallAchieveRecord);
        }
    }
    public static void main(String[] args) {