cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -89,6 +89,7 @@ where 1 = 1 and distributionMethod = 4 and auditStatus = 2 and startTime < now() and state= 1 <if test="cityCode != null"> and id in( SELECT DISTINCT couponId FROM @@ -116,8 +117,6 @@ <if test="state != null"> and `state` = #{state} </if> union all SELECT id, `name`, @@ -135,23 +134,12 @@ from t_coupon where 1 = 1 and distributionMethod = 4 and useScope = 1 and auditStatus = 2 and state= 1 and startTime < now() <if test="name != null"> and `name` like concat('%', #{name}, '%') </if> <if test="type != null"> and type = #{type} </if> <if test="userPopulation != null"> and userPopulation = #{userPopulation} </if> <if test="status !=null"> and `status` = #{status} </if> <if test="state != null"> and `state` = #{state} </if> </select> <select id="queryCouponExamineList" resultType="java.util.Map"> cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -2392,7 +2392,7 @@ @ResponseBody @PostMapping("/coursePackagePayment/CountqueryByClassId") public Integer CountqueryByClassId(@RequestBody Integer id) { int coursePackageId = packagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", id)); int coursePackageId = coursePackageOrderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id)); return coursePackageId; cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -336,10 +336,15 @@ } @Autowired private ICoursePackageOrderService coursePackageOrderService; @Autowired private ICoursePackageOrderStudentService coursePackageOrderStudentService; @RequestMapping("/queryByIds") @ResponseBody public List<TCoursePackagePayment> queryByIds(@RequestParam("ids") String ids) { List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>() public List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids") String ids) { List<CoursePackageOrderStudent> paymentList = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>() .in("id", Arrays.asList(ids.split(",")))); System.out.println("========client==>" + paymentList); @@ -414,6 +419,18 @@ } paymentService.updateBatchById(id1); } @RequestMapping("/getOrder") @ResponseBody public List<CoursePackageOrder> getOrder(@RequestParam("id") Long id) { CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(id); List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).like("studentIds", coursePackageOrderStudent.getStudentId())); return list; } @@ -753,133 +770,136 @@ @RequestMapping(value = "/toHoli", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8") @ResponseBody public String toHoli(@RequestBody ToHoliDto toHoliDto) throws ParseException { String[] ids = toHoliDto.getIds(); List<String> strings = new ArrayList<>(); for (String id : ids) { //扣除课时 TCoursePackagePayment payment = paymentService.getById(id); System.out.println("=====byId=========" + payment); Integer laveClassHours = payment.getLaveClassHours(); Integer classNum = toHoliDto.getClassNum(); Integer totalClassHours = payment.getTotalClassHours(); Student student = studentClient.queryStudentById(payment.getStudentId()); if (laveClassHours < classNum) { strings.add(student.getName()); continue; String[] stuIds = toHoliDto.getIds(); //查询出学员ids对应的棵树,判断剩余课时数是否够 List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds)); List<String> notStudent = new ArrayList<>(); for (CoursePackageOrderStudent coursePackageOrderStudent : list) { if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) { notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName()); } } if (!notStudent.isEmpty()) { String notStudentStr = String.join(",", notStudent); return notStudentStr+":课时数不足"; } Integer laveClassHoursnew = laveClassHours - classNum; Integer totalClassHoursnew = totalClassHours - classNum; payment.setLaveClassHours(laveClassHoursnew); payment.setTotalClassHours(totalClassHoursnew); payment.setAppUserId(null); // payment.setStatus(3); for (String stuId : stuIds) { Student student = studentClient.queryStudentById(Integer.valueOf(stuId)); paymentService.updateById(payment); // 扣除 原来的课时数 // 添加购买课时 paytyoe为7 // 排课可期 判断课程时间段 添加排课表 添加上课记录表 // 找到原来的课包 扣课时 // CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(toHoliDto.getId()); CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId)); //获取student信息 TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId()); //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录 List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1) .eq("type", 1).orderByDesc("classDate")); //已经排课但没有使用的课时数量 int number = list1.size() * coursePackage.getNeedNum(); Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours(); laveClassHours1 -= number; //需要购买使用的课时数 Integer num = toHoliDto.getClassNum(); //需要删除多余的排课记录 if(num.compareTo(laveClassHours1) > 0){ //课时数差额 int number1 = num - laveClassHours1; double o = number1 % coursePackage.getNeedNum(); int l = 0; if(0 != o){ l = 1; } int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l; for (int i = 0; i < n; i++) { CoursePackageScheduling coursePackageScheduling = list1.get(i); coursePackageSchedulingService.deleteById(coursePackageScheduling.getId()); //新增课时 coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>() .eq("coursePackageSchedulingId", coursePackageScheduling.getId())); } } coursePackageOrderStudent.setAppUserId(null); coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum()); orderStudentService.updateById(coursePackageOrderStudent); TCoursePackagePayment holi = new TCoursePackagePayment(); holi.setAppUserId(student.getAppUserId()); holi.setStudentId(student.getId()); holi.setCoursePackageId(toHoliDto.getClassId()); holi.setTotalClassHours(toHoliDto.getClassNum()); holi.setLaveClassHours(toHoliDto.getClassNum()); holi.setState(1); holi.setInsertTime(new Date()); holi.setPayStatus(2); paymentService.save(holi); CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setPaymentId(holi.getId()); courseCounsum.setChangeType(0); courseCounsum.setNum(classNum); courseCounsum.setInsertTime(new Date()); courseCounsum.setReason("报名假期班"); courseCounsumService.save(courseCounsum); //排假期课 TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId()); String classWeeks = tCoursePackage.getClassWeeks(); //上课星期 String classWeeks = coursePackage1.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(","); //上课时段 String[] split = coursePackage1.getClassStartTime().split(","); String[] split1 = coursePackage1.getClassEndTime().split(","); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date startTime = coursePackage1.getStartTime(); Date endTime = coursePackage1.getEndTime(); //排课 本周+下周,课时不够扣则直接剩余不排课 Calendar calendar = Calendar.getInstance(); calendar.setTime(startTime); calendar.add(Calendar.DAY_OF_MONTH, -1); //假期开始使用当前时间为起始时间进行排课 calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date()); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); while (true) { Date time = calendar.getTime(); Date[] dates = generateDateArray(days, calendar.getTime()); for (Date date : dates) { if (count == can) { //判断当天是否在排课星期内 int day = calendar.get(Calendar.DAY_OF_WEEK); day = day - 1 == 0 ? 7 : day - 1; if (!week.contains(day)) { calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); continue; } //大于有效期不进行排课 if (calendar.getTimeInMillis() > endTime.getTime()) { 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; } for (int j = 0; j < split.length; j++) { 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.setType(coursePackage1.getType()); coursePackageScheduling.setAppUserId(student.getAppUserId()); coursePackageScheduling.setStudentId(Integer.valueOf(stuId)); coursePackageScheduling.setCoursePackageId(coursePackage1.getId()); Date parse = format1.parse(format.format(time) + " " + split[j]); Date parse1 = format1.parse(format.format(time) + " " + split1[j]); coursePackageScheduling.setClassDate(parse); coursePackageScheduling.setEndDate(parse1); coursePackageScheduling.setStatus(1); coursePackageSchedulingService.insert(coursePackageScheduling); CoursePackageStudent student1 = new CoursePackageStudent(); student1.setAppUserId(student.getAppUserId()); student1.setStudentId(student.getId()); student1.setCoursePackageId(toHoliDto.getClassId()); student1.setCoursePackagePaymentId(holi.getId()); student1.setStudentId(Integer.valueOf(stuId)); student1.setCoursePackageId(coursePackage1.getId()); student1.setCoursePackagePaymentId(null); student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); student1.setSignInOrNot(1); student1.setReservationStatus(1); student1.setInsertTime(new Date()); studentService.save(student1); count++; cpsMapper.insert(student1); } } //增加日期,用于判断 calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); } System.out.println("保存成功=============》=" + holi); CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setPaymentId(coursePackageOrderStudent.getId()); courseCounsum.setChangeType(0); courseCounsum.setNum(toHoliDto.getClassNum()); courseCounsum.setInsertTime(new Date()); courseCounsum.setReason("报名假期班"); // courseCounsum.setAppUserId(userId); courseCounsumService.save(courseCounsum); } String[] stringArray = strings.toArray(new String[strings.size()]); String join = StringUtils.join(stringArray, ","); System.out.println("==========join========" + join); return join; return "报名成功"; } @@ -940,150 +960,149 @@ @RequestMapping(value = "/toTrans", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8") @ResponseBody public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException { String[] ids = toHoliDto.getIds(); List<String> strings = new ArrayList<>(); for (String id : ids) { //扣除课时 TCoursePackagePayment payment = paymentService.getById(id); System.out.println("=====byId=========" + payment); Integer laveClassHours = payment.getLaveClassHours(); Integer classNum = toHoliDto.getClassNum(); Integer totalClassHours = payment.getTotalClassHours(); Student student = studentClient.queryStudentById(payment.getStudentId()); // if (laveClassHours < classNum){ // strings.add(student.getName()); continue; String[] stuIds = toHoliDto.getIds(); // //查询出学员ids对应的棵树,判断剩余课时数是否够 // List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds)); // List<String> notStudent = new ArrayList<>(); // for (CoursePackageOrderStudent coursePackageOrderStudent : list) { // if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) { // notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName()); // } // // Integer laveClassHoursnew = laveClassHours - classNum; // Integer totalClassHoursnew = totalClassHours - classNum; payment.setLaveClassHours(0); payment.setTotalClassHours(0); payment.setAppUserId(null); // } // if (!notStudent.isEmpty()) { // String notStudentStr = String.join(",", notStudent); // return notStudentStr+":课时数不足"; // } paymentService.updateById(payment); //获取student信息 //转移课程 for (String stuId : stuIds) { // CoursePackageOrderStudent orinPay = orderStudentService.getById(toHoliDto.getId()); CoursePackageOrderStudent orinPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>() .eq("studentId", stuId) .eq("coursePackageId", toHoliDto.getId())); CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>() .eq("studentId", stuId) .eq("coursePackageId", toHoliDto.getClassId())); TCoursePackage coursePackage = packageService.getById(toHoliDto.getClassId()); if (studentPay != null) { //转移 Integer laveClassHours = orinPay.getLaveClassHours(); Integer totalClassHours = orinPay.getTotalClassHours(); //新增课时 CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setInsertTime(new Date()); Integer appUserId = orinPay.getAppUserId(); Integer appUserId1 = studentPay.getAppUserId(); TCoursePackagePayment one = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId())); courseCounsum.setReason("换课"); TCoursePackagePayment holi = new TCoursePackagePayment(); if (one == null) { holi.setAppUserId(student.getAppUserId()); holi.setStudentId(student.getId()); holi.setCoursePackageId(toHoliDto.getClassId()); holi.setTotalClassHours(laveClassHours); holi.setLaveClassHours(laveClassHours); holi.setState(1); holi.setInsertTime(new Date()); holi.setPayStatus(2); holi.setStatus(1); paymentService.save(holi); } else { one.setTotalClassHours(one.getTotalClassHours() + laveClassHours); one.setLaveClassHours(one.getLaveClassHours() + laveClassHours); one.setAppUserId(null); paymentService.updateById(one); holi = one; orinPay.setLaveClassHours(0); orinPay.setStatus(3); orinPay.setAppUserId(null); orderStudentService.updateById(orinPay); courseCounsum.setNum(laveClassHours); courseCounsum.setChangeType(0); courseCounsum.setPaymentId(orinPay.getId()); counsumService.save(courseCounsum); CourseCounsum courseCounsum1 = new CourseCounsum(); courseCounsum1.setInsertTime(new Date()); // if (appUserId.compareTo(appUserId1) != 0) { // courseCounsum1.setReason("赠课"); // } else { courseCounsum1.setReason("换课"); // } courseCounsum1.setNum(laveClassHours); courseCounsum1.setChangeType(1); courseCounsum1.setPaymentId(studentPay.getId()); counsumService.save(courseCounsum1); schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours); //删除原排课数据 List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() .eq("type", 1).eq("appUserId", appUserId) .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()) .orderByAsc("classDate")); int num = totalClassHours - laveClassHours; for (int i = num; i < coursePackageSchedulings.size(); i++) { CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i); coursePackageSchedulingService.deleteById(packageScheduling.getId()); coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId())); } System.out.println("保存成功=============》=" + holi); } else { Integer totalClassHours = orinPay.getTotalClassHours(); Integer laveClassHours = orinPay.getLaveClassHours(); Student student = studentClient.queryStudentById(Integer.valueOf(stuId)); CoursePackageOrderStudent to = new CoursePackageOrderStudent(); to.setStudentId(Integer.valueOf(stuId)); to.setTotalClassHours(laveClassHours); to.setLaveClassHours(laveClassHours); to.setCoursePackageId(toHoliDto.getClassId()); to.setState(1); to.setAppUserId(student.getAppUserId()); to.setStatus(1); to.setInsertTime(new Date()); Integer validDays = coursePackage.getValidDays(); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays); to.setUseTime(calendar.getTime()); orderStudentService.save(to); if (null == student.getValidity()) { student.setValidity(calendar.getTime()); } else if (student.getValidity().getTime() < calendar.getTime().getTime()) { student.setValidity(calendar.getTime()); } studentClient.frozen(student); Integer laveClassHours1 = orinPay.getLaveClassHours(); Integer appUserId = orinPay.getAppUserId(); orinPay.setLaveClassHours(0); orinPay.setAppUserId(null); orinPay.setStatus(3); orderStudentService.updateById(orinPay); CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setPaymentId(holi.getId()); courseCounsum.setChangeType(1); courseCounsum.setNum(laveClassHours); courseCounsum.setInsertTime(new Date()); courseCounsum.setReason("换课"); courseCounsumService.save(courseCounsum); courseCounsum.setNum(laveClassHours1); courseCounsum.setChangeType(0); courseCounsum.setPaymentId(orinPay.getId()); counsumService.save(courseCounsum); TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId()); String classWeeks = tCoursePackage.getClassWeeks(); List<Integer> week = week(classWeeks); CourseCounsum courseCounsum1 = new CourseCounsum(); courseCounsum1.setInsertTime(new Date()); courseCounsum1.setReason("换课"); courseCounsum1.setNum(laveClassHours1); courseCounsum1.setChangeType(1); courseCounsum1.setPaymentId(to.getId()); counsumService.save(courseCounsum1); 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", student.getId()).eq("coursePackageId", toHoliDto.getClassId())); List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList()); //拿到最后一天的排课记录 if (collect.size() > 0) { coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect)); coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId())); } Date today = new Date(); TCoursePackagePayment pay = coursePackagePaymentService.getById(holi.getId()); Integer laveClassHours1 = pay.getLaveClassHours(); Integer codeTime = tCoursePackage.getCodeTime(); Integer can = 0; int count = 0; // 本周周几 // int i = DateUtil.dayOfWeek(new Date())-1; Date[] dates = generateDateArray(14, today); can = laveClassHours1 / codeTime; for (Date date : dates) { if (count == can) { break; } int wei = 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.insert(coursePackageScheduling); CoursePackageStudent student1 = new CoursePackageStudent(); student1.setAppUserId(student.getAppUserId()); student1.setStudentId(student.getId()); student1.setCoursePackageId(tCoursePackage.getId()); student1.setCoursePackagePaymentId(holi.getId()); student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); student1.setSignInOrNot(1); student1.setReservationStatus(1); student1.setInsertTime(new Date()); cpsMapper.insert(student1); count++; //开始排课 addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to); //删除原排课数据 List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() .eq("type", 1).eq("appUserId", appUserId) .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()) .orderByAsc("classDate")); int num = totalClassHours - laveClassHours; for (int i = num; i < coursePackageSchedulings.size(); i++) { CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i); coursePackageSchedulingService.deleteById(packageScheduling.getId()); coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId())); } } } } String[] stringArray = strings.toArray(new String[strings.size()]); return "换课成功"; String join = StringUtils.join(stringArray, ","); System.out.println("==========join========" + join); return "转课成功"; } } cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** @@ -91,4 +92,15 @@ @TableField("useTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date useTime; private String name; private BigDecimal onePrice; private Integer hasHours; private BigDecimal restPrice; private BigDecimal cashPayment; } cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseStuddentClient.java
@@ -2,11 +2,13 @@ import com.dsh.course.dto.ClassListDto; import com.dsh.course.dto.updateTimeDto; import com.dsh.course.entity.CoursePackageOrderStudent; import com.dsh.course.feignClient.course.model.TCoursePackagePayment; import com.dsh.course.model.MoneyBack; import com.dsh.course.model.dto.InsertBackDto; import com.dsh.course.model.dto.StudentClassInfo; import com.dsh.guns.modular.system.model.CourseCounsum; import com.dsh.guns.modular.system.model.CoursePackageOrder; import com.dsh.guns.modular.system.model.dto.ConsumeQuery; import com.dsh.guns.modular.system.model.dto.SelectDto; import com.dsh.guns.modular.system.model.dto.ToClassDto; @@ -93,7 +95,7 @@ @RequestMapping("/courdent/queryByIds") List<TCoursePackagePayment> queryByIds(@RequestParam("ids")String ids); List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids")String ids); @RequestMapping("/courdent/queryCounsum") @@ -120,4 +122,6 @@ @RequestMapping("/courdent/backStausClass") void backStausClass(@RequestParam("id")Integer id); @RequestMapping("/courdent/getOrder") List<CoursePackageOrder> getOrder(@RequestParam("id")Long id); } cloud-server-management/src/main/java/com/dsh/guns/config/AuthFilter.java
@@ -31,7 +31,7 @@ private String[] resource = new String[]{"html", "js", "css","icon","ico","png","img","jpeg","jpg", "gif"}; private String[] releaseApi = new String[]{"/login", "/logout","/systemNotice/querySystemNoticeList","/systemNotice/queryNoReadNoticeNum" ,"/api/hotAddress/queryHotAddress"}; ,"/api/hotAddress/queryHotAddress","/kaptcha","/update","/password.html","/getSMSCode"}; cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.entity.CoursePackageOrderStudent; import com.dsh.course.feignClient.account.*; import com.dsh.course.feignClient.account.model.*; import com.dsh.course.feignClient.activity.PointMercharsClient; @@ -485,39 +486,39 @@ List<MoneyBack> refund = refundCoursePackageClient.getRefund(); for (MoneyBack moneyBack : refund) { List<TCoursePackagePayment> coursePackagePayments = courseStuddentClient.queryByIds(moneyBack.getIds()); List<CoursePackageOrderStudent> coursePackagePayments = courseStuddentClient.queryByIds(moneyBack.getIds()); BigDecimal totalAmount = BigDecimal.ZERO; for (TCoursePackagePayment payment : coursePackagePayments){ //课包名称 TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); payment.setName(tCoursePackage.getName()); payment.setId(Long.valueOf(tCoursePackage.getId())); BigDecimal cashPayment = payment.getCashPayment(); if (cashPayment==null){ cashPayment = BigDecimal.ZERO; } Integer totalClassHours = payment.getTotalClassHours(); BigDecimal result = new BigDecimal(0); if (totalClassHours!=0) { result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP); } //单价 payment.setOnePrice(result); int has = payment.getTotalClassHours() - payment.getLaveClassHours(); //剩余课时 payment.setHasHours(has); BigDecimal onePrice = payment.getOnePrice(); Integer laveClassHours = payment.getLaveClassHours(); BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours)); //总价 payment.setRestPrice(result1); System.out.println("======="+result1); totalAmount = totalAmount.add(result1); IncomeVO temp = new IncomeVO(); temp.setInsertTime(payment.getInsertTime()); temp.setAmount(result1); incomeVOS.add(temp); } // for (TCoursePackagePayment payment : coursePackagePayments){ // //课包名称 // TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); // payment.setName(tCoursePackage.getName()); // payment.setId(Long.valueOf(tCoursePackage.getId())); // BigDecimal cashPayment = payment.getCashPayment(); // if (cashPayment==null){ // cashPayment = BigDecimal.ZERO; // } // Integer totalClassHours = payment.getTotalClassHours(); // BigDecimal result = new BigDecimal(0); // if (totalClassHours!=0) { // result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP); // } // //单价 // payment.setOnePrice(result); // int has = payment.getTotalClassHours() - payment.getLaveClassHours(); // //剩余课时 // payment.setHasHours(has); // BigDecimal onePrice = payment.getOnePrice(); // Integer laveClassHours = payment.getLaveClassHours(); // BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours)); // //总价 // payment.setRestPrice(result1); // System.out.println("======="+result1); // totalAmount = totalAmount.add(result1); // IncomeVO temp = new IncomeVO(); // temp.setInsertTime(payment.getInsertTime()); // temp.setAmount(result1); // incomeVOS.add(temp); // } } // 获取赛事退费记录 List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java
@@ -40,6 +40,8 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @@ -977,6 +979,23 @@ } } } if (Integer.parseInt(vo.get("status").toString())==1 ){ String dateTimeStr = vo.get("times").toString(); String formattedDateTimeStr = dateTimeStr.substring(0, 11) + dateTimeStr.substring(17); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); try { Date date = sdf.parse(formattedDateTimeStr); if (new Date().after(date)){ vo.put("status",4); } System.out.println(date); } catch (ParseException e) { e.printStackTrace(); } } } return orders; } cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/DeptController.java
@@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** * 部门控制器 @@ -101,7 +102,7 @@ deptSetPids(dept); dept.setObjectType(UserExt.getUser().getObjectType()); dept.setObjectId(UserExt.getUser().getObjectId()); dept.setVersion(UserExt.getUser().getId()); return this.deptService.save(dept); } @@ -113,6 +114,13 @@ @ResponseBody public Object list(String condition) { List<Map<String, Object>> list = this.deptService.list(condition); if (UserExt.getUser().getObjectType()==2){ List<Map<String, Object>> filteredRoles = list.stream() .filter(role -> role.containsKey("version") && role.get("version").equals(1)) .collect(Collectors.toList()); return filteredRoles; } return super.warpObject(new DeptWarpper(list)); } cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
@@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.activation.MailcapCommandMap; import javax.annotation.Resource; @@ -76,10 +77,33 @@ /** * 跳转到修改密码页面 */ @PostMapping("/update") @RequestMapping(value = "/update", method = RequestMethod.GET) public String updatePassword(Model model) { return "/password.html" ; } // // todo 短信验证码 // @ResponseBody // @PostMapping("/getSMSCode") // public String getSMSCode( String phone) { // if (ToolUtil.isEmpty(phone)) { // return ResultUtil.paranErr("phone"); // } // if (ToolUtil.isEmpty(type)) { // return ResultUtil.paranErr("type"); // } //// try { // String smsCode = appUserClient.getSMSCode(phone); // return smsCode; //// } catch (Exception e) { //// e.printStackTrace(); //// return ResultUtil.runErr(); //// } // } // @Autowired // private RedisUtil redisUtil; // /** cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/RoleController.java
@@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** * 角色控制器 @@ -110,6 +111,14 @@ @ResponseBody public Object list(@RequestParam(required = false) String roleName) { List<Map<String, Object>> roles = this.roleService.selectRoles(super.getPara("roleName")); //运营商 if (UserExt.getUser().getObjectType()==2){ List<Map<String, Object>> filteredRoles = roles.stream() .filter(role -> role.containsKey("version") && role.get("version").equals(UserExt.getUser().getId())) .collect(Collectors.toList()); return super.warpObject(new RoleWarpper(filteredRoles)); } return super.warpObject(new RoleWarpper(roles)); } @@ -127,6 +136,7 @@ role.setId(null); role.setObjType(UserExt.getUser().getObjectType()); role.setObjId(UserExt.getUser().getObjectId()); role.setVersion(UserExt.getUser().getId()); this.roleService.save(role); cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.dto.*; import com.dsh.course.entity.CoursePackageOrderStudent; import com.dsh.course.entity.EvaluateStudent; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.StudentClient; @@ -198,18 +199,31 @@ String formattedDate = dateFormat.format(new Date()); model.addAttribute("reDate", formattedDate); List<TCoursePackagePayment> coursePackagePayments = courseStuddentClient.queryByIds(ids); List<CoursePackageOrderStudent> coursePackagePayments = courseStuddentClient.queryByIds(ids); BigDecimal countAll = new BigDecimal(0); for (TCoursePackagePayment payment : coursePackagePayments){ for (CoursePackageOrderStudent payment : coursePackagePayments){ //课包名称 TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); List<CoursePackageOrder> ordes = courseStuddentClient.getOrder(payment.getId()); payment.setName(tCoursePackage.getName()); payment.setId(Long.valueOf(tCoursePackage.getId())); BigDecimal cashPayment = payment.getCashPayment(); BigDecimal cashPayment = BigDecimal.ZERO; for (CoursePackageOrder order : ordes) { BigDecimal cashPayment1 = order.getCashPayment(); if (cashPayment1 != null) { cashPayment = cashPayment.add(cashPayment1); } } payment.setCashPayment(cashPayment); // BigDecimal cashPayment = payment.getCashPayment(); if (cashPayment==null){ cashPayment = BigDecimal.ZERO; } @@ -795,10 +809,10 @@ System.out.println("========ToHoliDto========="+resultUtil); if (resultUtil==""||resultUtil==null){ return new ResultUtil<>(0,0,"报名成功"); if (resultUtil.equals("报名成功")){ return new ResultUtil<>(0,0,resultUtil); }else{ return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);} return new ResultUtil<>(0,1,resultUtil);} } @@ -819,12 +833,16 @@ String resultUtil = courseStuddentClient.toTrans(toHoliDto); System.out.println("========ToHoliDto========="+resultUtil); if (resultUtil.equals("换课成功")) { // return ResultUtil.success(resultUtil); return new ResultUtil<>(0,0,resultUtil); if (resultUtil==""){ return new ResultUtil<>(0,0,"报名成功"); }else{ return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);} return new ResultUtil<>(0,1,resultUtil);} } // if (resultUtil==""){ // }else{ //赠课 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/UserMgrController.java
@@ -218,14 +218,20 @@ return res; case 2: // 运营商查询运营商账号的员工和属于该运营商门店的员工 userQuery.setObjectType(2); userQuery.setObjectId(objectId); // 获取属于这个运营商的门店的店长ids List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId) .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList()); userQuery.setStoreIds(storeStaffIds); // userQuery.setObjectType(2); // userQuery.setObjectId(objectId); // // 获取属于这个运营商的门店的店长ids // List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId) // .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList()); // userQuery.setStoreIds(storeStaffIds); // List<UserListVO> res1= userService.searchUsers(userQuery); List<UserListVO> res1= userService.searchUsers(userQuery); return res1; List<UserListVO> filteredList = res1.stream() .filter(vo -> Objects.equals(vo.getVersion(), UserExt.getUser().getId())) .collect(Collectors.toList()); // return res1; return filteredList; case 3: // 门店只查询门店员工 TStore store = storeService.getById(objectId); @@ -282,7 +288,13 @@ user.setStatus(ManagerStatus.OK.getCode()); user.setCreatetime(new Date()); User objectUser = UserFactory.createUser(user); if (user.getRoleid().equals("")){ objectUser.setObjectType(2); }else { objectUser.setObjectType(Integer.valueOf(user.getRoleid())); } objectUser.setObjectId(UserExt.getUser().getObjectId()); objectUser.setRoleid(user.getRoleid()); objectUser.setAccount(user.getPhone()); @@ -307,6 +319,7 @@ objectUser.setRoleid("3"); objectUser.setObjectId(UserExt.getUser().getObjectId()); } objectUser.setVersion(UserExt.getUser().getId()); this.userService.save(objectUser); return SUCCESS_TIP; } cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackageOrder.java
New file @@ -0,0 +1,115 @@ package com.dsh.guns.modular.system.model; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author zhibing.pu * @Date 2023/11/25 11:45 */ @Data @TableName("t_course_package_order") public class CoursePackageOrder { /** * 主键 */ @TableId(value = "id", type = IdType.NONE) private Long id; /** * 业务编号 */ @TableField("code") private String code; /** * 用户id */ @TableField("appUserId") private Integer appUserId; /** * 学员ids */ @TableField("studentIds") private String studentIds; /** * 课包id */ @TableField("coursePackageId") private Integer coursePackageId; /** * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝) */ @TableField("payType") private Integer payType; /** * 课时数 */ @TableField("classHours") private Integer classHours; /** * 原价 */ @TableField("originalPrice") private Double originalPrice; /** * 优惠券id */ @TableField("userCouponId") private Long userCouponId; /** * 现金支付价格 */ @TableField("cashPayment") private BigDecimal cashPayment; /** * 玩湃币价格/积分 */ @TableField("playPaiCoin") private Integer playPaiCoin; /** * 支付用户类型(1=用户,2=管理员) */ @TableField("payUserType") private Integer payUserType; /** * 支付状态(1=待支付,2=已支付) */ @TableField("payStatus") private Integer payStatus; /** * 第三方支付流水号 */ @TableField("orderNumber") private String orderNumber; /** * 支付用户id */ @TableField("payUserId") private Integer payUserId; /** * 状态(1=正常,2=冻结,3=删除) */ @TableField("state") private Integer state; /** * 添加时间 */ @TableField("insertTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date insertTime; /** * 平台手动支付时使用 */ @TableField("payUserName") private String payUserName; /** * 销售人员(线下购课添加购课订单时使用) */ @TableField("salesName") private String salesName; private String name; } cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/UserListVO.java
@@ -29,4 +29,6 @@ private String deptName; // 状态 1=正常 2=冻结 private Integer status; private Integer version; } cloud-server-management/src/main/resources/mapper/UserMapper.xml
@@ -116,7 +116,7 @@ order by o.id desc </select> <select id="searchUsers" resultType="com.dsh.guns.modular.system.model.UserListVO"> select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status,t1.version ,t2.simplename as deptName from sys_user t1 left join sys_dept t2 on t1.deptid = t2.id <where> cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
@@ -91,7 +91,8 @@ "labelField": "value", "valueField": "id", "size": "md", "searchable": true "searchable": true, "required": true }, { "type": "input-text", @@ -99,7 +100,8 @@ "name": "classNum", "id": "u:0333b5c5d05c", "mode": "horizontal", "size": "md" "size": "md", "required": true } ], "api": { cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/trans.html
@@ -92,7 +92,8 @@ "labelField": "value", "valueField": "id", "size": "md", "searchable": true "searchable": true, "required": true } ], "api": { cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
@@ -122,7 +122,7 @@ RegistrationRecord.holiClass = function () { if (this.check1()) { var ids = RegistrationRecord.seItem1.map(function(item) { return item.id; return item.studentId; }).join(","); let index = layer.open({ type: 2, @@ -139,7 +139,7 @@ RegistrationRecord.transClass = function () { if (this.check()) { var ids = RegistrationRecord.seItem1.map(function(item) { return item.id; return item.studentId; }).join(","); let index = layer.open({ type: 2, cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
@@ -8,6 +8,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @@ -29,15 +30,28 @@ @Scheduled(fixedRate = 60000) public void taskMinute() { try { Date date = new Date(); // 要增加的日期 List<SiteBooking> siteBookings = siteBookingMapper. selectList(new LambdaQueryWrapper<SiteBooking>().eq(SiteBooking::getStatus, 0)); for (SiteBooking siteBooking : siteBookings) { long time = siteBooking.getInsertTime().getTime(); long l = time + 1800 * 1000; if (System.currentTimeMillis() > l) { Date insert = siteBooking.getInsertTime(); // 创建 Calendar 对象,并设置为指定的日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(insert); // 增加 30 分钟 calendar.add(Calendar.MINUTE, 30); // 获取增加后的日期 Date newDate = calendar.getTime(); // long time = siteBooking.getInsertTime().getTime(); // long l = time + 1800 * 1000; if (date.after(newDate)) { siteBooking.setStatus(5); siteBookingMapper.updateById(siteBooking); // siteBookingMapper.deleteById(siteBooking.getId()); } } //定时修改赛事状态