From 134d13688e4b6677133ba2d362d2978d8bda2b87 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 12 七月 2023 11:46:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 102 insertions(+), 13 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
index e147946..93feb54 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -6,7 +6,9 @@
 import com.dsh.course.feignclient.account.CoachClient;
 import com.dsh.course.feignclient.account.model.Coach;
 import com.dsh.course.feignclient.activity.BenefitVideoClient;
+import com.dsh.course.feignclient.activity.CouponClient;
 import com.dsh.course.feignclient.activity.model.BenefitsVideos;
+import com.dsh.course.feignclient.activity.model.Coupon;
 import com.dsh.course.feignclient.other.StoreClient;
 import com.dsh.course.feignclient.other.model.Store;
 import com.dsh.course.mapper.*;
@@ -20,8 +22,10 @@
 import com.dsh.course.model.vo.response.CourseDetailsResponse;
 import com.dsh.course.model.vo.response.CourseOfVideoResponse;
 import com.dsh.course.service.TCoursePackagePaymentService;
+import com.dsh.course.util.PayMoneyUtil;
 import com.dsh.course.util.ResultUtil;
 import com.dsh.course.util.StrUtils;
+import com.dsh.course.util.UUIDUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +33,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -74,6 +79,11 @@
     @Resource
     private TCoursePackageDiscountMapper tcpdMapper;
 
+    @Resource
+    private CouponClient client;
+
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
 
 
     /**
@@ -178,6 +188,7 @@
                 TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
                 Store store = stoClient.queryStoreById(coursePackage.getStoreId());
                 RegisterCourseVo registerCourseVo = new RegisterCourseVo();
+                registerCourseVo.setCoursePayId(tCoursePackagePayment.getId());
                 registerCourseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId());
                 registerCourseVo.setPackageImg(coursePackage.getCoverDrawing());
                 String storeAndCourse = coursePackage.getName()+"("+ store.getName() +")";
@@ -197,18 +208,16 @@
     }
 
     @Override
-    public CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId) {
+    public CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePayId, Integer appUserId) {
         CourseDetailsResponse response = new CourseDetailsResponse();
-        List<TCoursePackagePayment> tCoursePackagePayments = this.list(new QueryWrapper<TCoursePackagePayment>()
-                .eq("coursePackageId",coursePackageId )
-                .eq("appUserId",appUserId));
+        TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(coursePayId);
 
-        if (tCoursePackagePayments.size() > 0){
-            TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0);
+        if (null != tCoursePackagePayment){
             TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
             response.setCoursePackageId(tCoursePackagePayment.getCoursePackageId());
             response.setCoverDrawing(coursePackage.getCoverDrawing());
             response.setCoursePackageName(coursePackage.getName());
+            response.setCoursePayId(tCoursePackagePayment.getId());
             List<Integer> integers = StrUtils.dealStrToList(coursePackage.getClassWeeks());
             if (integers.size() > 0){
                 StringBuilder courWeeks = new StringBuilder("每");
@@ -282,16 +291,39 @@
 
     @Override
     public ResultUtil ContinuationOrpaymentCourse(Integer userIdFormRedis, ClasspaymentRequest request) {
-        // TODO: 2023/7/5 报名课程支付
+        TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(request.getCoursePayId());
+        String code = "";
+        if (tCoursePackagePayment.getPayStatus() == 1){
+            code = tCoursePackagePayment.getCode();
+        }else {
+            TCoursePackagePayment newPayment = new TCoursePackagePayment();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            newPayment.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5));
+            newPayment.setAppUserId(userIdFormRedis);
+            newPayment.setStudentId(request.getStuId());
+            newPayment.setCoursePackageId(request.getLessonId());
+            newPayment.setClassHours(tCoursePackagePayment.getClassHours());
+            newPayment.setOriginalPrice(tCoursePackagePayment.getOriginalPrice());
+            newPayment.setTotalClassHours(tCoursePackagePayment.getTotalClassHours());
+            newPayment.setLaveClassHours(tCoursePackagePayment.getTotalClassHours());
+            newPayment.setAbsencesNumber(0);
+            newPayment.setPayUserType(1);
+            newPayment.setPayStatus(1);
+            newPayment.setStatus(1);
+            newPayment.setState(1);
+            newPayment.setInsertTime(new Date());
+            this.baseMapper.insert(newPayment);
+            code = newPayment.getCode();
+        }
         switch (request.getPayType()){
             case 1:
-                WeChatPayment();
+                WeChatPayment(code,request);
                 break;
             case 2:
-                AlipayPayment();
+                AlipayPayment(code,request);
                 break;
             case 3:
-                PlaypaiGoldPayment();
+                PlaypaiGoldPayment(code,request);
                 break;
             default:
                 break;
@@ -300,15 +332,72 @@
     }
 
 
-    public void WeChatPayment(){
+    public void WeChatPayment(String code, ClasspaymentRequest request){
 
     }
 
-    public void AlipayPayment(){
 
+    public ResultUtil AlipayPayment(String code, ClasspaymentRequest request){
+        BigDecimal amount = BigDecimal.ZERO;
+        if (request.getUseConpon() == 1){
+            Coupon coupon = client.queryCouponById(request.getConponId());
+            // TODO: 2023/7/11 课包购买的微信支付
+        }
+
+        ResultUtil alipay = payMoneyUtil.alipay("课包购买", "", "", code, amount.toString(),
+                "/base/coursePackage/alipayNewPaymentCallback");
+//        if(alipay.getCode() == 200){
+//            new Thread(new Runnable() {
+//                @Override
+//                public void run() {
+//                    try {
+//                        int num = 1;
+//                        int wait = 0;
+//                        while (num <= 10){
+//                            int min = 5000;
+//                            wait += (min * num);
+//                            Thread.sleep(wait);
+//                            TCoursePackagePayment coursePackagePayment = couPayClient.getCoursePackagePaymentByCode(code);
+//                            if(coursePackagePayment.getPayStatus() == 2){
+//                                break;
+//                            }
+//                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
+//                            if(resultUtil.getCode() == 200 && coursePackagePayment.getPayStatus() == 1){
+//                                /**
+//                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+//                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+//                                 * TRADE_SUCCESS(交易支付成功)、
+//                                 * TRADE_FINISHED(交易结束,不可退款)
+//                                 */
+//                                Map<String, String> data1 = resultUtil.getData();
+//                                String s = data1.get("tradeStatus");
+//                                String tradeNo = data1.get("tradeNo");
+//                                if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
+//                                    coursePackagePayment.setState(3);
+//                                    couPayClient.delPaymentCoursePackage(coursePackagePayment.getId());
+//                                    break;
+//                                }
+//                                if("TRADE_SUCCESS".equals(s)){
+//                                    coursePackagePayment.setPayStatus(2);
+//                                    coursePackagePayment.setOrderNumber(tradeNo);
+//                                    couPayClient.updatePaymentCoursePackage(coursePackagePayment);
+//                                    break;
+//                                }
+//                                if("WAIT_BUYER_PAY".equals(s)){
+//                                    num++;
+//                                }
+//                            }
+//                        }
+//                    }catch (Exception e){
+//                        e.printStackTrace();
+//                    }
+//                }
+//            }).start();
+//        }
+        return alipay;
     }
 
-    public void PlaypaiGoldPayment(){
+    public void PlaypaiGoldPayment(String code, ClasspaymentRequest request){
 
     }
 

--
Gitblit v1.7.1