无关风月
2024-11-15 353cf91d3679e68d9b8c07652e4f7791d606dbd4
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java
@@ -76,7 +76,7 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public ClientPlaceOrderVO placeOrder(Long targetId, Integer orderFrom, Long receiverId,
    public ClientPlaceOrderVO placeOrder(Long targetId, Integer orderFrom, Long receiverId, Long orderId,
            Integer balanceFlag, Integer payType,BigDecimal amount,Integer vipType) throws Exception {
        // 获取当前登录用户id
        LoginUser loginUser = tokenService.getLoginUser();
@@ -91,7 +91,6 @@
        AppUser appUser = getAppUserById(userId);
        ClientPlaceOrderVO clientPlaceOrderVO = new ClientPlaceOrderVO();
        Order order = new Order();
        order.setPayType(payType);
        // 购买冥想音频
        if (orderFrom == 1) {
            Meditation meditation = remoteMeditationService.getMeditationById(targetId,
@@ -101,30 +100,47 @@
            String wxOpenId = appUser.getWxOpenId();
            // 创建订单
            String orderNo = OrderUtil.getOrderNoForPrefix("MX");
            order.setOrderFrom(orderFrom);
            order.setBizOrderNo(orderNo);
            order.setBusinessId(meditation.getId());
            order.setAppUserId(userId);
            order.setRealPayAmount(meditation.getGeneralPrice());
            order.setPayType(payType);
            order.setTotalAmount(meditation.getGeneralPrice());
            order.setGiveUserId(receiverId);
            this.save(order);
            Long orderId = order.getId();
            if (orderId==null){
                order.setPayType(payType);
                order.setOrderFrom(orderFrom);
                order.setBizOrderNo(orderNo);
                order.setBusinessId(meditation.getId());
                order.setAppUserId(userId);
                order.setRealPayAmount(meditation.getGeneralPrice());
                order.setPayType(payType);
                order.setBuyContent("购买疗愈【"+meditationTitle+"】");
                order.setTotalAmount(meditation.getGeneralPrice());
                order.setGiveUserId(receiverId);
                this.save(order);
            }else{
                 order = this.getById(orderId);
                order.setBuyContent("购买疗愈【"+meditationTitle+"】");
            }
            Long orderId9 = order.getId();
            clientPlaceOrderVO.setOrderNo(orderNo);
            clientPlaceOrderVO.setId(orderId);
            clientPlaceOrderVO.setId(orderId9);
            // 如果冥想音频价格设定为单独收费,且需要使用余额抵扣
            if (balanceFlag.equals(1) && meditation.getChargeType().equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) {
                BigDecimal needPayAmount = handleBalancePayment(appUser,
                        meditation.getGeneralPrice(),
                        orderId);
                        orderId9);
                if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) {
                    clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode());
                    // 抵扣后金额为0 为余额支付
                    order.setPayType(4);
                    order.setRealPayAmount(meditation.getGeneralPrice());
                    order.setBuyContent("购买疗愈【"+meditationTitle+"】");
                    this.updateById(order);
                    return clientPlaceOrderVO;
                }else{
                    // 余额抵扣不完
                    OrderPaymentRecord one = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getPaymentType, 4)
                            .eq(OrderPaymentRecord::getOrderId, orderId9).one();
                    if (one!=null){
                        one.setPayAmount(meditation.getGeneralPrice().subtract(needPayAmount));
                        orderPaymentRecordService.updateById(one);
                    }
                }
                if (payType==1){
                    // 微信+余额
@@ -133,14 +149,15 @@
                    // 支付宝+余额
                    order.setPayType(6);
                }
                order.setBuyContent("购买疗愈【"+meditationTitle+"】");
                this.updateById(order);
                // 创建支付订单
                createPayment(payType, orderNo, needPayAmount, meditationTitle, detailDescription,
                        wxOpenId, orderId, clientPlaceOrderVO);
                        wxOpenId, orderId9, clientPlaceOrderVO);
            } else {
                // 创建支付订单
                createPayment(payType, orderNo, meditation.getGeneralPrice(), meditationTitle,
                        detailDescription, wxOpenId, orderId, clientPlaceOrderVO);
                        detailDescription, wxOpenId, orderId9, clientPlaceOrderVO);
            }
        }
        else if (orderFrom == 2){
@@ -152,30 +169,47 @@
            // 创建订单
            String orderNo = OrderUtil.getOrderNoForPrefix("KC");
            order.setOrderFrom(orderFrom);
            order.setBizOrderNo(orderNo);
            order.setGiveUserId(receiverId);
            order.setBusinessId(course.getId());
            order.setAppUserId(userId);
            order.setRealPayAmount(course.getGeneralPrice());
            order.setTotalAmount(course.getGeneralPrice());
            this.save(order);
            Long orderId = order.getId();
            if (orderId==null){
                order.setOrderFrom(orderFrom);
                order.setBizOrderNo(orderNo);
                order.setGiveUserId(receiverId);
                order.setBusinessId(course.getId());
                order.setAppUserId(userId);
                order.setBuyContent("购买课程【"+courseTitle+"】");
                order.setRealPayAmount(course.getGeneralPrice());
                order.setTotalAmount(course.getGeneralPrice());
                this.save(order);
            }else{
                order = this.getById(orderId);
                order.setBuyContent("购买课程【"+courseTitle+"】");
            }
            Long orderId8 = order.getId();
            clientPlaceOrderVO.setOrderNo(orderNo);
            clientPlaceOrderVO.setId(orderId);
            clientPlaceOrderVO.setId(orderId8);
            if (balanceFlag.equals(1) && course.getChargeType()
                    .equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) {
                BigDecimal needPayAmount = handleBalancePayment(appUser, course.getGeneralPrice(),
                        orderId);
                        orderId8);
                if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) {
                    clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode());
                    // 抵扣后金额为0 为余额支付
                    order.setPayType(4);
                    order.setRealPayAmount(course.getGeneralPrice());
                    order.setBuyContent("购买课程【"+courseTitle+"】");
                    this.updateById(order);
                    return clientPlaceOrderVO;
                }else{
                    // 余额抵扣不完
                    OrderPaymentRecord one = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getPaymentType, 4)
                            .eq(OrderPaymentRecord::getOrderId, orderId8).one();
                    if (one!=null){
                        one.setPayAmount(course.getGeneralPrice().subtract(needPayAmount));
                        orderPaymentRecordService.updateById(one);
                    }
                }
                if (payType==1){
                    // 微信+余额
@@ -184,13 +218,16 @@
                    // 支付宝+余额
                    order.setPayType(6);
                }
                order.setBuyContent("购买课程【"+courseTitle+"】");
                this.updateById(order);
                // 创建支付订单
                createPayment(payType, orderNo, needPayAmount, courseTitle, description,
                        wxOpenId, orderId, clientPlaceOrderVO);
                        wxOpenId, orderId8, clientPlaceOrderVO);
            } else {
                // 创建支付订单
                createPayment(payType, orderNo, course.getGeneralPrice(), courseTitle,
                        description, wxOpenId, orderId, clientPlaceOrderVO);
                        description, wxOpenId, orderId8, clientPlaceOrderVO);
            }
        }
        else if (orderFrom == 3){
@@ -217,12 +254,12 @@
            }
            order.setBuyContent(vipType1);
            this.save(order);
            Long orderId = order.getId();
            Long orderId7 = order.getId();
            clientPlaceOrderVO.setOrderNo(orderNo);
            clientPlaceOrderVO.setId(orderId);
            clientPlaceOrderVO.setId(orderId7);
            // 创建支付订单
            createPayment(payType, orderNo, amount, "购买会员",
                    vipType1, wxOpenId, orderId, clientPlaceOrderVO);
                    vipType1, wxOpenId, orderId7, clientPlaceOrderVO);
        }else {
            // 充值
@@ -237,12 +274,12 @@
            order.setPayType(payType);
            order.setBuyContent("充值");
            this.save(order);
            Long orderId = order.getId();
            Long orderId6 = order.getId();
            clientPlaceOrderVO.setOrderNo(orderNo);
            clientPlaceOrderVO.setId(orderId);
            clientPlaceOrderVO.setId(orderId6);
            // 创建支付订单
            createPayment(payType, orderNo, amount, "充值余额",
                    "充值余额", wxOpenId, orderId, clientPlaceOrderVO);
                    "充值余额", wxOpenId, orderId6, clientPlaceOrderVO);
        }
        return clientPlaceOrderVO;
    }
@@ -310,7 +347,9 @@
            // 调用第三方支付获取支付信息
            JSONObject payInfo = JuHeFuUtil.createPayment1(orderNo, payType,
                    needPayAmount.toString(), goodsTitle, goodsDesc,
                    IpUtils.getIpAddr(), wxOpenId, "https://xq.xqzhihui.com/api/order/client/order/order/base/callback");
                    IpUtils.getIpAddr(), wxOpenId,
                    //                "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback")
                    "https://xq.xqzhihui.com/api/order/client/order/order/base/callback");
            // 第三方支付记录
            OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
            paymentRecord.setOrderId(orderId);
@@ -332,7 +371,9 @@
            // 调用第三方支付获取支付信息
            JSONObject payInfo = JuHeFuUtil.createPayment(orderNo, payType,
                    needPayAmount.toString(), goodsTitle, goodsDesc,
                    IpUtils.getIpAddr(), wxOpenId, "https://xq.xqzhihui.com/api/order/client/order/order/base/callback");
                    IpUtils.getIpAddr(), wxOpenId,
                    //                "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback")
                    "https://xq.xqzhihui.com/api/order/client/order/order/base/callback");
            // 第三方支付记录
            OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
            paymentRecord.setOrderId(orderId);
@@ -488,6 +529,7 @@
            order.setBizOrderNo(orderNo);
            order.setAppUserId(userId);
            order.setTotalAmount(amount);
            order.setRealPayAmount(amount);
            String vipType1 ="";
            switch (vipType){
                case 1:
@@ -523,6 +565,8 @@
            order.setBizOrderNo(orderNo);
            order.setAppUserId(userId);
            order.setTotalAmount(amount);
            order.setRealPayAmount(amount);
            order.setBuyContent("充值");
            this.save(order);
            Long orderId = order.getId();