From aa7815675bafe30675a93420f8f2776dabb48cfd Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期一, 27 十一月 2023 20:25:43 +0800
Subject: [PATCH] 11.27,5

---
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java |  272 ++++++++++++++++++++++++------------------------------
 1 files changed, 121 insertions(+), 151 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
index c0019bf..2097da1 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -1,11 +1,8 @@
 package com.dsh.course.controller;
 
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.course.entity.*;
 import com.dsh.course.entity.TAppUser;
@@ -15,8 +12,6 @@
 import com.dsh.course.feignclient.account.model.Student;
 import com.dsh.course.feignclient.account.model.TCourseInfoRecord;
 import com.dsh.course.feignclient.account.model.TStudent;
-import com.dsh.course.feignclient.activity.CouponClient;
-import com.dsh.course.feignclient.activity.model.Coupon;
 import com.dsh.course.feignclient.model.*;
 import com.dsh.course.feignclient.other.StoreClient;
 import com.dsh.course.feignclient.other.model.Store;
@@ -29,7 +24,6 @@
 import com.dsh.course.model.vo.request.*;
 import com.dsh.course.model.vo.response.*;
 import com.dsh.course.service.*;
-import com.dsh.course.service.impl.CoursePackageOrderStudentServiceImpl;
 import com.dsh.course.util.*;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -37,16 +31,10 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import net.bytebuddy.asm.Advice;
-import org.aspectj.weaver.ast.Var;
-import io.swagger.models.auth.In;
-import org.checkerframework.checker.units.qual.C;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 
@@ -135,11 +123,12 @@
 
     @Autowired
     private CoursePackageStudentService coursePackageStudentService;
+    @Autowired
+    private TOrderService orderService;
 
     private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
 
-    @Autowired
-    private TOrderService orderService;
+
 
     @Autowired
     private ICoursePackageOrderStudentService coursePackageOrderStudentService;
@@ -172,124 +161,54 @@
      */
     @RequestMapping("/base/coursePackagePayment/add")
     public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment) {
-        packagePayment.setInsertTime(new Date());
-        packagePayment.setInsertTime(new Date());
-        Integer studentId = packagePayment.getStudentId();
-        // 添加学员上课记录
-        CoursePackageStudent coursePackageStudent = new CoursePackageStudent();
-        TCoursePackagePayment one = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", packagePayment.getStudentId())
-                .orderByDesc("insertTime")
-                .last("LIMIT 1"));
 
-        if (one != null) {
-            Integer totalClassHours = one.getTotalClassHours();
-            Integer absencesNumber = one.getAbsencesNumber();
-            // 没有过期
-            if (one.getUseTime().after(new Date())) {
-                if (one.getLaveClassHours() - packagePayment.getClassHours() < 0) {
-                    return 5002;
-                }
-                packagePayment.setTotalClassHours(one.getTotalClassHours());
-                packagePayment.setLaveClassHours(one.getLaveClassHours() - packagePayment.getClassHours());
-                packagePayment.setAbsencesNumber(one.getAbsencesNumber());
+        //校验是否已经报满
+        Integer cpId = Integer.valueOf((int) packagePayment.getCoursePackageId());
+        Integer integer = coursePackagePaymentService.queryCountNumber(cpId);
+        TCoursePackage course = coursePackageService.getById(packagePayment.getId());
+        if (course.getType() != 3) {
+            if (integer + 1 > course.getMaxSubscribeNumber()) {
+                return 5001;
             }
-            packagePayment.setTotalClassHours(packagePayment.getClassHours());
-            packagePayment.setLaveClassHours(packagePayment.getClassHours());
-            packagePayment.setAbsencesNumber(one.getAbsencesNumber());
-        } else {
-            packagePayment.setTotalClassHours(packagePayment.getClassHours());
-            packagePayment.setLaveClassHours(packagePayment.getClassHours());
-            packagePayment.setAbsencesNumber(0);
+        }
+        // 如果重复购买 累加课时
+        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
+        coursePackageOrder.setAppUserId(packagePayment.getAppUserId());
+        coursePackageOrder.setStudentIds(String.valueOf(packagePayment.getStudentId()));
+        coursePackageOrder.setCoursePackageId(packagePayment.getCoursePackageId());
+        coursePackageOrder.setClassHours(packagePayment.getClassHours());
+        coursePackageOrder.setOriginalPrice(packagePayment.getOriginalPrice());
+        coursePackageOrder.setCashPayment(packagePayment.getCashPayment());
+        coursePackageOrder.setPlayPaiCoin(packagePayment.getPlayPaiCoin());
+        coursePackageOrder.setPayStatus(1);
+        coursePackageOrder.setState(1);
+        coursePackageOrder.setInsertTime(new Date());
+        coursePackageOrder.setSalesName(packagePayment.getSalesName());
+        coursePackageOrderService.save(coursePackageOrder);
+        TCoursePackage byId = coursePackageService.getById(packagePayment.getCoursePackageId());
+        if (byId.getType()==1){
+            CoursePackageOrderStudent coursePackageOrderStudent = new CoursePackageOrderStudent();
+            coursePackageOrderStudent.setAppUserId(packagePayment.getAppUserId());
+            coursePackageOrderStudent.setStudentId(packagePayment.getStudentId());
+            coursePackageOrderStudent.setCoursePackageId(packagePayment.getCoursePackageId());
+            coursePackageOrderStudent.setTotalClassHours(packagePayment.getClassHours());
+            coursePackageOrderStudent.setLaveClassHours(packagePayment.getClassHours());
+            coursePackageOrderStudent.setAbsencesNumber(0);
+            coursePackageOrderStudent.setDropoutsNumber(0);
+            coursePackageOrderStudent.setStatus(1);
+            coursePackageOrderStudent.setState(1);
+            coursePackageOrderStudent.setInsertTime(new Date());
+            coursePackageOrderStudent.setGiftClassHours(packagePayment.getGiftClassHours());
+            // 获取常规课的有效期 计算是哪一天
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DAY_OF_MONTH, byId.getValidDays());
+            Date time = calendar.getTime();
+            coursePackageOrderStudent.setUseTime(time);
+            return coursePackageOrderStudentService.save(coursePackageOrderStudent);
         }
         // 生成排课数据
-        TCoursePackage coursePackage = tcpService.getById(packagePayment.getCoursePackageId());
-        //生成排课数据
-        try {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
-            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
-            String value = coursePackage.getClassStartTime();
-            String value1 = coursePackage.getClassEndTime();
+        return null;
 
-            String[] star = value.split(",");
-            String[] end = value1.split(",");
-            for (int i = 0; i < star.length; i++) {
-                //                int index = star[i].indexOf(",");
-                //                String result = value.substring(0, index).trim();
-                String classStartTime = star[i];
-                String[] split = classStartTime.split(":");
-                //            String value1 = en;
-                int index1 = value1.indexOf(",");
-                //                String result1 = value.substring(0, index1).trim();
-                String classEndTime = end[i];
-                String[] split1 = classEndTime.split(":");
-                Calendar s = Calendar.getInstance();
-                s.setTime(date);
-                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                s.set(Calendar.SECOND, 0);
-
-                Calendar e = Calendar.getInstance();
-                e.setTime(date);
-                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 coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(coursePackage.getId());
-                        coursePackageScheduling.setClassDate(classDate.getTime());
-                        coursePackageScheduling.setEndDate(endDate.getTime());
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.save(coursePackageScheduling);
-                        coursePackageStudent.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-
-                        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
-                                .eq("coursePackageId", coursePackage.getId())
-                                .eq("classDate", classDate.getTime())
-                                .eq("endDate", endDate.getTime()));
-                        if (list1.size() + 1 > coursePackage.getMaxSubscribeNumber()) {
-                            // 当前课包预约人数已满
-                            return 5001;
-                        }
-                    }
-                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                    if (s.getTimeInMillis() > timeInMillis) {
-                        break;
-                    }
-                }
-            }
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-
-        coursePackageStudent.setStudentId(packagePayment.getStudentId());
-        coursePackageStudent.setCoursePackageId(packagePayment.getCoursePackageId());
-
-
-        coursePackageStudent.setSignInOrNot(0);
-        coursePackageStudent.setReservationStatus(1);
-        coursePackageStudent.setInsertTime(new Date());
-        coursePackageStudent.setAppUserId(packagePayment.getAppUserId());
-        packagePaymentService.save(packagePayment);
-        coursePackageStudent.setCoursePackagePaymentId(packagePayment.getId());
-        return coursePackageStudentService.save(coursePackageStudent);
     }
 
     /**
@@ -728,11 +647,11 @@
         Integer totalNu = 0;
         Integer dedutNu = 0;
         Integer remainNu = 0;
-        List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+        List<CoursePackageOrderStudent> byUserId = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .eq("appUserId", getStuOfCoursesDetails.getAppUserId())
                 .eq("studentId", getStuOfCoursesDetails.getStuId()));
         if (byUserId.size() > 0) {
-            for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
+            for (CoursePackageOrderStudent tCoursePackagePayment : byUserId) {
                 totalNu = totalNu + tCoursePackagePayment.getTotalClassHours();
                 dedutNu = dedutNu + tCoursePackagePayment.getLaveClassHours();
                 remainNu = remainNu + (tCoursePackagePayment.getTotalClassHours() - tCoursePackagePayment.getLaveClassHours());
@@ -841,18 +760,28 @@
         return videoVos;
     }
 
+
+
+
     @PostMapping("/base/coursePack/allPaymentCourseList")
     @ResponseBody
     public List<CouponPaymentVo> getAppuserCourseList(@RequestBody Integer appUserId) {
         List<CouponPaymentVo> paymentVos = new ArrayList<>();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
-                .eq("appUserId", appUserId)
-                .eq("payType", 3)
+//        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+//                .eq("appUserId", appUserId)
+//                .eq("payType", 3)
+//                .eq("payStatus", 2)
+//                .eq("state", 1));
+
+
+        List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("appUserId", appUserId).eq("payType", 3)
                 .eq("payStatus", 2)
                 .eq("state", 1));
+
+
         if (list.size() > 0) {
-            for (TCoursePackagePayment tCoursePackagePayment : list) {
+            for (CoursePackageOrder tCoursePackagePayment : list) {
                 CouponPaymentVo couponPaymentVo = new CouponPaymentVo();
                 couponPaymentVo.setTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime()));
                 couponPaymentVo.setAmount(tCoursePackagePayment.getPlayPaiCoin());
@@ -1115,6 +1044,7 @@
     }
 
 
+
     /**
      * 已报名课程详情
      */
@@ -1138,10 +1068,12 @@
             CourseDetailsResponse courseDetailsResponse = packagePaymentService.queryRegisteredCourseDetails(coursePayId, appUserId, lon, lat);
 
 
-            if (orderId != null) {
-                TOrder byId = orderService.getById(orderId);
-                courseDetailsResponse.setAmount(byId.getPrice());
-            }
+
+
+//            if (orderId != null) {
+//                TOrder byId = orderService.getById(orderId);
+//                courseDetailsResponse.setAmount(byId.getPrice());
+//            }
             return ResultUtil.success(courseDetailsResponse);
         } catch (Exception e) {
             e.printStackTrace();
@@ -2104,6 +2036,33 @@
     }
 
 
+//    @Autowired
+//    private ICoursePackageOrderStudentService orderStudentService;
+
+
+    @ResponseBody
+    @PostMapping("/coursePackagePayment/consumeCourse")
+    public ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId) {
+        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(coursePackagePaymentId);
+
+        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+
+        if (coursePackageOrderStudent.getLaveClassHours()<coursePackage.getNeedNum()){
+            return ResultUtil.error("当前学员课时数不足");
+        }
+        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-coursePackage.getNeedNum());
+        orderStudentService.updateById(coursePackageOrderStudent);
+        CourseCounsum courseCounsum = new CourseCounsum();
+        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
+        courseCounsum.setChangeType(0);
+        courseCounsum.setNum(coursePackage.getNeedNum());
+        courseCounsum.setInsertTime(new Date());
+        courseCounsum.setReason("补课");
+        courseCounsumService.save(courseCounsum);
+        return ResultUtil.success("补课成功");
+    }
+
+
     @ResponseBody
     @PostMapping("/coursePackagePayment/CountqueryByClassId")
     public Integer CountqueryByClassId(@RequestBody Integer id) {
@@ -2160,10 +2119,10 @@
             if (null == appUserId) {
                 return ResultUtil.tokenErr();
             }
-            List<TCoursePackagePayment> packagePayment = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>()
-                    .eq(TCoursePackagePayment::getCoursePackageId, courseID)
-                    .eq(TCoursePackagePayment::getAppUserId, appUserId)
-                    .eq(TCoursePackagePayment::getStudentId, stuId)
+            List<CoursePackageOrderStudent> packagePayment = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
+                    .eq("coursePackageId", courseID)
+                    .eq("appUserId", appUserId)
+                    .eq("studentId", stuId)
             );
 
             if (ToolUtil.isEmpty(packagePayment) || packagePayment.size() == 0) {
@@ -2175,7 +2134,7 @@
             );
 
             List<CoursePackageStudent> coursePackageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
-                    .in(CoursePackageStudent::getCoursePackagePaymentId, packagePayment.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList()))
+                    .in(CoursePackageStudent::getCoursePackagePaymentId, packagePayment.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList()))
                     .in(CoursePackageStudent::getCoursePackageSchedulingId, coursePackageSchedulings.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList()))
                     .eq(CoursePackageStudent::getCoursePackageId, courseID)
                     .eq(CoursePackageStudent::getStudentId, stuId)
@@ -2238,25 +2197,32 @@
         map.put("name", store.getName());
         map.put("lon", lon);
         map.put("lat", lat);
-
-
         // 找出门店的所有课程 排出体验
         List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3).eq(TCoursePackage::getState, 1).like(TCoursePackage::getClassWeeks, week));
         List<Integer> collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList());
         if (collect.size() == 0) {
             collect.add(-1);
         }
+
+        List<CoursePackageScheduling> list8 = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>()
+                .eq(CoursePackageScheduling::getAppUserId, courseDetailReq.getAppUserId())
+                .eq(CoursePackageScheduling::getStudentId, courseDetailReq.getStuId())
+                .in(CoursePackageScheduling::getCoursePackageId, collect)
+        );
+        List<Integer> collect1 = list8.stream().map(CoursePackageScheduling::getCoursePackageId).collect(Collectors.toList());
         // 找出购买的课包
         List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .eq("appUserId", courseDetailReq.getAppUserId())
                 .eq("studentId", courseDetailReq.getStuId())
-                .in("coursePackageId", collect)
+                .in("coursePackageId", collect1)
                 .eq("status", 1)
                 .eq("state", 1)
         );
 
-        List<Integer> collect1 = list1.stream().map(CoursePackageOrderStudent::getCoursePackageId).collect(Collectors.toList());
-        List<Long> ids = list1.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList());
+
+
+//        List<Integer> collect1 = list1.stream().map(CoursePackageOrderStudent::getCoursePackageId).collect(Collectors.toList());
+//        List<Long> ids = list1.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList());
 
 
         for (TCoursePackage tCoursePackage : list) {
@@ -2297,6 +2263,9 @@
                 detailsListVo.setMoney(cashPayment);
             }
             detailsListVo.setNum(tCoursePackage.getNeedNum());
+
+
+
             if (collect1.contains(tCoursePackage.getId())) {
                 // 找出排课记录
                 List<CoursePackageScheduling> list3 = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>()
@@ -2310,16 +2279,16 @@
                 }
                 //排课的ids
                 List<Long> collect2 = list3.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList());
-                if (collect2.isEmpty()) {
+                if (collect2.isEmpty()){
                     collect2.add(-1l);
                 }
 
 
                 List<CoursePackageStudent> list4 = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
                         .eq(CoursePackageStudent::getAppUserId, courseDetailReq.getAppUserId())
+                        .eq(CoursePackageStudent::getStudentId, courseDetailReq.getStuId())
                         .eq(CoursePackageStudent::getCoursePackageId, tCoursePackage.getId())
-                        .in(CoursePackageStudent::getCoursePackageSchedulingId, collect2).
-                                in(CoursePackageStudent::getCoursePackagePaymentId, ids)
+                        .in(CoursePackageStudent::getCoursePackageSchedulingId, collect2)
                 );
 
                 List<CoursePackageStudent> list5 = cspsService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", courseDetailReq.getStuId()).eq("coursePackageId", tCoursePackage.getId()));
@@ -2458,7 +2427,8 @@
         List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.listOne(userPt);
         int sum = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getTotalClassHours).sum();
         int sum1 = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getLaveClassHours).sum();
-        map.put("allCourse", sum - sum1);
+        // 查询介绍有礼课时数量
+        map.put("allCourse",sum-sum1);
 
         //所有课包
         List<TCoursePackage> coursePackages = tcpService.list();

--
Gitblit v1.7.1