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 | 280 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 223 insertions(+), 57 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 95220d3..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,8 +5,10 @@ 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; @@ -17,6 +19,7 @@ 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; @@ -33,6 +36,7 @@ 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; @@ -115,8 +119,122 @@ private StoreClient storeClient; @Autowired private TCoursePackageDiscountService discountService; - private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); + @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 @@ -136,12 +254,14 @@ List<CoursePackagePaymentVO> result = new ArrayList<>(); for (CoursePackagePaymentVO re : res) { if (re.getCashPayment()==null){ - String value = String.valueOf(re.getPlayPaiCoin()); - re.setCashPayment(new BigDecimal(value)); + if (re.getPlayPaiCoin()!=null){ + String value = String.valueOf(re.getPlayPaiCoin()); + re.setCashPayment(new BigDecimal(value)); + } } Store store = storeClient.queryStoreById(re.getStoreId()); - AppUser appUser = appUserClient.queryAppUser(re.getAppUserId()); + TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId()); Student student = studentClient.queryStudentById(re.getStudentId()); re.setPayStudent(student.getName()); re.setPayUser(appUser.getName()); @@ -165,42 +285,38 @@ } } } - - 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 (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()); } } - // 不为空则计算 - if (re.getUserCouponId()!=null){ + // 如果支付用户类型为管理员 则购买方式则为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); + } + } } - // todo 计算优惠金额 -// Coupon coupon = couponClient.queryCouponById(re.getUserCouponId().intValue()); - } if (query.getPayStudent()== null || query.getPayStudent().equals("")){ if (query.getPayUser()== null || query.getPayUser().equals("")){ return res; @@ -231,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()); @@ -263,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>() @@ -541,7 +658,6 @@ } } - /** * 课后视频课表 */ @@ -595,7 +711,6 @@ } } - @ResponseBody @PostMapping("/api/startCource/payCourseInfo") @ApiOperation(value = "课后练习-购课详情(用于购课)", tags = {"APP-开始上课"}) @@ -609,7 +724,6 @@ return ResultUtil.runErr(); } } - @ResponseBody @PostMapping("/api/startCource/getMyCourseList") @@ -648,7 +762,6 @@ } } - /** * 更新课后视频学习状态 */ @@ -669,7 +782,6 @@ return ResultUtil.runErr(); } } - @ResponseBody @@ -713,7 +825,6 @@ }catch (Exception e){ return ResultUtil.runErr(); } - } @@ -754,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){ @@ -1027,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); @@ -1051,7 +1175,7 @@ @PostMapping("/base/coursePack/savePaymentCoursePackage") public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment){ - packagePayment.setInsertTime(new Date()); + return packagePaymentService.save(packagePayment); } @@ -1084,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; + } } @@ -1138,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; } @@ -1150,6 +1290,7 @@ @ResponseBody @PostMapping("/coursePackagePayment/editCoursePackagePayment") public void editCoursePackagePayment(TCoursePackagePayment coursePackagePayment){ + coursePackagePayment.setCoursePackageId(null); packagePaymentService.updateById(coursePackagePayment); } @@ -1173,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()); } } @@ -1227,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()); @@ -1236,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()); @@ -1257,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