From 18b58aaf9bd99cadd0e7f80fe5d80586f2f4831a Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期五, 24 十一月 2023 18:32:43 +0800
Subject: [PATCH] 11.24

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java |  123 ++++++++++++++++++++++++++++++++++------
 1 files changed, 104 insertions(+), 19 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index ecd2b5c..0cc4ea6 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/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("支付金额异常,请刷新后重试");
                 }
@@ -870,7 +872,7 @@
         if(null != couponId && paymentCourseVo.getPayType() != 3){
             UserCoupon userCoupon = userCouponClient.queryUserCouponById(couponId);
             if(userCoupon.getStatus() == 2){
-                return ResultUtil.error("优惠券已被核销");
+                return ResultUtil.error("优惠券已被使用");
             }
             Coupon coupon = couponClient.queryCouponById(userCoupon.getCouponId());
             long time = coupon.getEndTime().getTime();
@@ -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,9 +1640,33 @@
                 }
 
 
+                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());
@@ -1671,6 +1753,9 @@
                     break;
                 }
                 int wei = DateUtil.dayOfWeek(date)-1;
+                if (wei == 0){
+                    wei = 7;
+                }
                 if (week.contains(wei)) {
                     for (int i1 = 0; i1 < split.length; i1++) {
                         if (count == can) {

--
Gitblit v1.7.1