From 583ff2c3bfa45f6359a792c01f9bc3d37a6b2a0c Mon Sep 17 00:00:00 2001
From: luo <2855143437@qq.com>
Date: 星期二, 26 九月 2023 18:55:08 +0800
Subject: [PATCH] 9.26。2

---
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java |  311 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 290 insertions(+), 21 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 3c4da2b..267859a 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
@@ -5,16 +5,21 @@
 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;
 import com.dsh.course.feignclient.account.AppUserClient;
 import com.dsh.course.feignclient.account.StudentClient;
 import com.dsh.course.feignclient.account.model.AppUser;
 import com.dsh.course.feignclient.account.model.Student;
 import com.dsh.course.feignclient.account.model.TCourseInfoRecord;
+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;
+import com.dsh.course.mapper.CoursePackageSchedulingMapper;
 import com.dsh.course.model.*;
 import com.dsh.course.model.dto.DiscountJsonDto;
 import com.dsh.course.model.vo.CourseDetailRequest;
@@ -29,6 +34,9 @@
 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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -105,9 +113,220 @@
 
     @Autowired
     private RestTemplate internalRestTemplate;
+    @Autowired
+    private CouponClient couponClient;
+    @Autowired
+    private StoreClient storeClient;
+    @Autowired
+    private TCoursePackageDiscountService discountService;
 
+    @Resource
+    private CoursePackageSchedulingMapper coursePackageSchedulingMapper;
+    @Autowired
+    private ICoursePackageSchedulingService coursePackageSchedulingService;
 
     private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
+    /**
+     * 添加购课记录-后台
+     * @return
+     */
+    @RequestMapping("/base/coursePackagePayment/add")
+    public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment){
+        packagePayment.setInsertTime(new Date());
+        packagePayment.setInsertTime(new Date());
+        Integer studentId = packagePayment.getStudentId();
+        TCoursePackagePayment one = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", packagePayment)
+                .orderByDesc("insertTime")
+                .last("LIMIT 1"));
+
+        if (one!=null){
+            Integer totalClassHours = one.getTotalClassHours();
+            Integer absencesNumber = one.getAbsencesNumber();
+            // 没有过期
+            if (one.getUseTime().after(new Date())){
+                packagePayment.setTotalClassHours(packagePayment.getClassHours()+one.getTotalClassHours());
+                packagePayment.setLaveClassHours(packagePayment.getClassHours()+one.getLaveClassHours());
+                packagePayment.setAbsencesNumber(one.getAbsencesNumber());
+            }
+            packagePayment.setTotalClassHours(packagePayment.getClassHours());
+            packagePayment.setLaveClassHours(packagePayment.getClassHours());
+            packagePayment.setAbsencesNumber(one.getAbsencesNumber());
+        }else{
+            packagePayment.setTotalClassHours(packagePayment.getClassHours());
+            packagePayment.setLaveClassHours(packagePayment.getClassHours());
+            packagePayment.setAbsencesNumber(0);
+        }
+        // 生成排课数据
+        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();
+
+            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) + 13);
+                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);
+                        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
+                                .eq("coursePackageId", coursePackage.getId())
+                                .eq("classDate", classDate.getTime())
+                                .eq("endDate", endDate.getTime()));
+                        if (list.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();
+        }
+        return packagePaymentService.save(packagePayment);
+    }
+    /**
+     * 手动支付
+     * @return
+     */
+    @RequestMapping("/base/coursePackagePayment/changeState")
+    public Object changeState(@RequestBody CoursePackagePayDTO dto){
+
+        return packagePaymentService.changeState(dto);
+    }
+    /**
+     * 获取购课记录
+     */
+    @ResponseBody
+    @RequestMapping("/coursePackagePayment/listAll")
+    public List<CoursePackagePaymentVO> listAll(@RequestBody CoursePackagePaymentQuery query){
+        List<CoursePackagePaymentVO> res = packagePaymentService.listAll(query);
+        List<CoursePackagePaymentVO> result = new ArrayList<>();
+        for (CoursePackagePaymentVO re : res) {
+            if (re.getCashPayment()==null){
+                if (re.getPlayPaiCoin()!=null){
+                    String value = String.valueOf(re.getPlayPaiCoin());
+                    re.setCashPayment(new BigDecimal(value));
+                }
+            }
+
+            Store store = storeClient.queryStoreById(re.getStoreId());
+            TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
+            Student student = studentClient.queryStudentById(re.getStudentId());
+            re.setPayStudent(student.getName());
+            re.setPayUser(appUser.getName());
+            re.setPhone(appUser.getPhone());
+            re.setStoreName(store.getName());
+            if (query.getPayUser()== null || query.getPayUser().equals("") ){
+            }else{
+                List<AppUser> appUsers = appUserClient.queryAppUserListByName(query.getPayUser());
+                for (AppUser user : appUsers) {
+                    if (appUser.getName().equals(user.getName())){
+                        result.add(re);
+                    }
+                }
+            }
+            if (query.getPayStudent()== null || query.getPayStudent().equals("")){
+            }else{
+                List<Student> students = studentClient.queryStudentListByName(query.getPayStudent());
+                for (Student student1 : students) {
+                    if (student.getName().equals(student1.getName())){
+                        result.add(re);
+                    }
+                }
+            }
+            if (re.getPayType()!=null){
+                if (re.getPayType()==1){
+                    re.setBuyTypeName("微信支付");
+                }else if(re.getPayType()==2){
+                    re.setBuyTypeName("支付宝支付");
+                }else if(re.getPayType()==3){
+                    re.setBuyTypeName("玩湃币支付");
+                }else if(re.getPayType()==4){
+                    re.setBuyTypeName("积分支付");
+                }else if(re.getPayType()==5){
+                    re.setBuyTypeName("积分+微信支付");
+                }else if(re.getPayType()==6){
+                    re.setBuyTypeName("积分+支付宝支付");
+                }else if(re.getPayType()==7){
+                    re.setBuyTypeName("手动支付"+"-"+re.getBuyTypeName());
+                }
+            }
+
+            // 如果支付用户类型为管理员 则购买方式则为1线下购买
+                if (re.getPayUserType()== 2){
+                    re.setBuyType(1);
+                }else{
+                    // 如果当前课包有折扣 则为3折扣购买
+                    if (discountService.list(new QueryWrapper<TCoursePackageDiscount>()
+                            .eq("coursePackageId",re.getCoursePackageId()).eq("auditStatus",2)).size()>0){
+                        re.setBuyType(3);
+                        re.setDiscountAmount(re.getOriginalPrice().subtract(re.getPayMoney()));
+                    }else{
+                        re.setBuyType(2);
+                    }
+                }
+            }
+        if (query.getPayStudent()== null || query.getPayStudent().equals("")){
+            if (query.getPayUser()== null || query.getPayUser().equals("")){
+                return res;
+            }else{
+                return result;
+            }
+        }else{
+            return result;
+        }
+    }
 
     /**
      * 获取 没有学员信息的图片配置
@@ -128,6 +347,7 @@
                 TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
                 StuCourseResp resp = new StuCourseResp();
                 resp.setCourseId(tCoursePackage.getId());
+                resp.setId(tCoursePackagePayment.getId());
                 resp.setCourseName(tCoursePackage.getName());
                 resp.setTotalCourseNums(tCoursePackagePayment.getTotalClassHours());
                 resp.setResidueNums(tCoursePackagePayment.getLaveClassHours());
@@ -160,12 +380,12 @@
                     .groupBy("coursePackageId"));
             if (list.size() >  0){
                 for (TCoursePackagePayment tCoursePackagePayment : list) {
-                    CoursePackageStudent packageStudent = cspsService.getOne(new LambdaQueryWrapper<CoursePackageStudent>()
+                    List<CoursePackageStudent> packageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
                             .eq(CoursePackageStudent::getAppUserId, courseRest.getAppUserId())
                             .eq(CoursePackageStudent::getStudentId,courseRest.getStuId())
                             .eq(CoursePackageStudent::getCoursePackagePaymentId,tCoursePackagePayment.getId())
                             .eq(CoursePackageStudent::getCoursePackageId,tCoursePackagePayment.getCoursePackageId()));
-                    if (ToolUtil.isEmpty(packageStudent) || (ToolUtil.isNotEmpty(packageStudent) && packageStudent.getReservationStatus() != 1)){
+                    if (ToolUtil.isEmpty(packageStudent) || (ToolUtil.isNotEmpty(packageStudent) && packageStudent.get(0).getReservationStatus() == 1)){
 //                        没有预约过的/已经取消了的
                         TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
                         CoursePackagePaymentConfig paymentConfig = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
@@ -438,7 +658,6 @@
         }
     }
 
-
     /**
      * 课后视频课表
      */
@@ -492,7 +711,6 @@
         }
     }
 
-
     @ResponseBody
     @PostMapping("/api/startCource/payCourseInfo")
     @ApiOperation(value = "课后练习-购课详情(用于购课)", tags = {"APP-开始上课"})
@@ -506,7 +724,6 @@
             return ResultUtil.runErr();
         }
     }
-
 
     @ResponseBody
     @PostMapping("/api/startCource/getMyCourseList")
@@ -545,7 +762,6 @@
         }
     }
 
-
     /**
      * 更新课后视频学习状态
      */
@@ -566,7 +782,6 @@
             return ResultUtil.runErr();
         }
     }
-
 
 
     @ResponseBody
@@ -610,7 +825,6 @@
         }catch (Exception e){
             return ResultUtil.runErr();
         }
-
     }
 
 
@@ -651,6 +865,10 @@
             Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
             if(null == userIdFormRedis){
                 return ResultUtil.tokenErr();
+            }
+            Integer couponId = request.getConponId();
+            if(couponId==null || couponId==0){
+                request.setConponId(null);
             }
             return packagePaymentService.ContinuationOrpaymentCourse(userIdFormRedis,request);
         }catch (Exception e){
@@ -924,6 +1142,15 @@
                 .eq("code",code));
     }
 
+
+    @PostMapping("/base/coursePack/getCoursePackagePaymentById")
+    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Long id){
+        TCoursePackagePayment byId = packagePaymentService.getById(id);
+        System.out.println("======byId=========="+byId);
+        return byId;
+    }
+
+
     @PostMapping("/base/coursePack/delPaymentCoursePackage")
     public boolean delPaymentCoursePackage(@RequestBody Integer payId){
         return packagePaymentService.removeById(payId);
@@ -948,7 +1175,7 @@
 
     @PostMapping("/base/coursePack/savePaymentCoursePackage")
     public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment){
-        packagePayment.setInsertTime(new Date());
+
         return packagePaymentService.save(packagePayment);
     }
 
@@ -981,11 +1208,17 @@
 
     // 2.0 送课时
     @PostMapping("/base/coursePack/sendHours")
-    public Boolean sendHours(@RequestBody  String s){
+    public Integer sendHours(@RequestBody  String s){
         String[] split = s.split("_");
-        TCoursePackagePayment byId = packagePaymentService.getById(Integer.valueOf(split[0]));
+        TCoursePackagePayment byId = packagePaymentService.getById(Long.valueOf(split[0]));
         byId.setTotalClassHours(byId.getTotalClassHours()+Integer.valueOf(split[2]));
-        return packagePaymentService.updateById(byId);
+        boolean b = packagePaymentService.updateHoursById(byId,Integer.valueOf(split[2]));
+        if(b){
+            return 1;
+        }else {
+
+            return 0;
+        }
     }
 
 
@@ -1035,8 +1268,18 @@
      */
     @ResponseBody
     @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById")
-    public TCoursePackagePayment queryCoursePackagePaymentById(@RequestBody Long id){
+    public TCoursePackagePayment queryCoursePackagePaymentById(@RequestParam("id")Long id){
         return packagePaymentService.getById(id);
+    }
+
+
+    @ResponseBody
+    @PostMapping("/coursePackagePayment/CountqueryByClassId")
+   public   Integer  CountqueryByClassId(@RequestBody Integer id){
+        int coursePackageId = packagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", id));
+
+
+        return coursePackageId;
     }
 
 
@@ -1047,6 +1290,7 @@
     @ResponseBody
     @PostMapping("/coursePackagePayment/editCoursePackagePayment")
     public void editCoursePackagePayment(TCoursePackagePayment coursePackagePayment){
+        coursePackagePayment.setCoursePackageId(null);
         packagePaymentService.updateById(coursePackagePayment);
     }
 
@@ -1070,28 +1314,27 @@
             if(null == appUserId){
                 return ResultUtil.tokenErr();
             }
-            TCoursePackagePayment packagePayment = packagePaymentService.getOne(new LambdaQueryWrapper<TCoursePackagePayment>()
+            List<TCoursePackagePayment> packagePayment = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>()
                     .eq(TCoursePackagePayment::getCoursePackageId,courseID )
                     .eq(TCoursePackagePayment::getAppUserId,appUserId)
                     .eq(TCoursePackagePayment::getStudentId,stuId)
             );
 
-            if (ToolUtil.isEmpty(packagePayment)){
+            if (ToolUtil.isEmpty(packagePayment) || packagePayment.size()==0){
                 return ResultUtil.error("该用户未购买该课包");
             }
             List<CoursePackageStudent> coursePackageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
-                    .eq(CoursePackageStudent::getCoursePackageId,packagePayment.getCoursePackageId())
-                    .eq(CoursePackageStudent::getCoursePackagePaymentId,courseID)
+                    .in(CoursePackageStudent::getCoursePackagePaymentId,packagePayment.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList()))
+                    .eq(CoursePackageStudent::getCoursePackageId,courseID)
                     .eq(CoursePackageStudent::getStudentId,stuId)
                     .eq(CoursePackageStudent::getAppUserId,appUserId)
             );
 
             if (ToolUtil.isNotEmpty(coursePackageStudent)){
                 for (CoursePackageStudent packageStudent : coursePackageStudent) {
-                    if(packageStudent.getReservationStatus()==0){
+                    if(packageStudent.getReservationStatus()==1){
                         packageStudent.setSignInOrNot(2);
-                        packageStudent.setInsertTime(simpleDateFormat.parse(time));
-                        cspsService.updateById(packageStudent);
+                        cspsService.updateSignInOrNotById(packageStudent.getId());
                     }
                 }
 
@@ -1124,6 +1367,8 @@
             map.put("lon",lon);
             map.put("lat",lat);
 
+            String time1 = courseDetailReq.getTime();
+
             // 找出门店的所有课程 排出体验
             List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3).like(TCoursePackage::getClassWeeks,week));
             List<Integer> collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList());
@@ -1133,6 +1378,7 @@
             // 找出购买的课包
             List<TCoursePackagePayment> list1 = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, courseDetailReq.getAppUserId()).eq(TCoursePackagePayment::getStudentId, courseDetailReq.getStuId()).in(TCoursePackagePayment::getCoursePackageId, collect));
             List<Integer> collect1 = list1.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
+            List<Long> ids = list1.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList());
             for (TCoursePackage tCoursePackage : list) {
                 DetailsListVo detailsListVo = new DetailsListVo();
                 detailsListVo.setId(tCoursePackage.getId());
@@ -1154,7 +1400,30 @@
                 }
                 detailsListVo.setNum(tCoursePackage.getNeedNum());
                 if (collect1.contains(tCoursePackage.getId())) {
-                    detailsListVo.setType(1);
+                    // 找出排课记录
+                    List<CoursePackageScheduling> list3 = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>()
+                            .eq(CoursePackageScheduling::getCoursePackageId, tCoursePackage.getId())
+                            .like(CoursePackageScheduling::getClassDate, courseDetailReq.getTime())
+                    );
+                    List<Long> collect2 = list3.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList());
+                    if(collect2.size()==0){
+                        collect2.add(-1l);
+                    }
+                    List<CoursePackageStudent> list4 = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>()
+                            .eq(CoursePackageStudent::getAppUserId, courseDetailReq.getAppUserId())
+                            .eq(CoursePackageStudent::getCoursePackageId, tCoursePackage.getId())
+                            .in(CoursePackageStudent::getCoursePackageSchedulingId, collect2).
+                                    in(CoursePackageStudent::getCoursePackagePaymentId, ids)
+                    );
+
+                        detailsListVo.setType(1);
+                    if(list4.size()>0){
+                        Integer signInOrNot = list4.get(0).getSignInOrNot();
+                        if(signInOrNot==2){
+                            detailsListVo.setType(3);
+                        }
+                    }
+
                 } else {
                     detailsListVo.setType(2);
                 }

--
Gitblit v1.7.1