From 331ae50b1cdcb31a4a0c182abb82aec5c1b12f83 Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期三, 15 十一月 2023 09:40:49 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 757 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 683 insertions(+), 74 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 1dd80f7..0f00c88 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 @@ -54,10 +54,7 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; +import java.time.*; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; @@ -184,8 +181,6 @@ 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(":"); @@ -203,7 +198,7 @@ Calendar e = Calendar.getInstance(); e.setTime(date); - e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13); + e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14); long timeInMillis = e.getTimeInMillis(); while (true){ @@ -234,7 +229,7 @@ .eq("coursePackageId", coursePackage.getId()) .eq("classDate", classDate.getTime()) .eq("endDate", endDate.getTime())); - if (list.size()+1>coursePackage.getMaxSubscribeNumber()){ + if (list1.size()+1>coursePackage.getMaxSubscribeNumber()){ // 当前课包预约人数已满 return 5001; } @@ -269,6 +264,13 @@ public Object changeState(@RequestBody CoursePackagePayDTO dto){ return packagePaymentService.changeState(dto); + } + @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}") + public List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId,@PathVariable("coursePackageId") Integer coursePackageId){ + List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId", appUserId) + .eq("coursePackageId", coursePackageId)); + return list; } /** * 获取购课记录 @@ -344,6 +346,13 @@ } } } + if(re.getCashPayment()==null){ + BigDecimal bigDecimal = new BigDecimal("0.00"); + re.setDiscountAmount(bigDecimal); + continue; + } + BigDecimal subtract = re.getOriginalPrice().subtract(re.getCashPayment()); + re.setDiscountAmount(subtract); } if (query.getPayStudent()== null || query.getPayStudent().equals("")){ if (query.getPayUser()== null || query.getPayUser().equals("")){ @@ -372,11 +381,15 @@ } } } - List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query); // 该运营商下没有门店 - if (query.getStoresIds()!=null){ - if (query.getStoresIds().size()==0){ + if (query.getInsertType() == 2){ + if (query.getStoresIds()!=null){ + if (query.getStoresIds().size()==0){ + List<RegisterOrderVO> registerOrderVOS = new ArrayList<>(); + return registerOrderVOS; + } + }else{ List<RegisterOrderVO> registerOrderVOS = new ArrayList<>(); return registerOrderVOS; } @@ -386,7 +399,6 @@ Iterator<RegisterOrderVO> iterator = res.iterator(); while (iterator.hasNext()) { RegisterOrderVO re = iterator.next(); - if (re.getSalesName() == null) { re.setSalesName("无"); } @@ -397,17 +409,17 @@ re.setPayMoneyAndType("¥" + re.getMoney()); } } - Store store = storeClient.queryStoreById(re.getStoreId()); + if (re.getStoreId()!=null){ + Store store = storeClient.queryStoreById(re.getStoreId()); + if (store!=null){ + re.setStoreName(store.getName()); + } + } 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 (appUser.getInsertType() != query.getInsertType()) { - iterator.remove(); // 使用迭代器的 remove 方法删除元素 - } } return res; } @@ -424,11 +436,14 @@ Student student = studentClient.queryStudentById(stuId); List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() .eq("appUserId",student.getAppUserId()) - .eq("studentId",stuId)); + .eq("studentId",stuId).eq("payStatus",2)); if (byUserId.size() > 0 ){ for (TCoursePackagePayment tCoursePackagePayment : byUserId) { TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); + if (tCoursePackage.getType()==3){ + continue; + } StuCourseResp resp = new StuCourseResp(); resp.setCourseId(tCoursePackage.getId()); resp.setId(tCoursePackagePayment.getId()); @@ -561,6 +576,62 @@ } + @Autowired + private CourseCounsumService courseCounsumService; + + @Autowired + private TCoursePackagePaymentService coursePackagePaymentService; + + @PostMapping("/base/coursePack/getRecord") + public List<PurchaseRecordVo> getRecord(@RequestBody RecordTimeRequest recordTimeRequest) { + List<TCoursePackagePayment> list = new ArrayList<>(); + Integer [] changes = {1,0}; + if (recordTimeRequest.getType()==null) { + list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime")); + }else { + + list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime")); + + } + List<Long> ids = new ArrayList<>(); + for (TCoursePackagePayment coursePackagePayment : list) { + ids.add(coursePackagePayment.getId()); + } + + + + QueryWrapper<CourseCounsum> in = new QueryWrapper<CourseCounsum>().in("paymentId", ids).in("changeType", changes); + + if (recordTimeRequest.getType()!=null){ + if (recordTimeRequest.getType()==2){ + recordTimeRequest.setType(0); + } + in.eq("changeType",recordTimeRequest.getType()); + } + List<CourseCounsum> paymentId = courseCounsumService.list(in); + List<PurchaseRecordVo> recordVos =new ArrayList<>(); + for (CourseCounsum courseCounsum : paymentId) { + PurchaseRecordVo purchaseRecordVo = new PurchaseRecordVo(); + if (courseCounsum.getChangeType() == 0) { + purchaseRecordVo.setPurchaseAmount("-" + courseCounsum.getNum()); + purchaseRecordVo.setPurchaseType(courseCounsum.getReason()); + SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); + String formattedDate = sdf.format(courseCounsum.getInsertTime()); + purchaseRecordVo.setPurchaseTime(formattedDate); + } else { + purchaseRecordVo.setPurchaseAmount("+" + courseCounsum.getNum()); + purchaseRecordVo.setPurchaseType(courseCounsum.getReason()); + SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); + String formattedDate = sdf.format(courseCounsum.getInsertTime()); + purchaseRecordVo.setPurchaseTime(formattedDate); + } + recordVos.add(purchaseRecordVo); + } + + return recordVos; + } + + @PostMapping("/base/coursePack/stuOfCourses") public StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody GetStuOfCoursesDetails getStuOfCoursesDetails){ @@ -686,7 +757,7 @@ @ResponseBody public List<CouponPaymentVo> getAppuserCourseList(@RequestBody Integer appUserId){ List<CouponPaymentVo> paymentVos = new ArrayList<>(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() .eq("appUserId", appUserId) .eq("payType", 3) @@ -737,7 +808,11 @@ baseVo.setName(coursePackage.getName()); list.add(baseVo); }); - return ResultUtil.success(list); + + Set<BaseVo> set = new HashSet<>(list); + List<BaseVo> back = new ArrayList<>(set); + + return ResultUtil.success(back); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -753,8 +828,8 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) - public ResultUtil<List<AppUserVideoResponse>> queryAfterSourceList( CourseOfAfterRequest search){ - try { + public ResultUtil<List<AppUserVideoResponse>> queryAfterSourceList( CourseOfAfterRequest search) throws Exception { +// try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ @@ -788,8 +863,16 @@ List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>().in("id",longs).isNotNull("courseId")); List<AppUserVideoResponse> coursePackageSchedulings1 = coursePackageSchedulingService.queryAll(longs); + if (search.getSearch()!=null) { + List<AppUserVideoResponse> filteredList = new ArrayList<>(); + for (AppUserVideoResponse response : coursePackageSchedulings1) { + if (response.getVideoName().contains(search.getSearch())) { + filteredList.add(response); + } + } + return ResultUtil.success(filteredList); - + } return ResultUtil.success(coursePackageSchedulings1); @@ -797,9 +880,9 @@ - }catch (Exception e){ - return ResultUtil.runErr(); - } +// }catch (Exception e){ +// return ResultUtil.runErr(); +// } } /** @@ -996,6 +1079,7 @@ */ @PostMapping("/base/coursePackage/alipayRegisteredCoursesCallback") public void alipayCallback(HttpServletRequest request, HttpServletResponse response){ + System.err.println("========支付宝支付回调========"); try { Map<String, String> map = payMoneyUtil.alipayCallback(request); if(null != map){ @@ -1081,6 +1165,24 @@ } + public static Date[] generateDateArray(int numDays,Date date) { +// LocalDate tomorrow = LocalDate.now().plusDays(1); + LocalDate tomorrow = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1); + + Date[] dates = new Date[numDays]; + + for (int i = 0; i < numDays; i++) { + LocalDate currentDate = tomorrow.plusDays(i); + dates[i] = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } + + return dates; + } + + @Autowired + private TCoursePackageService packageService; + @Autowired + CoursePackageStudentService studentService ; /** * 课程用于支付进行扣减 * @param paymentDeductionClassHour @@ -1090,62 +1192,280 @@ public void paymentDeductionClassHour(@RequestBody PaymentDeductionClassHour paymentDeductionClassHour){ try { // 2.0 用id进行查询 - List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2) + TCoursePackagePayment coursePackagePayment= packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2) .eq("status", 1).eq("state", 1).gt("laveClassHours", 0)); Integer classHour = paymentDeductionClassHour.getClassHour(); - for (TCoursePackagePayment coursePackagePayment : list) { - if(coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0){ +// for (TCoursePackagePayment coursePackagePayment : list) { + if (coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0) { coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() - classHour); + coursePackagePayment.setAppUserId(null); packagePaymentService.updateById(coursePackagePayment); - // 2.0 少于3课时 推送 - if(coursePackagePayment.getLaveClassHours()<=3){ - Integer appUserId = coursePackagePayment.getAppUserId(); + CourseCounsum courseCounsum = new CourseCounsum(); + courseCounsum.setPaymentId(coursePackagePayment.getId()); + courseCounsum.setChangeType(0); + courseCounsum.setNum(classHour); + courseCounsum.setInsertTime(new Date()); + courseCounsum.setReason("报名赛事"); + courseCounsumService.save(courseCounsum); - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - String s1 = appUserId + "_" + "Three"; - //定时修改排课状态 - String s = internalRestTemplate.getForObject("http://mb-cloud-gateway/netty/sendMsgToClient?id="+s1, String.class); - JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); - if(jsonObject1.getIntValue("code") != 200){ - System.err.println(jsonObject1.getString("msg")); + + + +// coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().eq("courseId", coursePackagePayment.getCoursePackageId())); + + + List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackagePayment.getStudentId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId())); + List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList()); + coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id",collect)); + coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", paymentDeductionClassHour.getId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId())); + + + + +// Student student = studentClient.queryStudentById(coursePackagePayment.getStudentId()); + + TCoursePackage tCoursePackage = packageService.getById(coursePackagePayment.getCoursePackageId()); + String classWeeks = tCoursePackage.getClassWeeks(); + List<Integer> week = week(classWeeks); + + TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", coursePackagePayment.getCoursePackageId()).eq("studentId", coursePackagePayment.getStudentId())); + +// List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", pay.getStudentId()).eq("coursePackageId", pay.getCoursePackageId())); +// List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList()); + //拿到最后一天的排课记录 + +// CoursePackageScheduling cs = null; +// if (collect1.size()>0) { +// cs = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().in("id", collect1).orderByDesc("classDate").last("limit 1")); +// +// } + Date today = new Date(); + + Integer laveClassHours = pay.getLaveClassHours(); + Integer codeTime = tCoursePackage.getCodeTime(); + Integer can = laveClassHours/codeTime; + + int count = 0; + String[] split = tCoursePackage.getClassStartTime().split(","); + String[] split1 = tCoursePackage.getClassEndTime().split(","); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + Date[] dates = generateDateArray(14,today); + for (Date date : dates) { + if (count==can){ + break; + } + int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date); + if (week.contains(wei)){ + for (int i1 = 0; i1 < split.length; i1++) { + if (count==can){ + break; + } + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); + Date parse = format1.parse(format.format(date) + " " + split[i1]); + Date parse1 = format1.parse(format.format(date) + " " + split1[i1]); + coursePackageScheduling.setClassDate(parse); + coursePackageScheduling.setEndDate(parse1); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(pay.getAppUserId()); + student1.setStudentId(pay.getStudentId()); + student1.setCoursePackageId(pay.getCoursePackageId()); + student1.setCoursePackagePaymentId(pay.getId()); + student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + student1.setSignInOrNot(1); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + studentService.save(student1); + count++; + } } } - CancelledClasses cancelledClasses = new CancelledClasses(); - cancelledClasses.setType(2); - cancelledClasses.setVoucher(paymentDeductionClassHour.getCode()); - cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId()); - cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId()); - cancelledClasses.setCancelledClassesNumber(classHour); - cancelledClasses.setInsertTime(new Date()); - cancelledClassesService.save(cancelledClasses); - break; - }else{ - CancelledClasses cancelledClasses = new CancelledClasses(); - cancelledClasses.setType(2); - cancelledClasses.setVoucher(paymentDeductionClassHour.getCode()); - cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId()); - cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId()); - cancelledClasses.setCancelledClassesNumber(coursePackagePayment.getLaveClassHours()); - cancelledClasses.setInsertTime(new Date()); - cancelledClassesService.save(cancelledClasses); +// } - coursePackagePayment.setLaveClassHours(0); - packagePaymentService.updateById(coursePackagePayment); - classHour -= cancelledClasses.getCancelledClassesNumber(); - } - } + + + +// // 本周周几 +// int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date()) - 1; +// for (Integer integer : week) { +// if (integer < i) { +// // 找下一周的时间 +// Calendar instance = Calendar.getInstance(); +// instance.add(Calendar.DATE, 7 - (i - integer)); +// Date time = instance.getTime(); +// +// for (int i1 = 0; i1 < split.length; i1++) { +// +// CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); +// coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); +// Date parse = format1.parse(format.format(time) + " " + split[i1]); +// Date parse1 = format1.parse(format.format(time) + " " + split1[i1]); +// coursePackageScheduling.setClassDate(parse); +// coursePackageScheduling.setEndDate(parse1); +// coursePackageScheduling.setStatus(1); +// coursePackageSchedulingService.save(coursePackageScheduling); +// CoursePackageStudent student1 = new CoursePackageStudent(); +// student1.setAppUserId(student.getAppUserId()); +// student1.setStudentId(student.getId()); +// student1.setCoursePackageId(tCoursePackage.getId()); +// student1.setCoursePackagePaymentId(coursePackagePayment.getId()); +// student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); +// student1.setSignInOrNot(1); +// student1.setReservationStatus(1); +// student1.setInsertTime(new Date()); +// studentService.save(student1); +// +// } +// +// } else if (integer > i) { +// Calendar instance = Calendar.getInstance(); +// instance.add(Calendar.DATE, integer - i); +// Date time1 = instance.getTime(); +// List<Date> list6 = new ArrayList<>(); +// list6.add(time1); +// instance.add(Calendar.DATE, 7); +// Date time2 = instance.getTime(); +// list6.add(time2); +// for (Date time : list6) { +// for (int i1 = 0; i1 < split.length; i1++) { +// CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); +// coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); +// Date parse = format1.parse(format.format(time) + " " + split[i1]); +// Date parse1 = format1.parse(format.format(time) + " " + split1[i1]); +// coursePackageScheduling.setClassDate(parse); +// coursePackageScheduling.setEndDate(parse1); +// coursePackageScheduling.setStatus(1); +// coursePackageSchedulingService.save(coursePackageScheduling); +// +// CoursePackageStudent student1 = new CoursePackageStudent(); +// student1.setAppUserId(student.getAppUserId()); +// student1.setStudentId(student.getId()); +// student1.setCoursePackageId(tCoursePackage.getId()); +// student1.setCoursePackagePaymentId(coursePackagePayment.getId()); +// student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); +// student1.setSignInOrNot(1); +// student1.setReservationStatus(1); +// student1.setInsertTime(new Date()); +// studentService.save(student1); +// } +// } +// +// } else { +// Calendar instance = Calendar.getInstance(); +// instance.add(Calendar.DATE, 7); +// Date time = instance.getTime(); +// +// for (int i1 = 0; i1 < split.length; i1++) { +// CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); +// coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); +// Date parse = format1.parse(format.format(time) + " " + split[i1]); +// Date parse1 = format1.parse(format.format(time) + " " + split1[i1]); +// coursePackageScheduling.setClassDate(parse); +// coursePackageScheduling.setEndDate(parse1); +// coursePackageScheduling.setStatus(1); +// coursePackageSchedulingService.save(coursePackageScheduling); +// +// CoursePackageStudent student1 = new CoursePackageStudent(); +// student1.setAppUserId(student.getAppUserId()); +// student1.setStudentId(student.getId()); +// student1.setCoursePackageId(tCoursePackage.getId()); +// student1.setCoursePackagePaymentId(coursePackagePayment.getId()); +// student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); +// student1.setSignInOrNot(1); +// student1.setReservationStatus(1); +// student1.setInsertTime(new Date()); +// studentService.save(student1); +// } +// } +// } + + + // 2.0 少于3课时 推送 + if (coursePackagePayment.getLaveClassHours() <= 3) { + Integer appUserId = coursePackagePayment.getAppUserId(); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + String s1 = appUserId + "_" + "Three"; + //定时修改排课状态 + String s = internalRestTemplate.getForObject("http://mb-cloud-gateway/netty/sendMsgToClient?id=" + s1, String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + + CancelledClasses cancelledClasses = new CancelledClasses(); + cancelledClasses.setType(2); + cancelledClasses.setVoucher(paymentDeductionClassHour.getCode()); + cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId()); + cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId()); + cancelledClasses.setCancelledClassesNumber(classHour); + cancelledClasses.setInsertTime(new Date()); + cancelledClassesService.save(cancelledClasses); + + }else{ + CancelledClasses cancelledClasses = new CancelledClasses(); + cancelledClasses.setType(2); + cancelledClasses.setVoucher(paymentDeductionClassHour.getCode()); + cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId()); + cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId()); + cancelledClasses.setCancelledClassesNumber(coursePackagePayment.getLaveClassHours()); + cancelledClasses.setInsertTime(new Date()); + cancelledClassesService.save(cancelledClasses); + + coursePackagePayment.setLaveClassHours(0); + packagePaymentService.updateById(coursePackagePayment); + + classHour -= cancelledClasses.getCancelledClassesNumber(); + } +// } + + }catch (Exception e){ e.printStackTrace(); } } - + private List<Integer> week(String week){ + String[] split = week.split(";"); + ArrayList<Integer> integers = new ArrayList<>(); + for (String s : split) { + switch (s){ + case "周一": + integers.add(1); + break; + case "周二": + integers.add(2); + break; + case "周三": + integers.add(3); + break; + case "周四": + integers.add(4); + break; + case "周五": + integers.add(5); + break; + case "周六": + integers.add(6); + break; + case "周日": + integers.add(7); + break; + } + } + return integers; + } /** * 取消赛事回退支付课时 * @param paymentDeductionClassHour @@ -1203,6 +1523,14 @@ return objects; } + @ResponseBody + @PostMapping("/coursePackagePayment/isHave") + public Integer isHave(@RequestBody String ids){ + String[] split = ids.split(","); + return coursePackagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().in("studentId",split)); + + } + /** * 课包续费玩湃币支付 @@ -1242,6 +1570,15 @@ tCourseInfoRecord.setType(1); tCourseInfoRecord.setNum(paymentConfig.getClassHours()); auClitn.addCourseInfoRecord(tCourseInfoRecord); + + CourseCounsum courseCounsum = new CourseCounsum(); + courseCounsum.setPaymentId(packagePayment.getId()); + courseCounsum.setChangeType(1); + courseCounsum.setNum(packagePayment.getClassHours()); + courseCounsum.setInsertTime(new Date()); + courseCounsum.setReason("购买课包"); + courseCounsumService.save(courseCounsum); + } catch (Exception e) { return 4; } @@ -1281,6 +1618,16 @@ tCourseInfoRecord.setType(1); tCourseInfoRecord.setTime(new Date()); id = appUserClient.addCourseInfoRecord(tCourseInfoRecord); + + + CourseCounsum courseCounsum = new CourseCounsum(); + courseCounsum.setPaymentId(packagePayment.getId()); + courseCounsum.setChangeType(1); + courseCounsum.setNum(packagePayment.getClassHours()); + courseCounsum.setInsertTime(new Date()); + courseCounsum.setReason("续课"); + courseCounsumService.save(courseCounsum); + } return id; } @@ -1291,15 +1638,257 @@ return packagePaymentService.save(packagePayment); } + + @PostMapping("/base/coursePack/orderClass") + public void orderClass(@RequestBody OrderDto orderDto) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + String[] split = orderDto.getStuIds().split(","); + for (String s : split) { + TCoursePackagePayment coursePackagePaymentServiceOne = coursePackagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", s).eq("coursePackageId",orderDto.getClassId())); + + + + if (coursePackagePaymentServiceOne==null) { + TCoursePackagePayment coursePackagePayment = new TCoursePackagePayment(); + coursePackagePayment.setCode(code); + coursePackagePayment.setAppUserId(orderDto.getAppUserId()); + coursePackagePayment.setStudentId(Integer.valueOf(s)); + coursePackagePayment.setCoursePackageId(orderDto.getClassId()); + coursePackagePayment.setPayType(4); + coursePackagePayment.setClassHours(orderDto.getClassHours()); + coursePackagePayment.setTotalClassHours(orderDto.getClassHours()); + coursePackagePayment.setLaveClassHours(orderDto.getClassHours()); + coursePackagePayment.setAbsencesNumber(0); + coursePackagePayment.setPayUserType(1); + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setPayUserId(orderDto.getAppUserId()); + coursePackagePayment.setStatus(1); + coursePackagePayment.setState(1); + coursePackagePayment.setInsertTime(new Date()); + coursePackagePaymentService.save(coursePackagePayment); + Integer sId = null; + Student student = studentClient.queryDefaultStudent(orderDto.getAppUserId()); + if (student != null) { + sId = student.getId(); + } + addPackageStudent(orderDto.getClassId(), orderDto.getAppUserId(), Integer.valueOf(s), coursePackagePayment.getId()); + + + CourseCounsum courseCounsum = new CourseCounsum(); + courseCounsum.setPaymentId(coursePackagePayment.getId()); + courseCounsum.setChangeType(1); + courseCounsum.setNum(orderDto.getClassHours()); + courseCounsum.setInsertTime(new Date()); + courseCounsum.setReason("积分兑换"); + courseCounsumService.save(courseCounsum); + + }else { + coursePackagePaymentServiceOne.setClassHours(coursePackagePaymentServiceOne.getClassHours()+orderDto.getClassHours()); + coursePackagePaymentServiceOne.setTotalClassHours(coursePackagePaymentServiceOne.getTotalClassHours()+orderDto.getClassHours()); + coursePackagePaymentServiceOne.setLaveClassHours(coursePackagePaymentServiceOne.getLaveClassHours()+orderDto.getClassHours()); + coursePackagePaymentServiceOne.setAppUserId(null); + coursePackagePaymentService.updateById(coursePackagePaymentServiceOne); + + Integer sId = null; + Student student = studentClient.queryDefaultStudent(orderDto.getAppUserId()); + if (student != null) { + sId = student.getId(); + } + addPackageStudent(orderDto.getClassId(), orderDto.getAppUserId(), Integer.valueOf(s), coursePackagePaymentServiceOne.getId()); + + + CourseCounsum courseCounsum = new CourseCounsum(); + courseCounsum.setPaymentId(coursePackagePaymentServiceOne.getId()); + courseCounsum.setChangeType(1); + courseCounsum.setNum(orderDto.getClassHours()); + courseCounsum.setInsertTime(new Date()); + courseCounsum.setReason("积分兑换"); + courseCounsumService.save(courseCounsum); + + + } + + } + + } + + + public static Date[] generateDateArray1(Date startDate, Date endDate) { + List<Date> dateList = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + + while (!calendar.getTime().after(endDate)) { + Date currentDate = calendar.getTime(); + dateList.add(currentDate); + calendar.add(Calendar.DAY_OF_MONTH, 1); + } + + return dateList.toArray(new Date[0]); + } + + @Autowired + private TCoursePackageService coursePackageService; + private void addPackageStudent(Integer courseId, Integer userId, Integer sId,Long paymentId) throws ParseException { + // 课包 + TCoursePackage tCoursePackage = coursePackageService.getById(courseId); + + if (tCoursePackage.getType()==1) { + String classWeeks = tCoursePackage.getClassWeeks(); + + List<Integer> week = week(classWeeks); + + String[] split = tCoursePackage.getClassStartTime().split(","); + String[] split1 = tCoursePackage.getClassEndTime().split(","); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + //查出当前用户当前学员当前课包最后一天的排课数据 + List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", sId).eq("coursePackageId", courseId)); + List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList()); + //拿到最后一天的排课记录 + if (collect.size() > 0) { + coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id", collect)); + coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", sId).eq("coursePackageId", courseId)); + } + Date today = new Date(); + TCoursePackagePayment pay = coursePackagePaymentService.getById(paymentId); + Integer laveClassHours = pay.getLaveClassHours(); + Integer codeTime = tCoursePackage.getCodeTime(); + Integer can = 0; + int count = 0; + // 本周周几 + Date[] dates = generateDateArray(14, today); + if (tCoursePackage.getType() == 1) { + can = laveClassHours / codeTime; + } + if (tCoursePackage.getType() == 2) { + Date startDate = tCoursePackage.getStartTime(); + Date endDate = tCoursePackage.getEndTime(); + dates = generateDateArray1(startDate, endDate); + can = 999; + } + for (Date date : dates) { + if (count == can) { + break; + } + int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date); + if (week.contains(wei)) { + for (int i1 = 0; i1 < split.length; i1++) { + if (count == can) { + break; + } + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); + Date parse = format1.parse(format.format(date) + " " + split[i1]); + Date parse1 = format1.parse(format.format(date) + " " + split1[i1]); + coursePackageScheduling.setClassDate(parse); + coursePackageScheduling.setEndDate(parse1); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(userId); + student1.setStudentId(sId); + student1.setCoursePackageId(tCoursePackage.getId()); + student1.setCoursePackagePaymentId(paymentId); + student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + student1.setSignInOrNot(1); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + coursePackageStudentService.save(student1); + count++; + } + } + } + + }else if (tCoursePackage.getType()==2){ + String classWeeks = tCoursePackage.getClassWeeks(); + List<Integer> week = week(classWeeks); + + Date today = new Date(); + + Date startTime = tCoursePackage.getStartTime(); + Date endTime = tCoursePackage.getEndTime(); + LocalDate startDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate endDate = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + Period period = Period.between(startDate, endDate); + int days = period.getDays() + 1; + Integer can =999; + int count = 0; + String[] split = tCoursePackage.getClassStartTime().split(","); + String[] split1 = tCoursePackage.getClassEndTime().split(","); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startTime); + calendar.add(Calendar.DAY_OF_MONTH, -1); + + TCoursePackagePayment pay = coursePackagePaymentService.getById(paymentId); + + + Date[] dates = generateDateArray(days,calendar.getTime()); + for (Date date : dates) { + if (count==can){ + break; + } + int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date)-1; + if (wei == 0){ + wei =7; + } + if (week.contains(wei)){ + for (int i1 = 0; i1 < split.length; i1++) { + if (count==can){ + break; + } + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); + Date parse = format1.parse(format.format(date) + " " + split[i1]); + Date parse1 = format1.parse(format.format(date) + " " + split1[i1]); + coursePackageScheduling.setClassDate(parse); + coursePackageScheduling.setEndDate(parse1); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(userId); + student1.setStudentId(sId); + student1.setCoursePackageId(tCoursePackage.getId()); + student1.setCoursePackagePaymentId(pay.getId()); + student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + student1.setSignInOrNot(1); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + coursePackageStudentService.save(student1); + count++; + } + } + } + } + + + // 2.0 + TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord(); + tCourseInfoRecord.setUserId(userId); + tCourseInfoRecord.setCourseId(courseId); + tCourseInfoRecord.setName("报名运动营"); + tCourseInfoRecord.setNum(tCoursePackage.getNeedNum()); + tCourseInfoRecord.setTime(new Date()); + tCourseInfoRecord.setType(2); + appUserClient.addCourseInfoRecord(tCourseInfoRecord); + + + } + @ResponseBody @PostMapping("/base/coursePack/obtainStudentClassDetails") public List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody WeeksOfCourseRest stuId){ - try { - return packagePaymentService.obtainStuClassDetails(stuId.getStuId(),stuId.getAppUserId()); - }catch (Exception e){ - e.printStackTrace(); - throw new RuntimeException(); - } +// try { + return packagePaymentService.obtainStuClassDetails(stuId.getStuId(),stuId.getAppUserId(),stuId.getPageNum()); +// }catch (Exception e){ +// e.printStackTrace(); +// throw new RuntimeException(); +// } } @@ -1479,6 +2068,21 @@ } } + + + @ResponseBody + @PostMapping("/base/coursePack/getConsumes") + List<CourseCounsum> getConsumes(@RequestBody BillingDataRequestVo requestVo) { + Integer[] integers = {2,3}; + QueryWrapper<CourseCounsum> courseCounsumQueryWrapper = new QueryWrapper<CourseCounsum>().in("changeType",integers).eq("appUserId",requestVo.getAppUserId()); + if (requestVo.getMonthEnd()!=null){ + courseCounsumQueryWrapper.ge("insertTime",requestVo.getMonthStart()); + courseCounsumQueryWrapper.le("insertTime",requestVo.getMonthEnd()); + } + return courseCounsumService.list(courseCounsumQueryWrapper); + + } + @ResponseBody @PostMapping("/base/coursePack/weeksOfCourseDetailsList") HashMap<String, Object> weeksOfCourseDetailsList(@RequestBody CourseDetailReq courseDetailReq){ @@ -1555,13 +2159,18 @@ in(CoursePackageStudent::getCoursePackagePaymentId, ids) ); - detailsListVo.setType(1); if(list4.size()>0){ Integer signInOrNot = list4.get(0).getSignInOrNot(); + detailsListVo.setType(1); + if(signInOrNot==2){ detailsListVo.setType(3); } detailsListVo.setIsType(list4.get(0).getType()); + + }else { + detailsListVo.setType(2); + } } else { -- Gitblit v1.7.1