xiaoyong931011
2022-09-06 311a077f30f6d3970428e9b3ba2dbd7d95ac795a
20220902
1 files modified
188 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 188 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -75,6 +75,7 @@
    private final MallMemberMapper mallMemberMapper;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final MallLeaderAchieveMapper mallLeaderAchieveMapper;
    private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -705,93 +706,112 @@
        if(1 != deliveryState){
            return new FebsResponse().fail().message("订单不是待配送状态");
        }
        QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("member_id",member.getId());
        objectQueryWrapper.eq("order_id",mallOrderInfo.getId());
        MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper);
        MallRefundEntity mallRefundEntity = new MallRefundEntity();
        if(ObjectUtil.isEmpty(mallRefund)){
            mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_r");
            mallRefundEntity.setMemberId(member.getId());
            mallRefundEntity.setOrderId(mallOrderInfo.getId());
            mallRefundEntity.setType(1);
            mallRefundEntity.setState(3);
            mallRefundEntity.setAmount(mallOrderInfo.getAmount());
            mallRefundMapper.insert(mallRefundEntity);
        }else{
            if(mallRefund.getState() == 1){
                return new FebsResponse().fail().message("订单已退款");
            }
            if(mallRefund.getState() == 3){
                return new FebsResponse().fail().message("订单退款中");
            }
            if(mallRefund.getState() == 2){
                mallRefundEntity.setId(mallRefund.getId());
                mallRefundEntity.setRefundNo(mallRefund.getRefundNo());
                mallRefundEntity.setMemberId(mallRefund.getMemberId());
                mallRefundEntity.setOrderId(mallRefund.getOrderId());
                mallRefundEntity.setType(mallRefund.getType());
        //根据子订单生成退款记录
        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id);
        if(CollUtil.isEmpty(mallOrderItemList)){
            return new FebsResponse().fail().message("订单不存在");
        }
        for(MallOrderItem mallOrderItem : mallOrderItemList){
            QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
            objectQueryWrapper.eq("member_id",member.getId());
            objectQueryWrapper.eq("order_id",mallOrderInfo.getId());
            objectQueryWrapper.eq("item_id",mallOrderItem.getId());
            MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper);
            MallRefundEntity mallRefundEntity = new MallRefundEntity();
            if(ObjectUtil.isEmpty(mallRefund)){
                mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId());
                mallRefundEntity.setMemberId(member.getId());
                mallRefundEntity.setOrderId(mallOrderInfo.getId());
                if("余额支付"==mallOrderInfo.getPayMethod()){
                    mallRefundEntity.setType(3);
                }else if("微信支付"==mallOrderInfo.getPayMethod()){
                    mallRefundEntity.setType(1);
                }else{
                    mallRefundEntity.setType(3);
                }
                mallRefundEntity.setState(3);
                mallRefundEntity.setAmount(mallRefund.getAmount());
                mallRefundMapper.updateById(mallRefundEntity);
                mallRefundEntity.setAmount(mallOrderItem.getAmount());
                mallRefundMapper.insert(mallRefundEntity);
            }else{
                if(mallRefund.getState() == 1){
                    return new FebsResponse().fail().message("订单已退款");
                }
                if(mallRefund.getState() == 3){
                    return new FebsResponse().fail().message("订单退款中");
                }
                if(mallRefund.getState() == 2){
                    mallRefundEntity.setId(mallRefund.getId());
                    mallRefundEntity.setRefundNo(mallRefund.getRefundNo());
                    mallRefundEntity.setMemberId(mallRefund.getMemberId());
                    mallRefundEntity.setOrderId(mallRefund.getOrderId());
                    mallRefundEntity.setType(mallRefund.getType());
                    mallRefundEntity.setState(3);
                    mallRefundEntity.setAmount(mallRefund.getAmount());
                    mallRefundMapper.updateById(mallRefundEntity);
                }
            }
        }
            ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto();
            apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId());
            apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
            apiLeaderRefundOrderDto.setAgreeState(1);
            iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
        //退款订单编号
        String orderNo = mallOrderInfo.getOrderNo();
        //退款退款编号
        String refundNo = mallRefundEntity.getRefundNo();
        //退款订单金额
        BigDecimal orderAmount = mallOrderInfo.getAmount();
        BigDecimal aa = new BigDecimal(100);
        int orderMoney = orderAmount.multiply(aa).intValue();
        //退款退款金额
        BigDecimal refundAmount = mallRefundEntity.getAmount();
        BigDecimal bb = new BigDecimal(100);
        int refundMoney = refundAmount.multiply(bb).intValue();
        Long refundId = mallRefundEntity.getId();
        MallRefundEntity mallRefundOld = mallRefundMapper.selectById(refundId);
        MallOrderInfo mallOrderInfoOld = this.baseMapper.selectByOrderNo(orderNo);
        //余额支付退款
        if(OrderPayMethodEnum.BALANCE.getName().equals(mallOrderInfo.getPayMethod())){
            mallRefundOld.setState(1);
            mallRefundMapper.updateById(mallRefundOld);
            mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue());
            this.baseMapper.updateById(mallOrderInfoOld);
            mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
            memberWalletService.add(refundAmount, member.getId(), "balance");
            mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId());
            return new FebsResponse().success().message("退款成功");
        }
        Boolean flag = false;
        Boolean debug = xcxProperties.getDebug();
        if (debug) {
            boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
            flag = b;
        } else {
            log.info("开始调用退款接口。。。退款编号为{}", refundNo);
            boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
            flag = b;
        }
        /**
         * 更新退款表
         * 更新订单表
         */
        if(flag){
            mallRefundOld.setState(1);
            mallRefundMapper.updateById(mallRefundOld);
            mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue());
            this.baseMapper.updateById(mallOrderInfoOld);
            mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId());
            mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
        }else{
            mallRefundOld.setState(2);
            mallRefundMapper.updateById(mallRefundOld);
            return new FebsResponse().fail().message("退款失败,请联系客服人员");
//            //退款订单编号
//            String orderNo = mallOrderInfo.getOrderNo();
//            //退款退款编号
//            String refundNo = mallRefundEntity.getRefundNo();
//            //退款订单金额
//            BigDecimal orderAmount = mallOrderInfo.getAmount();
//            BigDecimal aa = new BigDecimal(100);
//            int orderMoney = orderAmount.multiply(aa).intValue();
//
//            //退款退款金额
//            BigDecimal refundAmount = mallRefundEntity.getAmount();
//            BigDecimal bb = new BigDecimal(100);
//            int refundMoney = refundAmount.multiply(bb).intValue();
//
//            Long refundId = mallRefundEntity.getId();
//            MallRefundEntity mallRefundOld = mallRefundMapper.selectById(refundId);
//            MallOrderInfo mallOrderInfoOld = this.baseMapper.selectByOrderNo(orderNo);
//            //余额支付退款
//            if(OrderPayMethodEnum.BALANCE.getName().equals(mallOrderInfo.getPayMethod())){
//                mallRefundOld.setState(1);
//                mallRefundMapper.updateById(mallRefundOld);
//                mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue());
//                this.baseMapper.updateById(mallOrderInfoOld);
//                mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
//                memberWalletService.add(refundAmount, member.getId(), "balance");
//                mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId());
//                return new FebsResponse().success().message("退款成功");
//            }
//
//            Boolean flag = false;
//            Boolean debug = xcxProperties.getDebug();
//            if (debug) {
//                boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
//                flag = b;
//            } else {
//                log.info("开始调用退款接口。。。退款编号为{}", refundNo);
//                boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
//                flag = b;
//            }
//
//            /**
//             * 更新退款表
//             * 更新订单表
//             */
//            if(flag){
//                mallRefundOld.setState(1);
//                mallRefundMapper.updateById(mallRefundOld);
//                mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue());
//                this.baseMapper.updateById(mallOrderInfoOld);
//                mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId());
//                mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
//            }else{
//                mallRefundOld.setState(2);
//                mallRefundMapper.updateById(mallRefundOld);
//                return new FebsResponse().fail().message("退款失败,请联系客服人员");
//            }
        }
        return new FebsResponse().success().message("退款成功");
    }