From 52d2592278ebea2d4c164c87fefdb073396b9d38 Mon Sep 17 00:00:00 2001 From: yuan <3558860895@qq.com> Date: Mon, 16 Dec 2024 16:07:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BC=98=E5=8C=96=E9=80=80?= =?UTF-8?q?=E5=87=BA=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=AE=A1=E7=90=86=E7=AB=AF=E7=94=A8=E6=88=B7=E4=B8=AD?= =?UTF-8?q?=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../controller/system/SysRoleController.java | 35 ++ .../controller/system/SysUserController.java | 1 - .../web/controller/test/ExamDOController.java | 11 +- .../test/gl/AnswerSheetController.java | 6 +- .../test/gl/ExamPaperController.java | 1 - .../test/gl/KnowledgeTreeController.java | 1 - .../controller/test/gl/SubjectController.java | 2 - .../controller/test/gl/TaskController.java | 16 +- .../controller/test/gl/UserController.java | 2 +- .../controller/test/gl/VideoController.java | 1 - .../student/StudentErrorBookController.java | 1 - .../student/StudentExamPaperController.java | 7 +- .../student/StudentExamRecordController.java | 6 +- .../student/StudentHomePageController.java | 3 - .../StudentIntellectualController.java | 1 - .../teacher/TeacherAnalysisController.java | 1 - .../test/teacher/TeacherClassController.java | 5 +- .../teacher/TeacherExamPaperController.java | 1 - .../test/teacher/TeacherUserController.java | 2 +- .../src/main/resources/application.yml | 4 + ruoyi-common/pom.xml | 5 + .../common/core/domain/vo/SysUserVo.java | 45 +++ .../handle/LogoutSuccessHandlerImpl.java | 1 + .../ruoyi/system/mapper/SysRoleMapper.java | 7 + .../ruoyi/system/mapper/SysUserMapper.java | 5 +- .../system/mapper/SysUserRoleMapper.java | 4 +- .../ruoyi/system/service/ISysRoleService.java | 9 + .../service/impl/SysRoleServiceImpl.java | 35 +- .../resources/mapper/system/SysRoleMapper.xml | 5 + .../resources/mapper/system/SysUserMapper.xml | 9 + .../test/seriver/Impl/MessageServiceImpl.java | 1 - ruoyi-ui/src/api/kaoshi/message.js | 44 +++ ruoyi-ui/src/views/kaoshi/message/index.vue | 308 ++++++++++++++++++ vue2/vue/src/components/Login.vue | 10 +- vue2/vue/src/components/Student/Header.vue | 24 +- vue2/vue/src/components/Teacher/Header.vue | 31 +- vue2/vue/src/components/gl/Aside.vue | 49 +++ vue2/vue/src/components/gl/Header.vue | 90 +++++ vue2/vue/src/router/index.js | 6 + vue2/vue/src/views/gl/UserCenter.vue | 192 +++++++++++ 41 files changed, 925 insertions(+), 64 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/SysUserVo.java create mode 100644 ruoyi-ui/src/api/kaoshi/message.js create mode 100644 ruoyi-ui/src/views/kaoshi/message/index.vue create mode 100644 vue2/vue/src/components/gl/Aside.vue create mode 100644 vue2/vue/src/components/gl/Header.vue create mode 100644 vue2/vue/src/views/gl/UserCenter.vue diff --git a/pom.xml b/pom.xml index afbba52..5e7cf76 100644 --- a/pom.xml +++ b/pom.xml @@ -198,7 +198,7 @@ mybatis-plus-boot-starter 3.5.1 - + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index 566fa92..14f60d9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java @@ -1,9 +1,15 @@ package com.ruoyi.web.controller.system; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.constant.CacheConstants; +import com.ruoyi.common.core.domain.vo.SysUserVo; +import com.ruoyi.common.core.redis.RedisCache; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -57,6 +63,35 @@ public class SysRoleController extends BaseController @Autowired private ISysDeptService deptService; + @Autowired + private RedisCache redisCache; + + @GetMapping("selectUserByRoleKey") + public List selectUserByRoleKey(String roleKey){ + List list = roleService.selectUserByRoleKey(roleKey); + List l = new ArrayList<>(); + Collection keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); + List ids = new ArrayList<>(); + for(String key:keys){ + LoginUser user = redisCache.getCacheObject(key); + if(user.getUserId()!=null){ + ids.add(user.getUserId()); + } + } + for(SysUser user:list){ + SysUserVo sysUserVo = new SysUserVo(); + BeanUtils.copyProperties(user,sysUserVo); + if(ids.contains(user.getUserId())){ + sysUserVo.setOnline(1); + }else{ + sysUserVo.setOnline(0); + } + l.add(sysUserVo); + } + System.out.println("======="+l); + return l; + } + @PreAuthorize("@ss.hasPermi('system:role:list')") @GetMapping("/list") public TableDataInfo list(SysRole role) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index 8717e20..3251336 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -115,7 +115,6 @@ public class SysUserController extends BaseController ajax.put("postIds", postService.selectPostListByUserId(userId)); ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); } - System.out.println("================"+ajax); return ajax; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/ExamDOController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/ExamDOController.java index 2551445..5d956c9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/ExamDOController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/ExamDOController.java @@ -3,21 +3,18 @@ package com.ruoyi.web.controller.test; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.gson.Gson; import com.ruoyi.common.core.domain.R; -import com.ruoyi.test.domain.DO.ExamCreateDO; -import com.ruoyi.test.domain.DO.ExamDO; import com.ruoyi.test.domain.DO.OptionDO; import com.ruoyi.test.domain.DO.SingleChoiceDO; -import com.ruoyi.test.domain.ExamCreate; import com.ruoyi.test.domain.ExamPaper; import com.ruoyi.test.domain.Questionbank; -import com.ruoyi.test.domain.Vo.ExamCreateVo; -import com.ruoyi.test.domain.Vo.QuestionbankVo; import com.ruoyi.test.domain.Vo.QuestionbankVo1; import com.ruoyi.test.domain.Vo.QuestionbankVo2; -import com.ruoyi.test.seriver.*; +import com.ruoyi.test.seriver.IExamCreateService; +import com.ruoyi.test.seriver.IExamDOService; +import com.ruoyi.test.seriver.IExamPaperService; +import com.ruoyi.test.seriver.IQuestionbankService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/AnswerSheetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/AnswerSheetController.java index a785a1e..3f6cf6f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/AnswerSheetController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/AnswerSheetController.java @@ -5,12 +5,13 @@ import com.google.gson.Gson; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.test.domain.*; +import com.ruoyi.test.domain.Answer; import com.ruoyi.test.domain.DO.AnswerDO; import com.ruoyi.test.domain.DO.AnswerSheetDO; import com.ruoyi.test.domain.DO.QuestionAnswerDO; +import com.ruoyi.test.domain.Markedtest; +import com.ruoyi.test.domain.Questionbank; import com.ruoyi.test.domain.Vo.AnswerVo; -import com.ruoyi.test.domain.Vo.QuestionanswerVo; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -18,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Map; @Api(tags = "管理端答卷管理") @RestController diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ExamPaperController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ExamPaperController.java index 286bbcb..186e19f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ExamPaperController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ExamPaperController.java @@ -6,7 +6,6 @@ import com.ruoyi.test.domain.DO.PaperCreateDO; import com.ruoyi.test.domain.DO.QuestionbankDO; import com.ruoyi.test.domain.DO.QuestionbankDO1; import com.ruoyi.test.domain.ExamPaper; -import com.ruoyi.test.domain.Questionbank; import com.ruoyi.test.seriver.IExamCreateService; import com.ruoyi.test.seriver.IExamPaperService; import com.ruoyi.test.seriver.IQuestionbankService; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/KnowledgeTreeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/KnowledgeTreeController.java index de06344..fb6bc83 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/KnowledgeTreeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/KnowledgeTreeController.java @@ -8,7 +8,6 @@ import com.ruoyi.test.seriver.IKnowledgeTreeService; import com.ruoyi.test.seriver.ISubjectKnowledgeDOService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.ibatis.annotations.Delete; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/SubjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/SubjectController.java index cdb5af3..6aeb755 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/SubjectController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/SubjectController.java @@ -10,8 +10,6 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.List; - @Api(tags = "管理端学科管理") @RestController @RequestMapping("/gl/subject") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/TaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/TaskController.java index 2715e7c..6dc8b37 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/TaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/TaskController.java @@ -7,15 +7,11 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.test.domain.Task; import com.ruoyi.test.domain.Vo.TaskVo; import com.ruoyi.test.seriver.ITaskService; -import com.ruoyi.web.controller.tool.testTool.ResultVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.ibatis.annotations.Delete; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.List; - @Api(tags = "管理端任务管理") @RestController @RequestMapping("/gl/tesk") @@ -25,12 +21,12 @@ public class TaskController { private ITaskService iTaskService; - @ApiOperation("任务列表") - @GetMapping("selectList") - public ResultVo> selectList(int pagenum,int pagesize){ -// return R.ok(iTaskService.selectList(pagenum,pagesize)); - return ResultVo.ok(iTaskService.selectList(pagenum,pagesize)); - } +// @ApiOperation("任务列表") +// @GetMapping("selectList") +// public ResultVo> selectList(int pagenum,int pagesize){ +//// return R.ok(iTaskService.selectList(pagenum,pagesize)); +// return ResultVo.ok(iTaskService.selectList(pagenum,pagesize)); +// } // @ApiOperation("根据年级获取任务列表") // @GetMapping("selectListByGrade") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/UserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/UserController.java index b8a5497..653b8e6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/UserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/UserController.java @@ -1,4 +1,4 @@ -//package com.ruoyi.web.controller.test.gl; +package com.ruoyi.web.controller.test.gl;//package com.ruoyi.web.controller.test.gl; // //import com.baomidou.mybatisplus.core.metadata.IPage; //import com.ruoyi.common.core.domain.R; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/VideoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/VideoController.java index ed482fd..a570294 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/VideoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/VideoController.java @@ -7,7 +7,6 @@ import com.ruoyi.test.domain.Vo.VideoVo; import com.ruoyi.test.seriver.IVideoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.ibatis.annotations.Delete; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentErrorBookController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentErrorBookController.java index 5476d0d..9e4fb1a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentErrorBookController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentErrorBookController.java @@ -14,7 +14,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java index a6a167f..e75e605 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamPaperController.java @@ -1,12 +1,13 @@ package com.ruoyi.web.controller.test.student; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.test.domain.*; +import com.ruoyi.test.domain.ClassExamPaper; import com.ruoyi.test.domain.DO.ExamPaperDO1; +import com.ruoyi.test.domain.ExamPaper; +import com.ruoyi.test.domain.Questionbank; +import com.ruoyi.test.domain.StudentClass; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamRecordController.java index 7443535..e4af648 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamRecordController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentExamRecordController.java @@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.test.domain.*; +import com.ruoyi.test.domain.Answer; import com.ruoyi.test.domain.DO.CorrectionDO; -import com.ruoyi.test.domain.DO.QuestionbankDO1; +import com.ruoyi.test.domain.ExamPaper; +import com.ruoyi.test.domain.Markedtest; +import com.ruoyi.test.domain.Questionbank; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java index caf46e0..f18877b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentHomePageController.java @@ -1,7 +1,6 @@ package com.ruoyi.web.controller.test.student; import com.google.gson.Gson; -import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; @@ -13,10 +12,8 @@ import com.ruoyi.test.domain.DO.QuestionAnswerDO; import com.ruoyi.test.domain.DO.UserDO; import com.ruoyi.test.domain.Vo.AnswerVo; import com.ruoyi.test.seriver.*; -import com.ruoyi.web.controller.system.SysUserController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentIntellectualController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentIntellectualController.java index a1d24b2..a4832ed 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentIntellectualController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/student/StudentIntellectualController.java @@ -2,7 +2,6 @@ package com.ruoyi.web.controller.test.student; import com.ruoyi.test.seriver.IClassExamPaperService; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnalysisController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnalysisController.java index d7b32d5..c044f39 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnalysisController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherAnalysisController.java @@ -6,7 +6,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.test.domain.*; -import com.ruoyi.test.domain.DO.ClassExamPaperDO; import com.ruoyi.test.domain.DO.ExamPaperDO; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherClassController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherClassController.java index 0deed7f..54ddd71 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherClassController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherClassController.java @@ -6,7 +6,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.test.domain.Class1; -import com.ruoyi.test.domain.DO.StudentListDO; import com.ruoyi.test.domain.TeacherManageClass; import com.ruoyi.test.seriver.IClass1Service; import com.ruoyi.test.seriver.IStudentClassService; @@ -14,7 +13,9 @@ import com.ruoyi.test.seriver.ITeacherManageClassService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java index d8b475b..4666bc8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherExamPaperController.java @@ -10,7 +10,6 @@ import com.ruoyi.test.domain.ClassExamPaper; import com.ruoyi.test.domain.DO.*; import com.ruoyi.test.domain.ExamPaper; import com.ruoyi.test.domain.TeacherManageClass; -import com.ruoyi.test.domain.Vo.ExamPaperVo; import com.ruoyi.test.domain.Vo.QuestionbankVo1; import com.ruoyi.test.seriver.*; import io.swagger.annotations.Api; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherUserController.java index d3137d7..47a705f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/teacher/TeacherUserController.java @@ -8,8 +8,8 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.test.domain.DO.StudentListDO; import com.ruoyi.test.domain.StudentClass; import com.ruoyi.test.domain.TeacherManageClass; -import com.ruoyi.test.seriver.IStudentClassService; import com.ruoyi.test.seriver.IClassExamPaperService; +import com.ruoyi.test.seriver.IStudentClassService; import com.ruoyi.test.seriver.ITeacherManageClassService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9b02133..d06ed53 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -47,6 +47,10 @@ user: # Spring配置 spring: + component-scan: + base-packages: + - com.ruoyi.test # 手写代码路径 + - com.ruoyi.kaoshi # 生成代码路径 # 资源信息 messages: # 国际化资源文件路径 diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 6a2e728..27504c8 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -138,6 +138,11 @@ javax.servlet javax.servlet-api + + org.projectlombok + lombok + provided + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/SysUserVo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/SysUserVo.java new file mode 100644 index 0000000..039bf36 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/SysUserVo.java @@ -0,0 +1,45 @@ +package com.ruoyi.common.core.domain.vo; + +import com.ruoyi.common.annotation.Excel; +import lombok.Data; + +@Data +public class SysUserVo +{ + /** 用户ID */ + @Excel(name = "用户序号", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.NUMERIC, prompt = "用户编号") + private Long userId; + + /** 部门ID */ + @Excel(name = "部门编号", type = Excel.Type.IMPORT) + private Long deptId; + + /** 用户账号 */ + @Excel(name = "登录名称") + private String userName; + + /** 用户昵称 */ + @Excel(name = "用户名称") + private String nickName; + + /** 用户邮箱 */ + @Excel(name = "用户邮箱") + private String email; + + /** 手机号码 */ + @Excel(name = "手机号码", cellType = Excel.ColumnType.TEXT) + private String phonenumber; + + /** 用户性别 */ + @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") + private String sex; + + /** 用户头像 */ + private String avatar; + + /** 密码 */ + private String password; + + //是否在线 + private Integer online; +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java index 2f89a91..e286a63 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java @@ -40,6 +40,7 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler throws IOException, ServletException { LoginUser loginUser = tokenService.getLoginUser(request); + System.out.println("=========="+loginUser); if (StringUtils.isNotNull(loginUser)) { String userName = loginUser.getUsername(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java index 7146183..ed5fce0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java @@ -12,6 +12,13 @@ import com.ruoyi.common.core.domain.entity.SysRole; */ public interface SysRoleMapper { + /** + * 通过权限key获取角色数据 + * + * @param roleKey 角色key + * @return 角色数据 + */ + public SysRole selectRoleByRoleKey(String roleKey); /** * 根据条件分页查询角色数据 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 76e1c79..eaa522f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.system.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.common.core.domain.entity.SysUser; @@ -9,8 +11,9 @@ import com.ruoyi.common.core.domain.entity.SysUser; * * @author ruoyi */ -public interface SysUserMapper +public interface SysUserMapper extends BaseMapper { + List selectUsersByIds(@Param("ids") List userRoleIds); /** * 根据条件分页查询用户列表 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java index 4711690..8727519 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.system.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.system.domain.SysUserRole; @@ -9,7 +11,7 @@ import com.ruoyi.system.domain.SysUserRole; * * @author ruoyi */ -public interface SysUserRoleMapper +public interface SysUserRoleMapper extends BaseMapper { /** * 通过用户ID删除用户和角色关联 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java index 674f0c7..a640093 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java @@ -3,6 +3,7 @@ package com.ruoyi.system.service; import java.util.List; import java.util.Set; import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.domain.SysUserRole; /** @@ -12,6 +13,14 @@ import com.ruoyi.system.domain.SysUserRole; */ public interface ISysRoleService { + /** + * 通过角色key获取用户列表 + * + * @param roleKey 角色key + * @return 用户列表 + */ + public List selectUserByRoleKey(String roleKey); + /** * 根据条件分页查询角色数据 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java index d0a6747..94b0a27 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java @@ -1,10 +1,10 @@ package com.ruoyi.system.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.system.mapper.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,10 +19,6 @@ import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysRoleDept; import com.ruoyi.system.domain.SysRoleMenu; import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.mapper.SysRoleDeptMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.mapper.SysRoleMenuMapper; -import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.service.ISysRoleService; /** @@ -45,6 +41,27 @@ public class SysRoleServiceImpl implements ISysRoleService @Autowired private SysRoleDeptMapper roleDeptMapper; + @Autowired + private SysUserMapper userMapper; + + /** + * 通过角色key获取用户列表 + * + * @param roleKey 角色key + * @return 用户列表 + */ + @Override + public List selectUserByRoleKey(String roleKey) { + SysRole sysRole = roleMapper.selectRoleByRoleKey(roleKey); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUserRole::getRoleId, sysRole.getRoleId()); + List userRoleIds = userRoleMapper.selectList(queryWrapper) + .stream() + .map(SysUserRole::getUserId) + .collect(Collectors.toList()); + return userMapper.selectUsersByIds(userRoleIds); + } + /** * 根据条件分页查询角色数据 * diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml index d86ea1e..3ac8769 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -20,6 +20,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 12d77b5..d33e8d6 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -46,6 +46,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.studentnumber, diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java index c929dfe..a24483d 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/MessageServiceImpl.java @@ -11,7 +11,6 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Collections; import java.util.List; @Service diff --git a/ruoyi-ui/src/api/kaoshi/message.js b/ruoyi-ui/src/api/kaoshi/message.js new file mode 100644 index 0000000..e70c86b --- /dev/null +++ b/ruoyi-ui/src/api/kaoshi/message.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询消息管理列表 +export function listMessage(query) { + return request({ + url: '/kaoshi/message/list', + method: 'get', + params: query + }) +} + +// 查询消息管理详细 +export function getMessage(id) { + return request({ + url: '/kaoshi/message/' + id, + method: 'get' + }) +} + +// 新增消息管理 +export function addMessage(data) { + return request({ + url: '/kaoshi/message', + method: 'post', + data: data + }) +} + +// 修改消息管理 +export function updateMessage(data) { + return request({ + url: '/kaoshi/message', + method: 'put', + data: data + }) +} + +// 删除消息管理 +export function delMessage(id) { + return request({ + url: '/kaoshi/message/' + id, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/views/kaoshi/message/index.vue b/ruoyi-ui/src/views/kaoshi/message/index.vue new file mode 100644 index 0000000..87b0aed --- /dev/null +++ b/ruoyi-ui/src/views/kaoshi/message/index.vue @@ -0,0 +1,308 @@ + + + diff --git a/vue2/vue/src/components/Login.vue b/vue2/vue/src/components/Login.vue index 33dc829..598af0a 100644 --- a/vue2/vue/src/components/Login.vue +++ b/vue2/vue/src/components/Login.vue @@ -83,6 +83,7 @@ export default { 'Authorization': response.data.token, 'Content-Type': 'application/json', }}); + console.log(res); if(res.data.code==200){ const token = response.data.token; const userId = res.data.user.userId; @@ -97,8 +98,13 @@ export default { path: '/teacher/homePage', query: { userId: userId } }); - // window.location.href = 'http://localhost:8081/teacher/correct'; - }else{ + }else if(res.data.roles[0] === 'gl'){ + this.$router.push({ + path: '/gl/userCenter', + query: {userId: userId} + }); + } + else{ alert('该角色无权限'); this.refreshCaptcha(); } diff --git a/vue2/vue/src/components/Student/Header.vue b/vue2/vue/src/components/Student/Header.vue index 882df7b..d9c08c5 100644 --- a/vue2/vue/src/components/Student/Header.vue +++ b/vue2/vue/src/components/Student/Header.vue @@ -45,9 +45,27 @@ export default { this.sss(); }, methods: { - logout() { - this.$store.dispatch("logout"); // 调用 Vuex 登出逻辑 - this.$router.push("/login"); // 跳转到登录页面 + async logout() { + try{ + // 执行登出操作 + const token = this.$store.state.tokens[this.userId]; + if (!token) { + alert("用户未登录,请重新登录!"); + return; + } + const response = await axios.post("http://localhost:8080/logout", {}, { + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + }) + console.log(response); + await this.$store.dispatch("clearToken", this.userId); // 调用 Vuex 登出逻辑 + this.$message.success("退出成功!"); + await this.$router.push("/login"); // 跳转到登录页面 + }catch (error){ + this.$message.error("接口异常!"); + } }, async sss(){ try { diff --git a/vue2/vue/src/components/Teacher/Header.vue b/vue2/vue/src/components/Teacher/Header.vue index 4186c2d..6a3e562 100644 --- a/vue2/vue/src/components/Teacher/Header.vue +++ b/vue2/vue/src/components/Teacher/Header.vue @@ -10,6 +10,8 @@ diff --git a/vue2/vue/src/components/gl/Aside.vue b/vue2/vue/src/components/gl/Aside.vue new file mode 100644 index 0000000..5c0174c --- /dev/null +++ b/vue2/vue/src/components/gl/Aside.vue @@ -0,0 +1,49 @@ + + + + + \ No newline at end of file diff --git a/vue2/vue/src/components/gl/Header.vue b/vue2/vue/src/components/gl/Header.vue new file mode 100644 index 0000000..6a3e562 --- /dev/null +++ b/vue2/vue/src/components/gl/Header.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/vue2/vue/src/router/index.js b/vue2/vue/src/router/index.js index 7d86e63..e625c21 100644 --- a/vue2/vue/src/router/index.js +++ b/vue2/vue/src/router/index.js @@ -8,6 +8,12 @@ import store from '../store'; // 引入 Vuex store Vue.use(VueRouter); const routes = [ + { + path:'/gl/userCenter', + name:'UserCenter', + component: () => import(/* webpackChunkName: "about" */ '../views/gl/UserCenter.vue'), + meta: { requiresAuth: true } + }, { path:'/teacher/questions', name:'Questions', diff --git a/vue2/vue/src/views/gl/UserCenter.vue b/vue2/vue/src/views/gl/UserCenter.vue new file mode 100644 index 0000000..373f7b2 --- /dev/null +++ b/vue2/vue/src/views/gl/UserCenter.vue @@ -0,0 +1,192 @@ + + + + +