nickchange
2023-11-28 df2e94580f6a24a14d08b6535dc166625b2b2caa
更新
7个文件已修改
224 ■■■■■ 已修改文件
.idea/workspace.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml
@@ -25,7 +25,14 @@
    <select />
  </component>
  <component name="ChangeListManager">
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="11.27,9" />
    <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="11.27,9">
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" afterDir="false" />
    </list>
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -86,12 +93,12 @@
    <option name="hideEmptyMiddlePackages" value="true" />
    <option name="showLibraryContents" value="true" />
  </component>
  <component name="PropertiesComponent">{
  &quot;keyToString&quot;: {
    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;
  <component name="PropertiesComponent"><![CDATA[{
  "keyToString": {
    "git-widget-placeholder": "正在合并 master",
    "node.js.selected.package.tslint": "(autodetect)"
  }
}</component>
}]]></component>
  <component name="ReactorSettings">
    <option name="notificationShown" value="true" />
  </component>
cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
@@ -108,6 +108,7 @@
     * 所有课时有效期
     */
    @TableField("validity")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date validity;
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -303,6 +303,7 @@
                ;
            }
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if (tStudents.size() > 0) {
            TStudent tStudent = tStudents.get(0);
            classInfoVo.setStuId(tStudent.getId());
@@ -328,7 +329,7 @@
                    course.setTotalNums(ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums());
                    course.setDeductedNums(ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums());
                    course.setRemainingNums(ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums()) ? 0 : tCoursePackagePayment.getResidueNums());
                    course.setPeriodOfValidity(tCoursePackagePayment.getPeriodOfValidity());
                    course.setPeriodOfValidity(sdf.format(tStudent.getValidity()));
                    course.setIsAble(tCoursePackagePayment.getIsAble());
                    course.setCourseType(tCoursePackagePayment.getCourseType());
                    courseList.add(course);
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
@@ -55,7 +55,10 @@
     */
    @PostMapping("/student/queryTStudentListByName")
    List<TStudent> queryTStudentListByName(@RequestBody String name);
    /**
     * 修改数据
     * @param student
     */
    @PostMapping("/student/frozen")
    void frozen(@RequestBody Student student);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
@@ -75,5 +75,4 @@
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date validity;
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -172,6 +172,8 @@
                    .orderByDesc("classDate")
                    .last(" limit 0, 1")
            );
            Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId());
            Date validity = student.getValidity();
            TCoursePackage coursePackage = coursePackageService.getById(coursePackageScheduling.getCoursePackageId());
            //上课星期
            String classWeeks = coursePackage.getClassWeeks();
@@ -221,7 +223,7 @@
                    continue;
                }
                //大于有效期不进行排课
                if (start.getTimeInMillis() >= useTime.getTime()) {
                if (start.getTimeInMillis() >= validity.getTime()) {
                    break;
                }
                for (int j = 0; j < split.length; j++) {
@@ -318,6 +320,8 @@
            TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
            Integer codeTime = coursePackage.getCodeTime();
            Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
            Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId());
            Date validity = student.getValidity();
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
@@ -370,7 +374,7 @@
                    }
                    //大于有效期不进行排课
                    if (startTime.getTimeInMillis() >= useTime.getTime()) {
                    if (startTime.getTimeInMillis() >= validity.getTime()) {
                        break;
                    }
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -484,7 +488,7 @@
                        }
                        //大于有效期不进行排课
                        if (startTime.getTimeInMillis() >= useTime.getTime()) {
                        if (startTime.getTimeInMillis() >= validity.getTime()) {
                            break;
                        }
                        for (int j = 0; j < split.length; j++) {
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -103,6 +103,9 @@
    @Autowired
    private TCoursePackageService coursePackageService;
    @Resource
    private CoursePackageStudentMapper coursePackageStudentMapper;
    @Override
    public List<CourseOfStoreVo> queryStoreOfCourse() {
@@ -1068,7 +1071,6 @@
                                    break;
                                }
                                if ("TRADE_SUCCESS".equals(s)) {
                                    coursePackageOrder1.setPayStatus(2);
                                    coursePackageOrder1.setOrderNumber(tradeNo);
                                    coursePackageOrder1.setAppUserId(null);
@@ -1175,6 +1177,8 @@
        String[] split = coursePackageOrder.getStudentIds().split(";");
        for (String id : split) {
            if(coursePackage.getType() == 1){
                //增加学员课时有效期
                Student student = studentClient.queryStudentById(Integer.valueOf(id));
                CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", id)
                        .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("state", 1));
                if (null == coursePackageOrderStudent) {
@@ -1196,9 +1200,18 @@
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                    coursePackageOrderStudent.setUseTime(calendar.getTime());
                    coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
                    //更新学员课时有效期
                    if(null == student.getValidity()){
                        student.setValidity(calendar.getTime());
                        addOldPackageStudent(student);
                    }else if(calendar.getTimeInMillis() > student.getValidity().getTime()){
                        student.setValidity(calendar.getTime());
                        addOldPackageStudent(student);
                    }
                    studentClient.frozen(student);
                    //开始排课
                    addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
                    addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
                    //课时记录
                    CourseCounsum courseCounsum = new CourseCounsum();
                    courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
@@ -1230,9 +1243,19 @@
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                    coursePackageOrderStudent.setUseTime(calendar.getTime());
                    coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
                    //更新学员课时有效期
                    if(null == student.getValidity()){
                        student.setValidity(calendar.getTime());
                        addOldPackageStudent(student);
                    }else if(calendar.getTimeInMillis() > student.getValidity().getTime()){
                        student.setValidity(calendar.getTime());
                        addOldPackageStudent(student);
                    }
                    studentClient.frozen(student);
                    //中间断课,没有连续续费的情况需要重新排课
                    if (useTime.compareTo(new Date()) < 0) {
                        addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
                        addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
                    }
                    //课时记录
@@ -1261,7 +1284,7 @@
            }
            if(coursePackage.getType() == 2){
                addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null);
                addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null, null);
            }
        }
    }
@@ -1274,7 +1297,7 @@
     * @param sId
     * @throws ParseException
     */
    private void addPackageStudent(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent) {
    private void addPackageStudent(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent, Date validity) {
        try {
            //1常规 2假期 3体验
            if (tCoursePackage.getType() == 1) {
@@ -1302,7 +1325,6 @@
                int day_week = calendar.get(Calendar.DAY_OF_WEEK);
                day_week = day_week - 1 == 0 ? 7 : day_week - 1;
                int num = 8 - day_week + 7;
                Date useTime = coursePackageOrderStudent.getUseTime();
                for (int i = 0; i < num; i++) {
                    Date time = calendar.getTime();
@@ -1317,7 +1339,7 @@
                    //大于有效期不进行排课
                    if (calendar.getTimeInMillis() >= useTime.getTime()) {
                    if (calendar.getTimeInMillis() >= validity.getTime()) {
                        break;
                    }
                    for (int j = 0; j < split.length; j++) {
@@ -1420,6 +1442,155 @@
    }
    /**
     * 课时有效期更新后-更新历史排课数据
     * @param student
     */
    public void addOldPackageStudent(Student student){
        Integer studentId = student.getId();
        Date validity = student.getValidity();
        List<CoursePackageOrderStudent> list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                .eq("studentId", studentId)
                .eq("status", 1)
                .gt("laveClassHours", 0)
                .eq("state", 1)
        );
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
            TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
            CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>()
                    .eq("studentId", studentId)
                    .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
                    .eq("status", 1)
                    .orderByDesc("classDate")
                    .last(" limit 0, 1")
            );
            Calendar calendar = Calendar.getInstance();
            if(null == one){
                calendar.setTime(new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            }else{
                Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
                Integer codeTime = coursePackage.getCodeTime();
                String classStartTime = coursePackage.getClassStartTime();
                String classEndTime = coursePackage.getClassEndTime();
                String format = sdf1.format(one.getClassDate());
                String time = format.substring(format.indexOf(" ") + 1);
                String[] split = classStartTime.split(",");
                String[] split1 = classEndTime.split(",");
                int n = Arrays.asList(split).indexOf(time);
                if(n != split.length - 1){
                    calendar.setTime(one.getClassDate());
                    //单独处理当天的剩余时间段
                    n++;
                    for (int i = n; i < split.length; i++) {
                        //剩余数量不足以排课
                        if (laveClassHours.compareTo(codeTime) < 0) {
                            break;
                        }
                        laveClassHours -= codeTime;
                        CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                        packageScheduling.setType(coursePackage.getType());
                        packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                        packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                        packageScheduling.setCoursePackageId(coursePackage.getId());
                        try {
                            Date parse = sdf.parse(format.format(time) + " " + split[i]);
                            Date parse1 = sdf.parse(format.format(time) + " " + split1[i]);
                            packageScheduling.setClassDate(parse);
                            packageScheduling.setEndDate(parse1);
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                        packageScheduling.setStatus(1);
                        coursePackageSchedulingService.save(packageScheduling);
                        CoursePackageStudent student1 = new CoursePackageStudent();
                        student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                        student1.setStudentId(coursePackageOrderStudent.getStudentId());
                        student1.setCoursePackageId(coursePackage.getId());
                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                        student1.setCoursePackageSchedulingId(packageScheduling.getId());
                        student1.setSignInOrNot(1);
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        coursePackageStudentMapper.insert(student1);
                    }
                }else{
                    calendar.setTime(one.getClassDate());
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    calendar.set(Calendar.HOUR_OF_DAY, 0);
                    calendar.set(Calendar.MINUTE, 0);
                    calendar.set(Calendar.SECOND, 0);
                    int day_week1 = calendar.get(Calendar.DAY_OF_WEEK);
                    day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
                    int num = 8 - day_week1 + 7;
                    //上课星期
                    String classWeeks = coursePackage.getClassWeeks();
                    List<Integer> week = week(classWeeks);
                    for (int i = 0; i < num; i++) {
                        Date time1 = calendar.getTime();
                        //判断当天是否在排课星期内
                        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() >= validity.getTime()) {
                            break;
                        }
                        for (int j = 0; j < split.length; j++) {
                            //剩余数量不足以排课
                            if (laveClassHours.compareTo(codeTime) < 0) {
                                break;
                            }
                            laveClassHours -= codeTime;
                            CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
                            packageScheduling.setType(coursePackage.getType());
                            packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
                            packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
                            packageScheduling.setCoursePackageId(coursePackage.getId());
                            try {
                                Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]);
                                Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]);
                                packageScheduling.setClassDate(parse);
                                packageScheduling.setEndDate(parse1);
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                            packageScheduling.setStatus(1);
                            coursePackageSchedulingService.save(packageScheduling);
                            CoursePackageStudent student1 = new CoursePackageStudent();
                            student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
                            student1.setStudentId(coursePackageOrderStudent.getStudentId());
                            student1.setCoursePackageId(coursePackage.getId());
                            student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                            student1.setCoursePackageSchedulingId(packageScheduling.getId());
                            student1.setSignInOrNot(1);
                            student1.setReservationStatus(1);
                            student1.setInsertTime(new Date());
                            coursePackageStudentMapper.insert(student1);
                        }
                        //增加日期,用于判断
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    }
                }
            }
        }
    }
    public static Date[] generateDateArray1(Date startDate, Date endDate) {
        List<Date> dateList = new ArrayList<>();
        Calendar calendar = Calendar.getInstance();