From f88cfa02e36752e4acad7adc4b045155e8e50f21 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 08 十二月 2023 09:16:29 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java |  194 +++++++++++++++++++++++++++--------------------
 1 files changed, 111 insertions(+), 83 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 80f53c0..e148d1e 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
@@ -123,9 +123,9 @@
     @Override
     public List<CoursePackageListVo> queryCourseList(Integer uid, CoursePackageList coursePackageList) throws Exception {
         AppUser appUser = appUserClient.queryAppUser(uid);
-        Map<String, String> geocode = gdMapGeocodingUtil.geocode(coursePackageList.getLon(), coursePackageList.getLat());
-        String provinceCode = geocode.get("provinceCode");
-        String cityCode = geocode.get("cityCode");
+//        Map<String, String> geocode = gdMapGeocodingUtil.geocode(coursePackageList.getLon(), coursePackageList.getLat());
+//        String provinceCode = geocode.get("provinceCode");
+//        String cityCode = geocode.get("cityCode");
 //        QueryWrapper<TCoursePackage> wrapper = new QueryWrapper<TCoursePackage>().in("status", Arrays.asList(1, 2))
 //                .eq("auditStatus", 2).eq("state", 1).eq("provinceCode", provinceCode).eq("cityCode", cityCode);
 
@@ -581,7 +581,7 @@
      * @throws Exception
      */
     @Override
-    public CoursePackageInfo queryCourseInfo(Integer uid, Integer id, String lon, String lat) throws Exception {
+    public CoursePackageInfo queryCourseInfo(Integer uid, Integer id, String lon, String lat, Integer stuId) throws Exception {
         AppUser appUser = appUserClient.queryAppUser(uid);
         TCoursePackage coursePackage = this.getById(id);
         CoursePackageInfo coursePackageInfo = new CoursePackageInfo();
@@ -783,8 +783,13 @@
         });
         coursePackageInfo.setList(list);
 
-        Student student = studentClient.queryDefaultStudent(uid);
         StudentVo studentVo = new StudentVo();
+        Student student = null;
+        if(null != stuId){
+            student = studentClient.queryStudentById(stuId);
+        }else{
+            student = studentClient.queryDefaultStudent(uid);
+        }
         if (null != student) {
             studentVo.setId(student.getId());
             studentVo.setPhone(student.getPhone());
@@ -808,7 +813,7 @@
     @Override
     public ResultUtil paymentCourse(Integer uid, PaymentCourseVo paymentCourseVo) throws Exception {
         AppUser appUser = appUserClient.queryAppUser(uid);
-        CoursePackageInfo coursePackageInfo = queryCourseInfo(uid, paymentCourseVo.getId(), null, null);
+        CoursePackageInfo coursePackageInfo = queryCourseInfo(uid, paymentCourseVo.getId(), null, null, null);
         //校验是否已经报满
         Integer integer = coursePackagePaymentService.queryCountNumber(paymentCourseVo.getId());
         TCoursePackage course = coursePackageService.getById(paymentCourseVo.getId());
@@ -1018,24 +1023,29 @@
         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.setState(1);
-        coursePackageOrder.setInsertTime(new Date());
-        coursePackageOrderService.save(coursePackageOrder);
+        if (paymentCourseVo.getOrderId()==null) {
+            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.setState(1);
+            coursePackageOrder.setInsertTime(new Date());
+            coursePackageOrderService.save(coursePackageOrder);
+        }else {
+            code = coursePackageOrderService.getById(paymentCourseVo.getOrderId()).getCode();
+        }
 
         ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", coursePackagePaymentConfig.getId().toString(), code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
         if (alipay.getCode() == 200) {
+            String finalCode = code;
             new Thread(new Runnable() {
                 @Override
                 public void run() {
@@ -1049,11 +1059,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;
                             }
-                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code);
+                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(finalCode);
                             if (null != alipayTradeQueryResponse) {
                                 /**
                                  * WAIT_BUYER_PAY(交易创建,等待买家付款)、
@@ -1237,6 +1247,7 @@
                     coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + coursePackagePaymentConfig.getClassHours());
                     coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + coursePackagePaymentConfig.getClassHours());
                     coursePackageOrderStudent.setStatus(1);
+                    coursePackageOrderStudent.setInsertTime(new Date());
                     Integer validDays = coursePackage.getValidDays();
                     Calendar calendar = Calendar.getInstance();
                     calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime);
@@ -1310,7 +1321,6 @@
                 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                 SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 
-
                 //剩余课时
                 Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
                 //扣除课时数
@@ -1337,11 +1347,26 @@
                         continue;
                     }
 
-
                     //大于有效期不进行排课
                     if (calendar.getTimeInMillis() >= validity.getTime()) {
                         break;
                     }
+
+                    //检查是否有体验购课
+                    int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>()
+                            .eq("type", 3)
+                            .eq("appUserId", userId)
+                            .eq("studentId", sId)
+                            .eq("coursePackageId", tCoursePackage.getId())
+                            .eq("status", 1)
+                            .eq("DATE_FORMAT(classDate, '%Y-%m-%d')", format.format(time))
+                    );
+                    //有体验购课,不进行排课
+                    if(count != 0){
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
                     for (int j = 0; j < split.length; j++) {
                         //剩余数量不足以排课
                         if (laveClassHours.compareTo(codeTime) < 0) {
@@ -1697,9 +1722,8 @@
     @Override
     public Integer addCoursePackage(TCoursePackage coursePackage) {
         try {
-
+            coursePackage.setInsertTime(new Date());
             this.baseMapper.insert(coursePackage);
-
             if (coursePackage.getClassStartTime() != null && coursePackage.getClassStartTime() != "") {
                 //生成排课数据
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -1778,6 +1802,8 @@
     }
 
 
+    @Autowired
+    private ICoursePackageOrderStudentService orderStudentService;
     /**
      * 修改数据
      *
@@ -1794,65 +1820,67 @@
                 coursePackageSchedulingQueryWrapper.notIn("id", collect);
             }
             coursePackageSchedulingService.remove(coursePackageSchedulingQueryWrapper);
+            int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", coursePackage.getId()));
+            if (coursePackageId>0) {
+                this.baseMapper.updateById(coursePackage);
 
-            this.baseMapper.updateById(coursePackage);
-
-            //生成排课数据
-            Date date = null;
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()).last(" and classDate > now() order by classDate desc limit 0, 1"));
-            if (null != coursePackageScheduling) {
-                date = sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00");
-            } else {
-                date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
-            }
-            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
-            String classStartTime = coursePackage.getClassStartTime();
-            String[] split = classStartTime.split(":");
-            String classEndTime = coursePackage.getClassEndTime();
-            String[] split1 = classEndTime.split(":");
-            Calendar s = Calendar.getInstance();
-            s.setTime(date);
-            s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-
-            Calendar e = Calendar.getInstance();
-            e.setTime(date);
-            if (null != coursePackageScheduling) {
-                long time = sdf1.parse(sdf.format(new Date()) + " 00:00:00").getTime();
-                int d = Long.valueOf(14L - ((s.getTimeInMillis() - time) / 86400000L)).intValue();
-                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + d);
-            } else {
-                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14);
-            }
-            long timeInMillis = e.getTimeInMillis();
-
-            while (true) {
-                int w = s.get(Calendar.DAY_OF_WEEK);
-                WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
-                if (list.contains(weekEnum.getChineseName())) {
-                    Calendar classDate = Calendar.getInstance();
-                    classDate.setTime(s.getTime());
-                    classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                    classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                    classDate.set(Calendar.SECOND, 0);
-
-                    Calendar endDate = Calendar.getInstance();
-                    endDate.setTime(s.getTime());
-                    endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
-                    endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
-                    endDate.set(Calendar.SECOND, 0);
-
-                    CoursePackageScheduling coursePackageScheduling1 = new CoursePackageScheduling();
-                    coursePackageScheduling1.setCoursePackageId(coursePackage.getId());
-                    coursePackageScheduling1.setClassDate(classDate.getTime());
-                    coursePackageScheduling1.setEndDate(endDate.getTime());
-                    coursePackageScheduling1.setStatus(1);
-                    coursePackageSchedulingService.save(coursePackageScheduling1);
+                //生成排课数据
+                Date date = null;
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()).last(" and classDate > now() order by classDate desc limit 0, 1"));
+                if (null != coursePackageScheduling) {
+                    date = sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00");
+                } else {
+                    date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
                 }
+                List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
+                String classStartTime = coursePackage.getClassStartTime();
+                String[] split = classStartTime.split(":");
+                String classEndTime = coursePackage.getClassEndTime();
+                String[] split1 = classEndTime.split(":");
+                Calendar s = Calendar.getInstance();
+                s.setTime(date);
                 s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                if (s.getTimeInMillis() > timeInMillis) {
-                    break;
+
+                Calendar e = Calendar.getInstance();
+                e.setTime(date);
+                if (null != coursePackageScheduling) {
+                    long time = sdf1.parse(sdf.format(new Date()) + " 00:00:00").getTime();
+                    int d = Long.valueOf(14L - ((s.getTimeInMillis() - time) / 86400000L)).intValue();
+                    e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + d);
+                } else {
+                    e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14);
+                }
+                long timeInMillis = e.getTimeInMillis();
+
+                while (true) {
+                    int w = s.get(Calendar.DAY_OF_WEEK);
+                    WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
+                    if (list.contains(weekEnum.getChineseName())) {
+                        Calendar classDate = Calendar.getInstance();
+                        classDate.setTime(s.getTime());
+                        classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+                        classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+                        classDate.set(Calendar.SECOND, 0);
+
+                        Calendar endDate = Calendar.getInstance();
+                        endDate.setTime(s.getTime());
+                        endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
+                        endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
+                        endDate.set(Calendar.SECOND, 0);
+
+                        CoursePackageScheduling coursePackageScheduling1 = new CoursePackageScheduling();
+                        coursePackageScheduling1.setCoursePackageId(coursePackage.getId());
+                        coursePackageScheduling1.setClassDate(classDate.getTime());
+                        coursePackageScheduling1.setEndDate(endDate.getTime());
+                        coursePackageScheduling1.setStatus(1);
+                        coursePackageSchedulingService.save(coursePackageScheduling1);
+                    }
+                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+                    if (s.getTimeInMillis() > timeInMillis) {
+                        break;
+                    }
                 }
             }
         } catch (Exception e) {

--
Gitblit v1.7.1