nickchange
2023-11-24 18b58aaf9bd99cadd0e7f80fe5d80586f2f4831a
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -762,6 +762,7 @@
                if(appUser.getIsVip() == 1) {
                        if (coursePackagePaymentConfigVo.getVipPrice()<coursePackagePaymentConfigVo.getPaymentPrice()){
                            coursePackagePaymentConfigVo.setPaymentPrice(coursePackagePaymentConfigVo.getVipPrice());
                            coursePackagePaymentConfigVo.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
                        }
                                }
@@ -856,9 +857,10 @@
                paymentPrice = new BigDecimal(students.length).multiply(new BigDecimal(paymentPrice)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                Double playPaiCoin = coursePackagePaymentConfigVo.getPlayPaiCoin().doubleValue();//支付币
                playPaiCoin = new BigDecimal(students.length).multiply(new BigDecimal(playPaiCoin)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                if(paymentCourseVo.getPayType() != 3 && paymentPrice.compareTo(paymentCourseVo.getPrice()) != 0&&paymentCourseVo.getCouponId()!=null){
                    return ResultUtil.error("支付金额异常,请刷新后重试");
                }
//                if(paymentCourseVo.getPayType() != 3 && paymentPrice.compareTo(paymentCourseVo.getPrice()) != 0&&paymentCourseVo.getCouponId()!=null){
//                    return ResultUtil.error("支付金额异常,请刷新后重试");
//                }
                if(paymentCourseVo.getPayType() == 3 && playPaiCoin.compareTo(paymentCourseVo.getPrice()) != 0){
                    return ResultUtil.error("支付金额异常,请刷新后重试");
                }
@@ -1034,6 +1036,8 @@
        return weixinpay;
    }
    @Autowired
    private TOrderService orderService;
    /**
     * 课程支付宝支付
@@ -1048,6 +1052,10 @@
        String[] split = paymentCourseVo.getStudentIds().split(";");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        List<Long> pays = new ArrayList<>();
        int isContinue = 0;
        for (String s : split) {
//            TCoursePackagePayment coursePackagePayment = new TCoursePackagePayment();
//            coursePackagePayment.setCode(code);
@@ -1096,7 +1104,9 @@
            }
            if (coursePackagePaymentServiceOne==null) {
                isContinue = 1;
                TCoursePackagePayment coursePackagePayment = new TCoursePackagePayment();
                coursePackagePayment.setCode(code);
                coursePackagePayment.setAppUserId(uid);
@@ -1122,6 +1132,8 @@
                    sId = student.getId();
                }
                pays.add(coursePackagePayment.getId());
//                coursePackagePaymentServiceOne.setPlayPaiCoin(coursePackagePaymentServiceOne.getPlayPaiCoin()+paymentPrice.intValue());
//                addPackageStudent(paymentCourseVo.getId(), uid, Integer.valueOf(s), coursePackagePayment.getId());
@@ -1134,6 +1146,9 @@
                courseCounsum.setReason("购买课包");
                courseCounsumService.save(courseCounsum);
                if (hour!=0){
                    CourseCounsum courseCounsum1 = new CourseCounsum();
                    courseCounsum1.setPaymentId(coursePackagePayment.getId());
@@ -1145,9 +1160,16 @@
                }
                //保存订单
            }else {
                if (coursePackagePaymentServiceOne.getPayStatus()==1){
                    isContinue = 1;
                }
//                coursePackagePaymentServiceOne.setClassHours(coursePackagePaymentServiceOne.getClassHours()+coursePackagePaymentConfig.getClassHours());
//                coursePackagePaymentServiceOne.setOriginalPrice(coursePackagePaymentServiceOne.getOriginalPrice()+paymentCourseVo.getPrice());
//                coursePackagePaymentServiceOne.setPlayPaiCoin(coursePackagePaymentServiceOne.getPlayPaiCoin()+paymentPrice.intValue());
@@ -1155,11 +1177,14 @@
//                coursePackagePaymentServiceOne.setLaveClassHours(coursePackagePaymentServiceOne.getLaveClassHours()+coursePackagePaymentConfig.getClassHours());
                coursePackagePaymentServiceOne.setCode(code);
//
//                coursePackagePaymentServiceOne.setPayStatus(2);
                coursePackagePaymentServiceOne.setSalesName("续课");
                coursePackagePaymentServiceOne.setPayStatus(1);
//                coursePackagePaymentServiceOne.setSalesName("续课");
                coursePackagePaymentServiceOne.setAppUserId(null);
//                coursePackagePaymentServiceOne.setPayStatus(2);
                coursePackagePaymentService.updateById(coursePackagePaymentServiceOne);
                pays.add(coursePackagePaymentServiceOne.getId());
//
//                Integer sId = null;
//                Student student = studentClient.queryDefaultStudent(uid);
@@ -1181,6 +1206,25 @@
            }
        }
        //新的订单添加
        if (paymentCourseVo.getOrderId()==null) {
            TOrder order = new TOrder();
            order.setIsPay(1);
            order.setPayType(1);
            order.setAppUserId(uid);
            order.setPrice(paymentPrice);
            order.setCode(code);
            String paysStr = pays.stream()
                    .map(String::valueOf)
                    .collect(Collectors.joining(","));
            order.setPaysId(paysStr);
            orderService.save(order);
        }
        Student student = studentClient.queryDefaultStudent(uid);
        Integer sid=null;
        if(student!=null){
@@ -1190,6 +1234,7 @@
        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", student.getId().toString(), code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
        if(alipay.getCode() == 200){
            Integer finalSid = sid;
            int finalIsContinue = isContinue;
            new Thread(new Runnable() {
                @Override
                public void run() {
@@ -1204,12 +1249,17 @@
                            Thread.sleep(wait);
                            List<TCoursePackagePayment> list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("state", 1).eq("code", code).eq("payType", 2));
                            TCoursePackagePayment one = list.get(0);
                            List<TOrder> list1 = orderService.list(new QueryWrapper<TOrder>().eq("code", code).eq("payType", 1));
                            TOrder order = list1.get(0);
                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code);
                            if(one.getPayStatus() == 2){
                            if(order.getIsPay() == 2){
                                break;
                            }
                            if( one.getPayStatus() == 1){
                            if(order.getIsPay() == 1){
                                /**
                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
@@ -1221,11 +1271,6 @@
                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
                                if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
                                        for (TCoursePackagePayment coursePackagePayment : list) {
                                        if (coursePackagePayment.getStudentName()!=null){
                                        if (coursePackagePayment.getStudentName().equals("续课")){
                                            coursePackagePayment.setPayStatus(2);
                                        }
                                        }
                                        coursePackagePayment.setStatus(3);
                                    }
@@ -1239,9 +1284,20 @@
                                        coursePackagePayment.setAppUserId(null);
                                    }
                                    coursePackagePaymentService.updateBatchById(list);
                                    for (TOrder tOrder : list1) {
                                        tOrder.setIsPay(2);
                                        tOrder.setOrderNum(tradeNo);
                                    }
                                    orderService.updateBatchById(list1);
                                    for (String s1 : split) {
                                        TCoursePackagePayment coursePackagePaymentServiceOne = coursePackagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", s).eq("coursePackageId", paymentCourseVo.getId()));
                                        if (coursePackagePaymentServiceOne!=null) {
                                        TCoursePackagePayment coursePackagePaymentServiceOne = coursePackagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", s1).eq("coursePackageId", paymentCourseVo.getId()));
                                        if (finalIsContinue !=1) {
                                            TCoursePackageDiscount discount = coursePackageDiscountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("type",4).eq("coursePackageId", paymentCourseVo.getId()).last("limit 1"));
@@ -1300,7 +1356,6 @@
                                        }
                                    }
                                    coursePackagePaymentService.updateBatchById(list);
                                System.out.println("===========到达支付");
                                    // 2.0
                                    String[] coupons = coursePackagePaymentConfig.getCouponIds().split(",");
@@ -1310,9 +1365,7 @@
                                    userCouponClient.sendUserCoupon(new SendCouponReq(uid,coursePackagePaymentConfig.getCouponIds()));
                                    for (TCoursePackagePayment coursePackagePayment : list) {
                                        addPackageStudent(paymentCourseVo.getId(),uid, finalSid,coursePackagePayment.getId(),paymentCourseVo.getPrice());
                                        addPackageStudent(paymentCourseVo.getId(),uid, finalSid,coursePackagePayment.getId(),paymentPrice);
                                    }
                                    moneyOut(tradeNo,tradeNo);
@@ -1447,6 +1500,9 @@
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        List<Long> pays = new ArrayList<>();
        TCoursePackage course = coursePackageService.getById(paymentCourseVo.getId());
@@ -1525,6 +1581,8 @@
                    courseCounsumService.save(courseCounsum1);
                }
                pays.add(coursePackagePayment.getId());
            }else{
                coursePackagePaymentServiceOne.setClassHours(coursePackagePaymentServiceOne.getClassHours()+coursePackagePaymentConfig.getClassHours()+hour);
                if (coursePackagePaymentServiceOne.getOriginalPrice()!=null) {
@@ -1582,10 +1640,34 @@
                }
                pays.add(coursePackagePaymentServiceOne.getId());
            }
        }
        if (paymentCourseVo.getOrderId()==null) {
            TOrder order = new TOrder();
            order.setIsPay(1);
            order.setPayType(2);
            order.setAppUserId(appUser.getId());
            order.setPrice(paymentPrice);
            order.setCode(code);
            String paysStr = pays.stream()
                    .map(String::valueOf)
                    .collect(Collectors.joining(","));
            order.setPaysId(paysStr);
            orderService.save(order);
        }
        Integer playPaiCoins = appUser.getPlayPaiCoins();
        appUser.setPlayPaiCoins(playPaiCoins - paymentPrice.intValue());
        appUserClient.updateAppUser(appUser);