From 00238731babc2e8c6e0736dd8393a11243eed52b Mon Sep 17 00:00:00 2001 From: Alan <3052806735@qq.com> Date: Mon, 17 Jun 2024 21:20:12 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=95=99=E5=B8=88=EF=BC=8C=E7=AE=A1=E7=90=86=E5=91=98=E5=88=86?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=99=BB=E5=BD=95=EF=BC=8C=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84=E7=AD=9B=E9=80=89=20=E6=95=99?= =?UTF-8?q?=E5=B8=88=E4=BF=A1=E6=81=AF=E7=9A=84=E6=9F=A5=E8=AF=A2=EF=BC=88?= =?UTF-8?q?username,name=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 ++ .../teaching/TeachingBackendApplication.java | 7 +- .../teaching/backend/common/ErrorCode.java | 5 +- .../courses/CourseObjectivesController.java | 1 - .../controller/courses/CoursesController.java | 2 +- .../courses/ObjectiveContentsController.java | 5 +- .../umsAdmin/UmsAdminController.java | 15 ++++ .../courses/CourseObjectivesMapper.java | 3 + .../courses/ObjectiveContentKnowMapper.java | 3 + .../mapper/courses/StudentCoursesMapper.java | 4 + .../entity/courses/ObjectiveContentKnow.java | 12 ++- .../model/entity/courses/StudentCourses.java | 7 +- .../backend/model/query/CourseQuery.java | 12 +++ .../model/vo/courses/TeacherInfVO.java | 22 ++++++ .../service/courses/ICoursesService.java | 2 + .../courses/IObjectiveContentsService.java | 2 + .../courses/CourseObjectivesServiceImpl.java | 11 +++ .../impl/courses/CoursesServiceImpl.java | 75 ++++++++++++------- .../ObjectiveContentKnowServiceImpl.java | 29 ++++--- .../courses/ObjectiveContentsServiceImpl.java | 25 +++++++ .../courses/StudentCoursesServiceImpl.java | 45 +++++------ .../service/umsAdmin/UmsAdminService.java | 3 + .../umsAdmin/impl/UmsAdminServiceImpl.java | 31 +++++++- .../teaching/backend/utils/CourseCode.java | 2 + .../mapper/CourseObjectivesMapper.xml | 9 +++ .../mapper/ObjectiveContentKnowMapper.xml | 8 ++ .../resources/mapper/StudentCoursesMapper.xml | 7 ++ 27 files changed, 275 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/teaching/backend/model/vo/courses/TeacherInfVO.java diff --git a/pom.xml b/pom.xml index 1bc5502..ee03296 100644 --- a/pom.xml +++ b/pom.xml @@ -154,6 +154,13 @@ org.springframework.boot spring-boot-starter-data-redis + + com.fasterxml.jackson.core + jackson-databind + 2.12.5 + compile + + diff --git a/src/main/java/com/teaching/TeachingBackendApplication.java b/src/main/java/com/teaching/TeachingBackendApplication.java index 0db15d2..fd5e055 100644 --- a/src/main/java/com/teaching/TeachingBackendApplication.java +++ b/src/main/java/com/teaching/TeachingBackendApplication.java @@ -1,8 +1,10 @@ package com.teaching; +import cn.hutool.core.lang.generator.SnowflakeGenerator; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; @SpringBootApplication @MapperScan("com.teaching.backend.mapper") @@ -11,8 +13,11 @@ public class TeachingBackendApplication { public static void main(String[] args) { SpringApplication.run(TeachingBackendApplication.class, args); + } - + @Bean + SnowflakeGenerator snowflakeGenerator(){ + return new SnowflakeGenerator(1,0); } } diff --git a/src/main/java/com/teaching/backend/common/ErrorCode.java b/src/main/java/com/teaching/backend/common/ErrorCode.java index 99341f2..f166ba9 100644 --- a/src/main/java/com/teaching/backend/common/ErrorCode.java +++ b/src/main/java/com/teaching/backend/common/ErrorCode.java @@ -14,10 +14,11 @@ public enum ErrorCode { KONWID_NOT_EXIT(40002, "没有选择知识点"), OBJECTIVE_OR_CONTENT_EXIT(40003, "该记录已存在"), KNOW_NOT_EXIT(40004, "知识点不存在"), - TEACHER_NOT_EXIT(40005, "缺少教师信息"), + USERNAME_NOT_EXIT(40005, "缺少用户信息"), STUDENT_NOT_EXIT(40006, "缺少学生信息"), COURSES_NOT_EXIT(40007, "缺少课程信息"), - + CONTENT_NOT_EXIT(40008, "内容id不存在"), + KNOWS_EXIT(40009, "该项下面存在关联的知识点"), NOT_LOGIN_ERROR(40100, "未登录"), NO_AUTH_ERROR(40101, "无权限"), NOT_FOUND_ERROR(40400, "请求数据不存在"), diff --git a/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java b/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java index 777e7b6..2a6e1a1 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java @@ -51,7 +51,6 @@ public class CourseObjectivesController { } /** - * 禁止修改课程编码和名称 * @param courseObjectivesDTO * @return */ diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index 078809c..16ca638 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -91,7 +91,7 @@ public class CoursesController { return ResultUtils.success("编辑成功"); } - //TODO:删除功能暂未完善,数据表缺失 + //TODO:删除功能暂未完善,数据缺失 @ApiOperation("根据id删除课程") @DeleteMapping("/{id}") public BaseResponse deleteCourses(@PathVariable String id){ diff --git a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java b/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java index 66afe28..0fd4b7f 100644 --- a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java +++ b/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java @@ -36,8 +36,9 @@ public class ObjectiveContentsController { @ApiOperation("删除目标内容") @DeleteMapping("/{id}") public BaseResponse deleteContent(@PathVariable String id){ - objectiveContentsService.removeById(id); - return ResultUtils.success("删除成功"); +// objectiveContentsService.removeById(id); + String data = objectiveContentsService.deleteById(id); + return ResultUtils.success(data); } @ApiOperation("修改目标内容") diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java index 13d1cf5..441a979 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java @@ -2,15 +2,23 @@ package com.teaching.backend.controller.umsAdmin; import cn.hutool.core.collection.CollUtil; import com.teaching.backend.api.CommonResult; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; import com.teaching.backend.model.dto.UmsAdminParam; import com.teaching.backend.model.dto.UpdateAdminPasswordParam; +import com.teaching.backend.model.dto.courses.CoursesDTO; +import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; import com.teaching.backend.model.entity.umsAdmin.UmsRole; +import com.teaching.backend.model.vo.courses.TeacherInfVO; import com.teaching.backend.service.umsAdmin.UmsAdminService; import com.teaching.backend.service.umsAdmin.UmsRoleService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; @@ -166,4 +174,11 @@ public class UmsAdminController { } } + @ApiOperation("获取教师信息列表,关联教师的username和name") + @GetMapping("/get_teacherinf_list") + public BaseResponse> getTeacherInfList(){ + List teacherInfVO = umsAdminService.getTeacherInfList(); + return ResultUtils.success(teacherInfVO); + } + } diff --git a/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java b/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java index 7de5035..4dc7e25 100644 --- a/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java +++ b/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.courses.CourseObjectives; import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; +import java.util.ArrayList; import java.util.List; /** @@ -17,4 +18,6 @@ import java.util.List; public interface CourseObjectivesMapper extends BaseMapper { List selectTreeNodes(String courseObjectivesId); + + void insertBatch(ArrayList courseObjectivesFList); } diff --git a/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java b/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java index 98d2b90..1222d1a 100644 --- a/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java +++ b/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java @@ -3,6 +3,8 @@ package com.teaching.backend.mapper.courses; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; +import java.util.List; + /** *

* Mapper 接口 @@ -13,4 +15,5 @@ import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; */ public interface ObjectiveContentKnowMapper extends BaseMapper { + void insertBatchSomeColumn(List objectiveContentKnowList); } diff --git a/src/main/java/com/teaching/backend/mapper/courses/StudentCoursesMapper.java b/src/main/java/com/teaching/backend/mapper/courses/StudentCoursesMapper.java index ea9cb28..b6042f9 100644 --- a/src/main/java/com/teaching/backend/mapper/courses/StudentCoursesMapper.java +++ b/src/main/java/com/teaching/backend/mapper/courses/StudentCoursesMapper.java @@ -1,8 +1,11 @@ package com.teaching.backend.mapper.courses; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; import com.teaching.backend.model.entity.courses.StudentCourses; +import java.util.List; + /** *

* Mapper 接口 @@ -13,4 +16,5 @@ import com.teaching.backend.model.entity.courses.StudentCourses; */ public interface StudentCoursesMapper extends BaseMapper { + void insertBatchSomeColumn(List studentCoursesList); } diff --git a/src/main/java/com/teaching/backend/model/entity/courses/ObjectiveContentKnow.java b/src/main/java/com/teaching/backend/model/entity/courses/ObjectiveContentKnow.java index b49a21c..fb91204 100644 --- a/src/main/java/com/teaching/backend/model/entity/courses/ObjectiveContentKnow.java +++ b/src/main/java/com/teaching/backend/model/entity/courses/ObjectiveContentKnow.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -24,8 +27,13 @@ public class ObjectiveContentKnow implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "id", type = IdType.ASSIGN_UUID) - private String id; + @ApiModelProperty(value = "雪花算法生成的主键") + @JsonFormat(shape = JsonFormat.Shape.STRING)//此句为问题关键相当于吧Long转换为String + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + +// @TableId(value = "id", type = IdType.NONE) +// private Long id; /** * 分项目标或内容 的 id diff --git a/src/main/java/com/teaching/backend/model/entity/courses/StudentCourses.java b/src/main/java/com/teaching/backend/model/entity/courses/StudentCourses.java index acc0c54..b3125f7 100644 --- a/src/main/java/com/teaching/backend/model/entity/courses/StudentCourses.java +++ b/src/main/java/com/teaching/backend/model/entity/courses/StudentCourses.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -24,8 +26,9 @@ public class StudentCourses implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "id", type = IdType.ASSIGN_UUID) - private String id; + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonFormat(shape = JsonFormat.Shape.STRING)//此句为问题关键相当于吧Long转换为String + private Long id; /** * 学生的username diff --git a/src/main/java/com/teaching/backend/model/query/CourseQuery.java b/src/main/java/com/teaching/backend/model/query/CourseQuery.java index d091993..13dbc8b 100644 --- a/src/main/java/com/teaching/backend/model/query/CourseQuery.java +++ b/src/main/java/com/teaching/backend/model/query/CourseQuery.java @@ -14,4 +14,16 @@ public class CourseQuery extends PageQuery { @ApiModelProperty(value = "用户的username",required = true) private String username; + + @ApiModelProperty("课程任课教师") + private String teacher; + + @ApiModelProperty("课程类别") + private String category; + + @ApiModelProperty("课程性质") + private String nature; + + @ApiModelProperty("课程考核类型") + private String assessmenttype; } diff --git a/src/main/java/com/teaching/backend/model/vo/courses/TeacherInfVO.java b/src/main/java/com/teaching/backend/model/vo/courses/TeacherInfVO.java new file mode 100644 index 0000000..66a317e --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/courses/TeacherInfVO.java @@ -0,0 +1,22 @@ +package com.teaching.backend.model.vo.courses; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(description = "教师具体信息VO实体") +public class TeacherInfVO { + + /** + * 教师username + */ + @ApiModelProperty("教师username") + private String username; + /** + * 课程封面 + */ + @ApiModelProperty("教师name") + private String name; +} diff --git a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index c69b060..2737450 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java @@ -36,4 +36,6 @@ public interface ICoursesService extends IService { void updateCourse(CoursesDTO coursesDTO); void down(HttpServletResponse response, String id) throws Exception; + + void populateTeacherNames(List courseList); } diff --git a/src/main/java/com/teaching/backend/service/courses/IObjectiveContentsService.java b/src/main/java/com/teaching/backend/service/courses/IObjectiveContentsService.java index c3a75d1..b031659 100644 --- a/src/main/java/com/teaching/backend/service/courses/IObjectiveContentsService.java +++ b/src/main/java/com/teaching/backend/service/courses/IObjectiveContentsService.java @@ -14,4 +14,6 @@ import com.teaching.backend.model.entity.courses.ObjectiveContents; */ public interface IObjectiveContentsService extends IService { + + String deleteById(String id); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java index 88c4816..a1d58f4 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java @@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.mapper.courses.CourseObjectivesMapper; +import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper; import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; import com.teaching.backend.model.dto.courses.CourseObjectivesDTO; import com.teaching.backend.model.entity.courses.CourseObjectives; +import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; import com.teaching.backend.model.entity.courses.ObjectiveContents; import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; import com.teaching.backend.service.courses.ICourseObjectivesService; @@ -39,6 +41,8 @@ public class CourseObjectivesServiceImpl extends ServiceImpl() + .eq(ObjectiveContentKnow::getObjectiveOrContent, id)); + if(count > CourseCode.KNOWS_EXIT.getValue()){ + throw new BusinessException(ErrorCode.KNOWS_EXIT); + } String pid = courseObjectives.getPid(); if (type.equals(CourseCode.SI_ZHENG_TYPE.getValue())){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index 23bf545..9a7d330 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -3,6 +3,7 @@ package com.teaching.backend.service.impl.courses; import cn.afterturn.easypoi.word.WordExportUtil; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.UUID; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,6 +15,7 @@ import com.teaching.backend.mapper.courses.CoursesMapper; import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; import com.teaching.backend.mapper.courses.ObjectivesTypeMapper; import com.teaching.backend.mapper.umsAdmin.UmsAdminMapper; +import com.teaching.backend.mapper.umsAdmin.UmsAdminRoleRelationMapper; import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper; import com.teaching.backend.model.dto.courses.CoursesDTO; import com.teaching.backend.model.dto.courses.PageDTO; @@ -22,6 +24,7 @@ import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.courses.ObjectiveContents; import com.teaching.backend.model.entity.courses.ObjectivesType; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; +import com.teaching.backend.model.entity.umsAdmin.UmsAdminRoleRelation; import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; @@ -66,6 +69,8 @@ public class CoursesServiceImpl extends ServiceImpl impl UmsAdminMapper umsAdminMapper; @Autowired UmsTeacherMapper umsTeacherMapper; + @Autowired + UmsAdminRoleRelationMapper umsAdminRoleRelationMapper; @Override @@ -73,12 +78,15 @@ public class CoursesServiceImpl extends ServiceImpl impl public String saveCourseWithObjective(CoursesDTO coursesDTO) { String teacher = coursesDTO.getTeacher(); if (teacher == null || teacher.equals("")) { - throw new BusinessException(ErrorCode.TEACHER_NOT_EXIT); + throw new BusinessException(ErrorCode.USERNAME_NOT_EXIT); } Courses courses = new Courses(); + String courseId = UUID.randomUUID().toString().replace("-", ""); + CourseObjectives courseObjectives = new CourseObjectives(); BeanUtils.copyProperties(coursesDTO, courses); courses.setCreateTime(LocalDateTime.now()); + courses.setId(courseId); String code = coursesDTO.getCode(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("code", code); @@ -86,24 +94,27 @@ public class CoursesServiceImpl extends ServiceImpl impl if (count == 0) { int insert = coursesMapper.insert(courses); if (insert > 0) { - Courses coursesNew = coursesMapper.selectOne(queryWrapper); - courseObjectives.setCourseId(coursesNew.getId()); + Courses coursesNew = coursesMapper.selectById(courseId); + courseObjectives.setCourseId(courseId); courseObjectives.setName(coursesNew.getName() + "课程总体目标"); int insertTotal = courseObjectivesMapper.insert(courseObjectives); if (insertTotal>0){ CourseObjectives courseTotalObjectives = courseObjectivesMapper.selectOne - (new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, coursesNew.getId())); + (new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, courseId)); String courseTotalObjectivesId = courseTotalObjectives.getId(); List objectivesTypes = objectivesTypeMapper.selectList(new LambdaQueryWrapper()); + ArrayList courseObjectivesFList = new ArrayList<>(); + CourseObjectives courseObjectivesF = null; for (ObjectivesType objectivesType : objectivesTypes) { Integer typeId = objectivesType.getId(); String typeName = objectivesType.getTypeName(); - CourseObjectives courseObjectivesF = new CourseObjectives(); + courseObjectivesF = new CourseObjectives(); courseObjectivesF.setType(typeId); courseObjectivesF.setName(typeName); courseObjectivesF.setPid(courseTotalObjectivesId); - courseObjectivesMapper.insert(courseObjectivesF); + courseObjectivesFList.add(courseObjectivesF); } + courseObjectivesMapper.insertBatch(courseObjectivesFList); courseTotalObjectives.setHasChild(1); courseObjectivesMapper.updateById(courseTotalObjectives); } @@ -118,42 +129,50 @@ public class CoursesServiceImpl extends ServiceImpl impl @Override public PageDTO queryCourses(CourseQuery courseQuery) { String username = courseQuery.getUsername(); - if (username==null || username.equals("")){ - throw new BusinessException(ErrorCode.TEACHER_NOT_EXIT); + if (username == null || username.isEmpty()) { + throw new BusinessException(ErrorCode.USERNAME_NOT_EXIT); } - //要搜索的课程名字 - String name = courseQuery.getName(); - // 1.1构建分页条件 + + UmsAdmin umsAdmin = umsAdminMapper.selectOne(new LambdaQueryWrapper() + .eq(UmsAdmin::getUsername, username)); + UmsAdminRoleRelation umsAdminRoleRelation = umsAdminRoleRelationMapper.selectOne(new LambdaQueryWrapper() + .eq(UmsAdminRoleRelation::getAdminId, umsAdmin.getId())); + + // Determine if the user is a teacher + boolean isTeacher = umsAdminRoleRelation.getRoleId() == CourseCode.TEACHER_ROLE_ID.getValue(); + Page page = courseQuery.toMpPageDefaultSortByCreateTime(); - // 2.分页查询 Page p = lambdaQuery() - .like(name != null, Courses::getName, name) -// .eq(Courses::getTeacher,teacherId) -// .apply("JSON_CONTAINS(teacher, JSON_QUOTE({0}))", teacherId) - .apply("FIND_IN_SET({0}, teacher)", username) + .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) + .apply(isTeacher, "FIND_IN_SET({0}, teacher)", username) + .eq(!isTeacher && courseQuery.getCategory() != null, Courses::getCategory, courseQuery.getCategory()) + .eq(!isTeacher && courseQuery.getNature() != null, Courses::getNature, courseQuery.getNature()) + .eq(!isTeacher && courseQuery.getAssessmenttype() != null, Courses::getAssessmenttype, courseQuery.getAssessmenttype()) + .apply(!isTeacher && courseQuery.getTeacher() != null && !courseQuery.getTeacher().isEmpty(), "FIND_IN_SET({0}, teacher)", courseQuery.getTeacher()) .page(page); + PageDTO coursesVOPageDTO = PageDTO.of(p, CoursesVO.class); - List pageDTOList = coursesVOPageDTO.getList(); - List teachers = null; + populateTeacherNames(coursesVOPageDTO.getList()); - for (CoursesVO coursesVO : pageDTOList) { + return coursesVOPageDTO; + } + + public void populateTeacherNames(List courseList) { + for (CoursesVO coursesVO : courseList) { List teacherNameList = new ArrayList<>(); - String teacherIds = coursesVO.getTeacher(); - teachers = new ArrayList<>(Arrays.asList(teacherIds.split(","))); - for (String teacher : teachers) { - UmsAdmin umsAdmin = umsAdminMapper.selectOne(new LambdaQueryWrapper(). - eq(UmsAdmin::getUsername, teacher)); - if (umsAdmin==null){ + String[] teacherIds = coursesVO.getTeacher().split(","); + for (String teacherId : teacherIds) { + UmsAdmin umsAdminTea = umsAdminMapper.selectOne(new LambdaQueryWrapper() + .eq(UmsAdmin::getUsername, teacherId)); + if (umsAdminTea == null) { throw new BusinessException(ErrorCode.OPERATION_ERROR); } - Long adminId = umsAdmin.getId(); UmsTeacher umsTeacher = umsTeacherMapper.selectOne(new LambdaQueryWrapper() - .eq(UmsTeacher::getUserId, adminId)); + .eq(UmsTeacher::getUserId, umsAdminTea.getId())); teacherNameList.add(umsTeacher.getName()); } coursesVO.setTeacher(String.join(",", teacherNameList)); } - return coursesVOPageDTO; } @Override diff --git a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java index 6b42b66..2dac173 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java @@ -1,5 +1,6 @@ package com.teaching.backend.service.impl.courses; +import cn.hutool.core.lang.generator.SnowflakeGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.ErrorCode; @@ -26,6 +27,7 @@ import java.sql.SQLIntegrityConstraintViolationException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -49,7 +51,10 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl knowIds = new ArrayList<>(Arrays.asList(knows.split(","))); - ObjectiveContentKnow objectiveContentKnow = null; + List objectiveContentKnowList = new ArrayList<>(); + for (String knowId : knowIds) { + ObjectiveContentKnow objectiveContentKnow = new ObjectiveContentKnow(); +// objectiveContentKnow.setId(snowflakeGenerator.next()); + objectiveContentKnow.setObjectiveOrContent(objectiveOrContent); + objectiveContentKnow.setKnow(knowId); + objectiveContentKnowList.add(objectiveContentKnow); + } + try { - for (String knowId : knowIds) { - objectiveContentKnow = new ObjectiveContentKnow(); - objectiveContentKnow.setObjectiveOrContent(objectiveOrContent); - objectiveContentKnow.setKnow(knowId); - objectiveContentKnowMapper.insert(objectiveContentKnow); - } + objectiveContentKnowMapper.insertBatchSomeColumn(objectiveContentKnowList); } catch (Exception e) { e.printStackTrace(); throw new BusinessException(ErrorCode.OBJECTIVE_OR_CONTENT_EXIT); } + return "添加成功"; } @@ -118,7 +127,7 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl { BigDecimal contentPercentage = calculatePercentage(contentKnowVO.getKnowsTime(), classhours); contentKnowVO.setPersent(contentPercentage + "%"); @@ -161,8 +170,8 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl implements IObjectiveContentsService { + @Autowired + ObjectiveContentKnowMapper objectiveContentKnowMapper; + @Autowired + ObjectiveContentsMapper objectiveContentsMapper; + @Override + public String deleteById(String id) { + if (id == null){ + throw new BusinessException(ErrorCode.CONTENT_NOT_EXIT); + } + Long count = objectiveContentKnowMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectiveContentKnow::getObjectiveOrContent, id)); + if(count > CourseCode.KNOWS_EXIT.getValue()){ + throw new BusinessException(ErrorCode.KNOWS_EXIT); + } + int delete = objectiveContentsMapper.deleteById(id); + return delete>0 ? "删除成功!" : "删除失败!"; + } } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java index 63e6b64..c553c44 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java @@ -1,6 +1,7 @@ package com.teaching.backend.service.impl.courses; +import cn.hutool.core.lang.generator.SnowflakeGenerator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -20,6 +21,7 @@ import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CoursesVO; +import com.teaching.backend.service.courses.ICoursesService; import com.teaching.backend.service.courses.IStudentCoursesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -49,6 +51,11 @@ public class StudentCoursesServiceImpl extends ServiceImpl coursesIds = new ArrayList<>(Arrays.asList(courses.split(","))); + List studentCoursesList = new ArrayList<>(); StudentCourses studentCourses = null; + + for (String course : coursesIds) { + studentCourses = new StudentCourses(); + studentCourses.setStudent(studentId); + studentCourses.setCourse(course); + studentCoursesList.add(studentCourses); + } try { - for (String course : coursesIds) { - studentCourses = new StudentCourses(); - studentCourses.setStudent(studentId); - studentCourses.setCourse(course); - studentCoursesMapper.insert(studentCourses); - } + studentCoursesMapper.insertBatchSomeColumn(studentCoursesList); } catch (Exception e) { e.printStackTrace(); throw new BusinessException(ErrorCode.OBJECTIVE_OR_CONTENT_EXIT); @@ -79,7 +89,7 @@ public class StudentCoursesServiceImpl extends ServiceImpl queryCourses(CourseQuery courseQuery) { String username = courseQuery.getUsername(); - if (username==null || username.equals("")){ + if (username == null || username.equals("")) { throw new BusinessException(ErrorCode.STUDENT_NOT_EXIT); } List studentCourses = studentCoursesMapper.selectList(new LambdaQueryWrapper() @@ -99,26 +109,9 @@ public class StudentCoursesServiceImpl extends ServiceImpl p = this.coursesMapper.selectPage(page, queryWrapper); PageDTO coursesVOPageDTO = PageDTO.of(p, CoursesVO.class); - List pageDTOList = coursesVOPageDTO.getList(); - List teachers = null; - for (CoursesVO coursesVO : pageDTOList) { - List teacherNameList = new ArrayList<>(); - String teacherIds = coursesVO.getTeacher(); - teachers = new ArrayList<>(Arrays.asList(teacherIds.split(","))); - for (String teacher : teachers) { - UmsAdmin umsAdmin = umsAdminMapper.selectOne(new LambdaQueryWrapper(). - eq(UmsAdmin::getUsername, teacher)); - if (umsAdmin==null){ - throw new BusinessException(ErrorCode.OPERATION_ERROR); - } - Long adminId = umsAdmin.getId(); - UmsTeacher umsTeacher = umsTeacherMapper.selectOne(new LambdaQueryWrapper() - .eq(UmsTeacher::getUserId, adminId)); - teacherNameList.add(umsTeacher.getName()); - } - coursesVO.setTeacher(String.join(",", teacherNameList)); - } + coursesService.populateTeacherNames(coursesVOPageDTO.getList()); + return coursesVOPageDTO; } } diff --git a/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java b/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java index 8e90b61..2c02b2f 100644 --- a/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java +++ b/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java @@ -6,6 +6,7 @@ import com.teaching.backend.model.dto.UpdateAdminPasswordParam; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; import com.teaching.backend.model.entity.umsAdmin.UmsResource; import com.teaching.backend.model.entity.umsAdmin.UmsRole; +import com.teaching.backend.model.vo.courses.TeacherInfVO; import org.springframework.security.core.userdetails.UserDetails; import java.util.List; @@ -76,4 +77,6 @@ public interface UmsAdminService extends IService { * 手机号登录 */ String phoneLogin(String phone); + + List getTeacherInfList(); } diff --git a/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java b/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java index 0eeb61f..c9dfb79 100644 --- a/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java @@ -4,18 +4,18 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.gson.Gson; import com.teaching.backend.exception.Asserts; import com.teaching.backend.exception.LyException; import com.teaching.backend.mapper.umsAdmin.UmsAdminMapper; import com.teaching.backend.mapper.umsAdmin.UmsAdminRoleRelationMapper; +import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper; import com.teaching.backend.model.dto.UmsAdminParam; import com.teaching.backend.model.dto.UpdateAdminPasswordParam; -import com.teaching.backend.model.entity.umsAdmin.AdminUserDetails; -import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; -import com.teaching.backend.model.entity.umsAdmin.UmsResource; -import com.teaching.backend.model.entity.umsAdmin.UmsRole; +import com.teaching.backend.model.entity.umsAdmin.*; +import com.teaching.backend.model.vo.courses.TeacherInfVO; import com.teaching.backend.service.umsAdmin.UmsAdminService; import com.teaching.backend.utils.JwtTokenUtil; import com.teaching.backend.utils.RegexUtils; @@ -40,6 +40,7 @@ import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -58,6 +59,10 @@ public class UmsAdminServiceImpl extends ServiceImpl i private AmqpTemplate amqpTemplate; @Autowired private StringRedisTemplate redisTemplate; + @Autowired + UmsTeacherMapper umsTeacherMapper; + @Autowired + UmsAdminMapper umsAdminMapper; @Override @@ -128,6 +133,8 @@ public class UmsAdminServiceImpl extends ServiceImpl i return token; } + + @Override public boolean updateUms(UmsAdmin umsadmin) { if (umsadmin.getPassword().length() > 0){ @@ -280,4 +287,20 @@ public class UmsAdminServiceImpl extends ServiceImpl i throw new UsernameNotFoundException("用户名或密码错误"); } + @Override + public List getTeacherInfList() { + List umsTeachers = umsTeacherMapper.selectList(new LambdaQueryWrapper()); + TeacherInfVO teacherInfVO = null; + List teacherInfList = new ArrayList<>();; + for (UmsTeacher umsTeacher : umsTeachers) { + teacherInfVO = new TeacherInfVO(); + UmsAdmin umsAdmin = umsAdminMapper.selectOne(new LambdaQueryWrapper() + .eq(UmsAdmin::getId, umsTeacher.getUserId())); + teacherInfVO.setName(umsTeacher.getName()); + teacherInfVO.setUsername(umsAdmin.getUsername()); + teacherInfList.add(teacherInfVO); + } + return teacherInfList; + } + } diff --git a/src/main/java/com/teaching/backend/utils/CourseCode.java b/src/main/java/com/teaching/backend/utils/CourseCode.java index 18f50fb..0c9fc7b 100644 --- a/src/main/java/com/teaching/backend/utils/CourseCode.java +++ b/src/main/java/com/teaching/backend/utils/CourseCode.java @@ -7,6 +7,8 @@ public enum CourseCode { CONTENT_EXIT(1, "存在内容"), SI_ZHENG_TYPE(1, "思政目标类型"), SI_ZHENG_EXIT(1, "思政目标存在"), + KNOWS_EXIT(0, "存在关联的知识点"), + TEACHER_ROLE_ID(1, "教师的角色id是1"), Total_EXIT(0, "课程总目标"), COURSE_UODATING(1, "课程正在修改中"); diff --git a/src/main/resources/mapper/CourseObjectivesMapper.xml b/src/main/resources/mapper/CourseObjectivesMapper.xml index 1204030..91dd5a0 100644 --- a/src/main/resources/mapper/CourseObjectivesMapper.xml +++ b/src/main/resources/mapper/CourseObjectivesMapper.xml @@ -12,4 +12,13 @@ select * from t1 order by t1.pid + + + INSERT INTO course_objectives (id, type, name, pid) + VALUES + + (#{item.id}, #{item.type}, #{item.name},#{item.pid}) + + + diff --git a/src/main/resources/mapper/ObjectiveContentKnowMapper.xml b/src/main/resources/mapper/ObjectiveContentKnowMapper.xml index b764958..9ae17ca 100644 --- a/src/main/resources/mapper/ObjectiveContentKnowMapper.xml +++ b/src/main/resources/mapper/ObjectiveContentKnowMapper.xml @@ -2,4 +2,12 @@ + + INSERT INTO objective_content_know (objective_or_content, know) + VALUES + + (#{item.objectiveOrContent}, #{item.know}) + + + diff --git a/src/main/resources/mapper/StudentCoursesMapper.xml b/src/main/resources/mapper/StudentCoursesMapper.xml index 6b5568e..dfd2bba 100644 --- a/src/main/resources/mapper/StudentCoursesMapper.xml +++ b/src/main/resources/mapper/StudentCoursesMapper.xml @@ -2,4 +2,11 @@ + + INSERT INTO student_courses (student, course) + VALUES + + (#{item.student}, #{item.course}) + + From b3e8d5e6f764a5187903b8e2b5811caf09f73c2d Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Tue, 18 Jun 2024 10:15:23 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=A0=87=E5=87=86-?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E7=9B=AE=E6=A0=87=E5=AF=BC=E5=87=BAword?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/CourseObjectivesController.java | 2 +- .../impl/courses/CoursesServiceImpl.java | 73 ++++++++++++++++-- src/main/resources/templates/courses.docx | Bin 35886 -> 35446 bytes 3 files changed, 67 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java b/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java index 2a6e1a1..650af6a 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java @@ -67,7 +67,7 @@ public class CourseObjectivesController { @ApiOperation("查询课程目标内容") @GetMapping("/list/{id}") public BaseResponse> queryCourseObjectivesTree(@PathVariable String id){ - List courseObjectivesTreeVO = courseObjectivesService.queryCourseObjectivesTree(id); + List courseObjectivesTreeVO = courseObjectivesService.queryCourseObjectivesTree(id); return ResultUtils.success(courseObjectivesTreeVO); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index 9a7d330..5aad33f 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -41,6 +41,7 @@ import org.springframework.util.ResourceUtils; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -56,6 +57,9 @@ import java.util.stream.Collectors; @Service public class CoursesServiceImpl extends ServiceImpl implements ICoursesService { + @Autowired + private CourseObjectivesServiceImpl objectivesService; + @Autowired CoursesMapper coursesMapper; @@ -286,15 +290,70 @@ public class CoursesServiceImpl extends ServiceImpl impl //查询课程通过课程id查--课程简介 Courses courses = this.getById(id); System.out.println("课程:"+courses); - Map params = new HashMap(); - params.put("name",courses.getName()); - params.put("code",courses.getCode()); - params.put("nature",courses.getNature()); - params.put("credit",courses.getCredit()); - params.put("classhour",courses.getClasshours()); - params.put("description",courses.getDescription()); + //准备数据 + String course_name = courses.getName(); + String course_code = courses.getCode(); + String course_nature = courses.getNature(); + BigDecimal course_credit = courses.getCredit(); + Integer course_classhour = courses.getClasshours(); + String course_description = courses.getDescription(); + //查询课程目标 + List courseObjectivesTreeVO = objectivesService.queryCourseObjectivesTree(id); + System.out.println("课程目标:"+courseObjectivesTreeVO); + //准备数据 + //总目标 + StringBuilder overall_goal = new StringBuilder(); + for (ObjectiveContents content : courseObjectivesTreeVO.get(0).getContents()) { + overall_goal.append(content.getContent()); + } + System.out.println(overall_goal); + + //分项目标 + //知识目标 + StringBuilder knowledge_goals = new StringBuilder(); + StringBuilder political_goals = new StringBuilder(); + StringBuilder value_goals = new StringBuilder(); + for (int i = 0; i < courseObjectivesTreeVO.get(0).getCourseObjectivesTrees().size(); i++){ + CourseObjectivesTreeVO content = courseObjectivesTreeVO.get(0).getCourseObjectivesTrees().get(i); + //知识目标 + if (i == 0){ + for (ObjectiveContents c : content.getContents()) { + knowledge_goals.append(c.getContent()).append("\n"); + } + } + //思政目标 + if (i == 1){ + for (ObjectiveContents c : content.getContents()) { + political_goals.append(c.getContent()).append("\n"); + } + } + //价值目标 + if (i == 2){ + for (ObjectiveContents c : content.getContents()) { + value_goals.append(c.getContent()).append("\n"); + } + } + } + System.out.println("知识目标:"+knowledge_goals); + System.out.println("思政目标:"+political_goals); + System.out.println("价值目标:"+value_goals); + + Map params = new HashMap(); + params.put("course_name",course_name); + params.put("course_code",course_code); + params.put("course_nature",course_nature); + params.put("course_credit",course_credit); + params.put("course_classhour",course_classhour); + params.put("course_description",course_description); + + //课程目标 + params.put("overall_goal", overall_goal); + params.put("knowledge_goals", knowledge_goals); + params.put("political_goals", political_goals); + params.put("value_goals", value_goals); + //根据模板+数据 导出文档 XWPFDocument xwpfDocument = WordExportUtil.exportWord07(templatePath.getPath(), params); diff --git a/src/main/resources/templates/courses.docx b/src/main/resources/templates/courses.docx index 1500516789dbecffdc09b859733f68c60c513028..b0f71c2d06c28cf4b65bcceb2a1dc8482f025b40 100644 GIT binary patch delta 24797 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

n{7QUBS@81*~TI~c@ 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 aFP!!tLxCQ@+<5eZB1X_4mInTr?*9M}4h(nz delta 25175 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 From 7c0c54992807ccee2b57f2f903562b457d0cbc60 Mon Sep 17 00:00:00 2001 From: Alan <3052806735@qq.com> Date: Tue, 18 Jun 2024 10:34:21 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teaching/backend/common/ErrorCode.java | 2 + .../controller/courses/CoursesController.java | 2 +- .../courses/StudentCoursesController.java | 6 -- .../service/courses/ICoursesService.java | 1 - .../impl/courses/CoursesServiceImpl.java | 73 ++++++++++++++----- .../ObjectiveContentKnowServiceImpl.java | 1 - .../courses/StudentCoursesServiceImpl.java | 3 +- 7 files changed, 59 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/teaching/backend/common/ErrorCode.java b/src/main/java/com/teaching/backend/common/ErrorCode.java index f166ba9..5ae2725 100644 --- a/src/main/java/com/teaching/backend/common/ErrorCode.java +++ b/src/main/java/com/teaching/backend/common/ErrorCode.java @@ -19,6 +19,8 @@ public enum ErrorCode { COURSES_NOT_EXIT(40007, "缺少课程信息"), CONTENT_NOT_EXIT(40008, "内容id不存在"), KNOWS_EXIT(40009, "该项下面存在关联的知识点"), + INVALID_ROLE(400010, "角色不存在"), + NOT_LOGIN_ERROR(40100, "未登录"), NO_AUTH_ERROR(40101, "无权限"), NOT_FOUND_ERROR(40400, "请求数据不存在"), diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index 16ca638..73947c2 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -30,7 +30,7 @@ import java.util.*; * @author zjh * @since 2024-05-30 */ -@Api(tags = "教师管理课程接口") +@Api(tags = "课程管理接口") @RestController @RequestMapping("/coursesteacher") public class CoursesController { diff --git a/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java b/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java index a59d349..92e9d5c 100644 --- a/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java @@ -39,11 +39,5 @@ public class StudentCoursesController { return ResultUtils.success(data); } - @ApiOperation("查询课程列表") - @GetMapping("/page") - public BaseResponse> getCourses(CourseQuery courseQuery){ - PageDTO coursesList = studentCoursesService.queryCourses(courseQuery); - return ResultUtils.success(coursesList); - } } diff --git a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index 2737450..ad37b32 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java @@ -37,5 +37,4 @@ public interface ICoursesService extends IService { void down(HttpServletResponse response, String id) throws Exception; - void populateTeacherNames(List courseList); } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index 5aad33f..9a2d9ab 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -10,19 +10,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.exception.BusinessException; -import com.teaching.backend.mapper.courses.CourseObjectivesMapper; -import com.teaching.backend.mapper.courses.CoursesMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; -import com.teaching.backend.mapper.courses.ObjectivesTypeMapper; +import com.teaching.backend.mapper.courses.*; import com.teaching.backend.mapper.umsAdmin.UmsAdminMapper; import com.teaching.backend.mapper.umsAdmin.UmsAdminRoleRelationMapper; import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper; import com.teaching.backend.model.dto.courses.CoursesDTO; import com.teaching.backend.model.dto.courses.PageDTO; -import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.courses.ObjectiveContents; -import com.teaching.backend.model.entity.courses.ObjectivesType; +import com.teaching.backend.model.entity.courses.*; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; import com.teaching.backend.model.entity.umsAdmin.UmsAdminRoleRelation; import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; @@ -75,6 +69,8 @@ public class CoursesServiceImpl extends ServiceImpl impl UmsTeacherMapper umsTeacherMapper; @Autowired UmsAdminRoleRelationMapper umsAdminRoleRelationMapper; + @Autowired + StudentCoursesMapper studentCoursesMapper; @Override @@ -142,26 +138,64 @@ public class CoursesServiceImpl extends ServiceImpl impl UmsAdminRoleRelation umsAdminRoleRelation = umsAdminRoleRelationMapper.selectOne(new LambdaQueryWrapper() .eq(UmsAdminRoleRelation::getAdminId, umsAdmin.getId())); - // Determine if the user is a teacher - boolean isTeacher = umsAdminRoleRelation.getRoleId() == CourseCode.TEACHER_ROLE_ID.getValue(); + int roleId = Math.toIntExact(umsAdminRoleRelation.getRoleId()); + PageDTO coursesVOPageDTO; + + switch (roleId) { + case 1: + coursesVOPageDTO = queryForTeacher(courseQuery, username); + break; + case 2: + coursesVOPageDTO = queryForStudent(courseQuery, username); + break; + case 3: + coursesVOPageDTO = queryForAdmin(courseQuery); + break; + default: + throw new BusinessException(ErrorCode.INVALID_ROLE); + } + + populateTeacherNames(coursesVOPageDTO.getList()); + return coursesVOPageDTO; + } + private PageDTO queryForTeacher(CourseQuery courseQuery, String username) { Page page = courseQuery.toMpPageDefaultSortByCreateTime(); Page p = lambdaQuery() .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) - .apply(isTeacher, "FIND_IN_SET({0}, teacher)", username) - .eq(!isTeacher && courseQuery.getCategory() != null, Courses::getCategory, courseQuery.getCategory()) - .eq(!isTeacher && courseQuery.getNature() != null, Courses::getNature, courseQuery.getNature()) - .eq(!isTeacher && courseQuery.getAssessmenttype() != null, Courses::getAssessmenttype, courseQuery.getAssessmenttype()) - .apply(!isTeacher && courseQuery.getTeacher() != null && !courseQuery.getTeacher().isEmpty(), "FIND_IN_SET({0}, teacher)", courseQuery.getTeacher()) + .apply("FIND_IN_SET({0}, teacher)", username) .page(page); + return PageDTO.of(p, CoursesVO.class); + } - PageDTO coursesVOPageDTO = PageDTO.of(p, CoursesVO.class); - populateTeacherNames(coursesVOPageDTO.getList()); + private PageDTO queryForStudent(CourseQuery courseQuery, String username) { + List studentCourses = studentCoursesMapper.selectList(new LambdaQueryWrapper() + .eq(StudentCourses::getStudent, username)); + List coursesList = studentCourses.stream() + .map(StudentCourses::getCourse) + .collect(Collectors.toList()); - return coursesVOPageDTO; + Page page = courseQuery.toMpPageDefaultSortByCreateTime(); + Page p = lambdaQuery() + .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) + .in(Courses::getId, coursesList) + .page(page); + return PageDTO.of(p, CoursesVO.class); + } + + private PageDTO queryForAdmin(CourseQuery courseQuery) { + Page page = courseQuery.toMpPageDefaultSortByCreateTime(); + Page p = lambdaQuery() + .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) + .eq(courseQuery.getCategory() != null, Courses::getCategory, courseQuery.getCategory()) + .eq(courseQuery.getNature() != null, Courses::getNature, courseQuery.getNature()) + .eq(courseQuery.getAssessmenttype() != null, Courses::getAssessmenttype, courseQuery.getAssessmenttype()) + .apply(courseQuery.getTeacher() != null && !courseQuery.getTeacher().isEmpty(), "FIND_IN_SET({0}, teacher)", courseQuery.getTeacher()) + .page(page); + return PageDTO.of(p, CoursesVO.class); } - public void populateTeacherNames(List courseList) { + private void populateTeacherNames(List courseList) { for (CoursesVO coursesVO : courseList) { List teacherNameList = new ArrayList<>(); String[] teacherIds = coursesVO.getTeacher().split(","); @@ -179,6 +213,7 @@ public class CoursesServiceImpl extends ServiceImpl impl } } + @Override public void deleteBatchByIds(String id) { if(id==null){ diff --git a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java index 2dac173..3f1f99f 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java @@ -54,7 +54,6 @@ public class ObjectiveContentKnowServiceImpl extends ServiceImpl queryCourses(CourseQuery courseQuery) { String username = courseQuery.getUsername(); @@ -110,7 +111,7 @@ public class StudentCoursesServiceImpl extends ServiceImpl coursesVOPageDTO = PageDTO.of(p, CoursesVO.class); - coursesService.populateTeacherNames(coursesVOPageDTO.getList()); +// coursesService.populateTeacherNames(coursesVOPageDTO.getList()); return coursesVOPageDTO; } From 59af410cf8cfbfee99e5aa5e3afb20f70880e106 Mon Sep 17 00:00:00 2001 From: Alan <3052806735@qq.com> Date: Tue, 18 Jun 2024 10:51:37 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/service/impl/courses/CoursesServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index 9a2d9ab..f5157b6 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -186,10 +186,10 @@ public class CoursesServiceImpl extends ServiceImpl impl private PageDTO queryForAdmin(CourseQuery courseQuery) { Page page = courseQuery.toMpPageDefaultSortByCreateTime(); Page p = lambdaQuery() - .like(courseQuery.getName() != null, Courses::getName, courseQuery.getName()) - .eq(courseQuery.getCategory() != null, Courses::getCategory, courseQuery.getCategory()) - .eq(courseQuery.getNature() != null, Courses::getNature, courseQuery.getNature()) - .eq(courseQuery.getAssessmenttype() != null, Courses::getAssessmenttype, courseQuery.getAssessmenttype()) + .like(courseQuery.getName() != null && !courseQuery.getName().isEmpty(), Courses::getName, courseQuery.getName()) + .eq(courseQuery.getCategory() != null && !courseQuery.getCategory().isEmpty(), Courses::getCategory, courseQuery.getCategory()) + .eq(courseQuery.getNature() != null && !courseQuery.getNature().isEmpty(), Courses::getNature, courseQuery.getNature()) + .eq(courseQuery.getAssessmenttype() != null &&!courseQuery.getAssessmenttype().isEmpty(), Courses::getAssessmenttype, courseQuery.getAssessmenttype()) .apply(courseQuery.getTeacher() != null && !courseQuery.getTeacher().isEmpty(), "FIND_IN_SET({0}, teacher)", courseQuery.getTeacher()) .page(page); return PageDTO.of(p, CoursesVO.class); From d341d6f2fe7b834afcf24026aa89efa74d04ef65 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Tue, 18 Jun 2024 14:28:54 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E8=82=96=E6=B5=B7=E5=8D=973.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/teaching_db.sql | 566 ---------------- sql/teaching_db5.0.sql | 607 ------------------ .../umsAdmin/UmsAdminController.java | 24 + .../mapper/umsAdmin/UmsAdminMapper.java | 11 + .../umsAdmin/UmsAdminRoleRelationMapper.java | 8 +- .../mapper/umsAdmin/UmsStudentMapper.java | 1 + .../mapper/umsAdmin/UmsTeacherMapper.java | 1 + .../dto/umsAdmin/UmsStudentAndTeacherDTO.java | 121 ++++ .../model/vo/umsAdmin/UmsStudentVO.java | 88 +++ .../model/vo/umsAdmin/UmsTeacherVO.java | 87 +++ .../service/umsAdmin/UmsAdminService.java | 11 + .../umsAdmin/impl/UmsAdminServiceImpl.java | 105 ++- src/main/resources/mapper/UmsAdminMapper.xml | 77 +++ .../mapper/UmsAdminRoleRelationMapper.xml | 12 +- .../resources/mapper/UmsStudentMapper.xml | 36 ++ .../resources/mapper/UmsTeacherMapper.xml | 36 ++ 16 files changed, 586 insertions(+), 1205 deletions(-) delete mode 100644 sql/teaching_db.sql delete mode 100644 sql/teaching_db5.0.sql create mode 100644 src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java create mode 100644 src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsStudentVO.java create mode 100644 src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsTeacherVO.java create mode 100644 src/main/resources/mapper/UmsAdminMapper.xml diff --git a/sql/teaching_db.sql b/sql/teaching_db.sql deleted file mode 100644 index 2fc40e0..0000000 --- a/sql/teaching_db.sql +++ /dev/null @@ -1,566 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : localhost_3306 - Source Server Type : MySQL - Source Server Version : 80037 - Source Host : localhost:3306 - Source Schema : teaching_db - - Target Server Type : MySQL - Target Server Version : 80037 - File Encoding : 65001 - - Date: 12/06/2024 15:14:04 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for course_objectives --- ---------------------------- -CREATE TABLE `course_objectives` ( - `id` varchar(36) NOT NULL COMMENT '内部编号', - `pid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '父级节点 默认0没有', - `has_child` int(1) DEFAULT '0' COMMENT '是否有子节点 添加子节点变1,默认0没有', - `name` varchar(200) DEFAULT NULL COMMENT '目标名称', - `type` int(5) DEFAULT NULL COMMENT '目标类型', - `course_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '课程id', - `requireid` varchar(32) DEFAULT NULL COMMENT '毕业要求id', - `temp` text COMMENT '毕业要求', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of course_objectives --- ---------------------------- -INSERT INTO `course_objectives` VALUES ('3e42492c201d2a9378be5af2edc92b47', '2024-06-06 16:17:39', NULL, '0', '0', '近代史纲要课程总体目标', NULL, 'd8d7bb93f100164659cac44ef2c4f55a', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('43f2c4b4a10a47784e50e772b9d10457', '2024-05-31 17:39:13', NULL, '0', '0', '测试课程课程总体目标', NULL, '6f5de6dd8c8d5d9d02a63c8444b9d5bb', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('503dc084653ffd003cb404b62266dc7c', '2024-06-06 15:58:43', NULL, 'da6e7283befa8965dae0f0f39ea7f24e', '0', '知识目标', 'c126ef1a66733ab7a4ba12aba0eb7f82', NULL, NULL, NULL); -INSERT INTO `course_objectives` VALUES ('53b27c94fe8af02ac8b23d9be9a2e329', '2024-06-03 11:32:19', NULL, 'da6e7283befa8965dae0f0f39ea7f24e', '0', '思政目标', '71f73bd999f678bcbbdb101e23277feb', NULL, NULL, NULL); -INSERT INTO `course_objectives` VALUES ('7a302cd72d653647778840b42f4e076a', '2024-06-03 10:43:13', NULL, '0', '0', '软件构造课程总体目标', NULL, 'ee2447b4463a5ad3f47e1744d912a824', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('aa839ff1345a04f95b4efcca02494cab', '2024-06-06 16:45:22', NULL, '0', '0', '毛概课程总体目标', NULL, '72e1ad71bb855ba328f8c17964697354', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('b41fa8332f39cca11d35635bd9fac720', '2024-05-31 11:24:33', NULL, '0', '0', '计算机导论课程总体目标', NULL, '2fa0fd63262230639d2c45a3acd9045c', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('c84dc451086f7938c28a4f757957f415', '2024-06-06 15:58:19', NULL, 'da6e7283befa8965dae0f0f39ea7f24e', '0', '价值目标', '410fc58cd757cd248941af1bea6888e5', NULL, NULL, NULL); -INSERT INTO `course_objectives` VALUES ('d452f583115465d067a1719458690b95', '2024-05-31 11:16:37', NULL, '0', '0', '计算机组成原理总体目标', NULL, '36c34a4225526dd20ee3840da61d3701', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('da6e7283befa8965dae0f0f39ea7f24e', '2024-05-31 20:49:52', '2024-06-06 15:58:43', '0', '1', '离散数学及其应用课程总体目标', NULL, 'de3100cad98f76be3176dd39aa748a9e', NULL, NULL); - --- ---------------------------- --- Table structure for courses --- ---------------------------- -DROP TABLE IF EXISTS `courses`; -CREATE TABLE `courses` ( - `id` varchar(36) NOT NULL COMMENT '内部编号', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - `img` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '课程封面', - `category` varchar(50) DEFAULT NULL COMMENT '课程类别', - `nature` varchar(50) DEFAULT NULL COMMENT '课程性质', - `name` varchar(100) DEFAULT NULL COMMENT '课程名称', - `code` varchar(50) DEFAULT NULL COMMENT '课程编码', - `semester` varchar(50) DEFAULT NULL COMMENT '开课学期', - `credit` decimal(4,2) DEFAULT NULL COMMENT '课程学分', - `classhours` int(5) DEFAULT NULL COMMENT '课程学时', - `theoryhours` int(5) DEFAULT NULL COMMENT '理论学时', - `practicehours` int(5) DEFAULT NULL COMMENT '实践学时', - `experimenthours` int(5) DEFAULT NULL COMMENT '实验学时', - `otherhours` int(5) DEFAULT NULL COMMENT '其他学时', - `weeks` int(11) DEFAULT NULL COMMENT '上课周数', - `assessmenttype` varchar(32) DEFAULT NULL COMMENT '考核类型', - `assessmentway` varchar(32) DEFAULT NULL COMMENT '考核方式', - `teacher` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '负责教师', - `teachermethod` text COMMENT '教学方法', - `teacherway` text COMMENT '教学方式', - `description` text COMMENT '课程简介', - `status` int(1) DEFAULT '0' COMMENT '课程状态 0未在修改 1在修改中', - PRIMARY KEY (`id`), - UNIQUE KEY `code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of courses --- ---------------------------- -insert into `courses`(`id`,`create_time`,`update_time`,`img`,`category`,`nature`,`name`,`code`,`semester`,`credit`,`classhours`,`theoryhours`,`practicehours`,`experimenthours`,`otherhours`,`weeks`,`assessmenttype`,`assessmentway`,`teacher`,`teachermethod`,`teacherway`,`description`,`status`) values ('2fa0fd63262230639d2c45a3acd9045c','2024-05-30 20:58:34',NULL,'','1','1','计算机导论1.0','111007',NULL,'4.60',64,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110339','暂定','线下授课',NULL,0), - ('36c34a4225526dd20ee3840da61d3701','2024-05-28 20:58:36',NULL,'','1','1','计算机组成原理','111006',NULL,'4.00',64,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110339','暂定','线下授课',NULL,0), - ('51d973f1cf0bad437da57d31f83a3232','2024-06-07 18:42:08',NULL,'','1','1','Test课程2','111014',NULL,'3.50',48,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334','暂定','线下授课',NULL,0), - ('6f5de6dd8c8d5d9d02a63c8444b9d5bb','2024-05-26 20:58:40',NULL,'','1','1','测试课程','111008',NULL,'4.00',64,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110339','暂定','线下授课',NULL,0), - ('72e1ad71bb855ba328f8c17964697354','2024-06-06 16:45:22',NULL,'http://teaching-edu123.oss-cn-beijing.aliyuncs.com/KdxGCt8rKbruw3zEDTdkA.jpg','1','1','毛概','111012',NULL,'3.70',48,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334','暂定','线下授课',NULL,0), - ('8721e6864387eb99b04692f125ac0a9f','2024-05-27 20:58:43',NULL,'','1','1','SQLServer数据库教程','111004',NULL,'4.00',0,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110327','暂定111','线下机房授课',NULL,0), - ('90ce365ae4e362f616776550e04ae0b4','2024-05-24 20:58:48',NULL,'','1','1','JavaEE','111002',NULL,'4.00',0,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110327','暂定','线下机房授课',NULL,0), - ('a2ba84374d86e85208c5906a96ea8205','2024-05-24 20:58:48',NULL,'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg','1','1','JavaWeb','111003',NULL,'4.00',0,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110327','暂定','线下机房授课',NULL,0), - ('d511d26df8de551bc85ce765089771b4','2024-05-24 20:58:48',NULL,'','1','1','高级编程','111001',NULL,'4.00',0,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334,2140110327','暂定','线下机房授课',NULL,0), - ('d8d7bb93f100164659cac44ef2c4f55a','2024-06-06 16:17:39',NULL,'','1','1','近代史纲要','111011',NULL,'2.60',48,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334','暂定','线下授课',NULL,0), - ('de3100cad98f76be3176dd39aa748a9e','2024-05-31 20:49:52',NULL,'http://teaching-edu123.oss-cn-beijing.aliyuncs.com/E96JlmbPeqvzVcPvg43Lb.jpg','1','1','离散数学及其应用','111009',NULL,'2.00',64,NULL,NULL,NULL,NULL,NULL,'1','1','2140110334','暂定','线下授课',NULL,0); - --- ---------------------------- --- Table structure for know --- ---------------------------- -DROP TABLE IF EXISTS `know`; -CREATE TABLE `know` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点名称', - `info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '简介', - `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点内容', - `img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点图片', - `hour` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点学时', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of know --- ---------------------------- - --- ---------------------------- --- Table structure for know_relationship --- ---------------------------- -DROP TABLE IF EXISTS `know_relationship`; -CREATE TABLE `know_relationship` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键id', - `chapterId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '章节id', - `courseId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id', - `knowId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of know_relationship --- ---------------------------- - --- ---------------------------- --- Table structure for learning_records --- ---------------------------- -DROP TABLE IF EXISTS `learning_records`; -CREATE TABLE `learning_records` ( - `id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '学习记录id', - `user_id` varchar(36) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '用户id', - `courses_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '课程id', - `chapter_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '章节id', - `knowledge_point_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '知识点id', - `resource_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '资源id', - `access_time` datetime NULL DEFAULT NULL COMMENT '访问时间', - `learning_method1` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT '0' COMMENT '学习方式:打开; 1,打开过,2未打开', - `learning_method2` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT '0' COMMENT '学习方式:下载; 1下载过, 2未下载', - `video_duration` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '视频学习时长', - `is_completed` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '是否完成观看:1,已完成,0未完成', - `content` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '记录封面图片', - `address` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '资源地址', - `status` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT '1' COMMENT '是否存在: 1存在;0不存在;', - `parent_node` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '父节点', - `type` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '类型, 如:1,课程; 2,章节; 3,知识点; 4,学习资源', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_unicode_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of learning_records --- ---------------------------- -INSERT INTO `learning_records` VALUES ('1', '1', '290bf0217c6a1569abf225289c7e11ea', NULL, NULL, NULL, '2024-05-31 21:35:11', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('2', '2', 'd511d26df8de551bc85ce765089771b4', NULL, NULL, NULL, '2024-05-31 00:00:00', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('3', '1', 'd511d26df8de551bc85ce765089771b4', NULL, NULL, NULL, '2024-05-31 00:00:00', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('4', '1', '1', '', '', '', '2024-06-07 10:49:42', '1', '0', '', '', 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '0', '', '2'); -INSERT INTO `learning_records` VALUES ('5', '1', '2', NULL, NULL, NULL, '2024-05-02 00:00:00', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('6', '1', '3', NULL, NULL, NULL, '2024-06-04 10:10:49', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('7', '1', '4', NULL, NULL, NULL, '2024-06-04 10:12:01', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '0', NULL, '1'); -INSERT INTO `learning_records` VALUES ('96', '1', '5', NULL, NULL, NULL, '2024-05-30 20:46:21', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('8', '2', '3', NULL, NULL, NULL, '2024-06-04 10:15:01', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.taobao.com/', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('75', '2', '4', NULL, NULL, NULL, '2024-06-04 10:17:16', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.taobao.com/', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('71', '2', '5', NULL, NULL, NULL, '2024-06-04 12:01:48', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.taobao.com/', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('1797841286352658434', '3', '5', '', '', '', '2024-06-06 16:59:38', '1', '1', '', '', '', '/portal', '1', '', '1'); -INSERT INTO `learning_records` VALUES ('1798911495222161409', '1', '1', '', '', '', '2024-06-07 10:54:57', '1', '0', '', '', 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '0', '', '1'); -INSERT INTO `learning_records` VALUES ('1797984330104299521', '3', '1', NULL, NULL, NULL, '2024-06-04 21:30:44', NULL, '1', '1', '1', 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.baidu.com/', '1', NULL, '1'); - --- ---------------------------- --- Table structure for objective_contents --- ---------------------------- -CREATE TABLE `objective_contents` ( - `id` varchar(32) NOT NULL, - `objective_id` varchar(32) DEFAULT NULL COMMENT '对应的目标id', - `content` text COMMENT '内容', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -/*Data for the table `objective_contents` */ - -insert into `objective_contents`(`id`,`objective_id`,`content`) values ('056b889ceb437abc96c759c2c9d61393','09f36bd3e0e65016f95281eb3d4f48a7','价值目标1'), - ('3f85eb79c29be4a15c729d98b17676a5','c84dc451086f7938c28a4f757957f415','价值目标3'), - ('406c85c99bd2d4b9f624ca3a67c3ce66','53b27c94fe8af02ac8b23d9be9a2e329','思政目标2'), - ('4ad5a1f0f584e35e7af6ef5142773990','503dc084653ffd003cb404b62266dc7c','知识目标1'), - ('4b4458cd64b0a1e21b54191a89e9f83d','c84dc451086f7938c28a4f757957f415','价值目标2'), - ('53d9d78b41051696314c0b1c0efa5313','503dc084653ffd003cb404b62266dc7c','知识目标3'), - ('6689ed187bcbd36309510a21ea492225','da6e7283befa8965dae0f0f39ea7f24e','总目标3'), - ('93cc64742c6ae993b6c8d8e0e6784758','09f36bd3e0e65016f95281eb3d4f48a7','价值目标2'), - ('979e59083e81f28145e1162069ffebb8','c84dc451086f7938c28a4f757957f415','价值目标1'), - ('9efcc83089e6de9945499876d1a6235a','da6e7283befa8965dae0f0f39ea7f24e','总目标1'), - ('bdacef102860e3dd3c1c3dcd3c3ef395','8d87cbacd499ad8b171e72a3aeeb7cab','思政目标2'), - ('c6b3fc522a5479e28cd3f0c9b971a871','53b27c94fe8af02ac8b23d9be9a2e329','思政目标3'), - ('dc31075d57f371970c5af09fd534a9af','da6e7283befa8965dae0f0f39ea7f24e','总目标2'), - ('eca937e6f047e3b6b06d67c5b4a9beff','53b27c94fe8af02ac8b23d9be9a2e329','思政目标1'), - ('f71f70ff7f6a83cf7be889eccd7015e1','8d87cbacd499ad8b171e72a3aeeb7cab','思政目标3'), - ('f890c64ee471b8a22db79e33d622ee79','8d87cbacd499ad8b171e72a3aeeb7cab','思政目标1'), - ('ffde482fac55e6dec5b60f6c6208d42c','503dc084653ffd003cb404b62266dc7c','知识目标2'); - --- ---------------------------- --- Table structure for objectives_type --- ---------------------------- -DROP TABLE IF EXISTS `objectives_type`; -CREATE TABLE `objectives_type` ( - `id` int(5) NOT NULL AUTO_INCREMENT, - `type_name` varchar(50) DEFAULT NULL COMMENT '类型名称', - PRIMARY KEY (`id`), - UNIQUE KEY `type_name` (`type_name`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; - -/*Data for the table `objectives_type` */ - -insert into `objectives_type`(`id`,`type_name`) values (4,'价值目标'), - (1,'思政目标'), - (2,'知识目标'), - (3,'素质目标'); - --- ---------------------------- --- Table structure for resource --- ---------------------------- -DROP TABLE IF EXISTS `resource`; -CREATE TABLE `resource` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源名称', - `type` int NULL DEFAULT NULL COMMENT '资源类型', - `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源路径', - `status` int NULL DEFAULT NULL COMMENT '资源状态', - `tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标签', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of resource --- ---------------------------- - --- ---------------------------- --- Table structure for resource_relationship --- ---------------------------- -DROP TABLE IF EXISTS `resource_relationship`; -CREATE TABLE `resource_relationship` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键', - `courseId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id', - `chapterId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '章节id', - `knowId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点id', - `resourceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of resource_relationship --- ---------------------------- - --- ---------------------------- --- Table structure for se_course_favour --- ---------------------------- -DROP TABLE IF EXISTS `se_course_favour`; -CREATE TABLE `se_course_favour` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id', - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_course_favour --- ---------------------------- -INSERT INTO `se_course_favour` VALUES ('1796378327262564353', 'a2ba84374d86e85208c5906a96ea8205', '2'); -INSERT INTO `se_course_favour` VALUES ('1796454599099658242', '36c34a4225526dd20ee3840da61d3701', '2'); -INSERT INTO `se_course_favour` VALUES ('1796789887730647041', '2fa0fd63262230639d2c45a3acd9045c', '2'); -INSERT INTO `se_course_favour` VALUES ('1797497056650289154', 'd511d26df8de551bc85ce765089771b4', '1'); -INSERT INTO `se_course_favour` VALUES ('1797499380101767170', 'd511d26df8de551bc85ce765089771b4', '2'); -INSERT INTO `se_course_favour` VALUES ('1798221492412149761', 'd511d26df8de551bc85ce765089771b4', '5'); -INSERT INTO `se_course_favour` VALUES ('1798621775654993922', 'd511d26df8de551bc85ce765089771b4', '8'); -INSERT INTO `se_course_favour` VALUES ('1798632199670714369', 'de3100cad98f76be3176dd39aa748a9e', '2'); - --- ---------------------------- --- Table structure for se_course_thumb --- ---------------------------- -DROP TABLE IF EXISTS `se_course_thumb`; -CREATE TABLE `se_course_thumb` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_course_thumb --- ---------------------------- -INSERT INTO `se_course_thumb` VALUES ('1796343958854623233', '2', '1'); -INSERT INTO `se_course_thumb` VALUES ('1796344002215337985', '2', '2'); -INSERT INTO `se_course_thumb` VALUES ('1796362250491191298', '1', '2'); -INSERT INTO `se_course_thumb` VALUES ('1796437673614974977', '6', '2'); -INSERT INTO `se_course_thumb` VALUES ('1796445964822847489', '7', '4'); - --- ---------------------------- --- Table structure for se_know_favour --- ---------------------------- -DROP TABLE IF EXISTS `se_know_favour`; -CREATE TABLE `se_know_favour` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `know_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_know_favour --- ---------------------------- -INSERT INTO `se_know_favour` VALUES ('1796378889450295297', '1', '2', '3'); - --- ---------------------------- --- Table structure for se_know_thumb --- ---------------------------- -DROP TABLE IF EXISTS `se_know_thumb`; -CREATE TABLE `se_know_thumb` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `know_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_know_thumb --- ---------------------------- -INSERT INTO `se_know_thumb` VALUES ('1796347057337982977', '1', '2', '2'); -INSERT INTO `se_know_thumb` VALUES ('1796347303317135361', '2', '2', '3'); -INSERT INTO `se_know_thumb` VALUES ('1796347343968329730', '2', '3', '3'); -INSERT INTO `se_know_thumb` VALUES ('1796347380697849857', '1', '3', '3'); - --- ---------------------------- --- Table structure for se_resource_favour --- ---------------------------- -DROP TABLE IF EXISTS `se_resource_favour`; -CREATE TABLE `se_resource_favour` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `resource_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_resource_favour --- ---------------------------- -INSERT INTO `se_resource_favour` VALUES ('1796379012112715778', '1', '2', '3'); - --- ---------------------------- --- Table structure for se_resource_thumb --- ---------------------------- -DROP TABLE IF EXISTS `se_resource_thumb`; -CREATE TABLE `se_resource_thumb` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `resource_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_resource_thumb --- ---------------------------- -INSERT INTO `se_resource_thumb` VALUES ('1796366535710904322', '2', '1', '1'); - --- ---------------------------- --- Table structure for ums_admin --- ---------------------------- -DROP TABLE IF EXISTS `ums_admin`; -CREATE TABLE `ums_admin` ( - `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', - `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名', - `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码', - `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `nick_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '昵称', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像', - `create_time` datetime NULL DEFAULT NULL COMMENT '注册时间', - `status` int NULL DEFAULT 1 COMMENT '帐号启用状态:0->禁用;1->启用', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_admin --- ---------------------------- -INSERT INTO `ums_admin` VALUES (1, 'xiao1111', '', '', '', '1111', '2024-06-03 13:30:29', 0); -INSERT INTO `ums_admin` VALUES (2, '123', '$2a$10$ACn80kN2ZEREGH3yOce9mui/KoWQllCHjNVXzXzrTI3gKJi/LB/YK', '123456789', '', '', '2024-06-05 23:23:45', 1); -INSERT INTO `ums_admin` VALUES (3, 'youhang', '$2a$10$TYJcMWBdDmmYfV/Kxi771ee7krjYJCLzI8O6MyjCofty9Y0OPLEna', '13547534472', 'yy', '', '2024-06-12 15:09:10', 1); - --- ---------------------------- --- Table structure for ums_admin_role_relation --- ---------------------------- -DROP TABLE IF EXISTS `ums_admin_role_relation`; -CREATE TABLE `ums_admin_role_relation` ( - `id` int NOT NULL AUTO_INCREMENT, - `admin_id` int NULL DEFAULT NULL, - `role_id` int NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_admin_role_relation --- ---------------------------- -INSERT INTO `ums_admin_role_relation` VALUES (1, 1, 2); - --- ---------------------------- --- Table structure for ums_menu --- ---------------------------- -DROP TABLE IF EXISTS `ums_menu`; -CREATE TABLE `ums_menu` ( - `id` int NOT NULL AUTO_INCREMENT, - `parent_id` int NULL DEFAULT NULL COMMENT '父级ID', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜单名称', - `level` int NULL DEFAULT NULL COMMENT '菜单级数', - `sort` int NULL DEFAULT NULL COMMENT '菜单排序', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端名称', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端图标', - `hidden` int NULL DEFAULT NULL COMMENT '前端隐藏', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_menu --- ---------------------------- - --- ---------------------------- --- Table structure for ums_resource --- ---------------------------- -DROP TABLE IF EXISTS `ums_resource`; -CREATE TABLE `ums_resource` ( - `id` int NOT NULL AUTO_INCREMENT, - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源名称', - `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源URL', - `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - `category_id` int NULL DEFAULT NULL COMMENT '资源分类ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_resource --- ---------------------------- -INSERT INTO `ums_resource` VALUES (1, '2024-06-04 09:56:19', '首页', '/home/advertise/**', NULL, 1); - --- ---------------------------- --- Table structure for ums_resource_category --- ---------------------------- -DROP TABLE IF EXISTS `ums_resource_category`; -CREATE TABLE `ums_resource_category` ( - `id` int NOT NULL AUTO_INCREMENT, - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '分类名称', - `sort` int NULL DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_resource_category --- ---------------------------- -INSERT INTO `ums_resource_category` VALUES (1, '2024-06-04 09:57:23', '首页模块', 0); - --- ---------------------------- --- Table structure for ums_role --- ---------------------------- -DROP TABLE IF EXISTS `ums_role`; -CREATE TABLE `ums_role` ( - `id` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称', - `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - `admin_count` int NULL DEFAULT NULL COMMENT '后台用户数量', - `create_time` datetime NOT NULL COMMENT '创建时间', - `status` int NULL DEFAULT 1 COMMENT '启用状态:0->禁用;1->启用', - `sort` int NULL DEFAULT 0, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_role --- ---------------------------- -INSERT INTO `ums_role` VALUES (1, '老师', '能查看自己和所有学生的信息', 0, '2024-06-04 09:59:47', 1, 0); -INSERT INTO `ums_role` VALUES (2, '学生', '只能查看自己信息', 0, '2024-06-04 10:02:15', 1, 0); - --- ---------------------------- --- Table structure for ums_role_menu_relation --- ---------------------------- -DROP TABLE IF EXISTS `ums_role_menu_relation`; -CREATE TABLE `ums_role_menu_relation` ( - `id` int NOT NULL AUTO_INCREMENT, - `role_id` int NULL DEFAULT NULL COMMENT '角色ID', - `menu_id` int NULL DEFAULT NULL COMMENT '菜单ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_role_menu_relation --- ---------------------------- - --- ---------------------------- --- Table structure for ums_role_resource_relation --- ---------------------------- -DROP TABLE IF EXISTS `ums_role_resource_relation`; -CREATE TABLE `ums_role_resource_relation` ( - `id` int NOT NULL AUTO_INCREMENT, - `role_id` int NULL DEFAULT NULL COMMENT '角色ID', - `resource_id` int NULL DEFAULT NULL COMMENT '资源ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_role_resource_relation --- ---------------------------- -INSERT INTO `ums_role_resource_relation` VALUES (1, 1, 1); -INSERT INTO `ums_role_resource_relation` VALUES (2, 2, 1); - --- ---------------------------- --- Table structure for ums_student --- ---------------------------- -DROP TABLE IF EXISTS `ums_student`; -CREATE TABLE `ums_student` ( - `id` int NOT NULL, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名', - `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别', - `nationality` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '民族', - `number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学号', - `birthday` datetime NULL DEFAULT NULL COMMENT '生日', - `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `faculty` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '院系', - `major` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业', - `year` date NULL DEFAULT NULL COMMENT '入学年份', - `class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '班级', - `user_id` int NULL DEFAULT NULL COMMENT 'user_id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_student --- ---------------------------- - --- ---------------------------- --- Table structure for ums_teacher --- ---------------------------- -DROP TABLE IF EXISTS `ums_teacher`; -CREATE TABLE `ums_teacher` ( - `id` int NOT NULL, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名', - `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别', - `nationality` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '民族', - `profession` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业', - `education` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学历', - `degree` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学位', - `professional_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职称', - `emergency_contact` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `join_work_time` datetime NULL DEFAULT NULL COMMENT '参加工作时间', - `political_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '政治面貌', - `user_id` int NULL DEFAULT NULL COMMENT 'user_id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_teacher --- ---------------------------- - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/teaching_db5.0.sql b/sql/teaching_db5.0.sql deleted file mode 100644 index cabf9fb..0000000 --- a/sql/teaching_db5.0.sql +++ /dev/null @@ -1,607 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : localhost_3306 - Source Server Type : MySQL - Source Server Version : 80026 (8.0.26) - Source Host : localhost:3306 - Source Schema : teaching_db - - Target Server Type : MySQL - Target Server Version : 80026 (8.0.26) - File Encoding : 65001 - - Date: 12/06/2024 16:15:18 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for course_objectives --- ---------------------------- -DROP TABLE IF EXISTS `course_objectives`; -CREATE TABLE `course_objectives` ( - `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内部编号', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新日期', - `pid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '父级节点 默认0没有', - `has_child` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '是否有子节点 添加子节点变1,默认0没有', - `name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目标名称', - `type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目标类型', - `course_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程id', - `requireid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '毕业要求id', - `temp` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '毕业要求', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of course_objectives --- ---------------------------- -INSERT INTO `course_objectives` VALUES ('3e42492c201d2a9378be5af2edc92b47', '2024-06-06 16:17:39', NULL, '0', '0', '近代史纲要课程总体目标', NULL, 'd8d7bb93f100164659cac44ef2c4f55a', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('43f2c4b4a10a47784e50e772b9d10457', '2024-05-31 17:39:13', NULL, '0', '0', '测试课程课程总体目标', NULL, '6f5de6dd8c8d5d9d02a63c8444b9d5bb', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('503dc084653ffd003cb404b62266dc7c', '2024-06-06 15:58:43', NULL, 'da6e7283befa8965dae0f0f39ea7f24e', '0', '知识目标', 'c126ef1a66733ab7a4ba12aba0eb7f82', NULL, NULL, NULL); -INSERT INTO `course_objectives` VALUES ('53b27c94fe8af02ac8b23d9be9a2e329', '2024-06-03 11:32:19', NULL, 'da6e7283befa8965dae0f0f39ea7f24e', '0', '思政目标', '71f73bd999f678bcbbdb101e23277feb', NULL, NULL, NULL); -INSERT INTO `course_objectives` VALUES ('7a302cd72d653647778840b42f4e076a', '2024-06-03 10:43:13', NULL, '0', '0', '软件构造课程总体目标', NULL, 'ee2447b4463a5ad3f47e1744d912a824', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('aa839ff1345a04f95b4efcca02494cab', '2024-06-06 16:45:22', NULL, '0', '0', '毛概课程总体目标', NULL, '72e1ad71bb855ba328f8c17964697354', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('b41fa8332f39cca11d35635bd9fac720', '2024-05-31 11:24:33', NULL, '0', '0', '计算机导论课程总体目标', NULL, '2fa0fd63262230639d2c45a3acd9045c', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('c84dc451086f7938c28a4f757957f415', '2024-06-06 15:58:19', NULL, 'da6e7283befa8965dae0f0f39ea7f24e', '0', '价值目标', '410fc58cd757cd248941af1bea6888e5', NULL, NULL, NULL); -INSERT INTO `course_objectives` VALUES ('d452f583115465d067a1719458690b95', '2024-05-31 11:16:37', NULL, '0', '0', '计算机组成原理总体目标', NULL, '36c34a4225526dd20ee3840da61d3701', NULL, NULL); -INSERT INTO `course_objectives` VALUES ('da6e7283befa8965dae0f0f39ea7f24e', '2024-05-31 20:49:52', '2024-06-06 15:58:43', '0', '1', '离散数学及其应用课程总体目标', NULL, 'de3100cad98f76be3176dd39aa748a9e', NULL, NULL); - --- ---------------------------- --- Table structure for courses --- ---------------------------- -DROP TABLE IF EXISTS `courses`; -CREATE TABLE `courses` ( - `id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内部编号', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `img` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程封面', - `category` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程类别', - `nature` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程性质', - `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程名称', - `code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程编码', - `semester` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '开课学期', - `credit` decimal(5, 2) NULL DEFAULT NULL COMMENT '课程学分', - `classhours` int NULL DEFAULT NULL COMMENT '课程学时', - `theoryhours` int NULL DEFAULT NULL COMMENT '理论学时', - `practicehours` int NULL DEFAULT NULL COMMENT '实践学时', - `experimenthours` int NULL DEFAULT NULL COMMENT '实验学时', - `otherhours` int NULL DEFAULT NULL COMMENT '其他学时', - `weeks` int NULL DEFAULT NULL COMMENT '上课周数', - `assessmenttype` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '考核类型', - `assessmentway` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '考核方式', - `teacher` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '负责教师', - `teachermethod` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '教学方法', - `teacherway` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '教学方式', - `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '课程简介', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of courses --- ---------------------------- -INSERT INTO `courses` VALUES ('2fa0fd63262230639d2c45a3acd9045c', '2024-05-30 20:58:34', NULL, '', '1', '1', '计算机导论12', '111007', NULL, 4.50, 64, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110339', '暂定', '线下授课', NULL); -INSERT INTO `courses` VALUES ('36c34a4225526dd20ee3840da61d3701', '2024-05-28 20:58:36', NULL, '', '1', '1', '计算机组成原理', '111006', NULL, 4.00, 64, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110339', '暂定', '线下授课', NULL); -INSERT INTO `courses` VALUES ('6f5de6dd8c8d5d9d02a63c8444b9d5bb', '2024-05-26 20:58:40', NULL, '', '1', '1', '测试课程', '111008', NULL, 4.00, 64, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110339', '暂定', '线下授课', NULL); -INSERT INTO `courses` VALUES ('72e1ad71bb855ba328f8c17964697354', '2024-06-06 16:45:22', NULL, 'http://teaching-edu123.oss-cn-beijing.aliyuncs.com/KdxGCt8rKbruw3zEDTdkA.jpg', '1', '1', '毛概', '111012', NULL, 3.60, 48, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334', '暂定', '线下授课', NULL); -INSERT INTO `courses` VALUES ('8721e6864387eb99b04692f125ac0a9f', '2024-05-27 20:58:43', NULL, '', '1', '1', 'SQLServer数据库教程', '111004', NULL, 4.00, 0, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110327', '暂定111', '线下机房授课', NULL); -INSERT INTO `courses` VALUES ('90ce365ae4e362f616776550e04ae0b4', '2024-05-24 20:58:48', NULL, '', '1', '1', 'JavaEE', '111002', NULL, 4.00, 0, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110327', '暂定', '线下机房授课', NULL); -INSERT INTO `courses` VALUES ('a2ba84374d86e85208c5906a96ea8205', '2024-05-24 20:58:48', NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '1', '1', 'JavaWeb', '111003', NULL, 4.00, 0, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110327', '暂定', '线下机房授课', NULL); -INSERT INTO `courses` VALUES ('d511d26df8de551bc85ce765089771b4', '2024-05-24 20:58:48', NULL, '', '1', '1', '高级编程', '111001', NULL, 4.00, 0, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334,2140110327', '暂定', '线下机房授课', NULL); -INSERT INTO `courses` VALUES ('d8d7bb93f100164659cac44ef2c4f55a', '2024-06-06 16:17:39', NULL, '', '1', '1', '近代史纲要', '111011', NULL, 2.60, 48, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334', '暂定', '线下授课', NULL); -INSERT INTO `courses` VALUES ('de3100cad98f76be3176dd39aa748a9e', '2024-05-31 20:49:52', NULL, 'http://teaching-edu123.oss-cn-beijing.aliyuncs.com/E96JlmbPeqvzVcPvg43Lb.jpg', '1', '1', '离散数学及其应用', '111009', NULL, 2.00, 64, NULL, NULL, NULL, NULL, NULL, '1', '1', '2140110334', '暂定', '线下授课', NULL); - --- ---------------------------- --- Table structure for know --- ---------------------------- -DROP TABLE IF EXISTS `know`; -CREATE TABLE `know` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点名称', - `info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '简介', - `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点内容', - `img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点图片', - `hour` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点学时', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of know --- ---------------------------- - --- ---------------------------- --- Table structure for know_relationship --- ---------------------------- -DROP TABLE IF EXISTS `know_relationship`; -CREATE TABLE `know_relationship` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键id', - `chapterId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '章节id', - `courseId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id', - `knowId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of know_relationship --- ---------------------------- - --- ---------------------------- --- Table structure for learning_records --- ---------------------------- -DROP TABLE IF EXISTS `learning_records`; -CREATE TABLE `learning_records` ( - `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '学习记录id', - `user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '用户id', - `courses_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '课程id', - `chapter_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '章节id', - `knowledge_point_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '知识点id', - `resource_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '资源id', - `access_time` datetime NULL DEFAULT NULL COMMENT '访问时间', - `learning_method1` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT '0' COMMENT '学习方式:打开; 1,打开过,2未打开', - `learning_method2` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT '0' COMMENT '学习方式:下载; 1下载过, 2未下载', - `video_duration` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '视频学习时长', - `is_completed` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '是否完成观看:1,已完成,0未完成', - `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '记录封面图片', - `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '资源地址', - `status` varchar(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT '1' COMMENT '是否存在: 1存在;0不存在;', - `parent_node` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '父节点', - `type` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '类型, 如:1,课程; 2,章节; 3,知识点; 4,学习资源', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of learning_records --- ---------------------------- -INSERT INTO `learning_records` VALUES ('1', '1', '290bf0217c6a1569abf225289c7e11ea', NULL, NULL, NULL, '2024-05-31 21:35:11', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('2', '2', 'd511d26df8de551bc85ce765089771b4', NULL, NULL, NULL, '2024-05-31 00:00:00', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('3', '1', 'd511d26df8de551bc85ce765089771b4', NULL, NULL, NULL, '2024-05-31 00:00:00', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('4', '1', '1', '', '', '', '2024-06-07 10:49:42', '1', '0', '', '', 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '0', '', '2'); -INSERT INTO `learning_records` VALUES ('5', '1', '2', NULL, NULL, NULL, '2024-05-02 00:00:00', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('6', '1', '3', NULL, NULL, NULL, '2024-06-04 10:10:49', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('7', '1', '4', NULL, NULL, NULL, '2024-06-04 10:12:01', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '0', NULL, '1'); -INSERT INTO `learning_records` VALUES ('96', '1', '5', NULL, NULL, NULL, '2024-05-30 20:46:21', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('8', '2', '3', NULL, NULL, NULL, '2024-06-04 10:15:01', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.taobao.com/', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('75', '2', '4', NULL, NULL, NULL, '2024-06-04 10:17:16', NULL, '0', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.taobao.com/', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('71', '2', '5', NULL, NULL, NULL, '2024-06-04 12:01:48', NULL, '1', NULL, NULL, 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.taobao.com/', '1', NULL, '1'); -INSERT INTO `learning_records` VALUES ('1797841286352658434', '3', '5', '', '', '', '2024-06-06 16:59:38', '1', '1', '', '', '', '/portal', '1', '', '1'); -INSERT INTO `learning_records` VALUES ('1798911495222161409', '1', '1', '', '', '', '2024-06-07 10:54:57', '1', '0', '', '', 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', '/portal', '0', '', '1'); -INSERT INTO `learning_records` VALUES ('1797984330104299521', '3', '1', NULL, NULL, NULL, '2024-06-04 21:30:44', NULL, '1', '1', '1', 'https://teaching-edu123.oss-cn-beijing.aliyuncs.com/Borovets_ZH-CN5914681811_UHD.jpg', 'https://www.baidu.com/', '1', NULL, '1'); - --- ---------------------------- --- Table structure for objective_contents --- ---------------------------- -DROP TABLE IF EXISTS `objective_contents`; -CREATE TABLE `objective_contents` ( - `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `objective_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '对应的目标id', - `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of objective_contents --- ---------------------------- -INSERT INTO `objective_contents` VALUES ('3f85eb79c29be4a15c729d98b17676a5', 'c84dc451086f7938c28a4f757957f415', '价值目标3'); -INSERT INTO `objective_contents` VALUES ('406c85c99bd2d4b9f624ca3a67c3ce66', '53b27c94fe8af02ac8b23d9be9a2e329', '思政目标2'); -INSERT INTO `objective_contents` VALUES ('4ad5a1f0f584e35e7af6ef5142773990', '503dc084653ffd003cb404b62266dc7c', '知识目标1'); -INSERT INTO `objective_contents` VALUES ('4b4458cd64b0a1e21b54191a89e9f83d', 'c84dc451086f7938c28a4f757957f415', '价值目标2'); -INSERT INTO `objective_contents` VALUES ('53d9d78b41051696314c0b1c0efa5313', '503dc084653ffd003cb404b62266dc7c', '知识目标3'); -INSERT INTO `objective_contents` VALUES ('6689ed187bcbd36309510a21ea492225', 'da6e7283befa8965dae0f0f39ea7f24e', '总目标3'); -INSERT INTO `objective_contents` VALUES ('979e59083e81f28145e1162069ffebb8', 'c84dc451086f7938c28a4f757957f415', '价值目标1'); -INSERT INTO `objective_contents` VALUES ('9efcc83089e6de9945499876d1a6235a', 'da6e7283befa8965dae0f0f39ea7f24e', '总目标1'); -INSERT INTO `objective_contents` VALUES ('c6b3fc522a5479e28cd3f0c9b971a871', '53b27c94fe8af02ac8b23d9be9a2e329', '思政目标3'); -INSERT INTO `objective_contents` VALUES ('dc31075d57f371970c5af09fd534a9af', 'da6e7283befa8965dae0f0f39ea7f24e', '总目标2'); -INSERT INTO `objective_contents` VALUES ('eca937e6f047e3b6b06d67c5b4a9beff', '53b27c94fe8af02ac8b23d9be9a2e329', '思政目标1'); -INSERT INTO `objective_contents` VALUES ('ffde482fac55e6dec5b60f6c6208d42c', '503dc084653ffd003cb404b62266dc7c', '知识目标2'); - --- ---------------------------- --- Table structure for objectives_type --- ---------------------------- -DROP TABLE IF EXISTS `objectives_type`; -CREATE TABLE `objectives_type` ( - `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `type_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型名称', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `type_name`(`type_name` ASC) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of objectives_type --- ---------------------------- -INSERT INTO `objectives_type` VALUES ('410fc58cd757cd248941af1bea6888e5', '价值目标'); -INSERT INTO `objectives_type` VALUES ('71f73bd999f678bcbbdb101e23277feb', '思政目标'); -INSERT INTO `objectives_type` VALUES ('c126ef1a66733ab7a4ba12aba0eb7f82', '知识目标'); -INSERT INTO `objectives_type` VALUES ('2350f69ef928cd2949e7fc05b05bd0c3', '素质目标'); - --- ---------------------------- --- Table structure for resource --- ---------------------------- -DROP TABLE IF EXISTS `resource`; -CREATE TABLE `resource` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源名称', - `type` int NULL DEFAULT NULL COMMENT '资源类型', - `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源路径', - `status` int NULL DEFAULT NULL COMMENT '资源状态', - `tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标签', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of resource --- ---------------------------- - --- ---------------------------- --- Table structure for resource_relationship --- ---------------------------- -DROP TABLE IF EXISTS `resource_relationship`; -CREATE TABLE `resource_relationship` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键', - `courseId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id', - `chapterId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '章节id', - `knowId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '知识点id', - `resourceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of resource_relationship --- ---------------------------- - --- ---------------------------- --- Table structure for se_course_favour --- ---------------------------- -DROP TABLE IF EXISTS `se_course_favour`; -CREATE TABLE `se_course_favour` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程id', - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_course_favour --- ---------------------------- -INSERT INTO `se_course_favour` VALUES ('1796378327262564353', 'a2ba84374d86e85208c5906a96ea8205', '2'); -INSERT INTO `se_course_favour` VALUES ('1796454599099658242', '36c34a4225526dd20ee3840da61d3701', '2'); -INSERT INTO `se_course_favour` VALUES ('1796789887730647041', '2fa0fd63262230639d2c45a3acd9045c', '2'); -INSERT INTO `se_course_favour` VALUES ('1797497056650289154', 'd511d26df8de551bc85ce765089771b4', '1'); -INSERT INTO `se_course_favour` VALUES ('1797499380101767170', 'd511d26df8de551bc85ce765089771b4', '2'); -INSERT INTO `se_course_favour` VALUES ('1798221492412149761', 'd511d26df8de551bc85ce765089771b4', '5'); -INSERT INTO `se_course_favour` VALUES ('1798621775654993922', 'd511d26df8de551bc85ce765089771b4', '8'); -INSERT INTO `se_course_favour` VALUES ('1798632199670714369', 'de3100cad98f76be3176dd39aa748a9e', '2'); - --- ---------------------------- --- Table structure for se_course_thumb --- ---------------------------- -DROP TABLE IF EXISTS `se_course_thumb`; -CREATE TABLE `se_course_thumb` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_course_thumb --- ---------------------------- -INSERT INTO `se_course_thumb` VALUES ('1796343958854623233', '2', '1'); -INSERT INTO `se_course_thumb` VALUES ('1796344002215337985', '2', '2'); -INSERT INTO `se_course_thumb` VALUES ('1796362250491191298', '1', '2'); -INSERT INTO `se_course_thumb` VALUES ('1796437673614974977', '6', '2'); -INSERT INTO `se_course_thumb` VALUES ('1796445964822847489', '7', '4'); - --- ---------------------------- --- Table structure for se_know_favour --- ---------------------------- -DROP TABLE IF EXISTS `se_know_favour`; -CREATE TABLE `se_know_favour` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `know_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_know_favour --- ---------------------------- -INSERT INTO `se_know_favour` VALUES ('1796378889450295297', '1', '2', '3'); - --- ---------------------------- --- Table structure for se_know_thumb --- ---------------------------- -DROP TABLE IF EXISTS `se_know_thumb`; -CREATE TABLE `se_know_thumb` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `know_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_know_thumb --- ---------------------------- -INSERT INTO `se_know_thumb` VALUES ('1796347057337982977', '1', '2', '2'); -INSERT INTO `se_know_thumb` VALUES ('1796347303317135361', '2', '2', '3'); -INSERT INTO `se_know_thumb` VALUES ('1796347343968329730', '2', '3', '3'); -INSERT INTO `se_know_thumb` VALUES ('1796347380697849857', '1', '3', '3'); - --- ---------------------------- --- Table structure for se_resource_favour --- ---------------------------- -DROP TABLE IF EXISTS `se_resource_favour`; -CREATE TABLE `se_resource_favour` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `resource_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_resource_favour --- ---------------------------- -INSERT INTO `se_resource_favour` VALUES ('1796379012112715778', '1', '2', '3'); - --- ---------------------------- --- Table structure for se_resource_thumb --- ---------------------------- -DROP TABLE IF EXISTS `se_resource_thumb`; -CREATE TABLE `se_resource_thumb` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, - `course_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `resource_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of se_resource_thumb --- ---------------------------- -INSERT INTO `se_resource_thumb` VALUES ('1796366535710904322', '2', '1', '1'); - --- ---------------------------- --- Table structure for ums_admin --- ---------------------------- -DROP TABLE IF EXISTS `ums_admin`; -CREATE TABLE `ums_admin` ( - `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', - `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名', - `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码', - `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `nick_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '昵称', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像', - `create_time` datetime NULL DEFAULT NULL COMMENT '注册时间', - `status` int NULL DEFAULT 1 COMMENT '帐号启用状态:0->禁用;1->启用', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_admin --- ---------------------------- -INSERT INTO `ums_admin` VALUES (2, '123', '$2a$10$ACn80kN2ZEREGH3yOce9mui/KoWQllCHjNVXzXzrTI3gKJi/LB/YK', '123456789', '', '', '2024-06-05 23:23:45', 1); -INSERT INTO `ums_admin` VALUES (3, 'youhang', '$2a$10$TYJcMWBdDmmYfV/Kxi771ee7krjYJCLzI8O6MyjCofty9Y0OPLEna', '13547534472', 'yy', '', '2024-06-12 15:09:10', 1); -INSERT INTO `ums_admin` VALUES (4, 'xiao1111', '$2a$10$lDwfuRcOuNNdSXhmcwV9w.2SUblbwlS4ipxHXmqzTpw54CvxTwtU.', '', '', '', '2024-06-12 16:13:34', 1); - --- ---------------------------- --- Table structure for ums_admin_role_relation --- ---------------------------- -DROP TABLE IF EXISTS `ums_admin_role_relation`; -CREATE TABLE `ums_admin_role_relation` ( - `id` int NOT NULL AUTO_INCREMENT, - `admin_id` int NULL DEFAULT NULL, - `role_id` int NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_admin_role_relation --- ---------------------------- -INSERT INTO `ums_admin_role_relation` VALUES (1, 3, 2); -INSERT INTO `ums_admin_role_relation` VALUES (2, 4, 1); - --- ---------------------------- --- Table structure for ums_menu --- ---------------------------- -DROP TABLE IF EXISTS `ums_menu`; -CREATE TABLE `ums_menu` ( - `id` int NOT NULL AUTO_INCREMENT, - `parent_id` int NULL DEFAULT NULL COMMENT '父级ID', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜单名称', - `level` int NULL DEFAULT NULL COMMENT '菜单级数', - `sort` int NULL DEFAULT NULL COMMENT '菜单排序', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端名称', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '前端图标', - `hidden` int NULL DEFAULT NULL COMMENT '前端隐藏', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_menu --- ---------------------------- -INSERT INTO `ums_menu` VALUES (1, NULL, '2024-06-12 15:44:52', '个人中心', NULL, NULL, 'Home', NULL, NULL); -INSERT INTO `ums_menu` VALUES (2, NULL, '2024-06-12 15:45:19', '课程', NULL, NULL, 'Course', NULL, NULL); -INSERT INTO `ums_menu` VALUES (3, NULL, '2024-06-12 15:45:26', '学生', NULL, NULL, 'Student', NULL, NULL); -INSERT INTO `ums_menu` VALUES (4, NULL, '2024-06-12 15:45:34', '分组', NULL, NULL, 'Group', NULL, NULL); -INSERT INTO `ums_menu` VALUES (5, NULL, '2024-06-12 15:45:38', '消息', NULL, NULL, 'Message', NULL, NULL); -INSERT INTO `ums_menu` VALUES (6, NULL, '2024-06-12 15:45:44', '课程基本信息', NULL, NULL, 'BasicCourseInformation', NULL, NULL); -INSERT INTO `ums_menu` VALUES (7, NULL, '2024-06-12 15:46:48', '课程目标', NULL, NULL, 'CourseObjectives', NULL, NULL); -INSERT INTO `ums_menu` VALUES (8, NULL, '2024-06-12 15:46:53', '课程章节', NULL, NULL, 'CourseChapters', NULL, NULL); -INSERT INTO `ums_menu` VALUES (9, NULL, '2024-06-12 15:46:59', '知识点', NULL, NULL, 'KnowledgePoints', NULL, NULL); -INSERT INTO `ums_menu` VALUES (10, NULL, '2024-06-12 15:47:04', '课程图谱', NULL, NULL, 'CurriculumMap', NULL, NULL); -INSERT INTO `ums_menu` VALUES (11, NULL, '2024-06-12 15:47:10', '课程资源', NULL, NULL, 'CourseResources', NULL, NULL); -INSERT INTO `ums_menu` VALUES (12, NULL, '2024-06-12 15:47:16', '课程学习记录', NULL, NULL, 'LearningProcess', NULL, NULL); -INSERT INTO `ums_menu` VALUES (13, NULL, '2024-06-12 15:49:09', '课程收藏', NULL, NULL, 'CourseCollections', NULL, NULL); -INSERT INTO `ums_menu` VALUES (14, NULL, '2024-06-12 15:49:17', '课程点赞', NULL, NULL, 'Courselikes', NULL, NULL); -INSERT INTO `ums_menu` VALUES (15, NULL, '2024-06-12 15:50:03', '网站首页', NULL, NULL, 'WebHome', NULL, NULL); -INSERT INTO `ums_menu` VALUES (16, NULL, '2024-06-12 15:50:09', '课程首页', NULL, NULL, 'CourseHome', NULL, NULL); -INSERT INTO `ums_menu` VALUES (17, NULL, '2024-06-12 15:50:15', '学习路径推荐', NULL, NULL, 'LearningPathRecommendations', NULL, NULL); -INSERT INTO `ums_menu` VALUES (18, NULL, '2024-06-12 15:51:24', '知识点学习', NULL, NULL, 'KnowledgePointLearning', NULL, NULL); -INSERT INTO `ums_menu` VALUES (19, NULL, '2024-06-12 15:51:31', '课程报告', NULL, NULL, 'CourseReports', NULL, NULL); -INSERT INTO `ums_menu` VALUES (20, NULL, '2024-06-12 15:53:15', '学习过程', NULL, NULL, 'MyCourseStudyManagement', NULL, NULL); - --- ---------------------------- --- Table structure for ums_resource --- ---------------------------- -DROP TABLE IF EXISTS `ums_resource`; -CREATE TABLE `ums_resource` ( - `id` int NOT NULL AUTO_INCREMENT, - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源名称', - `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源URL', - `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - `category_id` int NULL DEFAULT NULL COMMENT '资源分类ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_resource --- ---------------------------- -INSERT INTO `ums_resource` VALUES (1, '2024-06-04 09:56:19', '首页', '/home/advertise/**', NULL, 1); - --- ---------------------------- --- Table structure for ums_resource_category --- ---------------------------- -DROP TABLE IF EXISTS `ums_resource_category`; -CREATE TABLE `ums_resource_category` ( - `id` int NOT NULL AUTO_INCREMENT, - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '分类名称', - `sort` int NULL DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_resource_category --- ---------------------------- -INSERT INTO `ums_resource_category` VALUES (1, '2024-06-04 09:57:23', '首页模块', 0); - --- ---------------------------- --- Table structure for ums_role --- ---------------------------- -DROP TABLE IF EXISTS `ums_role`; -CREATE TABLE `ums_role` ( - `id` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称', - `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - `admin_count` int NULL DEFAULT NULL COMMENT '后台用户数量', - `create_time` datetime NOT NULL COMMENT '创建时间', - `status` int NULL DEFAULT 1 COMMENT '启用状态:0->禁用;1->启用', - `sort` int NULL DEFAULT 0, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_role --- ---------------------------- -INSERT INTO `ums_role` VALUES (1, '老师', '能查看自己和所有学生的信息', 0, '2024-06-04 09:59:47', 1, 0); -INSERT INTO `ums_role` VALUES (2, '学生', '只能查看自己信息', 0, '2024-06-04 10:02:15', 1, 0); - --- ---------------------------- --- Table structure for ums_role_menu_relation --- ---------------------------- -DROP TABLE IF EXISTS `ums_role_menu_relation`; -CREATE TABLE `ums_role_menu_relation` ( - `id` int NOT NULL AUTO_INCREMENT, - `role_id` int NULL DEFAULT NULL COMMENT '角色ID', - `menu_id` int NULL DEFAULT NULL COMMENT '菜单ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_role_menu_relation --- ---------------------------- -INSERT INTO `ums_role_menu_relation` VALUES (1, 1, 1); -INSERT INTO `ums_role_menu_relation` VALUES (2, 1, 2); -INSERT INTO `ums_role_menu_relation` VALUES (3, 1, 3); -INSERT INTO `ums_role_menu_relation` VALUES (4, 1, 4); -INSERT INTO `ums_role_menu_relation` VALUES (5, 1, 5); -INSERT INTO `ums_role_menu_relation` VALUES (6, 1, 6); -INSERT INTO `ums_role_menu_relation` VALUES (7, 1, 7); -INSERT INTO `ums_role_menu_relation` VALUES (8, 1, 8); -INSERT INTO `ums_role_menu_relation` VALUES (9, 1, 9); -INSERT INTO `ums_role_menu_relation` VALUES (10, 1, 10); -INSERT INTO `ums_role_menu_relation` VALUES (11, 2, 1); -INSERT INTO `ums_role_menu_relation` VALUES (12, 2, 5); -INSERT INTO `ums_role_menu_relation` VALUES (13, 2, 11); -INSERT INTO `ums_role_menu_relation` VALUES (14, 2, 12); -INSERT INTO `ums_role_menu_relation` VALUES (15, 2, 13); -INSERT INTO `ums_role_menu_relation` VALUES (16, 2, 14); -INSERT INTO `ums_role_menu_relation` VALUES (17, 2, 15); -INSERT INTO `ums_role_menu_relation` VALUES (18, 2, 16); -INSERT INTO `ums_role_menu_relation` VALUES (19, 2, 17); -INSERT INTO `ums_role_menu_relation` VALUES (20, 2, 18); -INSERT INTO `ums_role_menu_relation` VALUES (21, 2, 19); -INSERT INTO `ums_role_menu_relation` VALUES (22, 2, 20); - --- ---------------------------- --- Table structure for ums_role_resource_relation --- ---------------------------- -DROP TABLE IF EXISTS `ums_role_resource_relation`; -CREATE TABLE `ums_role_resource_relation` ( - `id` int NOT NULL AUTO_INCREMENT, - `role_id` int NULL DEFAULT NULL COMMENT '角色ID', - `resource_id` int NULL DEFAULT NULL COMMENT '资源ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_role_resource_relation --- ---------------------------- -INSERT INTO `ums_role_resource_relation` VALUES (1, 1, 1); -INSERT INTO `ums_role_resource_relation` VALUES (2, 2, 1); - --- ---------------------------- --- Table structure for ums_student --- ---------------------------- -DROP TABLE IF EXISTS `ums_student`; -CREATE TABLE `ums_student` ( - `id` int NOT NULL, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名', - `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别', - `nationality` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '民族', - `number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学号', - `birthday` datetime NULL DEFAULT NULL COMMENT '生日', - `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `faculty` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '院系', - `major` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业', - `year` date NULL DEFAULT NULL COMMENT '入学年份', - `class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '班级', - `user_id` int NULL DEFAULT NULL COMMENT 'user_id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_student --- ---------------------------- - --- ---------------------------- --- Table structure for ums_teacher --- ---------------------------- -DROP TABLE IF EXISTS `ums_teacher`; -CREATE TABLE `ums_teacher` ( - `id` int NOT NULL, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名', - `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别', - `nationality` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '民族', - `profession` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业', - `education` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学历', - `degree` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学位', - `professional_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职称', - `emergency_contact` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `join_work_time` datetime NULL DEFAULT NULL COMMENT '参加工作时间', - `political_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '政治面貌', - `user_id` int NULL DEFAULT NULL COMMENT 'user_id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of ums_teacher --- ---------------------------- - -SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java index 441a979..ce9bee8 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsAdminController.java @@ -9,6 +9,7 @@ import com.teaching.backend.exception.BusinessException; import com.teaching.backend.model.dto.UmsAdminParam; import com.teaching.backend.model.dto.UpdateAdminPasswordParam; import com.teaching.backend.model.dto.courses.CoursesDTO; +import com.teaching.backend.model.dto.umsAdmin.UmsStudentAndTeacherDTO; import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; import com.teaching.backend.model.entity.umsAdmin.UmsRole; @@ -174,6 +175,29 @@ public class UmsAdminController { } } + @ApiOperation("获取指定个人信息") + @PostMapping("/personal/info") + public CommonResult getByIdPersonalInfo(@RequestParam String id) { + if (id == null){ + return CommonResult.failed("参数为空"); + } + Object count = umsAdminService.getByIdPersonalInfo(id); + if (count == null) { + return CommonResult.failed(); + } + return CommonResult.success(count); + } + + @ApiOperation("修改指定个人信息") + @PostMapping("/update/PersonalInfo") + public CommonResult updatePersonalInfo(@RequestBody UmsStudentAndTeacherDTO umsStudentAndTeacherDTO) { + boolean count = umsAdminService.updatePersonalInfo(umsStudentAndTeacherDTO); + if (count == true) { + return CommonResult.success("修改成功"); + } + return CommonResult.failed(); + } + @ApiOperation("获取教师信息列表,关联教师的username和name") @GetMapping("/get_teacherinf_list") public BaseResponse> getTeacherInfList(){ diff --git a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminMapper.java b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminMapper.java index af4498b..c2f056d 100644 --- a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminMapper.java +++ b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminMapper.java @@ -2,8 +2,19 @@ package com.teaching.backend.mapper.umsAdmin; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; +import com.teaching.backend.model.entity.umsAdmin.UmsRole; +import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; +import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UmsAdminMapper extends BaseMapper { + + boolean updateUserInformation(UmsAdmin umsadmin); + + UmsRole getByIdRoleInfo(String id); + + UmsTeacher getByIdTeacher(String id); + + UmsStudentVO getByIdStudent(String id); } diff --git a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminRoleRelationMapper.java b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminRoleRelationMapper.java index 402bcbf..a077cba 100644 --- a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminRoleRelationMapper.java +++ b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsAdminRoleRelationMapper.java @@ -15,10 +15,10 @@ import java.util.List; */ @Mapper public interface UmsAdminRoleRelationMapper extends BaseMapper { -// /** -// * 批量插入用户角色关系 -// */ -// int insertList(@Param("list") List adminRoleRelationList); + /** + * 插入用户角色关系 + */ + boolean insert(@Param("adminId") Long adminId, @Param("roleId") Long roleId); /** * 获取用于所有角色 diff --git a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsStudentMapper.java b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsStudentMapper.java index 18cf8e3..146dfab 100644 --- a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsStudentMapper.java +++ b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsStudentMapper.java @@ -12,5 +12,6 @@ import com.teaching.backend.model.entity.umsAdmin.UmsStudent; * @since 2024-06-12 */ public interface UmsStudentMapper extends BaseMapper { + boolean updateStudentInfo(UmsStudent umsStudent); } diff --git a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsTeacherMapper.java b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsTeacherMapper.java index 357ede7..acbf47d 100644 --- a/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsTeacherMapper.java +++ b/src/main/java/com/teaching/backend/mapper/umsAdmin/UmsTeacherMapper.java @@ -12,5 +12,6 @@ import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; * @since 2024-06-12 */ public interface UmsTeacherMapper extends BaseMapper { + boolean updateTeacherInfo(UmsTeacher umsTeacher); } diff --git a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java new file mode 100644 index 0000000..812fe34 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java @@ -0,0 +1,121 @@ +package com.teaching.backend.model.dto.umsAdmin; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author zjh + * @since 2024-06-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class UmsStudentAndTeacherDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Integer id; + + /** + * 姓名 + */ + private String name; + + /** + * 性别 + */ + private String sex; + + /** + * 民族 + */ + private String nationality; + + /** + * 学号 + */ + private String number; + + /** + * 生日 + */ + private LocalDateTime birthday; + + /** + * 手机号 + */ + private String phone; + + /** + * 院系 + */ + private String faculty; + + /** + * 专业 + */ + private String major; + + /** + * 入学年份 + */ + private LocalDate yearAge; + + /** + * 班级 + */ + private String className; + + /** + * 专业 + */ + private String profession; + + /** + * 学历 + */ + private String education; + + /** + * 学位 + */ + private String degree; + + /** + * 职称 + */ + private String professionalTitle; + + /** + * 手机号 + */ + private String emergencyContact; + + /** + * 参加工作时间 + */ + private LocalDateTime joinWorkTime; + + /** + * 政治面貌 + */ + private String politicalStatus; + + /** + * role_id + */ + private Integer roleId; +} diff --git a/src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsStudentVO.java b/src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsStudentVO.java new file mode 100644 index 0000000..0c43b64 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsStudentVO.java @@ -0,0 +1,88 @@ +package com.teaching.backend.model.vo.umsAdmin; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author zjh + * @since 2024-06-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("ums_student") +public class UmsStudentVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Integer id; + + /** + * 姓名 + */ + private String name; + + /** + * 性别 + */ + private String sex; + + /** + * 民族 + */ + private String nationality; + + /** + * 学号 + */ + private String number; + + /** + * 生日 + */ + private LocalDateTime birthday; + + /** + * 手机号 + */ + private String phone; + + /** + * 院系 + */ + private String faculty; + + /** + * 专业 + */ + private String major; + + /** + * 入学年份 + */ + private LocalDate yearAge; + + /** + * 班级 + */ + private String className; + + /** + * role_id + */ + private Integer roleId; + +} diff --git a/src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsTeacherVO.java b/src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsTeacherVO.java new file mode 100644 index 0000000..cba0af8 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/umsAdmin/UmsTeacherVO.java @@ -0,0 +1,87 @@ +package com.teaching.backend.model.vo.umsAdmin; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author zjh + * @since 2024-06-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("ums_teacher") +public class UmsTeacherVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 姓名 + */ + private String name; + + /** + * 性别 + */ + private String sex; + + /** + * 民族 + */ + private String nationality; + + /** + * 专业 + */ + private String profession; + + /** + * 学历 + */ + private String education; + + /** + * 学位 + */ + private String degree; + + /** + * 职称 + */ + private String professionalTitle; + + /** + * 手机号 + */ + private String emergencyContact; + + /** + * 参加工作时间 + */ + private LocalDateTime joinWorkTime; + + /** + * 政治面貌 + */ + private String politicalStatus; + + /** + * role_id + */ + private Integer roleId; + +} diff --git a/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java b/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java index 2c02b2f..9a9ff4a 100644 --- a/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java +++ b/src/main/java/com/teaching/backend/service/umsAdmin/UmsAdminService.java @@ -3,6 +3,7 @@ package com.teaching.backend.service.umsAdmin; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.model.dto.UmsAdminParam; import com.teaching.backend.model.dto.UpdateAdminPasswordParam; +import com.teaching.backend.model.dto.umsAdmin.UmsStudentAndTeacherDTO; import com.teaching.backend.model.entity.umsAdmin.UmsAdmin; import com.teaching.backend.model.entity.umsAdmin.UmsResource; import com.teaching.backend.model.entity.umsAdmin.UmsRole; @@ -78,5 +79,15 @@ public interface UmsAdminService extends IService { */ String phoneLogin(String phone); + /** + * 获取指定个人信息 + */ + Object getByIdPersonalInfo(String id); + + /** + * 修改指定个人信息 + */ + boolean updatePersonalInfo(UmsStudentAndTeacherDTO umsStudentAndTeacherDTO); + List getTeacherInfList(); } diff --git a/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java b/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java index c9dfb79..93649da 100644 --- a/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/umsAdmin/impl/UmsAdminServiceImpl.java @@ -8,14 +8,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.gson.Gson; import com.teaching.backend.exception.Asserts; +import com.teaching.backend.exception.BusinessException; import com.teaching.backend.exception.LyException; import com.teaching.backend.mapper.umsAdmin.UmsAdminMapper; import com.teaching.backend.mapper.umsAdmin.UmsAdminRoleRelationMapper; +import com.teaching.backend.mapper.umsAdmin.UmsStudentMapper; import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper; import com.teaching.backend.model.dto.UmsAdminParam; import com.teaching.backend.model.dto.UpdateAdminPasswordParam; +import com.teaching.backend.model.dto.umsAdmin.UmsStudentAndTeacherDTO; import com.teaching.backend.model.entity.umsAdmin.*; import com.teaching.backend.model.vo.courses.TeacherInfVO; +import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; +import com.teaching.backend.model.vo.umsAdmin.UmsTeacherVO; import com.teaching.backend.service.umsAdmin.UmsAdminService; import com.teaching.backend.utils.JwtTokenUtil; import com.teaching.backend.utils.RegexUtils; @@ -56,9 +61,7 @@ public class UmsAdminServiceImpl extends ServiceImpl i @Autowired private UmsAdminRoleRelationMapper adminRoleRelation; @Autowired - private AmqpTemplate amqpTemplate; - @Autowired - private StringRedisTemplate redisTemplate; + private UmsStudentMapper umsStudentMapper; @Autowired UmsTeacherMapper umsTeacherMapper; @Autowired @@ -76,12 +79,22 @@ public class UmsAdminServiceImpl extends ServiceImpl i .eq(UmsAdmin::getUsername, umsAdmin.getUsername()) .list(); if (umsAdminList.size() > 0) { - return null; + throw new BusinessException(500,"用户已存在"); } //将密码进行加密操作 String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); umsAdmin.setPassword(encodePassword); save(umsAdmin); + + //创建学生信息(默认是学生) + UmsAdmin byUsername = lambdaQuery().eq(UmsAdmin::getUsername, umsAdmin.getUsername()) + .one(); + UmsStudent umsStudent = new UmsStudent(); + umsStudent.setUserId(Math.toIntExact(byUsername.getId())); + umsStudentMapper.insert(umsStudent); + + //分配角色(学生) + adminRoleRelation.insert(byUsername.getId(), 2L); return umsAdmin; } @@ -92,10 +105,10 @@ public class UmsAdminServiceImpl extends ServiceImpl i try { UserDetails userDetails = loadUserByUsername(username); if(!passwordEncoder.matches(password,userDetails.getPassword())){ - Asserts.fail("密码不正确"); + throw new BusinessException(400,"密码错误"); } if(!userDetails.isEnabled()){ - Asserts.fail("帐号已被禁用"); + throw new BusinessException(400,"帐号已被禁用"); } UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); @@ -109,7 +122,7 @@ public class UmsAdminServiceImpl extends ServiceImpl i @Override public String phoneLogin(String phone) { if (phone == null){ - return null; + throw new BusinessException(400,"手机号为空"); } String token = null; //密码需要客户端加密后传递 @@ -117,12 +130,12 @@ public class UmsAdminServiceImpl extends ServiceImpl i UmsAdmin phoneAdmin = lambdaQuery().eq(UmsAdmin::getPhone, phone) .one(); if (phoneAdmin == null){ - return null; + throw new BusinessException(400,"手机号未注册"); } UserDetails userDetails = loadUserByUsername(phoneAdmin.getUsername()); if(!userDetails.isEnabled()){ - Asserts.fail("帐号已被禁用"); + throw new BusinessException(400,"帐号已被禁用"); } UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); @@ -133,17 +146,61 @@ public class UmsAdminServiceImpl extends ServiceImpl i return token; } + @Override + public Object getByIdPersonalInfo(String id) { + UmsRole umsRole = umsAdminMapper.getByIdRoleInfo(id); + if (umsRole == null){ + throw new BusinessException(500,"用户未分配角色"); + } + if(umsRole.getStatus()==0){ + throw new BusinessException(500,"角色被禁用"); + } + if (umsRole.getId() == 1){ + UmsTeacher teacher = umsAdminMapper.getByIdTeacher(id); + UmsTeacherVO umsTeacherVO = new UmsTeacherVO(); + BeanUtils.copyProperties(teacher,umsTeacherVO); + umsTeacherVO.setRoleId(Math.toIntExact(umsRole.getId())); + return umsTeacherVO; + }else if (umsRole.getId() == 2){ + UmsStudentVO student = umsAdminMapper.getByIdStudent(id); + UmsStudentVO umsStudentVO = new UmsStudentVO(); + BeanUtils.copyProperties(student,umsStudentVO); + umsStudentVO.setRoleId(Math.toIntExact(umsRole.getId())); + return umsStudentVO; + } + return null; + } + @Override + public boolean updatePersonalInfo(UmsStudentAndTeacherDTO umsStudentAndTeacherDTO) { + + if (umsStudentAndTeacherDTO.getRoleId() == 1){ + UmsTeacher umsTeacher = new UmsTeacher(); + BeanUtils.copyProperties(umsStudentAndTeacherDTO,umsTeacher); + System.out.println(umsTeacher); + return umsTeacherMapper.updateTeacherInfo(umsTeacher); + } else if (umsStudentAndTeacherDTO.getRoleId() == 2) { + UmsStudent umsStudent = new UmsStudent(); + BeanUtils.copyProperties(umsStudentAndTeacherDTO,umsStudent); + return umsStudentMapper.updateStudentInfo(umsStudent); + } + return false; + } @Override public boolean updateUms(UmsAdmin umsadmin) { - if (umsadmin.getPassword().length() > 0){ - Asserts.fail("修改操作错误1"); + List adminList = lambdaQuery().eq(UmsAdmin::getUsername, umsadmin.getUsername()) + .list(); + if (adminList.size() > 0){ + throw new BusinessException(400,"用户名已存在"); + } + if (!StrUtil.isEmpty(umsadmin.getPassword())){ + throw new BusinessException(400,"修改操作错误1"); } if (umsadmin.getCreateTime() != null){ - Asserts.fail("修改操作错误2"); + throw new BusinessException(400,"修改操作错误2"); } - return updateById(umsadmin); + return umsAdminMapper.updateUserInformation(umsadmin); } @Override @@ -151,17 +208,17 @@ public class UmsAdminServiceImpl extends ServiceImpl i if(StrUtil.isEmpty(param.getUsername()) ||StrUtil.isEmpty(param.getOldPassword()) ||StrUtil.isEmpty(param.getNewPassword())){ - return -1; + throw new BusinessException(400,"修改密码操作错误"); } List adminList = lambdaQuery() .eq(UmsAdmin::getUsername, param.getUsername()) .list(); if(CollUtil.isEmpty(adminList)){ - return -2; + throw new BusinessException(400,"用户名不存在"); } UmsAdmin umsAdmin = adminList.get(0); if(!passwordEncoder.matches(param.getOldPassword(),umsAdmin.getPassword())){ - return -3; + throw new BusinessException(400,"密码重复"); } umsAdmin.setPassword(passwordEncoder.encode(param.getNewPassword())); updateById(umsAdmin); @@ -171,7 +228,7 @@ public class UmsAdminServiceImpl extends ServiceImpl i @Override public String sendVerifyCode(String phone) { if (!RegexUtils.isPhone(phone)) { - throw new LyException(400, "手机号格式错误"); + throw new BusinessException(400, "手机号格式错误"); } // UmsAdmin admin = lambdaQuery() @@ -206,8 +263,6 @@ public class UmsAdminServiceImpl extends ServiceImpl i System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } -// //存入,redis,存5min -// this.redisTemplate.opsForValue().set(KEY_PREFIX + phone, code, 5, TimeUnit.MINUTES); return code; } @@ -222,13 +277,23 @@ public class UmsAdminServiceImpl extends ServiceImpl i .eq(UmsAdmin::getPhone,umsAdminParam.getPhone()) .list(); if (umsAdminList.size() > 0 ) { - return null; + throw new BusinessException(400,"手机号已存在"); } //将密码进行加密操作 String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); umsAdmin.setUsername(randomUsername()); umsAdmin.setPassword(encodePassword); save(umsAdmin); + + //创建学生信息(默认是学生) + UmsAdmin byUsername = lambdaQuery().eq(UmsAdmin::getPhone, umsAdmin.getPhone()) + .one(); + UmsStudent umsStudent = new UmsStudent(); + umsStudent.setUserId(Math.toIntExact(byUsername.getId())); + umsStudentMapper.insert(umsStudent); + + //分配角色(学生) + adminRoleRelation.insert(byUsername.getId(), 2L); return umsAdmin; } diff --git a/src/main/resources/mapper/UmsAdminMapper.xml b/src/main/resources/mapper/UmsAdminMapper.xml new file mode 100644 index 0000000..b1f7b5c --- /dev/null +++ b/src/main/resources/mapper/UmsAdminMapper.xml @@ -0,0 +1,77 @@ + + + + + + update ums_admin + + + username = #{username,jdbcType=VARCHAR}, + + + password = #{password}, + + + phone = #{phone,jdbcType=VARCHAR}, + + + nick_name = #{nickName,jdbcType=VARCHAR}, + + + icon = #{icon,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + status = #{status,jdbcType=INTEGER}, + + + where id = #{id,jdbcType=BIGINT} + + + + + diff --git a/src/main/resources/mapper/UmsAdminRoleRelationMapper.xml b/src/main/resources/mapper/UmsAdminRoleRelationMapper.xml index b09f07c..1c49f99 100644 --- a/src/main/resources/mapper/UmsAdminRoleRelationMapper.xml +++ b/src/main/resources/mapper/UmsAdminRoleRelationMapper.xml @@ -1,14 +1,10 @@ - - - - - - - - + + INSERT INTO ums_admin_role_relation (admin_id, role_id) VALUES (#{adminId,jdbcType=BIGINT}, + #{roleId,jdbcType=BIGINT}) +