소스 검색

Merge remote-tracking branch 'origin/master'

Administrator 1 년 전
부모
커밋
f7fbc08413
78개의 변경된 파일6932개의 추가작업 그리고 7개의 파일을 삭제
  1. 6 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java
  2. 125 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseChangeController.java
  3. 118 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableController.java
  4. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableTimeController.java
  5. 7 7
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/formal/FormalParentsStudentController.java
  6. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterParentsController.java
  7. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterParentsStudentController.java
  8. 115 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterSchoolController.java
  9. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterSchoolFileController.java
  10. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterTeacherClassController.java
  11. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterTeacherController.java
  12. 153 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseChange.java
  13. 141 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTable.java
  14. 126 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTableTime.java
  15. 56 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterParents.java
  16. 101 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterParentsStudent.java
  17. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterSchool.java
  18. 61 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterSchoolFile.java
  19. 81 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterTeacher.java
  20. 61 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterTeacherClass.java
  21. 170 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseChangeBo.java
  22. 162 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableBo.java
  23. 144 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableTimeBo.java
  24. 59 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterParentsBo.java
  25. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterParentsStudentBo.java
  26. 81 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterSchoolBo.java
  27. 66 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterSchoolFileBo.java
  28. 84 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterTeacherBo.java
  29. 66 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterTeacherClassBo.java
  30. 199 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseChangeVo.java
  31. 171 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableTimeVo.java
  32. 196 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableVo.java
  33. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/FormalParentsStudentVo.java
  34. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/FormalTeacherClassVo.java
  35. 141 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterParentsStudentVo.java
  36. 93 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterParentsVo.java
  37. 74 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterSchoolFileVo.java
  38. 120 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterSchoolVo.java
  39. 93 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterTeacherClassVo.java
  40. 121 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterTeacherVo.java
  41. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseChangeMapper.java
  42. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableMapper.java
  43. 17 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableTimeMapper.java
  44. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterParentsMapper.java
  45. 28 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterParentsStudentMapper.java
  46. 17 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterSchoolFileMapper.java
  47. 21 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterSchoolMapper.java
  48. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterTeacherClassMapper.java
  49. 22 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterTeacherMapper.java
  50. 54 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseChangeService.java
  51. 53 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableService.java
  52. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableTimeService.java
  53. 51 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalParentsStudentService.java
  54. 55 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalTeacherClassService.java
  55. 50 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterParentsService.java
  56. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterParentsStudentService.java
  57. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterSchoolFileService.java
  58. 53 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterSchoolService.java
  59. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterTeacherClassService.java
  60. 50 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterTeacherService.java
  61. 280 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseChangeServiceImpl.java
  62. 342 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableServiceImpl.java
  63. 126 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableTimeServiceImpl.java
  64. 173 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterParentsServiceImpl.java
  65. 158 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterParentsStudentServiceImpl.java
  66. 113 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterSchoolFileServiceImpl.java
  67. 239 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterSchoolServiceImpl.java
  68. 113 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterTeacherClassServiceImpl.java
  69. 260 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterTeacherServiceImpl.java
  70. 60 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseChangeMapper.xml
  71. 45 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableMapper.xml
  72. 43 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableTimeMapper.xml
  73. 32 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterParentsMapper.xml
  74. 46 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterParentsStudentMapper.xml
  75. 25 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterSchoolFileMapper.xml
  76. 44 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterSchoolMapper.xml
  77. 34 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterTeacherClassMapper.xml
  78. 43 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterTeacherMapper.xml

+ 6 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java

@@ -33,6 +33,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 
     public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
+    public static String HH_MM_SS = "HH:mm:ss";
+
     private static final String[] PARSE_PATTERNS = {
         "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
         "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
@@ -56,6 +58,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return dateTimeNow(YYYY_MM_DD);
     }
 
+    public static final String getNowTime() {
+        return dateTimeNow(HH_MM_SS);
+    }
+
     public static String getTime() {
         return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
     }

+ 125 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseChangeController.java

@@ -0,0 +1,125 @@
+package org.dromara.system.controller.course;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.CourseChangeVo;
+import org.dromara.system.domain.bo.CourseChangeBo;
+import org.dromara.system.service.ICourseChangeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 调课
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/course/change")
+public class CourseChangeController extends BaseController {
+
+    private final ICourseChangeService courseChangeService;
+
+    /**
+     * 查询调课列表
+     */
+    @SaCheckPermission("course:change:list")
+    @GetMapping("/list")
+    public TableDataInfo<CourseChangeVo> list(CourseChangeBo bo, PageQuery pageQuery) {
+        return courseChangeService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 查询调课列表(与课表一起)
+     */
+    @GetMapping("/list/class")
+    public TableDataInfo<CourseChangeVo> courseList(CourseChangeBo bo, PageQuery pageQuery)
+    {
+        return courseChangeService.courseList(bo,pageQuery);
+    }
+
+    /**
+     * 导出调课列表
+     */
+    @SaCheckPermission("course:change:export")
+    @Log(title = "调课", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(CourseChangeBo bo, HttpServletResponse response) {
+        List<CourseChangeVo> list = courseChangeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "调课", CourseChangeVo.class, response);
+    }
+
+    /**
+     * 获取调课详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("course:change:query")
+    @GetMapping("/{id}")
+    public R<CourseChangeVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(courseChangeService.queryById(id));
+    }
+
+    /**
+     * 新增调课
+     */
+    @SaCheckPermission("course:change:add")
+    @Log(title = "调课", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody CourseChangeBo bo) {
+        return courseChangeService.insertByBo(bo);
+    }
+
+    /**
+     * 修改调课
+     */
+    @SaCheckPermission("course:change:edit")
+    @Log(title = "调课", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CourseChangeBo bo) {
+        return toAjax(courseChangeService.updateByBo(bo));
+    }
+
+    /**
+     * 回复调课
+     */
+    @SaCheckPermission("course:change:reply")
+    @Log(title = "调课", businessType = BusinessType.UPDATE)
+    @GetMapping("/reply")
+    public R<Void> reply(CourseChangeBo bo)
+    {
+        return courseChangeService.updateCourseChangeReply(bo);
+    }
+
+    /**
+     * 删除调课
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("course:change:remove")
+    @Log(title = "调课", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(courseChangeService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 118 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableController.java

@@ -0,0 +1,118 @@
+package org.dromara.system.controller.course;
+
+import java.util.List;
+import java.util.Map;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.CourseTableVo;
+import org.dromara.system.domain.bo.CourseTableBo;
+import org.dromara.system.service.ICourseTableService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 课程
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/course/table")
+public class CourseTableController extends BaseController {
+
+    private final ICourseTableService courseTableService;
+
+    /**
+     * 查询课程列表
+     */
+    @SaCheckPermission("course:table:list")
+    @GetMapping("/list")
+    public TableDataInfo<CourseTableVo> list(CourseTableBo bo, PageQuery pageQuery) {
+        return courseTableService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出课程列表
+     */
+    @SaCheckPermission("course:table:export")
+    @Log(title = "课程", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(CourseTableBo bo, HttpServletResponse response) {
+        List<CourseTableVo> list = courseTableService.queryList(bo);
+        ExcelUtil.exportExcel(list, "课程", CourseTableVo.class, response);
+    }
+
+    /**
+     * 获取课程详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("course:table:query")
+    @GetMapping("/{id}")
+    public R<CourseTableVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(courseTableService.queryById(id));
+    }
+
+    /**
+     * 新增课程
+     */
+    @SaCheckPermission("course:table:add")
+    @Log(title = "课程", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody CourseTableBo bo) {
+        return courseTableService.insertByBo(bo);
+    }
+
+    /**
+     * 修改课程
+     */
+    @SaCheckPermission("course:table:edit")
+    @Log(title = "课程", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CourseTableBo bo) {
+        return toAjax(courseTableService.updateByBo(bo));
+    }
+
+    /**
+     * 删除课程
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("course:table:remove")
+    @Log(title = "课程", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(courseTableService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * app查询班级授课老师和名称
+     * @param schoolId
+     * @param classId
+     * @return
+     */
+    @GetMapping(value = "/now")
+    public R<Map<String, Object>> now(Long schoolId, Long classId)
+    {
+        return courseTableService.now(schoolId,classId);
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableTimeController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.course;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.CourseTableTimeVo;
+import org.dromara.system.domain.bo.CourseTableTimeBo;
+import org.dromara.system.service.ICourseTableTimeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 课程-时间
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/course/time")
+public class CourseTableTimeController extends BaseController {
+
+    private final ICourseTableTimeService courseTableTimeService;
+
+    /**
+     * 查询课程-时间列表
+     */
+    @SaCheckPermission("course:time:list")
+    @GetMapping("/list")
+    public TableDataInfo<CourseTableTimeVo> list(CourseTableTimeBo bo, PageQuery pageQuery) {
+        return courseTableTimeService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出课程-时间列表
+     */
+    @SaCheckPermission("course:time:export")
+    @Log(title = "课程-时间", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(CourseTableTimeBo bo, HttpServletResponse response) {
+        List<CourseTableTimeVo> list = courseTableTimeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "课程-时间", CourseTableTimeVo.class, response);
+    }
+
+    /**
+     * 获取课程-时间详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("course:time:query")
+    @GetMapping("/{id}")
+    public R<CourseTableTimeVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(courseTableTimeService.queryById(id));
+    }
+
+    /**
+     * 新增课程-时间
+     */
+    @SaCheckPermission("course:time:add")
+    @Log(title = "课程-时间", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody CourseTableTimeBo bo) {
+        return toAjax(courseTableTimeService.insertByBo(bo));
+    }
+
+    /**
+     * 修改课程-时间
+     */
+    @SaCheckPermission("course:time:edit")
+    @Log(title = "课程-时间", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CourseTableTimeBo bo) {
+        return toAjax(courseTableTimeService.updateByBo(bo));
+    }
+
+    /**
+     * 删除课程-时间
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("course:time:remove")
+    @Log(title = "课程-时间", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(courseTableTimeService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 7 - 7
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/formal/FormalParentsStudentController.java

@@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/system/parentsStudent")
+@RequestMapping("/system/student")
 public class FormalParentsStudentController extends BaseController {
 
     private final IFormalParentsStudentService formalParentsStudentService;
@@ -39,7 +39,7 @@ public class FormalParentsStudentController extends BaseController {
     /**
      * 查询家长-学生(审核通过之后数据)列表
      */
-    @SaCheckPermission("system:parentsStudent:list")
+    @SaCheckPermission("system:student:list")
     @GetMapping("/list")
     public TableDataInfo<FormalParentsStudentVo> list(FormalParentsStudentBo bo, PageQuery pageQuery) {
         return formalParentsStudentService.queryPageList(bo, pageQuery);
@@ -58,7 +58,7 @@ public class FormalParentsStudentController extends BaseController {
     /**
      * 导出家长-学生(审核通过之后数据)列表
      */
-    @SaCheckPermission("system:parentsStudent:export")
+    @SaCheckPermission("system:student:export")
     @Log(title = "家长-学生(审核通过之后数据)", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(FormalParentsStudentBo bo, HttpServletResponse response) {
@@ -71,7 +71,7 @@ public class FormalParentsStudentController extends BaseController {
      *
      * @param id 主键
      */
-    @SaCheckPermission("system:parentsStudent:query")
+    @SaCheckPermission("system:student:query")
     @GetMapping("/{id}")
     public R<FormalParentsStudentVo> getInfo(@NotNull(message = "主键不能为空")
                                      @PathVariable Long id) {
@@ -81,7 +81,7 @@ public class FormalParentsStudentController extends BaseController {
     /**
      * 新增家长-学生(审核通过之后数据)
      */
-    @SaCheckPermission("system:parentsStudent:add")
+    @SaCheckPermission("system:student:add")
     @Log(title = "家长-学生(审核通过之后数据)", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -92,7 +92,7 @@ public class FormalParentsStudentController extends BaseController {
     /**
      * 修改家长-学生(审核通过之后数据)
      */
-    @SaCheckPermission("system:parentsStudent:edit")
+    @SaCheckPermission("system:student:edit")
     @Log(title = "家长-学生(审核通过之后数据)", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PostMapping("/put")
@@ -105,7 +105,7 @@ public class FormalParentsStudentController extends BaseController {
      *
      * @param ids 主键串
      */
-    @SaCheckPermission("system:parentsStudent:remove")
+    @SaCheckPermission("system:student:remove")
     @Log(title = "家长-学生(审核通过之后数据)", businessType = BusinessType.DELETE)
     @GetMapping("/delete/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterParentsController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.register;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.RegisterParentsVo;
+import org.dromara.system.domain.bo.RegisterParentsBo;
+import org.dromara.system.service.IRegisterParentsService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册-家长
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/register/parents")
+public class RegisterParentsController extends BaseController {
+
+    private final IRegisterParentsService registerParentsService;
+
+    /**
+     * 查询注册-家长列表
+     */
+    @SaCheckPermission("register:parents:list")
+    @GetMapping("/list")
+    public TableDataInfo<RegisterParentsVo> list(RegisterParentsBo bo, PageQuery pageQuery) {
+        return registerParentsService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册-家长列表
+     */
+    @SaCheckPermission("register:parents:export")
+    @Log(title = "注册-家长", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RegisterParentsBo bo, HttpServletResponse response) {
+        List<RegisterParentsVo> list = registerParentsService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册-家长", RegisterParentsVo.class, response);
+    }
+
+    /**
+     * 获取注册-家长详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("register:parents:query")
+    @GetMapping("/{id}")
+    public R<RegisterParentsVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(registerParentsService.queryById(id));
+    }
+
+    /**
+     * 新增注册-家长
+     */
+    @SaCheckPermission("register:parents:add")
+    @Log(title = "注册-家长", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<RegisterParentsVo> add(@Validated(AddGroup.class) @RequestBody RegisterParentsBo bo) {
+        return registerParentsService.insertByBo(bo);
+    }
+
+    /**
+     * 修改注册-家长
+     */
+    @SaCheckPermission("register:parents:edit")
+    @Log(title = "注册-家长", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RegisterParentsBo bo) {
+        return toAjax(registerParentsService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册-家长
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("register:parents:remove")
+    @Log(title = "注册-家长", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(registerParentsService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterParentsStudentController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.register;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.RegisterParentsStudentVo;
+import org.dromara.system.domain.bo.RegisterParentsStudentBo;
+import org.dromara.system.service.IRegisterParentsStudentService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册-家长-学生
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/register/student")
+public class RegisterParentsStudentController extends BaseController {
+
+    private final IRegisterParentsStudentService registerParentsStudentService;
+
+    /**
+     * 查询注册-家长-学生列表
+     */
+    @SaCheckPermission("register:student:list")
+    @GetMapping("/list")
+    public TableDataInfo<RegisterParentsStudentVo> list(RegisterParentsStudentBo bo, PageQuery pageQuery) {
+        return registerParentsStudentService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册-家长-学生列表
+     */
+    @SaCheckPermission("register:student:export")
+    @Log(title = "注册-家长-学生", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RegisterParentsStudentBo bo, HttpServletResponse response) {
+        List<RegisterParentsStudentVo> list = registerParentsStudentService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册-家长-学生", RegisterParentsStudentVo.class, response);
+    }
+
+    /**
+     * 获取注册-家长-学生详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("register:student:query")
+    @GetMapping("/{id}")
+    public R<RegisterParentsStudentVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(registerParentsStudentService.queryById(id));
+    }
+
+    /**
+     * 新增注册-家长-学生
+     */
+    @SaCheckPermission("register:student:add")
+    @Log(title = "注册-家长-学生", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody RegisterParentsStudentBo bo) {
+        return toAjax(registerParentsStudentService.insertByBo(bo));
+    }
+
+    /**
+     * 修改注册-家长-学生
+     */
+    @SaCheckPermission("register:student:edit")
+    @Log(title = "注册-家长-学生", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RegisterParentsStudentBo bo) {
+        return toAjax(registerParentsStudentService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册-家长-学生
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("register:student:remove")
+    @Log(title = "注册-家长-学生", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(registerParentsStudentService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 115 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterSchoolController.java

@@ -0,0 +1,115 @@
+package org.dromara.system.controller.register;
+
+import java.util.List;
+import java.util.Map;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.RegisterSchoolVo;
+import org.dromara.system.domain.bo.RegisterSchoolBo;
+import org.dromara.system.service.IRegisterSchoolService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册-学校
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/school")
+public class RegisterSchoolController extends BaseController {
+
+    private final IRegisterSchoolService registerSchoolService;
+
+    /**
+     * 查询注册-学校列表
+     */
+    @SaCheckPermission("system:school:list")
+    @GetMapping("/list")
+    public TableDataInfo<RegisterSchoolVo> list(RegisterSchoolBo bo, PageQuery pageQuery) {
+        return registerSchoolService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册-学校列表
+     */
+    @SaCheckPermission("system:school:export")
+    @Log(title = "注册-学校", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RegisterSchoolBo bo, HttpServletResponse response) {
+        List<RegisterSchoolVo> list = registerSchoolService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册-学校", RegisterSchoolVo.class, response);
+    }
+
+    /**
+     * 获取注册-学校详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:school:query")
+    @GetMapping("/{id}")
+    public R<RegisterSchoolVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(registerSchoolService.queryById(id));
+    }
+
+    /**
+     * 新增注册-学校
+     */
+    @SaCheckPermission("system:school:add")
+    @Log(title = "注册-学校", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<RegisterSchoolVo> add(@Validated(AddGroup.class) @RequestBody RegisterSchoolBo bo) {
+        return registerSchoolService.insertByBo(bo);
+    }
+
+    /**
+     * 修改注册-学校
+     */
+    @SaCheckPermission("system:school:edit")
+    @Log(title = "注册-学校", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RegisterSchoolBo bo) {
+        return toAjax(registerSchoolService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册-学校
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:school:remove")
+    @Log(title = "注册-学校", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(registerSchoolService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 注册信息查询
+     */
+    @GetMapping(value = "/query")
+    public R<Map<String,Object>> queryInfo(String phonenumber)
+    {
+        return registerSchoolService.queryInfo(phonenumber);
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterSchoolFileController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.register;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.RegisterSchoolFileVo;
+import org.dromara.system.domain.bo.RegisterSchoolFileBo;
+import org.dromara.system.service.IRegisterSchoolFileService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册-学校-附件
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/schoolFile")
+public class RegisterSchoolFileController extends BaseController {
+
+    private final IRegisterSchoolFileService registerSchoolFileService;
+
+    /**
+     * 查询注册-学校-附件列表
+     */
+    @SaCheckPermission("system:schoolFile:list")
+    @GetMapping("/list")
+    public TableDataInfo<RegisterSchoolFileVo> list(RegisterSchoolFileBo bo, PageQuery pageQuery) {
+        return registerSchoolFileService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册-学校-附件列表
+     */
+    @SaCheckPermission("system:schoolFile:export")
+    @Log(title = "注册-学校-附件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RegisterSchoolFileBo bo, HttpServletResponse response) {
+        List<RegisterSchoolFileVo> list = registerSchoolFileService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册-学校-附件", RegisterSchoolFileVo.class, response);
+    }
+
+    /**
+     * 获取注册-学校-附件详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:schoolFile:query")
+    @GetMapping("/{id}")
+    public R<RegisterSchoolFileVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(registerSchoolFileService.queryById(id));
+    }
+
+    /**
+     * 新增注册-学校-附件
+     */
+    @SaCheckPermission("system:schoolFile:add")
+    @Log(title = "注册-学校-附件", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody RegisterSchoolFileBo bo) {
+        return toAjax(registerSchoolFileService.insertByBo(bo));
+    }
+
+    /**
+     * 修改注册-学校-附件
+     */
+    @SaCheckPermission("system:schoolFile:edit")
+    @Log(title = "注册-学校-附件", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RegisterSchoolFileBo bo) {
+        return toAjax(registerSchoolFileService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册-学校-附件
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:schoolFile:remove")
+    @Log(title = "注册-学校-附件", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(registerSchoolFileService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterTeacherClassController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.register;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.RegisterTeacherClassVo;
+import org.dromara.system.domain.bo.RegisterTeacherClassBo;
+import org.dromara.system.service.IRegisterTeacherClassService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册-老师-班级(学科)
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/teacherClass")
+public class RegisterTeacherClassController extends BaseController {
+
+    private final IRegisterTeacherClassService registerTeacherClassService;
+
+    /**
+     * 查询注册-老师-班级(学科)列表
+     */
+    @SaCheckPermission("system:teacherClass:list")
+    @GetMapping("/list")
+    public TableDataInfo<RegisterTeacherClassVo> list(RegisterTeacherClassBo bo, PageQuery pageQuery) {
+        return registerTeacherClassService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册-老师-班级(学科)列表
+     */
+    @SaCheckPermission("system:teacherClass:export")
+    @Log(title = "注册-老师-班级(学科)", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RegisterTeacherClassBo bo, HttpServletResponse response) {
+        List<RegisterTeacherClassVo> list = registerTeacherClassService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册-老师-班级(学科)", RegisterTeacherClassVo.class, response);
+    }
+
+    /**
+     * 获取注册-老师-班级(学科)详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:teacherClass:query")
+    @GetMapping("/{id}")
+    public R<RegisterTeacherClassVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(registerTeacherClassService.queryById(id));
+    }
+
+    /**
+     * 新增注册-老师-班级(学科)
+     */
+    @SaCheckPermission("system:teacherClass:add")
+    @Log(title = "注册-老师-班级(学科)", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody RegisterTeacherClassBo bo) {
+        return toAjax(registerTeacherClassService.insertByBo(bo));
+    }
+
+    /**
+     * 修改注册-老师-班级(学科)
+     */
+    @SaCheckPermission("system:teacherClass:edit")
+    @Log(title = "注册-老师-班级(学科)", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RegisterTeacherClassBo bo) {
+        return toAjax(registerTeacherClassService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册-老师-班级(学科)
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:teacherClass:remove")
+    @Log(title = "注册-老师-班级(学科)", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(registerTeacherClassService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/register/RegisterTeacherController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.register;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.RegisterTeacherVo;
+import org.dromara.system.domain.bo.RegisterTeacherBo;
+import org.dromara.system.service.IRegisterTeacherService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册-老师
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/register/teacher")
+public class RegisterTeacherController extends BaseController {
+
+    private final IRegisterTeacherService registerTeacherService;
+
+    /**
+     * 查询注册-老师列表
+     */
+    @SaCheckPermission("register:teacher:list")
+    @GetMapping("/list")
+    public TableDataInfo<RegisterTeacherVo> list(RegisterTeacherBo bo, PageQuery pageQuery) {
+        return registerTeacherService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册-老师列表
+     */
+    @SaCheckPermission("register:teacher:export")
+    @Log(title = "注册-老师", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(RegisterTeacherBo bo, HttpServletResponse response) {
+        List<RegisterTeacherVo> list = registerTeacherService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册-老师", RegisterTeacherVo.class, response);
+    }
+
+    /**
+     * 获取注册-老师详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("register:teacher:query")
+    @GetMapping("/{id}")
+    public R<RegisterTeacherVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(registerTeacherService.queryById(id));
+    }
+
+    /**
+     * 新增注册-老师
+     */
+    @SaCheckPermission("register:teacher:add")
+    @Log(title = "注册-老师", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<RegisterTeacherVo> add(@Validated(AddGroup.class) @RequestBody RegisterTeacherBo bo) {
+        return registerTeacherService.insertByBo(bo);
+    }
+
+    /**
+     * 修改注册-老师
+     */
+    @SaCheckPermission("register:teacher:edit")
+    @Log(title = "注册-老师", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody RegisterTeacherBo bo) {
+        return toAjax(registerTeacherService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册-老师
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("register:teacher:remove")
+    @Log(title = "注册-老师", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(registerTeacherService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 153 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseChange.java

@@ -0,0 +1,153 @@
+package org.dromara.system.domain;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.data.annotation.Transient;
+
+import java.io.Serial;
+import java.util.List;
+
+/**
+ * 调课对象 course_change
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("course_change")
+public class CourseChange extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 申请人id
+     */
+    private Long applyId;
+
+    /**
+     * 申请人
+     */
+    private String applyName;
+
+    /**
+     * 申请时间
+     */
+    private Date applyTime;
+
+    /**
+     * 调课班级id
+     */
+    private String subjectClassId;
+
+    /**
+     * 调课班级
+     */
+    private String subjectClass;
+
+    /**
+     * 调课科目
+     */
+    private String subject;
+
+    /**
+     * 调课科目是第几节课
+     */
+    private String isNum;
+
+    /**
+     * 调课科目的上课时间
+     */
+    private Date subjectTime;
+
+    /**
+     * 周几(调课科目的上课)
+     */
+    private String subjectWeek;
+
+    /**
+     * 被调科目老师
+     */
+    private String bePersonnel;
+
+    /**
+     * 被调科目老师Id
+     */
+    private String bePersonnelId;
+
+    /**
+     * 被调科目
+     */
+    private String beSubject;
+
+    /**
+     * 被调课科目是第几节课
+     */
+    private String beIsNum;
+
+    /**
+     * 被调课科目的上课时间
+     */
+    private Date beSubjectTime;
+
+    /**
+     * 周几(被调课科目的上课)
+     */
+    private String week;
+
+    /**
+     * 结果(1:待审核,2:同意,3:不同意)
+     */
+    private String isPass;
+
+    /**
+     * 内容描述
+     */
+    private String content;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+    /**
+     * 学校id
+     */
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    @TableField(exist = false)
+    private List<Long> subjectClassIds;
+
+}

+ 141 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTable.java

@@ -0,0 +1,141 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 课程对象 course_table
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("course_table")
+public class CourseTable extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 周几:1:周一,2:周二,3:周三,4:周四,5:周五
+     */
+    private String week;
+
+    /**
+     * 第一节课
+     */
+    private String oneClass;
+
+    /**
+     * 第一节课老师
+     */
+    private String oneTeacher;
+
+    /**
+     * 第二节课
+     */
+    private String twoClass;
+
+    /**
+     * 第二节课老师
+     */
+    private String twoTeacher;
+
+    /**
+     * 第三节课
+     */
+    private String threeClass;
+
+    /**
+     * 第三节课老师
+     */
+    private String threeTeacher;
+
+    /**
+     * 第四节课
+     */
+    private String fourClass;
+
+    /**
+     * 第四节课老师
+     */
+    private String fourTeacher;
+
+    /**
+     * 第五节课
+     */
+    private String fiveClass;
+
+    /**
+     * 第五节课老师
+     */
+    private String fiveTeacher;
+
+    /**
+     * 第六节课
+     */
+    private String sixClass;
+
+    /**
+     * 第六节课老师
+     */
+    private String sixTeacher;
+
+    /**
+     * 第七节课
+     */
+    private String sevenClass;
+
+    /**
+     * 第七节课老师
+     */
+    private String sevenTeacher;
+
+    /**
+     * 第八节课
+     */
+    private String eightClass;
+
+    /**
+     * 第八节课老师
+     */
+    private String eightTeacher;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 126 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTableTime.java

@@ -0,0 +1,126 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 课程-时间对象 course_table_time
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("course_table_time")
+public class CourseTableTime extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 第一节课开始时间
+     */
+    private String oneStartTime;
+
+    /**
+     * 第一节课结束时间
+     */
+    private String oneEndTime;
+
+    /**
+     * 第二节课开始时间
+     */
+    private String twoStartTime;
+
+    /**
+     * 第二节课结束时间
+     */
+    private String twoEndTime;
+
+    /**
+     * 第三节课开始时间
+     */
+    private String threeStartTime;
+
+    /**
+     * 第三节课结束时间
+     */
+    private String threeEndTime;
+
+    /**
+     * 第四节课开始时间
+     */
+    private String fourStartTime;
+
+    /**
+     * 第四节课结束时间
+     */
+    private String fourEndTime;
+
+    /**
+     * 第五节课开始时间
+     */
+    private String fiveStartTime;
+
+    /**
+     * 第五节课结束时间
+     */
+    private String fiveEndTime;
+
+    /**
+     * 第六节课开始时间
+     */
+    private String sixStartTime;
+
+    /**
+     * 第六节课结束时间
+     */
+    private String sixEndTime;
+
+    /**
+     * 第七节课开始时间
+     */
+    private String sevenStartTime;
+
+    /**
+     * 第七节课结束时间
+     */
+    private String sevenEndTime;
+
+    /**
+     * 第八节课开始时间
+     */
+    private String eightStartTime;
+
+    /**
+     * 第八节课结束时间
+     */
+    private String eightEndTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 56 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterParents.java

@@ -0,0 +1,56 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册-家长对象 register_parents
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("register_parents")
+public class RegisterParents extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    private String openId;
+
+    /**
+     * 姓名
+     */
+    private String userName;
+
+    /**
+     * 联系方式
+     */
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 101 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterParentsStudent.java

@@ -0,0 +1,101 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册-家长-学生对象 register_parents_student
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("register_parents_student")
+public class RegisterParentsStudent extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 家长id
+     */
+    private Long parentsId;
+
+    /**
+     * 家长姓名
+     */
+    private String parentsName;
+
+    /**
+     * 家长联系方式
+     */
+    private String parentsPhone;
+
+    /**
+     * 学校id
+     */
+    private Long schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    private Long classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 姓名
+     */
+    private String studentName;
+
+    /**
+     * 学号
+     */
+    private String studentNumber;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterSchool.java

@@ -0,0 +1,76 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册-学校对象 register_school
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("register_school")
+public class RegisterSchool extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    private String openId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 负责人
+     */
+    private String userName;
+
+    /**
+     * 负责人联系方式
+     */
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 61 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterSchoolFile.java

@@ -0,0 +1,61 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册-学校-附件对象 register_school_file
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("register_school_file")
+public class RegisterSchoolFile extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 学校ID
+     */
+    private Long schoolId;
+
+    /**
+     * 学校部门id
+     */
+    private Long deptId;
+
+    /**
+     * 附件名称
+     */
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    private String url;
+
+    /**
+     * 地址类型
+     */
+    private String type;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 81 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterTeacher.java

@@ -0,0 +1,81 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册-老师对象 register_teacher
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("register_teacher")
+public class RegisterTeacher extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    private String openId;
+
+    /**
+     * 学校id
+     */
+    private Long schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 姓名
+     */
+    private String userName;
+
+    /**
+     * 联系方式
+     */
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+
+}

+ 61 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/RegisterTeacherClass.java

@@ -0,0 +1,61 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册-老师-班级(学科)对象 register_teacher_class
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("register_teacher_class")
+public class RegisterTeacherClass extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 老师id
+     */
+    private Long teacherId;
+
+    /**
+     * 班级id
+     */
+    private Long classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 
+     */
+    private String period;
+
+    /**
+     * 学科
+     */
+    private String discipline;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 170 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseChangeBo.java

@@ -0,0 +1,170 @@
+package org.dromara.system.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.CourseChange;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.data.annotation.Transient;
+
+/**
+ * 调课业务对象 course_change
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = CourseChange.class, reverseConvertGenerate = false)
+public class CourseChangeBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 申请人id
+     */
+    private Long applyId;
+
+    /**
+     * 申请人
+     */
+    private String applyName;
+
+    /**
+     * 申请时间
+     */
+    @NotNull(message = "申请时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date applyTime;
+
+    /**
+     * 调课班级id
+     */
+    @NotBlank(message = "调课班级id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long subjectClassId;
+
+    /**
+     * 调课班级
+     */
+    @NotBlank(message = "调课班级不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String subjectClass;
+
+    /**
+     * 调课科目
+     */
+    @NotBlank(message = "调课科目不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String subject;
+
+    /**
+     * 调课科目是第几节课
+     */
+    @NotBlank(message = "调课科目是第几节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String isNum;
+
+    /**
+     * 调课科目的上课时间
+     */
+    @NotNull(message = "调课科目的上课时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date subjectTime;
+
+    /**
+     * 周几(调课科目的上课)
+     */
+    @NotBlank(message = "周几(调课科目的上课)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String subjectWeek;
+
+    /**
+     * 被调科目老师
+     */
+    @NotBlank(message = "被调科目老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bePersonnel;
+
+    /**
+     * 被调科目老师Id
+     */
+    @NotBlank(message = "被调科目老师Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long bePersonnelId;
+
+    /**
+     * 被调科目
+     */
+    @NotBlank(message = "被调科目不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String beSubject;
+
+    /**
+     * 被调课科目是第几节课
+     */
+    @NotBlank(message = "被调课科目是第几节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String beIsNum;
+
+    /**
+     * 被调课科目的上课时间
+     */
+    @NotNull(message = "被调课科目的上课时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date beSubjectTime;
+
+    /**
+     * 周几(被调课科目的上课)
+     */
+    @NotBlank(message = "周几(被调课科目的上课)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String week;
+
+    /**
+     * 结果(1:待审核,2:同意,3:不同意)
+     */
+    private String isPass;
+
+    /**
+     * 内容描述
+     */
+    @NotBlank(message = "内容描述不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String content;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+    /**
+     * 学校id
+     */
+    @NotBlank(message = "学校id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @NotBlank(message = "学校名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolName;
+
+
+    @TableField(exist = false)
+    private List<Long> subjectClassIds;
+
+
+}

+ 162 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableBo.java

@@ -0,0 +1,162 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.CourseTable;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 课程业务对象 course_table
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = CourseTable.class, reverseConvertGenerate = false)
+public class CourseTableBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    @NotBlank(message = "学校id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @NotBlank(message = "学校名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    @NotBlank(message = "班级id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    @NotBlank(message = "班级名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String className;
+
+    /**
+     * 周几:1:周一,2:周二,3:周三,4:周四,5:周五
+     */
+    @NotBlank(message = "周几:1:周一,2:周二,3:周三,4:周四,5:周五不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String week;
+
+    /**
+     * 第一节课
+     */
+    @NotBlank(message = "第一节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneClass;
+
+    /**
+     * 第一节课老师
+     */
+    @NotBlank(message = "第一节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneTeacher;
+
+    /**
+     * 第二节课
+     */
+    @NotBlank(message = "第二节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String twoClass;
+
+    /**
+     * 第二节课老师
+     */
+    @NotBlank(message = "第二节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String twoTeacher;
+
+    /**
+     * 第三节课
+     */
+    @NotBlank(message = "第三节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String threeClass;
+
+    /**
+     * 第三节课老师
+     */
+    @NotBlank(message = "第三节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String threeTeacher;
+
+    /**
+     * 第四节课
+     */
+    @NotBlank(message = "第四节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fourClass;
+
+    /**
+     * 第四节课老师
+     */
+    @NotBlank(message = "第四节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fourTeacher;
+
+    /**
+     * 第五节课
+     */
+    @NotBlank(message = "第五节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fiveClass;
+
+    /**
+     * 第五节课老师
+     */
+    @NotBlank(message = "第五节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fiveTeacher;
+
+    /**
+     * 第六节课
+     */
+    @NotBlank(message = "第六节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sixClass;
+
+    /**
+     * 第六节课老师
+     */
+    @NotBlank(message = "第六节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sixTeacher;
+
+    /**
+     * 第七节课
+     */
+    @NotBlank(message = "第七节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sevenClass;
+
+    /**
+     * 第七节课老师
+     */
+    @NotBlank(message = "第七节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sevenTeacher;
+
+    /**
+     * 第八节课
+     */
+    @NotBlank(message = "第八节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String eightClass;
+
+    /**
+     * 第八节课老师
+     */
+    @NotBlank(message = "第八节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String eightTeacher;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 144 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableTimeBo.java

@@ -0,0 +1,144 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.CourseTableTime;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 课程-时间业务对象 course_table_time
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = CourseTableTime.class, reverseConvertGenerate = false)
+public class CourseTableTimeBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    @NotBlank(message = "学校id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @NotBlank(message = "学校名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolName;
+
+    /**
+     * 第一节课开始时间
+     */
+    @NotBlank(message = "第一节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneStartTime;
+
+    /**
+     * 第一节课结束时间
+     */
+    @NotBlank(message = "第一节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneEndTime;
+
+    /**
+     * 第二节课开始时间
+     */
+    @NotBlank(message = "第二节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String twoStartTime;
+
+    /**
+     * 第二节课结束时间
+     */
+    @NotBlank(message = "第二节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String twoEndTime;
+
+    /**
+     * 第三节课开始时间
+     */
+    @NotBlank(message = "第三节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String threeStartTime;
+
+    /**
+     * 第三节课结束时间
+     */
+    @NotBlank(message = "第三节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String threeEndTime;
+
+    /**
+     * 第四节课开始时间
+     */
+    @NotBlank(message = "第四节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fourStartTime;
+
+    /**
+     * 第四节课结束时间
+     */
+    @NotBlank(message = "第四节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fourEndTime;
+
+    /**
+     * 第五节课开始时间
+     */
+    @NotBlank(message = "第五节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fiveStartTime;
+
+    /**
+     * 第五节课结束时间
+     */
+    @NotBlank(message = "第五节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fiveEndTime;
+
+    /**
+     * 第六节课开始时间
+     */
+    @NotBlank(message = "第六节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sixStartTime;
+
+    /**
+     * 第六节课结束时间
+     */
+    @NotBlank(message = "第六节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sixEndTime;
+
+    /**
+     * 第七节课开始时间
+     */
+    @NotBlank(message = "第七节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sevenStartTime;
+
+    /**
+     * 第七节课结束时间
+     */
+    @NotBlank(message = "第七节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String sevenEndTime;
+
+    /**
+     * 第八节课开始时间
+     */
+    @NotBlank(message = "第八节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String eightStartTime;
+
+    /**
+     * 第八节课结束时间
+     */
+    @NotBlank(message = "第八节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String eightEndTime;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 59 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterParentsBo.java

@@ -0,0 +1,59 @@
+package org.dromara.system.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterParents;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.system.domain.vo.RegisterParentsStudentVo;
+
+import java.util.List;
+
+/**
+ * 注册-家长业务对象 register_parents
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RegisterParents.class, reverseConvertGenerate = false)
+public class RegisterParentsBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    private String openId;
+
+    /**
+     * 姓名
+     */
+    private String userName;
+
+    /**
+     * 联系方式
+     */
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    @TableField(exist = false)
+    private List<RegisterParentsStudentVo> registerParentsStudentList;
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterParentsStudentBo.java

@@ -0,0 +1,105 @@
+package org.dromara.system.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterParentsStudent;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.List;
+
+/**
+ * 注册-家长-学生业务对象 register_parents_student
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RegisterParentsStudent.class, reverseConvertGenerate = false)
+public class RegisterParentsStudentBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 家长id
+     */
+    private Long parentsId;
+
+    /**
+     * 家长姓名
+     */
+    private String parentsName;
+
+    /**
+     * 家长联系方式
+     */
+    private String parentsPhone;
+
+    /**
+     * 学校id
+     */
+    private Long schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    private Long classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 姓名
+     */
+    private String studentName;
+
+    /**
+     * 学号
+     */
+    private String studentNumber;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+    @TableField(exist = false)
+    private List<Long> classIds;
+
+
+}

+ 81 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterSchoolBo.java

@@ -0,0 +1,81 @@
+package org.dromara.system.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterSchool;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.system.domain.vo.RegisterSchoolFileVo;
+
+import java.util.List;
+
+/**
+ * 注册-学校业务对象 register_school
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RegisterSchool.class, reverseConvertGenerate = false)
+public class RegisterSchoolBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    private String openId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 负责人
+     */
+    private String userName;
+
+    /**
+     * 负责人联系方式
+     */
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /** 注册-学校-附件对象 */
+    @TableField(exist = false)
+    private List<RegisterSchoolFileVo> registerSchoolFileList;
+}

+ 66 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterSchoolFileBo.java

@@ -0,0 +1,66 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.RegisterSchoolFile;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 注册-学校-附件业务对象 register_school_file
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RegisterSchoolFile.class, reverseConvertGenerate = false)
+public class RegisterSchoolFileBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 学校ID
+     */
+    @NotNull(message = "学校ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long schoolId;
+
+    /**
+     * 学校部门id
+     */
+    @NotNull(message = "学校部门id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long deptId;
+
+    /**
+     * 附件名称
+     */
+    @NotBlank(message = "附件名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    @NotBlank(message = "附件地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String url;
+
+    /**
+     * 地址类型
+     */
+    @NotBlank(message = "地址类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String type;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 84 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterTeacherBo.java

@@ -0,0 +1,84 @@
+package org.dromara.system.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterTeacher;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.system.domain.vo.RegisterTeacherClassVo;
+
+import java.util.List;
+
+/**
+ * 注册-老师业务对象 register_teacher
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RegisterTeacher.class, reverseConvertGenerate = false)
+public class RegisterTeacherBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    private String openId;
+
+    /**
+     * 学校id
+     */
+    private Long schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 姓名
+     */
+    private String userName;
+
+    /**
+     * 联系方式
+     */
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     *
+     */
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    private String opinion;
+
+    @TableField(exist = false)
+    private List<RegisterTeacherClassVo> registerTeacherClassList;
+}

+ 66 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/RegisterTeacherClassBo.java

@@ -0,0 +1,66 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.RegisterTeacherClass;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 注册-老师-班级(学科)业务对象 register_teacher_class
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = RegisterTeacherClass.class, reverseConvertGenerate = false)
+public class RegisterTeacherClassBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 老师id
+     */
+    @NotNull(message = "老师id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long teacherId;
+
+    /**
+     * 班级id
+     */
+    @NotNull(message = "班级id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long classId;
+
+    /**
+     * 班级名称
+     */
+    @NotBlank(message = "班级名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String className;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String period;
+
+    /**
+     * 学科
+     */
+    @NotBlank(message = "学科不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String discipline;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 199 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseChangeVo.java

@@ -0,0 +1,199 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.CourseChange;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 调课视图对象 course_change
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = CourseChange.class)
+public class CourseChangeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 申请人id
+     */
+    @ExcelProperty(value = "申请人id")
+    private Long applyId;
+
+    /**
+     * 申请人
+     */
+    @ExcelProperty(value = "申请人")
+    private String applyName;
+
+    /**
+     * 申请时间
+     */
+    @ExcelProperty(value = "申请时间")
+    private Date applyTime;
+
+    /**
+     * 调课班级id
+     */
+    @ExcelProperty(value = "调课班级id")
+    private String subjectClassId;
+
+    /**
+     * 调课班级
+     */
+    @ExcelProperty(value = "调课班级")
+    private String subjectClass;
+
+    /**
+     * 调课科目
+     */
+    @ExcelProperty(value = "调课科目")
+    private String subject;
+
+    /**
+     * 调课科目是第几节课
+     */
+    @ExcelProperty(value = "调课科目是第几节课")
+    private String isNum;
+
+    /**
+     * 调课科目的上课时间
+     */
+    @ExcelProperty(value = "调课科目的上课时间")
+    private Date subjectTime;
+
+    /**
+     * 周几(调课科目的上课)
+     */
+    @ExcelProperty(value = "周几", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "调=课科目的上课")
+    private String subjectWeek;
+
+    /**
+     * 被调科目老师
+     */
+    @ExcelProperty(value = "被调科目老师")
+    private String bePersonnel;
+
+    /**
+     * 被调科目老师Id
+     */
+    @ExcelProperty(value = "被调科目老师Id")
+    private String bePersonnelId;
+
+    /**
+     * 被调科目
+     */
+    @ExcelProperty(value = "被调科目")
+    private String beSubject;
+
+    /**
+     * 被调课科目是第几节课
+     */
+    @ExcelProperty(value = "被调课科目是第几节课")
+    private String beIsNum;
+
+    /**
+     * 被调课科目的上课时间
+     */
+    @ExcelProperty(value = "被调课科目的上课时间")
+    private Date beSubjectTime;
+
+    /**
+     * 周几(被调课科目的上课)
+     */
+    @ExcelProperty(value = "周几", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "被=调课科目的上课")
+    private String week;
+
+    /**
+     * 结果(1:待审核,2:同意,3:不同意)
+     */
+    @ExcelProperty(value = "结果", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=:待审核,2:同意,3:不同意")
+    private String isPass;
+
+    /**
+     * 内容描述
+     */
+    @ExcelProperty(value = "内容描述")
+    private String content;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    @ExcelProperty(value = "审核人")
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    @ExcelProperty(value = "审核意见")
+    private String opinion;
+
+    /**
+     * 学校id
+     */
+    @ExcelProperty(value = "学校id")
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 171 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableTimeVo.java

@@ -0,0 +1,171 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.CourseTableTime;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 课程-时间视图对象 course_table_time
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = CourseTableTime.class)
+public class CourseTableTimeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    @ExcelProperty(value = "学校id")
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 第一节课开始时间
+     */
+    @ExcelProperty(value = "第一节课开始时间")
+    private String oneStartTime;
+
+    /**
+     * 第一节课结束时间
+     */
+    @ExcelProperty(value = "第一节课结束时间")
+    private String oneEndTime;
+
+    /**
+     * 第二节课开始时间
+     */
+    @ExcelProperty(value = "第二节课开始时间")
+    private String twoStartTime;
+
+    /**
+     * 第二节课结束时间
+     */
+    @ExcelProperty(value = "第二节课结束时间")
+    private String twoEndTime;
+
+    /**
+     * 第三节课开始时间
+     */
+    @ExcelProperty(value = "第三节课开始时间")
+    private String threeStartTime;
+
+    /**
+     * 第三节课结束时间
+     */
+    @ExcelProperty(value = "第三节课结束时间")
+    private String threeEndTime;
+
+    /**
+     * 第四节课开始时间
+     */
+    @ExcelProperty(value = "第四节课开始时间")
+    private String fourStartTime;
+
+    /**
+     * 第四节课结束时间
+     */
+    @ExcelProperty(value = "第四节课结束时间")
+    private String fourEndTime;
+
+    /**
+     * 第五节课开始时间
+     */
+    @ExcelProperty(value = "第五节课开始时间")
+    private String fiveStartTime;
+
+    /**
+     * 第五节课结束时间
+     */
+    @ExcelProperty(value = "第五节课结束时间")
+    private String fiveEndTime;
+
+    /**
+     * 第六节课开始时间
+     */
+    @ExcelProperty(value = "第六节课开始时间")
+    private String sixStartTime;
+
+    /**
+     * 第六节课结束时间
+     */
+    @ExcelProperty(value = "第六节课结束时间")
+    private String sixEndTime;
+
+    /**
+     * 第七节课开始时间
+     */
+    @ExcelProperty(value = "第七节课开始时间")
+    private String sevenStartTime;
+
+    /**
+     * 第七节课结束时间
+     */
+    @ExcelProperty(value = "第七节课结束时间")
+    private String sevenEndTime;
+
+    /**
+     * 第八节课开始时间
+     */
+    @ExcelProperty(value = "第八节课开始时间")
+    private String eightStartTime;
+
+    /**
+     * 第八节课结束时间
+     */
+    @ExcelProperty(value = "第八节课结束时间")
+    private String eightEndTime;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+}

+ 196 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableVo.java

@@ -0,0 +1,196 @@
+package org.dromara.system.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.CourseTable;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+
+/**
+ * 课程视图对象 course_table
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = CourseTable.class)
+public class CourseTableVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    @ExcelProperty(value = "学校id")
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    @ExcelProperty(value = "班级id")
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    @ExcelProperty(value = "班级名称")
+    private String className;
+
+    /**
+     * 周几:1:周一,2:周二,3:周三,4:周四,5:周五
+     */
+    @ExcelProperty(value = "周几:1:周一,2:周二,3:周三,4:周四,5:周五")
+    private String week;
+
+    /**
+     * 第一节课
+     */
+    @ExcelProperty(value = "第一节课")
+    private String oneClass;
+
+    /**
+     * 第一节课老师
+     */
+    @ExcelProperty(value = "第一节课老师")
+    private String oneTeacher;
+
+    /**
+     * 第二节课
+     */
+    @ExcelProperty(value = "第二节课")
+    private String twoClass;
+
+    /**
+     * 第二节课老师
+     */
+    @ExcelProperty(value = "第二节课老师")
+    private String twoTeacher;
+
+    /**
+     * 第三节课
+     */
+    @ExcelProperty(value = "第三节课")
+    private String threeClass;
+
+    /**
+     * 第三节课老师
+     */
+    @ExcelProperty(value = "第三节课老师")
+    private String threeTeacher;
+
+    /**
+     * 第四节课
+     */
+    @ExcelProperty(value = "第四节课")
+    private String fourClass;
+
+    /**
+     * 第四节课老师
+     */
+    @ExcelProperty(value = "第四节课老师")
+    private String fourTeacher;
+
+    /**
+     * 第五节课
+     */
+    @ExcelProperty(value = "第五节课")
+    private String fiveClass;
+
+    /**
+     * 第五节课老师
+     */
+    @ExcelProperty(value = "第五节课老师")
+    private String fiveTeacher;
+
+    /**
+     * 第六节课
+     */
+    @ExcelProperty(value = "第六节课")
+    private String sixClass;
+
+    /**
+     * 第六节课老师
+     */
+    @ExcelProperty(value = "第六节课老师")
+    private String sixTeacher;
+
+    /**
+     * 第七节课
+     */
+    @ExcelProperty(value = "第七节课")
+    private String sevenClass;
+
+    /**
+     * 第七节课老师
+     */
+    @ExcelProperty(value = "第七节课老师")
+    private String sevenTeacher;
+
+    /**
+     * 第八节课
+     */
+    @ExcelProperty(value = "第八节课")
+    private String eightClass;
+
+    /**
+     * 第八节课老师
+     */
+    @ExcelProperty(value = "第八节课老师")
+    private String eightTeacher;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+
+    @TableField(exist = false)
+    Set<Long> classNum;
+
+
+}

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/FormalParentsStudentVo.java

@@ -34,6 +34,11 @@ public class FormalParentsStudentVo implements Serializable {
     @ExcelProperty(value = "ID")
     private Long id;
 
+    /**
+     * 租户ID
+     */
+    private String tenantId;
+
     /**
      * 家长id
      */

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/FormalTeacherClassVo.java

@@ -36,6 +36,11 @@ public class FormalTeacherClassVo implements Serializable {
     @ExcelProperty(value = "ID")
     private Long id;
 
+    /**
+     * 租户ID
+     */
+    private String tenantId;
+
     /**
      * 老师id
      */

+ 141 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterParentsStudentVo.java

@@ -0,0 +1,141 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.RegisterParentsStudent;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 注册-家长-学生视图对象 register_parents_student
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RegisterParentsStudent.class)
+public class RegisterParentsStudentVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 家长id
+     */
+    @ExcelProperty(value = "家长id")
+    private Long parentsId;
+
+    /**
+     * 家长姓名
+     */
+    @ExcelProperty(value = "家长姓名")
+    private String parentsName;
+
+    /**
+     * 家长联系方式
+     */
+    @ExcelProperty(value = "家长联系方式")
+    private String parentsPhone;
+
+    /**
+     * 学校id
+     */
+    @ExcelProperty(value = "学校id")
+    private Long schoolId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    @ExcelProperty(value = "班级id")
+    private Long classId;
+
+    /**
+     * 班级名称
+     */
+    @ExcelProperty(value = "班级名称")
+    private String className;
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty(value = "姓名")
+    private String studentName;
+
+    /**
+     * 学号
+     */
+    @ExcelProperty(value = "学号")
+    private String studentNumber;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    @ExcelProperty(value = "审核结果", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=:待审核,2:通过,3:不通过")
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    @ExcelProperty(value = "审核人")
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    @ExcelProperty(value = "审核意见")
+    private String opinion;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 93 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterParentsVo.java

@@ -0,0 +1,93 @@
+package org.dromara.system.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterParents;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 注册-家长视图对象 register_parents
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RegisterParents.class)
+public class RegisterParentsVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    @ExcelProperty(value = "微信用户唯一标识 OpenID")
+    private String openId;
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty(value = "姓名")
+    private String userName;
+
+    /**
+     * 联系方式
+     */
+    @ExcelProperty(value = "联系方式")
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    @ExcelProperty(value = "审核结果", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=:待审核,2:通过,3:不通过")
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private List<RegisterParentsStudentVo> registerParentsStudentList;
+
+}

+ 74 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterSchoolFileVo.java

@@ -0,0 +1,74 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.RegisterSchoolFile;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 注册-学校-附件视图对象 register_school_file
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RegisterSchoolFile.class)
+public class RegisterSchoolFileVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 学校ID
+     */
+    @ExcelProperty(value = "学校ID")
+    private Long schoolId;
+
+    /**
+     * 学校部门id
+     */
+    @ExcelProperty(value = "学校部门id")
+    private Long deptId;
+
+    /**
+     * 附件名称
+     */
+    @ExcelProperty(value = "附件名称")
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    @ExcelProperty(value = "附件地址")
+    private String url;
+
+    /**
+     * 地址类型
+     */
+    @ExcelProperty(value = "地址类型")
+    private String type;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 120 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterSchoolVo.java

@@ -0,0 +1,120 @@
+package org.dromara.system.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterSchool;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 注册-学校视图对象 register_school
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RegisterSchool.class)
+public class RegisterSchoolVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    @ExcelProperty(value = "微信用户唯一标识 OpenID")
+    private String openId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 负责人
+     */
+    @ExcelProperty(value = "负责人")
+    private String userName;
+
+    /**
+     * 负责人联系方式
+     */
+    @ExcelProperty(value = "负责人联系方式")
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    @ExcelProperty(value = "审核结果", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=:待审核,2:通过,3:不通过")
+    private String isPass;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    @ExcelProperty(value = "审核人")
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    @ExcelProperty(value = "审核意见")
+    private String opinion;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /** 注册-学校-附件对象 */
+    @TableField(exist = false)
+    private List<RegisterSchoolFileVo> registerSchoolFileList;
+
+
+
+
+}

+ 93 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterTeacherClassVo.java

@@ -0,0 +1,93 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.RegisterTeacherClass;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 注册-老师-班级(学科)视图对象 register_teacher_class
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RegisterTeacherClass.class)
+public class RegisterTeacherClassVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 老师id
+     */
+    @ExcelProperty(value = "老师id")
+    private Long teacherId;
+
+    /**
+     * 班级id
+     */
+    @ExcelProperty(value = "班级id")
+    private Long classId;
+
+    /**
+     * 班级名称
+     */
+    @ExcelProperty(value = "班级名称")
+    private String className;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String period;
+
+    /**
+     * 学科
+     */
+    @ExcelProperty(value = "学科")
+    private String discipline;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+}

+ 121 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RegisterTeacherVo.java

@@ -0,0 +1,121 @@
+package org.dromara.system.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.RegisterTeacher;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 注册-老师视图对象 register_teacher
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = RegisterTeacher.class)
+public class RegisterTeacherVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 微信用户唯一标识 OpenID
+     */
+    @ExcelProperty(value = "微信用户唯一标识 OpenID")
+    private String openId;
+
+    /**
+     * 学校id
+     */
+    @ExcelProperty(value = "学校id")
+    private Long schoolId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty(value = "姓名")
+    private String userName;
+
+    /**
+     * 联系方式
+     */
+    @ExcelProperty(value = "联系方式")
+    private String userPhone;
+
+    /**
+     * 审核结果(1:待审核,2:通过,3:不通过)
+     */
+    @ExcelProperty(value = "审核结果", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=:待审核,2:通过,3:不通过")
+    private String isPass;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long auditId;
+
+    /**
+     * 审核人
+     */
+    @ExcelProperty(value = "审核人")
+    private String auditUser;
+
+    /**
+     * 审核意见
+     */
+    @ExcelProperty(value = "审核意见")
+    private String opinion;
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private List<RegisterTeacherClassVo> registerTeacherClassList;
+
+}

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseChangeMapper.java

@@ -0,0 +1,23 @@
+package org.dromara.system.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.dromara.system.domain.CourseChange;
+import org.dromara.system.domain.bo.CourseChangeBo;
+import org.dromara.system.domain.vo.CourseChangeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 调课Mapper接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface CourseChangeMapper extends BaseMapperPlus<CourseChange, CourseChangeVo> {
+
+
+    List<CourseChangeVo> selectCourseChangeListByTime(@Param("monthFirst") String monthFirst, @Param("userId")Long userId, @Param("deptId")Long deptId);
+
+    List<CourseChangeVo> selectCourseChangeListByEdit(@Param("classId")String classId, @Param("fist")String fist, @Param("five")String five);
+}

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableMapper.java

@@ -0,0 +1,18 @@
+package org.dromara.system.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.dromara.system.domain.CourseTable;
+import org.dromara.system.domain.vo.CourseTableVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 课程Mapper接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface CourseTableMapper extends BaseMapperPlus<CourseTable, CourseTableVo> {
+
+    CourseTableVo selectCourseTableByClassIdAndWeek(@Param("classId") Long classId, @Param("week")int week);
+
+}

+ 17 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableTimeMapper.java

@@ -0,0 +1,17 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.CourseTableTime;
+import org.dromara.system.domain.vo.CourseTableTimeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 课程-时间Mapper接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface CourseTableTimeMapper extends BaseMapperPlus<CourseTableTime, CourseTableTimeVo> {
+
+    CourseTableTimeVo selectCourseTableTimeBySchoolId(Long schoolId);
+
+}

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterParentsMapper.java

@@ -0,0 +1,18 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.RegisterParents;
+import org.dromara.system.domain.vo.RegisterParentsVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 注册-家长Mapper接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface RegisterParentsMapper extends BaseMapperPlus<RegisterParents, RegisterParentsVo> {
+
+    RegisterParentsVo selectRegisterParentsByOppenId(String oppenId);
+
+    RegisterParentsVo selectRegisterParentsByPhonenumber(String phonenumber);
+}

+ 28 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterParentsStudentMapper.java

@@ -0,0 +1,28 @@
+package org.dromara.system.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.dromara.system.domain.RegisterParentsStudent;
+import org.dromara.system.domain.vo.RegisterParentsStudentVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 注册-家长-学生Mapper接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface RegisterParentsStudentMapper extends BaseMapperPlus<RegisterParentsStudent, RegisterParentsStudentVo> {
+
+    /**
+     * 批量删除注册-家长-学生(只删除审核未通过的)
+     *
+     * @param parentsId 家长id
+     * @return 结果
+     */
+    void deleteRegisterParentsStudentByParentsId(Long parentsId);
+
+    List<RegisterParentsStudentVo> selectRegisterParentsStudentListByTime(@Param("monthFirst") String monthFirst, @Param("classIds")List<Long> classIds);
+
+}

+ 17 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterSchoolFileMapper.java

@@ -0,0 +1,17 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.RegisterSchoolFile;
+import org.dromara.system.domain.vo.RegisterSchoolFileVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 注册-学校-附件Mapper接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface RegisterSchoolFileMapper extends BaseMapperPlus<RegisterSchoolFile, RegisterSchoolFileVo> {
+
+    void deleteRegisterSchoolFileBySchoolId(Long schoolId);
+
+}

+ 21 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterSchoolMapper.java

@@ -0,0 +1,21 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.RegisterSchool;
+import org.dromara.system.domain.vo.RegisterSchoolVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 注册-学校Mapper接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface RegisterSchoolMapper extends BaseMapperPlus<RegisterSchool, RegisterSchoolVo> {
+    RegisterSchoolVo selectRegisterSchooByOppenId(String openId);
+
+    void deleteRegisterSchoolByOpenId(String openId);
+
+    RegisterSchoolVo selectRegisterSchooByPhonenumber(String phonenumber);
+
+    void deleteRegisterSchoolByPhonenumber(String phonenumber);
+}

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterTeacherClassMapper.java

@@ -0,0 +1,18 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.RegisterTeacherClass;
+import org.dromara.system.domain.vo.RegisterTeacherClassVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 注册-老师-班级(学科)Mapper接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface RegisterTeacherClassMapper extends BaseMapperPlus<RegisterTeacherClass, RegisterTeacherClassVo> {
+
+    void deleteRegisterTeacherClassByTeacherId(Long teacherId);
+
+    void deleteRegisterTeacherClassByTeacherIds(Long[] ids);
+}

+ 22 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterTeacherMapper.java

@@ -0,0 +1,22 @@
+package org.dromara.system.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.dromara.system.domain.RegisterTeacher;
+import org.dromara.system.domain.vo.RegisterTeacherVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 注册-老师Mapper接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface RegisterTeacherMapper extends BaseMapperPlus<RegisterTeacher, RegisterTeacherVo> {
+    RegisterTeacherVo selectRegisterTeacherByOppenId(String oppenId);
+
+    List<RegisterTeacherVo> selectRegisterTeacherListByTime(@Param("monthFirst") String monthFirst, @Param("deptId")Long deptId);
+
+    RegisterTeacherVo selectRegisterTeacherByPhonenumber(String phonenumber);
+}

+ 54 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseChangeService.java

@@ -0,0 +1,54 @@
+package org.dromara.system.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.system.domain.CourseChange;
+import org.dromara.system.domain.vo.CourseChangeVo;
+import org.dromara.system.domain.bo.CourseChangeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 调课Service接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface ICourseChangeService {
+
+    /**
+     * 查询调课
+     */
+    CourseChangeVo queryById(Long id);
+
+    /**
+     * 查询调课列表
+     */
+    TableDataInfo<CourseChangeVo> queryPageList(CourseChangeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询调课列表
+     */
+    List<CourseChangeVo> queryList(CourseChangeBo bo);
+
+    /**
+     * 新增调课
+     */
+    R<Void> insertByBo(CourseChangeBo bo);
+
+    /**
+     * 修改调课
+     */
+    Boolean updateByBo(CourseChangeBo bo);
+
+    /**
+     * 校验并批量删除调课信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    TableDataInfo<CourseChangeVo> courseList(CourseChangeBo bo, PageQuery pageQuery);
+
+    R<Void> updateCourseChangeReply(CourseChangeBo bo);
+}

+ 53 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableService.java

@@ -0,0 +1,53 @@
+package org.dromara.system.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.system.domain.CourseTable;
+import org.dromara.system.domain.vo.CourseTableVo;
+import org.dromara.system.domain.bo.CourseTableBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 课程Service接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface ICourseTableService {
+
+    /**
+     * 查询课程
+     */
+    CourseTableVo queryById(Long id);
+
+    /**
+     * 查询课程列表
+     */
+    TableDataInfo<CourseTableVo> queryPageList(CourseTableBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询课程列表
+     */
+    List<CourseTableVo> queryList(CourseTableBo bo);
+
+    /**
+     * 新增课程
+     */
+    R<Void> insertByBo(CourseTableBo bo);
+
+    /**
+     * 修改课程
+     */
+    Boolean updateByBo(CourseTableBo bo);
+
+    /**
+     * 校验并批量删除课程信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    R<Map<String, Object>> now(Long schoolId, Long classId);
+}

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableTimeService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.CourseTableTime;
+import org.dromara.system.domain.vo.CourseTableTimeVo;
+import org.dromara.system.domain.bo.CourseTableTimeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 课程-时间Service接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface ICourseTableTimeService {
+
+    /**
+     * 查询课程-时间
+     */
+    CourseTableTimeVo queryById(Long id);
+
+    /**
+     * 查询课程-时间列表
+     */
+    TableDataInfo<CourseTableTimeVo> queryPageList(CourseTableTimeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询课程-时间列表
+     */
+    List<CourseTableTimeVo> queryList(CourseTableTimeBo bo);
+
+    /**
+     * 新增课程-时间
+     */
+    Boolean insertByBo(CourseTableTimeBo bo);
+
+    /**
+     * 修改课程-时间
+     */
+    Boolean updateByBo(CourseTableTimeBo bo);
+
+    /**
+     * 校验并批量删除课程-时间信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 51 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalParentsStudentService.java

@@ -0,0 +1,51 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.FormalParentsStudent;
+import org.dromara.system.domain.vo.FormalParentsStudentVo;
+import org.dromara.system.domain.bo.FormalParentsStudentBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 家长-学生(审核通过之后数据)Service接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface IFormalParentsStudentService {
+
+    /**
+     * 查询家长-学生(审核通过之后数据)
+     */
+    FormalParentsStudentVo queryById(Long id);
+
+    /**
+     * 查询家长-学生(审核通过之后数据)列表
+     */
+    TableDataInfo<FormalParentsStudentVo> queryPageList(FormalParentsStudentBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询家长-学生(审核通过之后数据)列表
+     */
+    List<FormalParentsStudentVo> queryList(FormalParentsStudentBo bo);
+
+    /**
+     * 新增家长-学生(审核通过之后数据)
+     */
+    Boolean insertByBo(FormalParentsStudentBo bo);
+
+    /**
+     * 修改家长-学生(审核通过之后数据)
+     */
+    Boolean updateByBo(FormalParentsStudentBo bo);
+
+    /**
+     * 校验并批量删除家长-学生(审核通过之后数据)信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    TableDataInfo<FormalParentsStudentVo> selectFormalParentsStudentListNoPage(FormalParentsStudentBo bo);
+}

+ 55 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalTeacherClassService.java

@@ -0,0 +1,55 @@
+package org.dromara.system.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.system.domain.FormalTeacherClass;
+import org.dromara.system.domain.vo.FormalTeacherClassListVo;
+import org.dromara.system.domain.vo.FormalTeacherClassVo;
+import org.dromara.system.domain.bo.FormalTeacherClassBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 老师-班级(学科)(审核通过之后数据)Service接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface IFormalTeacherClassService {
+
+    /**
+     * 查询老师-班级(学科)(审核通过之后数据)
+     */
+    FormalTeacherClassVo queryById(Long id);
+
+    /**
+     * 查询老师-班级(学科)(审核通过之后数据)列表
+     */
+    TableDataInfo<FormalTeacherClassVo> queryPageList(FormalTeacherClassBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询老师-班级(学科)(审核通过之后数据)列表
+     */
+    List<FormalTeacherClassVo> queryList(FormalTeacherClassBo bo);
+
+    /**
+     * 新增老师-班级(学科)(审核通过之后数据)
+     */
+    Boolean insertByBo(FormalTeacherClassBo bo);
+
+    /**
+     * 修改老师-班级(学科)(审核通过之后数据)
+     */
+    Boolean updateByBo(FormalTeacherClassBo bo);
+
+    /**
+     * 校验并批量删除老师-班级(学科)(审核通过之后数据)信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    R<Void> updateFormalTeacherClassList(FormalTeacherClassListVo formalTeacherClassListVo);
+
+    TableDataInfo<FormalTeacherClassVo> selectFormalTeacherClassListNoPage(FormalTeacherClassBo bo);
+}

+ 50 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterParentsService.java

@@ -0,0 +1,50 @@
+package org.dromara.system.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.system.domain.RegisterParents;
+import org.dromara.system.domain.vo.RegisterParentsVo;
+import org.dromara.system.domain.bo.RegisterParentsBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 注册-家长Service接口
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+public interface IRegisterParentsService {
+
+    /**
+     * 查询注册-家长
+     */
+    RegisterParentsVo queryById(Long id);
+
+    /**
+     * 查询注册-家长列表
+     */
+    TableDataInfo<RegisterParentsVo> queryPageList(RegisterParentsBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询注册-家长列表
+     */
+    List<RegisterParentsVo> queryList(RegisterParentsBo bo);
+
+    /**
+     * 新增注册-家长
+     */
+    R<RegisterParentsVo> insertByBo(RegisterParentsBo bo);
+
+    /**
+     * 修改注册-家长
+     */
+    Boolean updateByBo(RegisterParentsBo bo);
+
+    /**
+     * 校验并批量删除注册-家长信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterParentsStudentService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.RegisterParentsStudent;
+import org.dromara.system.domain.vo.RegisterParentsStudentVo;
+import org.dromara.system.domain.bo.RegisterParentsStudentBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 注册-家长-学生Service接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface IRegisterParentsStudentService {
+
+    /**
+     * 查询注册-家长-学生
+     */
+    RegisterParentsStudentVo queryById(Long id);
+
+    /**
+     * 查询注册-家长-学生列表
+     */
+    TableDataInfo<RegisterParentsStudentVo> queryPageList(RegisterParentsStudentBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询注册-家长-学生列表
+     */
+    List<RegisterParentsStudentVo> queryList(RegisterParentsStudentBo bo);
+
+    /**
+     * 新增注册-家长-学生
+     */
+    Boolean insertByBo(RegisterParentsStudentBo bo);
+
+    /**
+     * 修改注册-家长-学生
+     */
+    Boolean updateByBo(RegisterParentsStudentBo bo);
+
+    /**
+     * 校验并批量删除注册-家长-学生信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterSchoolFileService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.RegisterSchoolFile;
+import org.dromara.system.domain.vo.RegisterSchoolFileVo;
+import org.dromara.system.domain.bo.RegisterSchoolFileBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 注册-学校-附件Service接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface IRegisterSchoolFileService {
+
+    /**
+     * 查询注册-学校-附件
+     */
+    RegisterSchoolFileVo queryById(Long id);
+
+    /**
+     * 查询注册-学校-附件列表
+     */
+    TableDataInfo<RegisterSchoolFileVo> queryPageList(RegisterSchoolFileBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询注册-学校-附件列表
+     */
+    List<RegisterSchoolFileVo> queryList(RegisterSchoolFileBo bo);
+
+    /**
+     * 新增注册-学校-附件
+     */
+    Boolean insertByBo(RegisterSchoolFileBo bo);
+
+    /**
+     * 修改注册-学校-附件
+     */
+    Boolean updateByBo(RegisterSchoolFileBo bo);
+
+    /**
+     * 校验并批量删除注册-学校-附件信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 53 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterSchoolService.java

@@ -0,0 +1,53 @@
+package org.dromara.system.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.system.domain.RegisterSchool;
+import org.dromara.system.domain.vo.RegisterSchoolVo;
+import org.dromara.system.domain.bo.RegisterSchoolBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 注册-学校Service接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface IRegisterSchoolService {
+
+    /**
+     * 查询注册-学校
+     */
+    RegisterSchoolVo queryById(Long id);
+
+    /**
+     * 查询注册-学校列表
+     */
+    TableDataInfo<RegisterSchoolVo> queryPageList(RegisterSchoolBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询注册-学校列表
+     */
+    List<RegisterSchoolVo> queryList(RegisterSchoolBo bo);
+
+    /**
+     * 新增注册-学校
+     */
+    R<RegisterSchoolVo> insertByBo(RegisterSchoolBo bo);
+
+    /**
+     * 修改注册-学校
+     */
+    Boolean updateByBo(RegisterSchoolBo bo);
+
+    /**
+     * 校验并批量删除注册-学校信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    R<Map<String, Object>> queryInfo(String phonenumber);
+}

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterTeacherClassService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.RegisterTeacherClass;
+import org.dromara.system.domain.vo.RegisterTeacherClassVo;
+import org.dromara.system.domain.bo.RegisterTeacherClassBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 注册-老师-班级(学科)Service接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface IRegisterTeacherClassService {
+
+    /**
+     * 查询注册-老师-班级(学科)
+     */
+    RegisterTeacherClassVo queryById(Long id);
+
+    /**
+     * 查询注册-老师-班级(学科)列表
+     */
+    TableDataInfo<RegisterTeacherClassVo> queryPageList(RegisterTeacherClassBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询注册-老师-班级(学科)列表
+     */
+    List<RegisterTeacherClassVo> queryList(RegisterTeacherClassBo bo);
+
+    /**
+     * 新增注册-老师-班级(学科)
+     */
+    Boolean insertByBo(RegisterTeacherClassBo bo);
+
+    /**
+     * 修改注册-老师-班级(学科)
+     */
+    Boolean updateByBo(RegisterTeacherClassBo bo);
+
+    /**
+     * 校验并批量删除注册-老师-班级(学科)信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 50 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IRegisterTeacherService.java

@@ -0,0 +1,50 @@
+package org.dromara.system.service;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.system.domain.RegisterTeacher;
+import org.dromara.system.domain.vo.RegisterTeacherVo;
+import org.dromara.system.domain.bo.RegisterTeacherBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 注册-老师Service接口
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+public interface IRegisterTeacherService {
+
+    /**
+     * 查询注册-老师
+     */
+    RegisterTeacherVo queryById(Long id);
+
+    /**
+     * 查询注册-老师列表
+     */
+    TableDataInfo<RegisterTeacherVo> queryPageList(RegisterTeacherBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询注册-老师列表
+     */
+    List<RegisterTeacherVo> queryList(RegisterTeacherBo bo);
+
+    /**
+     * 新增注册-老师
+     */
+    R<RegisterTeacherVo> insertByBo(RegisterTeacherBo bo);
+
+    /**
+     * 修改注册-老师
+     */
+    Boolean updateByBo(RegisterTeacherBo bo);
+
+    /**
+     * 校验并批量删除注册-老师信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 280 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseChangeServiceImpl.java

@@ -0,0 +1,280 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.domain.dto.RoleDTO;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.system.domain.FormalParentsStudent;
+import org.dromara.system.domain.FormalTeacherClass;
+import org.dromara.system.domain.SysRole;
+import org.dromara.system.domain.bo.FormalParentsStudentBo;
+import org.dromara.system.domain.bo.FormalTeacherClassBo;
+import org.dromara.system.domain.bo.SysDeptBo;
+import org.dromara.system.domain.vo.FormalParentsStudentVo;
+import org.dromara.system.domain.vo.FormalTeacherClassVo;
+import org.dromara.system.domain.vo.SysDeptVo;
+import org.dromara.system.mapper.FormalParentsStudentMapper;
+import org.dromara.system.mapper.SysDeptMapper;
+import org.dromara.system.service.IFormalParentsStudentService;
+import org.dromara.system.service.IFormalTeacherClassService;
+import org.dromara.system.service.ISysDeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.CourseChangeBo;
+import org.dromara.system.domain.vo.CourseChangeVo;
+import org.dromara.system.domain.CourseChange;
+import org.dromara.system.mapper.CourseChangeMapper;
+import org.dromara.system.service.ICourseChangeService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * 调课Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class CourseChangeServiceImpl implements ICourseChangeService {
+
+    private final CourseChangeMapper baseMapper;
+
+    private final IFormalTeacherClassService formalTeacherClassService;
+
+    private final IFormalParentsStudentService formalParentsStudentService;
+    private final ISysDeptService sysDeptService;
+
+    /**
+     * 查询调课
+     */
+    @Override
+    public CourseChangeVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询调课列表
+     */
+    @Override
+    public TableDataInfo<CourseChangeVo> queryPageList(CourseChangeBo bo, PageQuery pageQuery) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<RoleDTO> roles = loginUser.getRoles();
+        boolean bl = false;
+        for (RoleDTO role : roles) {
+            if ("teacher".equals(role.getRoleKey())) {
+                bl = true;
+                break;
+            }
+        }
+        //角色是老师
+        if (bl) {
+            //查询老师班级
+            FormalTeacherClassBo formalTeacherClass = new FormalTeacherClassBo();
+            formalTeacherClass.setTeacherId(loginUser.getUserId());
+            List<FormalTeacherClassVo> formalTeacherClassList = formalTeacherClassService.queryList(formalTeacherClass);
+
+            List<Long> classIds = formalTeacherClassList.stream().map(FormalTeacherClassVo::getClassId).collect(Collectors.toList());
+            bo.setSubjectClassIds(classIds);
+            bo.setApplyId(loginUser.getUserId());
+            bo.setBePersonnelId(loginUser.getUserId());
+        }
+
+        LambdaQueryWrapper<CourseChange> lqw = buildQueryWrapper(bo);
+        Page<CourseChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询调课列表
+     */
+    @Override
+    public List<CourseChangeVo> queryList(CourseChangeBo bo) {
+        LambdaQueryWrapper<CourseChange> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<CourseChange> buildQueryWrapper(CourseChangeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<CourseChange> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getApplyId() != null, CourseChange::getApplyId, bo.getApplyId());
+        lqw.like(StringUtils.isNotBlank(bo.getApplyName()), CourseChange::getApplyName, bo.getApplyName());
+        lqw.eq(bo.getApplyTime() != null, CourseChange::getApplyTime, bo.getApplyTime());
+        lqw.eq(bo.getSubjectClassId()!= null, CourseChange::getSubjectClassId, bo.getSubjectClassId());
+        lqw.eq(StringUtils.isNotBlank(bo.getSubjectClass()), CourseChange::getSubjectClass, bo.getSubjectClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getSubject()), CourseChange::getSubject, bo.getSubject());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsNum()), CourseChange::getIsNum, bo.getIsNum());
+        lqw.eq(bo.getSubjectTime() != null, CourseChange::getSubjectTime, bo.getSubjectTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getSubjectWeek()), CourseChange::getSubjectWeek, bo.getSubjectWeek());
+        lqw.eq(StringUtils.isNotBlank(bo.getBePersonnel()), CourseChange::getBePersonnel, bo.getBePersonnel());
+        lqw.eq(bo.getBePersonnelId()!= null, CourseChange::getBePersonnelId, bo.getBePersonnelId());
+        lqw.eq(StringUtils.isNotBlank(bo.getBeSubject()), CourseChange::getBeSubject, bo.getBeSubject());
+        lqw.eq(StringUtils.isNotBlank(bo.getBeIsNum()), CourseChange::getBeIsNum, bo.getBeIsNum());
+        lqw.eq(bo.getBeSubjectTime() != null, CourseChange::getBeSubjectTime, bo.getBeSubjectTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getWeek()), CourseChange::getWeek, bo.getWeek());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsPass()), CourseChange::getIsPass, bo.getIsPass());
+        lqw.eq(StringUtils.isNotBlank(bo.getContent()), CourseChange::getContent, bo.getContent());
+        lqw.eq(bo.getAuditId() != null, CourseChange::getAuditId, bo.getAuditId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuditUser()), CourseChange::getAuditUser, bo.getAuditUser());
+        lqw.eq(StringUtils.isNotBlank(bo.getOpinion()), CourseChange::getOpinion, bo.getOpinion());
+        lqw.eq(StringUtils.isNotBlank(bo.getSchoolId()), CourseChange::getSchoolId, bo.getSchoolId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), CourseChange::getSchoolName, bo.getSchoolName());
+        lqw.in((bo.getSubjectClassIds()!=null && bo.getSubjectClassIds().size()>0),CourseChange::getSubjectClassId,bo.getSubjectClassIds());
+        lqw.orderByDesc(CourseChange::getCreateTime);
+        return lqw;
+    }
+
+    /**
+     * 新增调课
+     */
+    @Override
+    public R<Void> insertByBo(CourseChangeBo bo) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        //判断修改课程属不属于当前老师
+        FormalTeacherClassBo formalTeacherClass = new FormalTeacherClassBo();
+        formalTeacherClass.setTeacherId(loginUser.getUserId());
+        List<FormalTeacherClassVo> formalTeacherClassList = formalTeacherClassService.queryList(formalTeacherClass);
+        Boolean bl = false;
+        for (FormalTeacherClassVo teacherClass : formalTeacherClassList) {
+            if(bo.getSubjectClassId().equals(teacherClass.getClassId()) && bo.getSubject().equals(teacherClass.getDiscipline())){
+                bl = true;
+                break;
+            }
+        }
+        if(!bl){
+            return R.fail("请选择属于自己的课程。");
+        }
+
+        bo.setSchoolId(formalTeacherClassList.get(0).getSchoolId());
+        bo.setSchoolName(formalTeacherClassList.get(0).getSchoolName());
+        bo.setApplyId(loginUser.getUserId());
+        bo.setApplyName(formalTeacherClassList.get(0).getTeacherName());
+        bo.setCreateTime(DateUtils.getNowDate());
+        //查询被调课的老师信息
+        FormalTeacherClassBo formalTeacherClassBe = new FormalTeacherClassBo();
+        formalTeacherClassBe.setClassId(bo.getSubjectClassId());
+        formalTeacherClassBe.setDiscipline(bo.getBeSubject());
+        List<FormalTeacherClassVo> formalTeacherClassBeList = formalTeacherClassService.queryList(formalTeacherClassBe);
+        if(formalTeacherClassBeList==null || formalTeacherClassBeList.size()<=0){
+            return R.fail();
+        }
+        bo.setBePersonnel(formalTeacherClassBeList.get(0).getTeacherName());
+        bo.setBePersonnelId(formalTeacherClassBeList.get(0).getTeacherId());
+        CourseChange add = MapstructUtils.convert(bo, CourseChange.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 修改调课
+     */
+    @Override
+    public Boolean updateByBo(CourseChangeBo bo) {
+        //查询被调课的老师信息
+        FormalTeacherClassBo formalTeacherClassBe = new FormalTeacherClassBo();
+        formalTeacherClassBe.setClassId(bo.getSubjectClassId());
+        formalTeacherClassBe.setDiscipline(bo.getBeSubject());
+        List<FormalTeacherClassVo> formalTeacherClassBeList = formalTeacherClassService.queryList(formalTeacherClassBe);
+        if(formalTeacherClassBeList==null || formalTeacherClassBeList.size()<=0){
+            return false;
+        }
+        bo.setBePersonnel(formalTeacherClassBeList.get(0).getTeacherName());
+        bo.setBePersonnelId(formalTeacherClassBeList.get(0).getTeacherId());
+        CourseChange update = MapstructUtils.convert(bo, CourseChange.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(CourseChange entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除调课
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public TableDataInfo<CourseChangeVo> courseList(CourseChangeBo bo, PageQuery pageQuery) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<RoleDTO> roles = loginUser.getRoles();
+        List<Long> classIdList = new ArrayList<>();
+        for (RoleDTO role : roles) {
+            if ("teacher".equals(role.getRoleKey())) {
+
+                //查询老师班级
+                FormalTeacherClassBo formalTeacherClass = new FormalTeacherClassBo();
+                formalTeacherClass.setTeacherId(loginUser.getUserId());
+                List<FormalTeacherClassVo> formalTeacherClassList = formalTeacherClassService.queryList(formalTeacherClass);
+                List<Long> classIds = formalTeacherClassList.stream().map(FormalTeacherClassVo::getClassId).collect(Collectors.toList());
+                classIdList.addAll(classIds);
+
+            }
+            if("parents".equals(role.getRoleKey())){
+                FormalParentsStudentBo formalParentsStudent = new FormalParentsStudentBo();
+                formalParentsStudent.setParentsId(loginUser.getUserId());
+                List<FormalParentsStudentVo> formalParentsStudentList = formalParentsStudentService.queryList(formalParentsStudent);
+                List<Long> classIds = formalParentsStudentList.stream().map(FormalParentsStudentVo::getClassId).collect(Collectors.toList());
+                classIdList.addAll(classIds);
+            }
+            if("school".equals(role.getRoleKey())){
+                SysDeptBo dept = new SysDeptBo();
+                dept.setParentId(loginUser.getDeptId());
+                List<SysDeptVo> depts = sysDeptService.selectDeptList(dept);
+                List<Long> classIds = depts.stream().map(SysDeptVo::getDeptId).collect(Collectors.toList());
+                classIdList.addAll(classIds);
+            }
+        }
+        bo.setSubjectClassIds(classIdList);
+        LambdaQueryWrapper<CourseChange> lqw = buildQueryWrapper(bo);
+        Page<CourseChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    @Override
+    public R<Void> updateCourseChangeReply(CourseChangeBo bo) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        //判断当前老师是否有权限回复该信息
+        FormalTeacherClassBo formalTeacherClass = new FormalTeacherClassBo();
+        formalTeacherClass.setTeacherId(loginUser.getUserId());
+        formalTeacherClass.setClassId(bo.getSubjectClassId());
+        formalTeacherClass.setDiscipline(bo.getBeSubject());
+        List<FormalTeacherClassVo> formalTeacherClassList = formalTeacherClassService.queryList(formalTeacherClass);
+        if (formalTeacherClassList == null || formalTeacherClassList.size() <= 0) {
+            return R.fail("请回复自己授课的班级与课程");
+        }
+        bo.setAuditId(loginUser.getUserId());
+        bo.setAuditUser(loginUser.getNickname());
+        bo.setCreateTime(DateUtils.getNowDate());
+        CourseChange update = MapstructUtils.convert(bo, CourseChange.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update)>0 ? R.ok() : R.fail();
+    }
+}

+ 342 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableServiceImpl.java

@@ -0,0 +1,342 @@
+package org.dromara.system.service.impl;
+
+import lombok.SneakyThrows;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.system.domain.vo.CourseChangeVo;
+import org.dromara.system.domain.vo.CourseTableTimeVo;
+import org.dromara.system.mapper.CourseChangeMapper;
+import org.dromara.system.mapper.CourseTableTimeMapper;
+import org.springframework.data.redis.cache.RedisCache;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.CourseTableBo;
+import org.dromara.system.domain.vo.CourseTableVo;
+import org.dromara.system.domain.CourseTable;
+import org.dromara.system.mapper.CourseTableMapper;
+import org.dromara.system.service.ICourseTableService;
+
+import java.util.*;
+
+/**
+ * 课程Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class CourseTableServiceImpl implements ICourseTableService {
+
+    private final CourseTableMapper baseMapper;
+
+    private final CourseChangeMapper courseChangeMapper;
+
+    private final CourseTableTimeMapper courseTableTimeMapper;
+
+    /**
+     * 查询课程
+     */
+    @Override
+    public CourseTableVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+
+    /**
+     * 查询课程列表
+     */
+    @SneakyThrows
+    @Override
+    public TableDataInfo<CourseTableVo> queryPageList(CourseTableBo bo, PageQuery pageQuery) {
+        if(StringUtils.isEmpty(bo.getClassId()) || StringUtils.isEmpty(bo.getSchoolId())){
+            return TableDataInfo.build(new ArrayList<>());
+        }
+        LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
+        Page<CourseTableVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+
+        List<CourseTableVo> courseTableList = result.getRecords();
+        //获取本周一和本周五的时间
+        String fist = DateUtils.getTimeIntervalOne(new Date());
+        String five = DateUtils.getTimeIntervalFive(fist);
+        List<CourseChangeVo> courseChangeList = courseChangeMapper.selectCourseChangeListByEdit(bo.getClassId(), fist, five);
+        if (courseChangeList == null || courseChangeList.size() <=0){
+            return TableDataInfo.build(result);
+        }
+
+        for (CourseTableVo table : courseTableList) {
+            changeCourseTable(table,courseChangeList,fist,five);
+        }
+
+        return TableDataInfo.build(result);
+    }
+
+    @SneakyThrows
+    private void changeCourseTable(CourseTableVo table, List<CourseChangeVo> courseChangeList, String fist, String five) {
+        String format = "yyyy-MM-dd";
+        Set<Long> classNum = new HashSet<>();
+        for (CourseChangeVo courseChange : courseChangeList) {
+            //调课的时间是否在本周
+            if(DateUtils.isClass(fist,five,DateUtils.dateTime(courseChange.getSubjectTime()),format)){
+                if(StringUtils.equals(courseChange.getSubjectWeek(),table.getWeek())){
+                    classNum.add(Long.valueOf(courseChange.getIsNum()));
+                    //第几节课
+                    if(StringUtils.equals("1",courseChange.getIsNum())){
+                        table.setOneClass(courseChange.getBeSubject());
+                        table.setOneTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("2",courseChange.getIsNum())){
+                        table.setTwoClass(courseChange.getBeSubject());
+                        table.setTwoTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("3",courseChange.getIsNum())){
+                        table.setThreeClass(courseChange.getBeSubject());
+                        table.setThreeTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("4",courseChange.getIsNum())){
+                        table.setFourClass(courseChange.getBeSubject());
+                        table.setFourTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("5",courseChange.getIsNum())){
+                        table.setFiveClass(courseChange.getBeSubject());
+                        table.setFiveTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("6",courseChange.getIsNum())){
+                        table.setSixClass(courseChange.getBeSubject());
+                        table.setSixTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("7",courseChange.getIsNum())){
+                        table.setSevenClass(courseChange.getBeSubject());
+                        table.setSevenTeacher(courseChange.getBePersonnel());
+                    }else if(StringUtils.equals("8",courseChange.getIsNum())){
+                        table.setEightClass(courseChange.getBeSubject());
+                        table.setEightTeacher(courseChange.getBePersonnel());
+                    }
+                }
+            }
+            //被调课是否在本周
+            if(DateUtils.isClass(fist,five,DateUtils.dateTime(courseChange.getBeSubjectTime()),format)) {
+                if(StringUtils.equals(courseChange.getWeek(),table.getWeek())){
+                    classNum.add(Long.valueOf(courseChange.getBeIsNum()));
+                    //第几节课
+                    if(StringUtils.equals("1",courseChange.getBeIsNum())){
+                        table.setOneClass(courseChange.getSubject());
+                        table.setOneTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("2",courseChange.getBeIsNum())){
+                        table.setTwoClass(courseChange.getSubject());
+                        table.setTwoTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("3",courseChange.getBeIsNum())){
+                        table.setThreeClass(courseChange.getSubject());
+                        table.setThreeTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("4",courseChange.getBeIsNum())){
+                        table.setFourClass(courseChange.getSubject());
+                        table.setFourTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("5",courseChange.getBeIsNum())){
+                        table.setFiveClass(courseChange.getSubject());
+                        table.setFiveTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("6",courseChange.getBeIsNum())){
+                        table.setSixClass(courseChange.getSubject());
+                        table.setSixTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("7",courseChange.getBeIsNum())){
+                        table.setSevenClass(courseChange.getSubject());
+                        table.setSevenTeacher(courseChange.getApplyName());
+                    }else if(StringUtils.equals("8",courseChange.getBeIsNum())){
+                        table.setEightClass(courseChange.getSubject());
+                        table.setEightTeacher(courseChange.getApplyName());
+                    }
+                }
+            }
+        }
+        table.setClassNum(classNum);
+    }
+
+
+
+    /**
+     * 查询课程列表
+     */
+    @Override
+    public List<CourseTableVo> queryList(CourseTableBo bo) {
+        LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<CourseTable> buildQueryWrapper(CourseTableBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<CourseTable> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getSchoolId()), CourseTable::getSchoolId, bo.getSchoolId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), CourseTable::getSchoolName, bo.getSchoolName());
+        lqw.eq(StringUtils.isNotBlank(bo.getClassId()), CourseTable::getClassId, bo.getClassId());
+        lqw.like(StringUtils.isNotBlank(bo.getClassName()), CourseTable::getClassName, bo.getClassName());
+        lqw.eq(StringUtils.isNotBlank(bo.getWeek()), CourseTable::getWeek, bo.getWeek());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneClass()), CourseTable::getOneClass, bo.getOneClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneTeacher()), CourseTable::getOneTeacher, bo.getOneTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getTwoClass()), CourseTable::getTwoClass, bo.getTwoClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getTwoTeacher()), CourseTable::getTwoTeacher, bo.getTwoTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getThreeClass()), CourseTable::getThreeClass, bo.getThreeClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getThreeTeacher()), CourseTable::getThreeTeacher, bo.getThreeTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getFourClass()), CourseTable::getFourClass, bo.getFourClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getFourTeacher()), CourseTable::getFourTeacher, bo.getFourTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getFiveClass()), CourseTable::getFiveClass, bo.getFiveClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getFiveTeacher()), CourseTable::getFiveTeacher, bo.getFiveTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getSixClass()), CourseTable::getSixClass, bo.getSixClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getSixTeacher()), CourseTable::getSixTeacher, bo.getSixTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getSevenClass()), CourseTable::getSevenClass, bo.getSevenClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getSevenTeacher()), CourseTable::getSevenTeacher, bo.getSevenTeacher());
+        lqw.eq(StringUtils.isNotBlank(bo.getEightClass()), CourseTable::getEightClass, bo.getEightClass());
+        lqw.eq(StringUtils.isNotBlank(bo.getEightTeacher()), CourseTable::getEightTeacher, bo.getEightTeacher());
+        return lqw;
+    }
+
+    /**
+     * 新增课程
+     */
+    @Override
+    public R<Void> insertByBo(CourseTableBo bo) {
+
+        CourseTableBo table = new CourseTableBo();
+        table.setSchoolId(bo.getSchoolId());
+        table.setClassId(bo.getClassId());
+        table.setWeek(bo.getWeek());
+        LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
+        List<CourseTableVo> courseTableList = baseMapper.selectVoList(lqw);
+        if(courseTableList!=null && courseTableList.size()>0){
+            return R.fail("当前课表已存在,请前去修改");
+        }
+        bo.setCreateTime(DateUtils.getNowDate());
+        CourseTable add = MapstructUtils.convert(bo, CourseTable.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 修改课程
+     */
+    @Override
+    public Boolean updateByBo(CourseTableBo bo) {
+        bo.setUpdateTime(DateUtils.getNowDate());
+        CourseTable update = MapstructUtils.convert(bo, CourseTable.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(CourseTable entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除课程
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @SneakyThrows
+    @Override
+    public R<Map<String, Object>> now(Long schoolId, Long classId) {
+        //SysUser user = SecurityUtils.getLoginUser().getUser();
+        Map<String, Object> map = new HashMap<>();
+        map.put("teacher", "");
+        map.put("subject", "");
+        //家长端查询下课时间
+        String key = schoolId + ":" + classId;
+        //key = 学校id:班级id
+        //Redis根据key键,查询对应的值
+        String xiakeTime = "";
+        String value = RedisUtils.getCacheObject(key);
+        if (StringUtils.isNotEmpty(value)) {
+            String[] split = value.split(":");
+            //下课时间
+            xiakeTime = split[1];
+        }
+        map.put("time", xiakeTime);
+        //获取当前时间
+        String nowTime = DateUtils.getTime();
+        //判断当天是周几
+        int dayForWeek = DateUtils.dayForWeek(nowTime);
+        if (dayForWeek == 6 || dayForWeek == 7) {
+            return R.ok(map);
+        }
+        //获取当前账号所属学校时间表
+        CourseTableTimeVo courseTableTime = courseTableTimeMapper.selectCourseTableTimeBySchoolId(schoolId);
+        if (courseTableTime == null) {
+            return R.ok(map);
+        }
+        //判断当前时间是第几节课
+        int index = isClass(courseTableTime);
+        if (index == 0) {
+            return R.ok(map);
+        }
+        //获取当前班级课程
+        CourseTableVo courseTable = baseMapper.selectCourseTableByClassIdAndWeek(classId, dayForWeek);
+        if (courseTable == null) {
+            return R.ok(map);
+        }
+        if (index == 1) {
+            map.put("teacher", courseTable.getOneTeacher());
+            map.put("subject", courseTable.getOneClass());
+        } else if (index == 2) {
+            map.put("teacher", courseTable.getTwoTeacher());
+            map.put("subject", courseTable.getTwoClass());
+        } else if (index == 3) {
+            map.put("teacher", courseTable.getThreeTeacher());
+            map.put("subject", courseTable.getThreeClass());
+        } else if (index == 4) {
+            map.put("teacher", courseTable.getFourTeacher());
+            map.put("subject", courseTable.getFourClass());
+        } else if (index == 5) {
+            map.put("teacher", courseTable.getFiveTeacher());
+            map.put("subject", courseTable.getFiveClass());
+        } else if (index == 6) {
+            map.put("teacher", courseTable.getSixTeacher());
+            map.put("subject", courseTable.getSixClass());
+        } else if (index == 7) {
+            map.put("teacher", courseTable.getSevenTeacher());
+            map.put("subject", courseTable.getSevenClass());
+        } else if (index == 8) {
+            map.put("teacher", courseTable.getEightTeacher());
+            map.put("subject", courseTable.getEightClass());
+        }
+
+        return R.ok(map);
+    }
+
+    @SneakyThrows
+    private int isClass(CourseTableTimeVo courseTableTime) {
+        //获取当前时间
+        String nowTime = DateUtils.getNowTime();
+        int index = 0;
+        if (StringUtils.isNotEmpty(courseTableTime.getOneStartTime()) && DateUtils.isClass(courseTableTime.getOneStartTime(), courseTableTime.getOneEndTime(), nowTime, "HH:mm")) {
+            index = 1;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getTwoStartTime()) && DateUtils.isClass(courseTableTime.getTwoStartTime(), courseTableTime.getTwoEndTime(), nowTime, "HH:mm")) {
+            index = 2;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getThreeStartTime()) && DateUtils.isClass(courseTableTime.getThreeStartTime(), courseTableTime.getThreeEndTime(), nowTime, "HH:mm")) {
+            index = 3;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getFourStartTime()) && DateUtils.isClass(courseTableTime.getFourStartTime(), courseTableTime.getFourEndTime(), nowTime, "HH:mm")) {
+            index = 4;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getFiveStartTime()) && DateUtils.isClass(courseTableTime.getFiveStartTime(), courseTableTime.getFiveEndTime(), nowTime, "HH:mm")) {
+            index = 5;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getSixStartTime()) && DateUtils.isClass(courseTableTime.getSixStartTime(), courseTableTime.getSixEndTime(), nowTime, "HH:mm")) {
+            index = 6;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getSevenStartTime()) && DateUtils.isClass(courseTableTime.getSevenStartTime(), courseTableTime.getSevenEndTime(), nowTime, "HH:mm")) {
+            index = 7;
+        } else if (StringUtils.isNotEmpty(courseTableTime.getEightStartTime()) && DateUtils.isClass(courseTableTime.getEightStartTime(), courseTableTime.getEightEndTime(), nowTime, "HH:mm")) {
+            index = 8;
+        }
+        return index;
+    }
+}

+ 126 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableTimeServiceImpl.java

@@ -0,0 +1,126 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.CourseTableTimeBo;
+import org.dromara.system.domain.vo.CourseTableTimeVo;
+import org.dromara.system.domain.CourseTableTime;
+import org.dromara.system.mapper.CourseTableTimeMapper;
+import org.dromara.system.service.ICourseTableTimeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 课程-时间Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class CourseTableTimeServiceImpl implements ICourseTableTimeService {
+
+    private final CourseTableTimeMapper baseMapper;
+
+    /**
+     * 查询课程-时间
+     */
+    @Override
+    public CourseTableTimeVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询课程-时间列表
+     */
+    @Override
+    public TableDataInfo<CourseTableTimeVo> queryPageList(CourseTableTimeBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<CourseTableTime> lqw = buildQueryWrapper(bo);
+        Page<CourseTableTimeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询课程-时间列表
+     */
+    @Override
+    public List<CourseTableTimeVo> queryList(CourseTableTimeBo bo) {
+        LambdaQueryWrapper<CourseTableTime> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<CourseTableTime> buildQueryWrapper(CourseTableTimeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<CourseTableTime> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getSchoolId()), CourseTableTime::getSchoolId, bo.getSchoolId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), CourseTableTime::getSchoolName, bo.getSchoolName());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneStartTime()), CourseTableTime::getOneStartTime, bo.getOneStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneEndTime()), CourseTableTime::getOneEndTime, bo.getOneEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getTwoStartTime()), CourseTableTime::getTwoStartTime, bo.getTwoStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getTwoEndTime()), CourseTableTime::getTwoEndTime, bo.getTwoEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getThreeStartTime()), CourseTableTime::getThreeStartTime, bo.getThreeStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getThreeEndTime()), CourseTableTime::getThreeEndTime, bo.getThreeEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getFourStartTime()), CourseTableTime::getFourStartTime, bo.getFourStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getFourEndTime()), CourseTableTime::getFourEndTime, bo.getFourEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getFiveStartTime()), CourseTableTime::getFiveStartTime, bo.getFiveStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getFiveEndTime()), CourseTableTime::getFiveEndTime, bo.getFiveEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getSixStartTime()), CourseTableTime::getSixStartTime, bo.getSixStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getSixEndTime()), CourseTableTime::getSixEndTime, bo.getSixEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getSevenStartTime()), CourseTableTime::getSevenStartTime, bo.getSevenStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getSevenEndTime()), CourseTableTime::getSevenEndTime, bo.getSevenEndTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getEightStartTime()), CourseTableTime::getEightStartTime, bo.getEightStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getEightEndTime()), CourseTableTime::getEightEndTime, bo.getEightEndTime());
+        return lqw;
+    }
+
+    /**
+     * 新增课程-时间
+     */
+    @Override
+    public Boolean insertByBo(CourseTableTimeBo bo) {
+        CourseTableTime add = MapstructUtils.convert(bo, CourseTableTime.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改课程-时间
+     */
+    @Override
+    public Boolean updateByBo(CourseTableTimeBo bo) {
+        CourseTableTime update = MapstructUtils.convert(bo, CourseTableTime.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(CourseTableTime entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除课程-时间
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 173 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterParentsServiceImpl.java

@@ -0,0 +1,173 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.bo.RegisterParentsStudentBo;
+import org.dromara.system.domain.vo.RegisterParentsStudentVo;
+import org.dromara.system.mapper.RegisterParentsStudentMapper;
+import org.dromara.system.service.IRegisterParentsStudentService;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.RegisterParentsBo;
+import org.dromara.system.domain.vo.RegisterParentsVo;
+import org.dromara.system.domain.RegisterParents;
+import org.dromara.system.mapper.RegisterParentsMapper;
+import org.dromara.system.service.IRegisterParentsService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 注册-家长Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class RegisterParentsServiceImpl implements IRegisterParentsService {
+
+    private final RegisterParentsMapper baseMapper;
+
+    private final RegisterParentsStudentMapper registerParentsStudentMapper;
+
+    private final IRegisterParentsStudentService registerParentsStudentService;
+
+    /**
+     * 查询注册-家长
+     */
+    @Override
+    public RegisterParentsVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询注册-家长列表
+     */
+    @Override
+    public TableDataInfo<RegisterParentsVo> queryPageList(RegisterParentsBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<RegisterParents> lqw = buildQueryWrapper(bo);
+        Page<RegisterParentsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询注册-家长列表
+     */
+    @Override
+    public List<RegisterParentsVo> queryList(RegisterParentsBo bo) {
+        LambdaQueryWrapper<RegisterParents> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RegisterParents> buildQueryWrapper(RegisterParentsBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RegisterParents> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getOpenId()), RegisterParents::getOpenId, bo.getOpenId());
+        lqw.like(StringUtils.isNotBlank(bo.getUserName()), RegisterParents::getUserName, bo.getUserName());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserPhone()), RegisterParents::getUserPhone, bo.getUserPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsPass()), RegisterParents::getIsPass, bo.getIsPass());
+        return lqw;
+    }
+
+    /**
+     * 新增注册-家长
+     */
+    @Override
+    public R<RegisterParentsVo> insertByBo(RegisterParentsBo bo) {
+
+        //查询是否已经注册过
+        RegisterParentsVo registerParentsOld = baseMapper.selectRegisterParentsByPhonenumber(bo.getUserPhone());
+        if(registerParentsOld!=null){
+            if(registerParentsOld.getIsPass().equals("1")){
+                return R.fail("该手机号已注册当前身份,信息正在审核中。",registerParentsOld);
+            }else if(registerParentsOld.getIsPass().equals("2")){
+                return R.fail("该手机号已注册当前身份,审核已通过,请登录。",registerParentsOld);
+            }else{
+                return R.fail("该手机号已注册当前身份,审核未通过。",registerParentsOld);
+            }
+        }
+        bo.setCreateTime(DateUtils.getNowDate());
+        bo.setUpdateTime(DateUtils.getNowDate());
+
+        List<RegisterParentsStudentVo> registerParentsStudentList = bo.getRegisterParentsStudentList();
+        if(registerParentsStudentList!=null && registerParentsStudentList.size()>0){
+            for (RegisterParentsStudentVo registerParentsStudent : registerParentsStudentList) {
+                registerParentsStudent.setParentsId(bo.getId());
+                registerParentsStudent.setParentsName(bo.getUserName());
+                registerParentsStudent.setParentsPhone(bo.getUserPhone());
+                registerParentsStudent.setCreateTime(DateUtils.getNowDate());
+                registerParentsStudent.setUpdateTime(DateUtils.getNowDate());
+
+                RegisterParentsStudentBo registerParentsStudentBo = MapstructUtils.convert(registerParentsStudent, RegisterParentsStudentBo.class);
+                registerParentsStudentService.insertByBo(registerParentsStudentBo);
+            }
+        }
+
+        RegisterParents add = MapstructUtils.convert(bo, RegisterParents.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+            R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 修改注册-家长
+     */
+    @Override
+    public Boolean updateByBo(RegisterParentsBo bo) {
+
+        //先删除审核未通过的数据
+        List<RegisterParentsStudentVo> registerParentsStudentList = bo.getRegisterParentsStudentList();
+        if(registerParentsStudentList!=null && registerParentsStudentList.size()>0){
+            registerParentsStudentMapper.deleteRegisterParentsStudentByParentsId(bo.getId());
+            for (RegisterParentsStudentVo registerParentsStudent : registerParentsStudentList) {
+                if("3".equals(registerParentsStudent.getIsPass()) || StringUtils.isEmpty(registerParentsStudent.getIsPass())){
+                    registerParentsStudent.setParentsId(bo.getId());
+                    registerParentsStudent.setParentsName(bo.getUserName());
+                    registerParentsStudent.setParentsPhone(bo.getUserPhone());
+                    registerParentsStudent.setIsPass("1");
+                    registerParentsStudent.setCreateTime(DateUtils.getNowDate());
+                    registerParentsStudent.setUpdateTime(DateUtils.getNowDate());
+
+                    RegisterParentsStudentBo registerParentsStudentBo = MapstructUtils.convert(registerParentsStudent, RegisterParentsStudentBo.class);
+                    registerParentsStudentService.insertByBo(registerParentsStudentBo);
+                }
+            }
+        }
+        bo.setIsPass("1");
+        bo.setUpdateTime(DateUtils.getNowDate());
+        RegisterParents update = MapstructUtils.convert(bo, RegisterParents.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(RegisterParents entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除注册-家长
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 158 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterParentsStudentServiceImpl.java

@@ -0,0 +1,158 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.domain.dto.RoleDTO;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.system.domain.FormalTeacherClass;
+import org.dromara.system.domain.bo.FormalTeacherClassBo;
+import org.dromara.system.domain.vo.FormalTeacherClassVo;
+import org.dromara.system.service.IFormalTeacherClassService;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.RegisterParentsStudentBo;
+import org.dromara.system.domain.vo.RegisterParentsStudentVo;
+import org.dromara.system.domain.RegisterParentsStudent;
+import org.dromara.system.mapper.RegisterParentsStudentMapper;
+import org.dromara.system.service.IRegisterParentsStudentService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * 注册-家长-学生Service业务层处理
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class RegisterParentsStudentServiceImpl implements IRegisterParentsStudentService {
+
+    private final RegisterParentsStudentMapper baseMapper;
+
+    private final IFormalTeacherClassService formalTeacherClassService;
+
+    /**
+     * 查询注册-家长-学生
+     */
+    @Override
+    public RegisterParentsStudentVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询注册-家长-学生列表
+     */
+    @Override
+    public TableDataInfo<RegisterParentsStudentVo> queryPageList(RegisterParentsStudentBo bo, PageQuery pageQuery) {
+
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<RoleDTO> roles = loginUser.getRoles();
+        boolean bl = false;
+        for (RoleDTO role : roles) {
+            if("teacher".equals(role.getRoleKey())){
+                bl = true;
+                break;
+            }
+        }
+        //角色是老师
+        if(bl){
+            //查询老师班级
+            FormalTeacherClassBo formalTeacherClass = new FormalTeacherClassBo();
+            formalTeacherClass.setTeacherId(loginUser.getUserId());
+            List<FormalTeacherClassVo> formalTeacherClassList = formalTeacherClassService.queryList(formalTeacherClass);
+            List<Long> classIds = formalTeacherClassList.stream().map(FormalTeacherClassVo::getClassId).collect(Collectors.toList());
+            bo.setClassIds(classIds);
+        }
+
+
+        LambdaQueryWrapper<RegisterParentsStudent> lqw = buildQueryWrapper(bo);
+        Page<RegisterParentsStudentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询注册-家长-学生列表
+     */
+    @Override
+    public List<RegisterParentsStudentVo> queryList(RegisterParentsStudentBo bo) {
+        LambdaQueryWrapper<RegisterParentsStudent> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RegisterParentsStudent> buildQueryWrapper(RegisterParentsStudentBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RegisterParentsStudent> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getParentsId() != null, RegisterParentsStudent::getParentsId, bo.getParentsId());
+        lqw.like(StringUtils.isNotBlank(bo.getParentsName()), RegisterParentsStudent::getParentsName, bo.getParentsName());
+        lqw.eq(StringUtils.isNotBlank(bo.getParentsPhone()), RegisterParentsStudent::getParentsPhone, bo.getParentsPhone());
+        lqw.eq(bo.getSchoolId() != null, RegisterParentsStudent::getSchoolId, bo.getSchoolId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), RegisterParentsStudent::getSchoolName, bo.getSchoolName());
+        lqw.eq(bo.getClassId() != null, RegisterParentsStudent::getClassId, bo.getClassId());
+        lqw.like(StringUtils.isNotBlank(bo.getClassName()), RegisterParentsStudent::getClassName, bo.getClassName());
+        lqw.like(StringUtils.isNotBlank(bo.getStudentName()), RegisterParentsStudent::getStudentName, bo.getStudentName());
+        lqw.eq(StringUtils.isNotBlank(bo.getStudentNumber()), RegisterParentsStudent::getStudentNumber, bo.getStudentNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsPass()), RegisterParentsStudent::getIsPass, bo.getIsPass());
+        lqw.eq(bo.getAuditId() != null, RegisterParentsStudent::getAuditId, bo.getAuditId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuditUser()), RegisterParentsStudent::getAuditUser, bo.getAuditUser());
+        lqw.eq(StringUtils.isNotBlank(bo.getOpinion()), RegisterParentsStudent::getOpinion, bo.getOpinion());
+        lqw.in((bo.getClassIds()!=null && bo.getClassIds().size()>0),RegisterParentsStudent::getClassId, bo.getClassIds());
+        return lqw;
+    }
+
+    /**
+     * 新增注册-家长-学生
+     */
+    @Override
+    public Boolean insertByBo(RegisterParentsStudentBo bo) {
+        bo.setCreateTime(DateUtils.getNowDate());
+        RegisterParentsStudent add = MapstructUtils.convert(bo, RegisterParentsStudent.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改注册-家长-学生
+     */
+    @Override
+    public Boolean updateByBo(RegisterParentsStudentBo bo) {
+        bo.setUpdateTime(DateUtils.getNowDate());
+        bo.setIsPass("1");
+
+        RegisterParentsStudent update = MapstructUtils.convert(bo, RegisterParentsStudent.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(RegisterParentsStudent entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除注册-家长-学生
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 113 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterSchoolFileServiceImpl.java

@@ -0,0 +1,113 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.RegisterSchoolFileBo;
+import org.dromara.system.domain.vo.RegisterSchoolFileVo;
+import org.dromara.system.domain.RegisterSchoolFile;
+import org.dromara.system.mapper.RegisterSchoolFileMapper;
+import org.dromara.system.service.IRegisterSchoolFileService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 注册-学校-附件Service业务层处理
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class RegisterSchoolFileServiceImpl implements IRegisterSchoolFileService {
+
+    private final RegisterSchoolFileMapper baseMapper;
+
+    /**
+     * 查询注册-学校-附件
+     */
+    @Override
+    public RegisterSchoolFileVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询注册-学校-附件列表
+     */
+    @Override
+    public TableDataInfo<RegisterSchoolFileVo> queryPageList(RegisterSchoolFileBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<RegisterSchoolFile> lqw = buildQueryWrapper(bo);
+        Page<RegisterSchoolFileVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询注册-学校-附件列表
+     */
+    @Override
+    public List<RegisterSchoolFileVo> queryList(RegisterSchoolFileBo bo) {
+        LambdaQueryWrapper<RegisterSchoolFile> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RegisterSchoolFile> buildQueryWrapper(RegisterSchoolFileBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RegisterSchoolFile> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getSchoolId() != null, RegisterSchoolFile::getSchoolId, bo.getSchoolId());
+        lqw.eq(bo.getDeptId() != null, RegisterSchoolFile::getDeptId, bo.getDeptId());
+        lqw.like(StringUtils.isNotBlank(bo.getName()), RegisterSchoolFile::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getUrl()), RegisterSchoolFile::getUrl, bo.getUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getType()), RegisterSchoolFile::getType, bo.getType());
+        return lqw;
+    }
+
+    /**
+     * 新增注册-学校-附件
+     */
+    @Override
+    public Boolean insertByBo(RegisterSchoolFileBo bo) {
+        RegisterSchoolFile add = MapstructUtils.convert(bo, RegisterSchoolFile.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改注册-学校-附件
+     */
+    @Override
+    public Boolean updateByBo(RegisterSchoolFileBo bo) {
+        RegisterSchoolFile update = MapstructUtils.convert(bo, RegisterSchoolFile.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(RegisterSchoolFile entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除注册-学校-附件
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 239 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterSchoolServiceImpl.java

@@ -0,0 +1,239 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.RegisterSchoolFile;
+import org.dromara.system.domain.bo.RegisterParentsStudentBo;
+import org.dromara.system.domain.bo.RegisterSchoolFileBo;
+import org.dromara.system.domain.bo.RegisterTeacherClassBo;
+import org.dromara.system.domain.vo.*;
+import org.dromara.system.mapper.*;
+import org.dromara.system.service.IRegisterParentsStudentService;
+import org.dromara.system.service.IRegisterSchoolFileService;
+import org.dromara.system.service.IRegisterTeacherClassService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.RegisterSchoolBo;
+import org.dromara.system.domain.RegisterSchool;
+import org.dromara.system.service.IRegisterSchoolService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 注册-学校Service业务层处理
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class RegisterSchoolServiceImpl implements IRegisterSchoolService {
+
+    private final RegisterSchoolMapper baseMapper;
+
+    private final IRegisterSchoolFileService registerSchoolFileService;
+
+    private final RegisterSchoolFileMapper registerSchoolFileMapper;
+
+    private RegisterTeacherMapper registerTeacherMapper;
+    private RegisterParentsMapper registerParentsMapper;
+
+    private IRegisterTeacherClassService registerTeacherClassService;
+    private RegisterTeacherClassMapper registerTeacherClassMapper;
+
+    private IRegisterParentsStudentService registerParentsStudentService;
+    private RegisterParentsStudentMapper registerParentsStudentMapper;
+
+    /**
+     * 查询注册-学校
+     */
+    @Override
+    public RegisterSchoolVo queryById(Long id){
+
+        RegisterSchoolVo registerSchool = baseMapper.selectVoById(id);
+        RegisterSchoolFileBo registerSchoolFile = new RegisterSchoolFileBo();
+        registerSchoolFile.setSchoolId(id);
+        List<RegisterSchoolFileVo> registerSchoolFileList = registerSchoolFileService.queryList(registerSchoolFile);
+        registerSchool.setRegisterSchoolFileList(registerSchoolFileList);
+        return registerSchool;
+    }
+
+    /**
+     * 查询注册-学校列表
+     */
+    @Override
+    public TableDataInfo<RegisterSchoolVo> queryPageList(RegisterSchoolBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<RegisterSchool> lqw = buildQueryWrapper(bo);
+        Page<RegisterSchoolVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        if(result.getRecords().size()>0){
+            for (RegisterSchoolVo school : result.getRecords()) {
+                RegisterSchoolFileBo registerSchoolFile = new RegisterSchoolFileBo();
+                registerSchoolFile.setSchoolId(school.getId());
+                List<RegisterSchoolFileVo> registerSchoolFileList = registerSchoolFileService.queryList(registerSchoolFile);
+                school.setRegisterSchoolFileList(registerSchoolFileList);
+            }
+        }
+
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询注册-学校列表
+     */
+    @Override
+    public List<RegisterSchoolVo> queryList(RegisterSchoolBo bo) {
+        LambdaQueryWrapper<RegisterSchool> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RegisterSchool> buildQueryWrapper(RegisterSchoolBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RegisterSchool> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getOpenId()), RegisterSchool::getOpenId, bo.getOpenId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), RegisterSchool::getSchoolName, bo.getSchoolName());
+        lqw.like(StringUtils.isNotBlank(bo.getUserName()), RegisterSchool::getUserName, bo.getUserName());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserPhone()), RegisterSchool::getUserPhone, bo.getUserPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsPass()), RegisterSchool::getIsPass, bo.getIsPass());
+        lqw.eq(bo.getAuditId() != null, RegisterSchool::getAuditId, bo.getAuditId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuditUser()), RegisterSchool::getAuditUser, bo.getAuditUser());
+        lqw.eq(StringUtils.isNotBlank(bo.getOpinion()), RegisterSchool::getOpinion, bo.getOpinion());
+        return lqw;
+    }
+
+    /**
+     * 新增注册-学校
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R<RegisterSchoolVo> insertByBo(RegisterSchoolBo bo) {
+
+        //查询是否已经注册过
+        RegisterSchoolVo registerSchoolOld = baseMapper.selectRegisterSchooByPhonenumber(bo.getUserPhone());
+        if(registerSchoolOld!=null){
+            if(registerSchoolOld.getIsPass().equals("1")){
+                return R.fail("该手机号已注册当前身份,信息正在审核中。",registerSchoolOld);
+            }else if(registerSchoolOld.getIsPass().equals("2")){
+                return R.fail("该手机号已注册当前身份,审核已通过,请登录。",registerSchoolOld);
+            }else{
+                return R.fail("该手机号已注册当前身份,审核未通过。",registerSchoolOld);
+            }
+        }
+
+        if(bo.getRegisterSchoolFileList()!=null && bo.getRegisterSchoolFileList().size()>0){
+            List<RegisterSchoolFileVo> registerSchoolFile = bo.getRegisterSchoolFileList();
+            for (RegisterSchoolFileVo schoolFile : registerSchoolFile) {
+                schoolFile.setSchoolId(bo.getId());
+                RegisterSchoolFileBo file = MapstructUtils.convert(schoolFile, RegisterSchoolFileBo.class);
+                registerSchoolFileService.insertByBo(file);
+            }
+        }
+
+        bo.setCreateTime(DateUtils.getNowDate());
+        bo.setUpdateTime(DateUtils.getNowDate());
+        bo.setIsPass("1");
+        RegisterSchool add = MapstructUtils.convert(bo, RegisterSchool.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+
+        if (flag) {
+            bo.setId(add.getId());
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 修改注册-学校
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateByBo(RegisterSchoolBo bo) {
+        bo.setIsPass("1");
+        bo.setUpdateTime(DateUtils.getNowDate());
+        //先删除附件
+        if(bo.getRegisterSchoolFileList()!=null && bo.getRegisterSchoolFileList().size()>0){
+            registerSchoolFileMapper.deleteRegisterSchoolFileBySchoolId(bo.getId());
+            List<RegisterSchoolFileVo> registerSchoolFile = bo.getRegisterSchoolFileList();
+            for (RegisterSchoolFileVo schoolFile : registerSchoolFile) {
+                schoolFile.setSchoolId(bo.getId());
+                RegisterSchoolFileBo file = MapstructUtils.convert(schoolFile, RegisterSchoolFileBo.class);
+                registerSchoolFileService.insertByBo(file);
+            }
+        }
+        RegisterSchool update = MapstructUtils.convert(bo, RegisterSchool.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(RegisterSchool entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除注册-学校
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public R<Map<String, Object>> queryInfo(String phonenumber) {
+        if(StringUtils.isEmpty(phonenumber)){
+            throw new ServiceException("参数获取异常,请稍后重试");
+        }
+        Map<String,Object> map = new HashMap<>();
+        //查询学校里是否有注册信息
+        RegisterSchoolVo registerSchoolOld = baseMapper.selectRegisterSchooByPhonenumber(phonenumber);
+        if(registerSchoolOld!=null){
+            RegisterSchoolFileBo registerSchoolFile = new RegisterSchoolFileBo();
+            registerSchoolFile.setSchoolId(registerSchoolOld.getId());
+            List<RegisterSchoolFileVo> registerSchoolFileList = registerSchoolFileService.queryList(registerSchoolFile);
+            registerSchoolOld.setRegisterSchoolFileList(registerSchoolFileList);
+        }else{
+            registerSchoolOld = new RegisterSchoolVo();
+        }
+        map.put("school",registerSchoolOld);
+        //查询老师是否有注册信息
+        RegisterTeacherVo registerTeacher = registerTeacherMapper.selectRegisterTeacherByPhonenumber(phonenumber);
+        if(registerTeacher!=null){
+            RegisterTeacherClassBo registerTeacherClass = new RegisterTeacherClassBo();
+            registerTeacherClass.setTeacherId(registerTeacher.getId());
+            List<RegisterTeacherClassVo> registerTeacherClassList = registerTeacherClassService.queryList(registerTeacherClass);
+            registerTeacher.setRegisterTeacherClassList(registerTeacherClassList);
+        }else{
+            registerTeacher = new RegisterTeacherVo();
+        }
+
+        map.put("teacher",registerTeacher);
+        //查询家长注册信息
+        RegisterParentsVo registerParents = registerParentsMapper.selectRegisterParentsByPhonenumber(phonenumber);
+        if(registerParents!=null){
+            RegisterParentsStudentBo registerParentsStudent = new RegisterParentsStudentBo();
+            registerParentsStudent.setParentsId(registerParents.getId());
+            List<RegisterParentsStudentVo> registerParentsStudentList = registerParentsStudentService.queryList(registerParentsStudent);
+            registerParents.setRegisterParentsStudentList(registerParentsStudentList);
+        }else{
+            registerParents = new RegisterParentsVo();
+        }
+
+        map.put("parents",registerParents);
+        return R.ok(map);
+    }
+}

+ 113 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterTeacherClassServiceImpl.java

@@ -0,0 +1,113 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.RegisterTeacherClassBo;
+import org.dromara.system.domain.vo.RegisterTeacherClassVo;
+import org.dromara.system.domain.RegisterTeacherClass;
+import org.dromara.system.mapper.RegisterTeacherClassMapper;
+import org.dromara.system.service.IRegisterTeacherClassService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 注册-老师-班级(学科)Service业务层处理
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class RegisterTeacherClassServiceImpl implements IRegisterTeacherClassService {
+
+    private final RegisterTeacherClassMapper baseMapper;
+
+    /**
+     * 查询注册-老师-班级(学科)
+     */
+    @Override
+    public RegisterTeacherClassVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询注册-老师-班级(学科)列表
+     */
+    @Override
+    public TableDataInfo<RegisterTeacherClassVo> queryPageList(RegisterTeacherClassBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<RegisterTeacherClass> lqw = buildQueryWrapper(bo);
+        Page<RegisterTeacherClassVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询注册-老师-班级(学科)列表
+     */
+    @Override
+    public List<RegisterTeacherClassVo> queryList(RegisterTeacherClassBo bo) {
+        LambdaQueryWrapper<RegisterTeacherClass> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RegisterTeacherClass> buildQueryWrapper(RegisterTeacherClassBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RegisterTeacherClass> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getTeacherId() != null, RegisterTeacherClass::getTeacherId, bo.getTeacherId());
+        lqw.eq(bo.getClassId() != null, RegisterTeacherClass::getClassId, bo.getClassId());
+        lqw.like(StringUtils.isNotBlank(bo.getClassName()), RegisterTeacherClass::getClassName, bo.getClassName());
+        lqw.eq(StringUtils.isNotBlank(bo.getPeriod()), RegisterTeacherClass::getPeriod, bo.getPeriod());
+        lqw.eq(StringUtils.isNotBlank(bo.getDiscipline()), RegisterTeacherClass::getDiscipline, bo.getDiscipline());
+        return lqw;
+    }
+
+    /**
+     * 新增注册-老师-班级(学科)
+     */
+    @Override
+    public Boolean insertByBo(RegisterTeacherClassBo bo) {
+        RegisterTeacherClass add = MapstructUtils.convert(bo, RegisterTeacherClass.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改注册-老师-班级(学科)
+     */
+    @Override
+    public Boolean updateByBo(RegisterTeacherClassBo bo) {
+        RegisterTeacherClass update = MapstructUtils.convert(bo, RegisterTeacherClass.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(RegisterTeacherClass entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除注册-老师-班级(学科)
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 260 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterTeacherServiceImpl.java

@@ -0,0 +1,260 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.RegisterTeacherClass;
+import org.dromara.system.domain.bo.RegisterSchoolFileBo;
+import org.dromara.system.domain.bo.RegisterTeacherClassBo;
+import org.dromara.system.domain.vo.RegisterTeacherClassVo;
+import org.dromara.system.mapper.RegisterTeacherClassMapper;
+import org.dromara.system.service.IRegisterTeacherClassService;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.RegisterTeacherBo;
+import org.dromara.system.domain.vo.RegisterTeacherVo;
+import org.dromara.system.domain.RegisterTeacher;
+import org.dromara.system.mapper.RegisterTeacherMapper;
+import org.dromara.system.service.IRegisterTeacherService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 注册-老师Service业务层处理
+ *
+ * @author boman
+ * @date 2023-08-16
+ */
+@RequiredArgsConstructor
+@Service
+public class RegisterTeacherServiceImpl implements IRegisterTeacherService {
+
+    private final RegisterTeacherMapper baseMapper;
+
+    private final IRegisterTeacherClassService registerTeacherClassService;
+
+    private final RegisterTeacherClassMapper registerTeacherClassMapper;
+
+    /**
+     * 查询注册-老师
+     */
+    @Override
+    public RegisterTeacherVo queryById(Long id){
+
+        RegisterTeacherVo registerTeacher = baseMapper.selectVoById(id);
+        RegisterTeacherClassBo registerTeacherClass = new RegisterTeacherClassBo();
+        registerTeacherClass.setTeacherId(id);
+        List<RegisterTeacherClassVo> registerTeacherClassList = registerTeacherClassService.queryList(registerTeacherClass);
+        registerTeacher.setRegisterTeacherClassList(registerTeacherClassList);
+
+        return registerTeacher;
+    }
+
+    /**
+     * 查询注册-老师列表
+     */
+    @Override
+    public TableDataInfo<RegisterTeacherVo> queryPageList(RegisterTeacherBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<RegisterTeacher> lqw = buildQueryWrapper(bo);
+        Page<RegisterTeacherVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        if(result.getRecords()!=null && result.getRecords().size()>0){
+            for (RegisterTeacherVo teacher : result.getRecords()) {
+                RegisterTeacherClassBo registerTeacherClass = new RegisterTeacherClassBo();
+                registerTeacherClass.setTeacherId(teacher.getId());
+                List<RegisterTeacherClassVo> registerTeacherClassList = registerTeacherClassService.queryList(registerTeacherClass);
+                teacher.setRegisterTeacherClassList(registerTeacherClassList);
+            }
+        }
+
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询注册-老师列表
+     */
+    @Override
+    public List<RegisterTeacherVo> queryList(RegisterTeacherBo bo) {
+        LambdaQueryWrapper<RegisterTeacher> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<RegisterTeacher> buildQueryWrapper(RegisterTeacherBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<RegisterTeacher> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getOpenId()), RegisterTeacher::getOpenId, bo.getOpenId());
+        lqw.eq(bo.getSchoolId() != null, RegisterTeacher::getSchoolId, bo.getSchoolId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), RegisterTeacher::getSchoolName, bo.getSchoolName());
+        lqw.like(StringUtils.isNotBlank(bo.getUserName()), RegisterTeacher::getUserName, bo.getUserName());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserPhone()), RegisterTeacher::getUserPhone, bo.getUserPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsPass()), RegisterTeacher::getIsPass, bo.getIsPass());
+        lqw.eq(bo.getAuditId() != null, RegisterTeacher::getAuditId, bo.getAuditId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuditUser()), RegisterTeacher::getAuditUser, bo.getAuditUser());
+        lqw.eq(StringUtils.isNotBlank(bo.getOpinion()), RegisterTeacher::getOpinion, bo.getOpinion());
+        return lqw;
+    }
+
+    /**
+     * 新增注册-老师
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R<RegisterTeacherVo> insertByBo(RegisterTeacherBo bo) {
+
+        //查询是否已经注册过
+        RegisterTeacherVo registerTeacherOld = baseMapper.selectRegisterTeacherByPhonenumber(bo.getUserPhone());
+        if(registerTeacherOld!=null){
+            if(registerTeacherOld.getIsPass().equals("1")){
+                return R.fail("该微信已注册当前身份,信息正在审核中。",registerTeacherOld);
+            }else if(registerTeacherOld.getIsPass().equals("2")){
+                return R.fail("该微信已注册当前身份,审核已通过,请登录。",registerTeacherOld);
+            }else{
+                return R.fail("该微信已注册当前身份,审核未通过。",registerTeacherOld);
+            }
+        }
+        bo.setCreateTime(DateUtils.getNowDate());
+        bo.setUpdateTime(DateUtils.getNowDate());
+
+        List<RegisterTeacherClassVo> registerTeacherClassList = bo.getRegisterTeacherClassList();
+        if(registerTeacherClassList!=null && registerTeacherClassList.size()>0){
+            for (RegisterTeacherClassVo registerTeacherClass : registerTeacherClassList) {
+                registerTeacherClass.setTeacherId(bo.getId());
+
+                String className = registerTeacherClass.getClassName();
+                int period = getPeriod(className);
+                registerTeacherClass.setPeriod(String.valueOf(period));
+                RegisterTeacherClassBo registerTeacherClassBo = MapstructUtils.convert(registerTeacherClass, RegisterTeacherClassBo.class);
+                registerTeacherClassService.insertByBo(registerTeacherClassBo);
+
+            }
+        }
+
+        RegisterTeacher add = MapstructUtils.convert(bo, RegisterTeacher.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    private int getPeriod(String className) {
+        int period = 0;
+        //获取当前年
+        int year = DateUtils.getYear();
+        //获取当前月
+        int month = DateUtils.getMonth();
+        //计算届数
+        if(className.contains("一年级")){
+            if(month<7){
+                period = year-1;
+            }else {
+                period = year;
+            }
+        }else if(className.contains("二年级")){
+            if(month<7){
+                period = year-2;
+            }else {
+                period = year-1;
+            }
+        }else if(className.contains("三年级")){
+            if(month<7){
+                period = year-3;
+            }else {
+                period = year-2;
+            }
+        }else if(className.contains("四年级")){
+            if(month<7){
+                period = year-4;
+            }else {
+                period = year-3;
+            }
+        }else if(className.contains("五年级")){
+            if(month<7){
+                period = year-5;
+            }else {
+                period = year-4;
+            }
+        }else if(className.contains("六年级")){
+            if(month<7){
+                period = year-6;
+            }else {
+                period = year-5;
+            }
+        }else if(className.contains("七年级")){
+            if(month<7){
+                period = year-1;
+            }else {
+                period = year;
+            }
+        }else if(className.contains("八年级")){
+            if(month<7){
+                period = year-2;
+            }else {
+                period = year-1;
+            }
+        }else if(className.contains("九年级")){
+            if(month<7){
+                period = year-3;
+            }else {
+                period = year-2;
+            }
+        }
+        return period;
+    }
+
+    /**
+     * 修改注册-老师
+     */
+    @Override
+    public Boolean updateByBo(RegisterTeacherBo bo) {
+
+        //删除注册表-老师-班级(学科)表
+        List<RegisterTeacherClassVo> registerTeacherClassList = bo.getRegisterTeacherClassList();
+        if(registerTeacherClassList!=null && registerTeacherClassList.size()>0){
+            registerTeacherClassMapper.deleteRegisterTeacherClassByTeacherId(bo.getId());
+            for (RegisterTeacherClassVo registerTeacherClass : registerTeacherClassList) {
+                registerTeacherClass.setTeacherId(bo.getId());
+
+                String className = registerTeacherClass.getClassName();
+                int period = getPeriod(className);
+                registerTeacherClass.setPeriod(String.valueOf(period));
+                RegisterTeacherClassBo registerTeacherClassBo = MapstructUtils.convert(registerTeacherClass, RegisterTeacherClassBo.class);
+                registerTeacherClassService.insertByBo(registerTeacherClassBo);
+            }
+        }
+        bo.setIsPass("1");
+        bo.setUpdateTime(DateUtils.getNowDate());
+
+        RegisterTeacher update = MapstructUtils.convert(bo, RegisterTeacher.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(RegisterTeacher entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除注册-老师
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 60 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseChangeMapper.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.CourseChangeMapper">
+
+
+    <resultMap type="org.dromara.system.domain.vo.CourseChangeVo" id="CourseChangeResult">
+        <result property="id"    column="id"    />
+        <result property="applyId"    column="apply_id"    />
+        <result property="applyName"    column="apply_name"    />
+        <result property="applyTime"    column="apply_time"    />
+        <result property="subjectClassId"    column="subject_class_id"    />
+        <result property="subjectClass"    column="subject_class"    />
+        <result property="subject"    column="subject"    />
+        <result property="isNum"    column="is_num"    />
+        <result property="subjectTime"    column="subject_time"    />
+        <result property="subjectWeek"    column="subject_week"    />
+        <result property="bePersonnel"    column="be_personnel"    />
+        <result property="bePersonnelId"    column="be_personnel_id"    />
+        <result property="beSubject"    column="be_subject"    />
+        <result property="beIsNum"    column="be_is_num"    />
+        <result property="beSubjectTime"    column="be_subject_time"    />
+        <result property="week"    column="week"    />
+        <result property="isPass"    column="is_pass"    />
+        <result property="content"    column="content"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="auditId"    column="audit_id"    />
+        <result property="auditUser"    column="audit_user"    />
+        <result property="opinion"    column="opinion"    />
+        <result property="schoolId"    column="school_id"    />
+        <result property="schoolName"    column="school_name"    />
+    </resultMap>
+
+    <sql id="selectCourseChangeVo">
+        select id, apply_id, apply_name, apply_time, subject_class_id, subject_class, subject, is_num, subject_time, subject_week, be_personnel, be_personnel_id, be_subject, be_is_num, be_subject_time, week, is_pass, content, create_by, create_time, update_by, update_time, remark, audit_id, audit_user, opinion, school_id, school_name from course_change
+    </sql>
+
+    <select id="selectCourseChangeListByEdit" resultMap="CourseChangeResult">
+        <include refid="selectCourseChangeVo"/>
+        where subject_class_id = #{classId} and is_pass = 2
+        and ((date_format(subject_time,'%y%m%d') &gt;= date_format(#{fist},'%y%m%d') and date_format(subject_time,'%y%m%d') &lt;= date_format(#{five},'%y%m%d'))
+        or (date_format(be_subject_time,'%y%m%d') &gt;= date_format(#{fist},'%y%m%d') and date_format(be_subject_time,'%y%m%d') &lt;= date_format(#{five},'%y%m%d')))
+    </select>
+
+    <select id="selectCourseChangeListByTime" resultMap="CourseChangeResult">
+        <include refid="selectCourseChangeVo"/>
+        where date_format(create_time,'%Y%m') = date_format(#{monthFirst},'%Y%m')
+        <if test="userId != null and userId != 0">
+            and apply_id = #{userId}
+        </if>
+        <if test="deptId != null and deptId != 0">
+            and school_id = #{deptId}
+        </if>
+    </select>
+</mapper>

+ 45 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableMapper.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.CourseTableMapper">
+    <resultMap type="org.dromara.system.domain.vo.CourseTableVo" id="CourseTableResult">
+        <result property="id"    column="id"    />
+        <result property="schoolId"    column="school_id"    />
+        <result property="schoolName"    column="school_name"    />
+        <result property="classId"    column="class_id"    />
+        <result property="className"    column="class_name"    />
+        <result property="week"    column="week"    />
+        <result property="oneClass"    column="one_class"    />
+        <result property="oneTeacher"    column="one_teacher"    />
+        <result property="twoClass"    column="two_class"    />
+        <result property="twoTeacher"    column="two_teacher"    />
+        <result property="threeClass"    column="three_class"    />
+        <result property="threeTeacher"    column="three_teacher"    />
+        <result property="fourClass"    column="four_class"    />
+        <result property="fourTeacher"    column="four_teacher"    />
+        <result property="fiveClass"    column="five_class"    />
+        <result property="fiveTeacher"    column="five_teacher"    />
+        <result property="sixClass"    column="six_class"    />
+        <result property="sixTeacher"    column="six_teacher"    />
+        <result property="sevenClass"    column="seven_class"    />
+        <result property="sevenTeacher"    column="seven_teacher"    />
+        <result property="eightClass"    column="eight_class"    />
+        <result property="eightTeacher"    column="eight_teacher"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectCourseTableVo">
+        select id, school_id, school_name, class_id, class_name, week, one_class, one_teacher, two_class, two_teacher, three_class, three_teacher, four_class, four_teacher, five_class, five_teacher, six_class, six_teacher, seven_class, seven_teacher, eight_class, eight_teacher, create_by, create_time, update_by, update_time, remark from course_table
+    </sql>
+
+    <select id="selectCourseTableByClassIdAndWeek" resultMap="CourseTableResult">
+        <include refid="selectCourseTableVo"/>
+        where class_id = #{classId} and week = #{week}
+    </select>
+
+</mapper>

+ 43 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableTimeMapper.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.CourseTableTimeMapper">
+
+    <resultMap type="org.dromara.system.domain.vo.CourseTableTimeVo" id="CourseTableTimeResult">
+        <result property="id"    column="id"    />
+        <result property="schoolId"    column="school_id"    />
+        <result property="schoolName"    column="school_name"    />
+        <result property="oneStartTime"    column="one_start_time"    />
+        <result property="oneEndTime"    column="one_end_time"    />
+        <result property="twoStartTime"    column="two_start_time"    />
+        <result property="twoEndTime"    column="two__end_time"    />
+        <result property="threeStartTime"    column="three_start_time"    />
+        <result property="threeEndTime"    column="three_end_time"    />
+        <result property="fourStartTime"    column="four_start_time"    />
+        <result property="fourEndTime"    column="four_end_time"    />
+        <result property="fiveStartTime"    column="five_start_time"    />
+        <result property="fiveEndTime"    column="five_end_time"    />
+        <result property="sixStartTime"    column="six_start_time"    />
+        <result property="sixEndTime"    column="six_end_time"    />
+        <result property="sevenStartTime"    column="seven_start_time"    />
+        <result property="sevenEndTime"    column="seven_end_time"    />
+        <result property="eightStartTime"    column="eight_start_time"    />
+        <result property="eightEndTime"    column="eight_end_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectCourseTableTimeVo">
+        select id, school_id, school_name, one_start_time, one_end_time, two_start_time, two__end_time, three_start_time, three_end_time, four_start_time, four_end_time, five_start_time, five_end_time, six_start_time, six_end_time, seven_start_time, seven_end_time, eight_start_time, eight_end_time, create_by, create_time, update_by, update_time, remark from course_table_time
+    </sql>
+
+    <select id="selectCourseTableTimeBySchoolId" resultMap="CourseTableTimeResult">
+        <include refid="selectCourseTableTimeVo"/>
+        where school_id = #{schoolId}
+    </select>
+
+</mapper>

+ 32 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterParentsMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.RegisterParentsMapper">
+    <resultMap type="org.dromara.system.domain.vo.RegisterParentsVo" id="RegisterParentsResult">
+        <result property="id"    column="id"    />
+        <result property="openId"    column="open_id"    />
+        <result property="userName"    column="user_name"    />
+        <result property="userPhone"    column="user_phone"    />
+        <result property="isPass"    column="is_pass"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectRegisterParentsVo">
+        select id,open_id, user_name, user_phone,is_pass, create_by, create_time, update_by, update_time, remark from register_parents
+    </sql>
+
+    <select id="selectRegisterParentsByOppenId" resultMap="RegisterParentsResult" parameterType="java.lang.String">
+        <include refid="selectRegisterParentsVo"/>
+        where  open_id = #{openId} limit 1
+    </select>
+
+    <select id="selectRegisterParentsByPhonenumber" resultMap="RegisterParentsResult">
+        <include refid="selectRegisterParentsVo"/>
+        where  user_phone = #{phonenumber} limit 1
+    </select>
+</mapper>

+ 46 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterParentsStudentMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.RegisterParentsStudentMapper">
+    <resultMap type="org.dromara.system.domain.vo.RegisterParentsStudentVo" id="RegisterParentsStudentResult">
+        <result property="id"    column="id"    />
+        <result property="parentsId"    column="parents_id"    />
+
+        <result property="parentsName"    column="parents_name"    />
+        <result property="parentsPhone"    column="parents_phone"    />
+
+        <result property="schoolId"    column="school_id"    />
+        <result property="schoolName"    column="school_name"    />
+        <result property="classId"    column="class_id"    />
+        <result property="className"    column="class_name"    />
+        <result property="studentName"    column="student_name"    />
+        <result property="studentNumber"    column="student_number"    />
+        <result property="isPass"    column="is_pass"    />
+        <result property="auditId"    column="audit_id"    />
+        <result property="auditUser"    column="audit_user"    />
+        <result property="opinion"    column="opinion"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectRegisterParentsStudentVo">
+        select id, parents_id,parents_name,parents_phone, school_id, school_name, class_id, class_name, student_name, student_number, is_pass,audit_id,audit_user,opinion, create_by, create_time, update_by, update_time, remark from register_parents_student
+    </sql>
+
+    <delete id="deleteRegisterParentsStudentByParentsId" parameterType="java.lang.Long">
+        delete from register_parents_student where parents_id = #{parentsId} and is_pass = '3';
+    </delete>
+
+    <select id="selectRegisterParentsStudentListByTime" resultMap="RegisterParentsStudentResult">
+        <include refid="selectRegisterParentsStudentVo"/>
+        where date_format(create_time,'%Y%m') = date_format(#{monthFirst},'%Y%m')
+        and class_id in
+        <foreach collection="classIds" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+</mapper>

+ 25 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterSchoolFileMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.RegisterSchoolFileMapper">
+
+    <resultMap type="org.dromara.system.domain.vo.RegisterSchoolFileVo" id="RegisterSchoolFileResult">
+        <result property="id"    column="id"    />
+        <result property="schoolId"    column="school_id"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="name"    column="name"    />
+        <result property="url"    column="url"    />
+        <result property="type"    column="type"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectRegisterSchoolFileVo">
+        select id, school_id, dept_id, name, url, type, remark from register_school_file
+    </sql>
+
+    <delete id="deleteRegisterSchoolFileBySchoolId" parameterType="java.lang.Long">
+        delete from register_school_file where school_id = #{schoolId}
+    </delete>
+
+</mapper>

+ 44 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterSchoolMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.RegisterSchoolMapper">
+    <resultMap type="org.dromara.system.domain.vo.RegisterSchoolVo" id="RegisterSchoolResult">
+        <result property="id"    column="id"    />
+        <result property="openId"    column="open_id"    />
+        <result property="schoolName"    column="school_name"    />
+        <result property="userName"    column="user_name"    />
+        <result property="userPhone"    column="user_phone"    />
+        <result property="isPass"    column="is_pass"    />
+        <result property="auditId"    column="audit_id"    />
+        <result property="auditUser"    column="audit_user"    />
+        <result property="opinion"    column="opinion"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectRegisterSchoolVo">
+        select id,open_id, school_name, user_name, user_phone, is_pass,audit_id,audit_user,opinion, create_by, create_time, update_by, update_time, remark from register_school
+    </sql>
+
+    <select id="selectRegisterSchooByOppenId" resultMap="RegisterSchoolResult" parameterType="java.lang.String">
+        <include refid="selectRegisterSchoolVo"/>
+        where  open_id = #{openId} limit 1
+    </select>
+
+    <select id="selectRegisterSchooByPhonenumber" resultMap="RegisterSchoolResult">
+        <include refid="selectRegisterSchoolVo"/>
+        where  user_phone = #{phonenumber} limit 1
+    </select>
+
+    <delete id="deleteRegisterSchoolByOpenId">
+        delete from register_school where open_id  = #{openId}
+    </delete>
+
+    <delete id="deleteRegisterSchoolByPhonenumber">
+        delete from register_school where user_phone  = #{phonenumber}
+    </delete>
+</mapper>

+ 34 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterTeacherClassMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.RegisterTeacherClassMapper">
+    <resultMap type="org.dromara.system.domain.vo.RegisterTeacherClassVo" id="RegisterTeacherClassResult">
+        <result property="id"    column="id"    />
+        <result property="teacherId"    column="teacher_id"    />
+        <result property="classId"    column="class_id"    />
+        <result property="className"    column="class_name"    />
+        <result property="discipline"    column="discipline"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+
+        <result property="period"    column="period"    />
+    </resultMap>
+
+    <sql id="selectRegisterTeacherClassVo">
+        select id, teacher_id, class_id, class_name,period, discipline, create_by, create_time, update_by, update_time, remark from register_teacher_class
+    </sql>
+
+    <delete id="deleteRegisterTeacherClassByTeacherId" parameterType="java.lang.Long">
+        delete from register_teacher_class where teacher_id = #{teacherId}
+    </delete>
+    <delete id="deleteRegisterTeacherClassByTeacherIds" parameterType="String">
+        delete from register_teacher_class where teacher_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 43 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterTeacherMapper.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.RegisterTeacherMapper">
+    <resultMap type="org.dromara.system.domain.vo.RegisterTeacherVo" id="RegisterTeacherResult">
+        <result property="id"    column="id"    />
+        <result property="openId"    column="open_id"    />
+        <result property="schoolId"    column="school_id"    />
+        <result property="schoolName"    column="school_name"    />
+        <result property="userName"    column="user_name"    />
+        <result property="userPhone"    column="user_phone"    />
+        <result property="isPass"    column="is_pass"    />
+        <result property="auditId"    column="audit_id"    />
+        <result property="auditUser"    column="audit_user"    />
+        <result property="opinion"    column="opinion"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectRegisterTeacherVo">
+        select id,open_id, school_id, school_name, user_name, user_phone, is_pass,audit_id,audit_user,opinion, create_by, create_time, update_by, update_time, remark from register_teacher
+    </sql>
+
+    <select id="selectRegisterTeacherByOppenId" resultMap="RegisterTeacherResult" parameterType="java.lang.String">
+        <include refid="selectRegisterTeacherVo"/>
+        where  open_id = #{openId} limit 1
+    </select>
+
+    <select id="selectRegisterTeacherByPhonenumber" resultMap="RegisterTeacherResult">
+        <include refid="selectRegisterTeacherVo"/>
+        where  user_phone = #{phonenumber} limit 1
+    </select>
+
+    <select id="selectRegisterTeacherListByTime" resultMap="RegisterTeacherResult">
+        <include refid="selectRegisterTeacherVo"/>
+        where date_format(create_time,'%Y%m') = date_format(#{monthFirst},'%Y%m')
+        and school_id = #{deptId}
+    </select>
+</mapper>