From 168d852672f8f671a01d6f0f053349d0d321ec7c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 03 一月 2024 11:43:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java |  151 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 104 insertions(+), 47 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 fd2c939..1d0b910 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
@@ -947,27 +947,40 @@
         CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
-        //生成支付订单
-        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
-        coursePackageOrder.setCode(code);
-        coursePackageOrder.setAppUserId(uid);
-        coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
-        coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
-        coursePackageOrder.setPayType(paymentCourseVo.getPayType());
-        coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
-        coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
-        coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
-        coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
-        coursePackageOrder.setPayUserType(1);
-        coursePackageOrder.setPayStatus(1);
-        coursePackageOrder.setPayUserId(uid);
-        coursePackageOrder.setStatus(1);
-        coursePackageOrder.setState(1);
-        coursePackageOrder.setInsertTime(new Date());
-        coursePackageOrderService.save(coursePackageOrder);
+        Long orderId = paymentCourseVo.getOrderId();
+        if(null == orderId){
+            //生成支付订单
+            CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
+            coursePackageOrder.setCode(code);
+            coursePackageOrder.setAppUserId(uid);
+            coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
+            coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
+            coursePackageOrder.setPayType(paymentCourseVo.getPayType());
+            coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
+            coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
+            coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
+            coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
+            coursePackageOrder.setPayUserType(1);
+            coursePackageOrder.setPayStatus(1);
+            coursePackageOrder.setPayUserId(uid);
+            coursePackageOrder.setStatus(1);
+            coursePackageOrder.setState(1);
+            coursePackageOrder.setInsertTime(new Date());
+            coursePackageOrderService.save(coursePackageOrder);
+            orderId = coursePackageOrder.getId();
+        }else{
+            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(orderId);
+            code = coursePackageOrder.getCode();
+            coursePackageOrder.setPayType(1);
+            coursePackageOrder.setAppUserId(null);
+            coursePackageOrder.setPayUserType(1);
+            coursePackageOrder.setPayUserId(uid);
+            coursePackageOrderService.updateById(coursePackageOrder);
+        }
 
         ResultUtil weixinpay = payMoneyUtil.weixinpay("购买课程", coursePackagePaymentConfig.getId().toString(), code, paymentPrice.toString(), "/base/course/weChatPaymentCourseCallback", "APP", "");
         if (weixinpay.getCode() == 200) {
+            String finalCode = code;
             new Thread(new Runnable() {
                 @Override
                 public void run() {
@@ -979,11 +992,11 @@
                             wait += (min * num);
                             Thread.sleep(wait);
                             CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
-                                    .eq("code", code).eq("state", 1));
+                                    .eq("code", finalCode).eq("state", 1));
                             if (coursePackageOrder1.getPayStatus() == 2) {
                                 break;
                             }
-                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
+                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(finalCode, "");
                             if (resultUtil.getCode() == 200 && coursePackageOrder1.getPayStatus() == 1) {
                                 /**
                                  * SUCCESS—支付成功,
@@ -1028,7 +1041,7 @@
         return weixinpay;
     }
 
-
+    private String smid = "2088330203191220";//平台支付宝商户号
     /**
      * 课程支付宝支付
      *
@@ -1042,9 +1055,10 @@
         CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+        String smid1="";
         //生成支付订单
-        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
         if (paymentCourseVo.getOrderId()==null){
+            CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
             coursePackageOrder.setCode(code);
             coursePackageOrder.setAppUserId(uid);
             coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
@@ -1062,10 +1076,26 @@
             coursePackageOrder.setInsertTime(new Date());
             coursePackageOrderService.save(coursePackageOrder);
         }else {
-            code = coursePackageOrderService.getById(paymentCourseVo.getOrderId()).getCode();
+            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(paymentCourseVo.getOrderId());
+            code = coursePackageOrder.getCode();
+            coursePackageOrder.setPayType(2);
+            coursePackageOrder.setAppUserId(null);
+            coursePackageOrder.setPayUserType(1);
+            coursePackageOrder.setPayUserId(uid);
+            coursePackageOrderService.updateById(coursePackageOrder);
         }
-
-        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", coursePackagePaymentConfig.getId().toString(), code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
+        // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号
+        Integer coursePackageId = paymentCourseVo.getId();
+        TCoursePackage byId = coursePackageService.getById(coursePackageId);
+        Store store = storeClient.queryStoreById(byId.getStoreId());
+        if (store.getOperatorId() == null ){
+            smid1 = smid;
+        }else{
+            smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId());
+        }
+        ResultUtil alipay = payMoneyUtil.alipay(smid1,"购买课程", "购买课程",
+                coursePackagePaymentConfig.getId().toString(),
+                code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
         if (alipay.getCode() == 200) {
             String finalCode = code;
             new Thread(new Runnable() {
@@ -1073,7 +1103,6 @@
                 public void run() {
                     try {
                         Thread.sleep(1000);
-
                         int num = 1;
                         int wait = 0;
                         while (num <= 10) {
@@ -1109,7 +1138,23 @@
                                     coursePackageOrderService.updateById(coursePackageOrder1);
                                     addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
                                     moneyOut(tradeNo,tradeNo,finalCode);
-                                    break;
+                                    // 根据课程id 查询这个课程属于哪个门店 属于哪个运营商
+                                    Integer id = paymentCourseVo.getId();
+                                    TCoursePackage byId = coursePackageService.getById(id);
+                                    Integer storeId = byId.getStoreId();
+                                    Store store = storeClient.queryStoreById(storeId);
+                                    Integer operatorId = store.getOperatorId();
+                                    if (operatorId==null){
+                                        String smid ="2088330203191220";
+                                            // 说明是平台的
+                                            payMoneyUtil.confirm(smid,finalCode,tradeNo,paymentPrice.toString());
+                                        break;
+                                    }else{
+                                        // 当前课程不属于门店 查询这个课程属于哪个门店 属于哪个运营商
+                                        String smidByOperatorId = storeClient.getSMIDByOperatorId(operatorId);
+                                        payMoneyUtil.confirm(smidByOperatorId,finalCode,tradeNo,paymentPrice.toString());
+                                        break;
+                                    }
                                 }
                                 if ("WAIT_BUYER_PAY".equals(s)) {
                                     num++;
@@ -1213,27 +1258,39 @@
         CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(paymentCourseVo.getCoursePackagePaymentConfigId());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
-        //生成支付订单
-        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
-        coursePackageOrder.setCode(code);
-        coursePackageOrder.setAppUserId(appUser.getId());
-        coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
-        coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
-        coursePackageOrder.setPayType(paymentCourseVo.getPayType());
-        coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
-        coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
-        coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
-        coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
-        coursePackageOrder.setPlayPaiCoin(paymentCourseVo.getPrice().intValue());
-        coursePackageOrder.setPayUserType(1);
-        coursePackageOrder.setPayStatus(2);
-        coursePackageOrder.setPayUserId(appUser.getId());
-        coursePackageOrder.setStatus(1);
-        coursePackageOrder.setState(1);
-        coursePackageOrder.setInsertTime(new Date());
-        coursePackageOrderService.save(coursePackageOrder);
+        Long orderId = paymentCourseVo.getOrderId();
+        if(null == orderId){
+            //生成支付订单
+            CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
+            coursePackageOrder.setCode(code);
+            coursePackageOrder.setAppUserId(appUser.getId());
+            coursePackageOrder.setStudentIds(paymentCourseVo.getStudentIds());
+            coursePackageOrder.setCoursePackageId(paymentCourseVo.getId());
+            coursePackageOrder.setPayType(paymentCourseVo.getPayType());
+            coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours());
+            coursePackageOrder.setOriginalPrice(paymentCourseVo.getPrice());
+            coursePackageOrder.setUserCouponId(paymentCourseVo.getCouponId());
+            coursePackageOrder.setCashPayment(new BigDecimal(paymentPrice));
+            coursePackageOrder.setPlayPaiCoin(paymentCourseVo.getPrice().intValue());
+            coursePackageOrder.setPayUserType(1);
+            coursePackageOrder.setPayStatus(2);
+            coursePackageOrder.setPayUserId(appUser.getId());
+            coursePackageOrder.setStatus(1);
+            coursePackageOrder.setState(1);
+            coursePackageOrder.setInsertTime(new Date());
+            coursePackageOrderService.save(coursePackageOrder);
+            orderId = coursePackageOrder.getId();
+        }else{
+            CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(orderId);
+            coursePackageOrder.setPayType(3);
+            coursePackageOrder.setAppUserId(null);
+            coursePackageOrder.setPayUserId(appUser.getId());
+            coursePackageOrder.setPayUserType(1);
+            coursePackageOrder.setPayStatus(2);
+            coursePackageOrderService.updateById(coursePackageOrder);
+        }
 
-        addCoursePackageOrderStudent(coursePackageOrder.getId(), coursePackagePaymentConfig);
+        addCoursePackageOrderStudent(orderId, coursePackagePaymentConfig);
         return ResultUtil.success();
     }
 

--
Gitblit v1.7.1