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 14f60d9..3847e87 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,14 +1,16 @@ package com.ruoyi.web.controller.system; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; 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.R; import com.ruoyi.common.core.domain.vo.SysUserVo; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.test.domain.DO.StudentClassDO; +import com.ruoyi.test.domain.StudentClass; +import com.ruoyi.test.seriver.IStudentClassService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -66,29 +68,50 @@ public class SysRoleController extends BaseController @Autowired private RedisCache redisCache; + @Autowired + private IStudentClassService iStudentClassService; + + @GetMapping("selectUserByStudentKey") + public R> selectUserByStudentKey(){ + List list = roleService.selectUserByRoleKey("student"); + List list1 = new ArrayList<>(); + for(SysUser sysUser : list){ + StudentClassDO studentClassDO = new StudentClassDO(); + studentClassDO.setId(sysUser.getUserId()); + studentClassDO.setName(sysUser.getUserName()); + StudentClass studentClass = iStudentClassService.selectById(sysUser.getUserId()); + if(studentClass!=null){ + studentClassDO.setGrade(studentClass.getGrade()); + studentClassDO.setClass1(studentClass.getClass1()); + } + list1.add(studentClassDO); + } + return R.ok(list1); + } + @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<>(); + Map map = new HashMap<>(); for(String key:keys){ LoginUser user = redisCache.getCacheObject(key); - if(user.getUserId()!=null){ - ids.add(user.getUserId()); + if(user!=null){ + map.put(user.getUserId(),user.getToken()); } } for(SysUser user:list){ SysUserVo sysUserVo = new SysUserVo(); BeanUtils.copyProperties(user,sysUserVo); - if(ids.contains(user.getUserId())){ + if(map.containsKey(user.getUserId())){ + sysUserVo.setTokenId(map.get(user.getUserId())); sysUserVo.setOnline(1); }else{ sysUserVo.setOnline(0); } l.add(sysUserVo); } - System.out.println("======="+l); return l; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ClassManageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ClassManageController.java new file mode 100644 index 0000000..dbfa536 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/ClassManageController.java @@ -0,0 +1,76 @@ +package com.ruoyi.web.controller.test.gl; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.test.domain.Class1; +import com.ruoyi.test.domain.DO.StudentClassDO; +import com.ruoyi.test.domain.DO.StudentClassList; +import com.ruoyi.test.domain.DO.StudentDO; +import com.ruoyi.test.seriver.IClass1Service; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +@Api(tags = "管理端班级管理") +@RestController +@RequestMapping("/gl/classManage") +public class ClassManageController { + + @Autowired + private IClass1Service class1Service; + + @ApiOperation("班级查询") + @GetMapping("selectClass") + public R> selectClass(String name, String grade) + { + return R.ok(class1Service.selectClass1(name,grade)); + } + + @ApiOperation("班级学生查询") + @GetMapping("studentListByGradeAndClass1") + public R> studentListByGradeAndClass1(String grade, String Class1) + { + return R.ok(class1Service.studentListByGradeAndClass1(grade,Class1)); + } + + @ApiOperation("新建班级") + @PostMapping("addClass1") + public R addClass1(@RequestBody Class1 class1) + { + return R.ok(class1Service.addclass1(class1.getName(),class1.getGrade(),class1.getClass1(),class1.getCommand())); + } + + @ApiOperation("加入班级") + @PostMapping("insertClassByStudentList") + public R insertClassByStudentList(@RequestBody StudentClassList list) + { + for(StudentClassDO studentClassDO : list.getStudentList()){ + if(studentClassDO.getGrade()!=null && studentClassDO.getClass1()!=null){ + class1Service.deleteClass(studentClassDO.getId(),studentClassDO.getGrade(),studentClassDO.getClass1()); + } + } + List studentList1 = list.getStudentList().stream() + .map(StudentClassDO::getId) + .collect(Collectors.toList()); + return R.ok(class1Service.insertClassByStudentList(studentList1,list.getGrade(),list.getClass1())); + } + + @ApiOperation("删除学生") + @DeleteMapping("deleteStudent") + public R deleteStudent(@RequestParam Long id, @RequestParam String grade, @RequestParam String Class1) + { + return R.ok(class1Service.deleteClass(id,grade,Class1)); + } + + @ApiOperation("修改班级信息") + @PostMapping("updateClass") + public R updateClass(@RequestBody Class1 class1) + { + return R.ok(class1Service.updateClass1(class1)); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/MessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/MessageController.java new file mode 100644 index 0000000..cb03266 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/MessageController.java @@ -0,0 +1,52 @@ +package com.ruoyi.web.controller.test.gl; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.service.ISysRoleService; +import com.ruoyi.test.domain.DO.MessageDO; +import com.ruoyi.test.domain.DO.MessageDO1; +import com.ruoyi.test.seriver.IMessageService; +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.*; + +import java.util.List; + +@Api(tags = "管理端消息管理") +@RestController +@RequestMapping("/gl/message") +public class MessageController { + @Autowired + private IMessageService iMessageService; + + @Autowired + private ISysRoleService roleService; + + @ApiOperation("消息列表") + @GetMapping("selectMessage") + public R> selectMessage(){ + return R.ok(iMessageService.selectMessage()); + } + + @ApiOperation("删除消息") + @DeleteMapping("deleteMessage") + public R deleteMessage(Long id){ + return R.ok(iMessageService.deleteMessage(id)); + } + + @ApiOperation("获取用户") + @GetMapping("getUserList") + public R> getUserList(){ + List list = roleService.selectUserByRoleKey("student"); + list.addAll(roleService.selectUserByRoleKey("teacher")); + return R.ok(list); + } + + @ApiOperation("添加消息") + @PostMapping("addMessage") + public R addMessage(@RequestBody MessageDO1 messageDO1){ + return R.ok(iMessageService.addMessage(messageDO1)); + } +} 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 deleted file mode 100644 index 653b8e6..0000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/test/gl/UserController.java +++ /dev/null @@ -1,155 +0,0 @@ -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; -//import com.ruoyi.common.core.domain.entity.SysUser; -//import com.ruoyi.common.utils.SecurityUtils; -//import io.swagger.annotations.Api; -//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/users") -//public class UserController { -// @Autowired -// private IUserService iUserService; -// -// /* -// 获取学生列表 -// */ -// @ApiOperation("学生列表") -// @GetMapping("student") -// public R> selectList(int pagenum){ -// return R.ok(iUserService.selectStudentList(pagenum)); -// } -// /*获取学生用户名查询查询记录 -// *@param name 用户名 -// */ -// @ApiOperation("学生用户名查询") -// @GetMapping("/seleteStudentName") -// public R> selectStudent(int pagenum,String name){ -// return R.ok(iUserService.selectStudent(pagenum,name)); -// } -// -// /*增加学生用户信息 -// *@param name 用户名 -// */ -// @ApiOperation("学生添加用户") -// @PostMapping("/insertStudent") -// public R inserStudent(@RequestBody UserVo userVo){ -// User user = new User(); -// user.setAge(userVo.getAge()); -// user.setBirthday(userVo.getBirthday()); -// user.setGrade(userVo.getGrade()); -// user.setSex(userVo.getSex()); -// user.setName(userVo.getName()); -// user.setTname(userVo.getTname()); -// user.setTelephone(userVo.getTelephone()); -// user.setRoleKey("2"); -// user.setState(0L); -// SysUser sysUser = SecurityUtils.getLoginUser().getUser(); -// Long zhid = sysUser.getUserId(); -// user.setZhId(zhid); -// List list = iUserService.selectStudentByZhid(zhid); -// if(list.size()==0){ -// if(iUserService.insertUser(user)!=0){ -// return R.ok("添加成功!"); -// }else{ -// return R.fail("添加失败!"); -// } -// } -// return R.fail("该账号已绑定用户了!"); -// } -// -// -// -// @ApiOperation("教师列表") -// @GetMapping("/teacher") -// public R> selectTeacher(int pagenum){ -// return R.ok(iUserService.selectTeacherList(pagenum)); -// } -// /*获取教师用户名查询查询记录 -// *@param name 用户名 -// */ -// @ApiOperation("教师用户名查询") -// @GetMapping("/seleteTeacherName") -// public R> selectTeacher(int pagenum,String name){ -// return R.ok(iUserService.selectTeacher(pagenum,name)); -// } -// /*增加教师用户信息 -// *@param name 用户名 -// */ -// @ApiOperation("老师添加用户") -// @PostMapping("/insertTeacher") -// public R insertTeacher(@RequestBody UserVo userVo){ -// User user = new User(); -// user.setAge(userVo.getAge()); -// user.setBirthday(userVo.getBirthday()); -// user.setGrade(userVo.getGrade()); -// user.setSex(userVo.getSex()); -// user.setName(userVo.getName()); -// user.setTname(userVo.getTname()); -// user.setTelephone(userVo.getTelephone()); -// user.setRoleKey("3"); -// user.setState(0L); -// SysUser sysUser = SecurityUtils.getLoginUser().getUser(); -// Long zhid = sysUser.getUserId(); -// user.setZhId(zhid); -// List list = iUserService.selectStudentByZhid(zhid); -// if(list.size()==0){ -// if(iUserService.insertUser(user)!=0){ -// return R.ok("添加成功!"); -// }else{ -// return R.fail("添加失败!"); -// } -// } -// return R.fail("该账号已绑定用户了!"); -// } -// -// @ApiOperation("管理员列表") -// @GetMapping("/Gl") -// public R> selectGl(int pagenum){ -// return R.ok(iUserService.selectGlList(pagenum)); -// } -// /*获取管理员用户名查询查询记录 -// *@param name 用户名 -// */ -// @ApiOperation("管理员用户名查询") -// @GetMapping("/seleteGlName") -// public R> selectGl(int pagenum,String name){ -// return R.ok(iUserService.selectGl(pagenum,name)); -// } -// /*增加管理员用户信息 -// *@param name 用户名 -// */ -// @ApiOperation("管理员添加用户") -// @PostMapping("/insertGl") -// public R insertGl(@RequestBody UserVo userVo){ -// User user = new User(); -// user.setAge(userVo.getAge()); -// user.setBirthday(userVo.getBirthday()); -// user.setGrade(userVo.getGrade()); -// user.setSex(userVo.getSex()); -// user.setName(userVo.getName()); -// user.setTname(userVo.getTname()); -// user.setTelephone(userVo.getTelephone()); -// user.setRoleKey("4"); -// user.setState(0L); -// SysUser sysUser = SecurityUtils.getLoginUser().getUser(); -// Long zhid = sysUser.getUserId(); -// user.setZhId(zhid); -// List list = iUserService.selectStudentByZhid(zhid); -// if(list.size()==0){ -// if(iUserService.insertUser(user)!=0){ -// return R.ok("添加成功!"); -// }else{ -// return R.fail("添加失败!"); -// } -// } -// return R.fail("该账号已绑定用户了!"); -// } -//} 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 54ddd71..aeea93f 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 @@ -76,16 +76,16 @@ public class TeacherClassController { } //创建后默认加入创建账号的班级中 - @ApiOperation("班级创建") - @GetMapping("addclass1") - public R addclass1(String name,String grade,String Class1){ - if(iClass1Service.addclass1(name,grade,Class1)!=0){ - SysUser sysUser = SecurityUtils.getLoginUser().getUser(); - Long id = sysUser.getUserId(); - iTeacherManageClassService.addclass1(id,grade,Class1); - return R.ok("创建成功!"); - } - return R.fail("创建失败!"); - } +// @ApiOperation("班级创建") +// @GetMapping("addclass1") +// public R addclass1(String name,String grade,String Class1){ +// if(iClass1Service.addclass1(name,grade,Class1)!=0){ +// SysUser sysUser = SecurityUtils.getLoginUser().getUser(); +// Long id = sysUser.getUserId(); +// iTeacherManageClassService.addclass1(id,grade,Class1); +// return R.ok("创建成功!"); +// } +// return R.fail("创建失败!"); +// } } 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 index 039bf36..62fdb5c 100644 --- 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 @@ -42,4 +42,6 @@ public class SysUserVo //是否在线 private Integer online; + + private String tokenId; } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/Class1.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/Class1.java index 4aded42..30b67dd 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/domain/Class1.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/Class1.java @@ -7,7 +7,7 @@ import lombok.Data; @TableName("class1") public class Class1 { - private long id; + private Long id; private String name; private String grade; diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/MessageDO.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/MessageDO.java new file mode 100644 index 0000000..f6e53c1 --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/MessageDO.java @@ -0,0 +1,16 @@ +package com.ruoyi.test.domain.DO; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class MessageDO { + + private Long id; + private String teacherName; + private String studentName; + private String source; + private String createtime; +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentClassDO.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentClassDO.java new file mode 100644 index 0000000..bea96dc --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentClassDO.java @@ -0,0 +1,12 @@ +package com.ruoyi.test.domain.DO; + +import lombok.Data; + +@Data +public class StudentClassDO { + + private Long id; + private String name; + private String grade; + private String class1; +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentClassList.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentClassList.java new file mode 100644 index 0000000..fa5914c --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentClassList.java @@ -0,0 +1,14 @@ +package com.ruoyi.test.domain.DO; + +import lombok.Data; + +import java.util.List; + +@Data +public class StudentClassList { + + private List studentList; + private String grade; + private String class1; + +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentDO.java b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentDO.java new file mode 100644 index 0000000..9d922a1 --- /dev/null +++ b/ruoyi-test/src/main/java/com/ruoyi/test/domain/DO/StudentDO.java @@ -0,0 +1,17 @@ +package com.ruoyi.test.domain.DO; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +@Data +public class StudentDO { + private Long id; + private String name; + + public StudentDO(Long id, String name) { + this.id = id; + this.name = name; + } +} diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/Class1Mapper.java b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/Class1Mapper.java index c63c027..cd6c77e 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/Class1Mapper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/Class1Mapper.java @@ -2,16 +2,24 @@ package com.ruoyi.test.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.test.domain.Class1; +import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; +import java.util.List; + @Mapper public interface Class1Mapper extends BaseMapper { @Update("update class1 set num = #{num} where id= #{id} ") int updateClass(@Param("id") Long id,@Param("num") Integer num); - int addclass1(@Param("name") String name ,@Param("grade") String grade,@Param("Class1") String Class1); + int addclass1(@Param("name") String name ,@Param("grade") String grade,@Param("Class1") String Class1, @Param("command") String command); + + @Delete("delete from student_class where studentid = #{id} and grade = #{grade} and Class1 = #{Class1}") + int deleteStudentClass(@Param("id") Long id,@Param("grade") String grade,@Param("Class1") String Class1); + @Update("UPDATE class1 SET name = #{class1.name}, grade = #{class1.grade}, Class1 = #{class1.class1}, command = #{class1.command} WHERE id = #{class1.id}") + int updateClass1(@Param("class1") Class1 class1); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java index 577b15f..bb37106 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/MessageMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.test.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.test.domain.Message; +import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -11,4 +12,7 @@ public interface MessageMapper extends BaseMapper { int addMessage(@Param("message") Message message); int updateMessage(@Param("id") Long id); + + @Delete("delete from message where id=#{id}") + int deleteMessage(@Param("id") Long id); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/StudentClassMapper.java b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/StudentClassMapper.java index 8cb4d34..38c7be2 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/mapper/StudentClassMapper.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/mapper/StudentClassMapper.java @@ -6,10 +6,14 @@ import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface StudentClassMapper extends BaseMapper { @Delete("delete from student_class where studentid = #{id}") int deleteStudentClass(@Param("id") Long id); + int insertClassByStudentList(@Param("studentid") Long studentid,@Param("grade") String grade, @Param("Class1")String Class1); + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClass1Service.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClass1Service.java index 54068e5..7c70754 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClass1Service.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IClass1Service.java @@ -1,6 +1,8 @@ package com.ruoyi.test.seriver; import com.ruoyi.test.domain.Class1; +import com.ruoyi.test.domain.DO.StudentDO; +import io.swagger.models.auth.In; import java.util.List; @@ -12,6 +14,15 @@ public interface IClass1Service { int updateClass(Long id,Integer num); - int addclass1(String name,String grade,String Class1); + int addclass1(String name,String grade,String Class1,String command); + List selectClass1(String name,String grade); + + List studentListByGradeAndClass1(String grade, String Class1); + + Integer deleteClass(Long id,String grade,String Class1); + + Integer insertClassByStudentList(List studentList1, String grade, String Class1); + + int updateClass1(Class1 class1); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java index c53370f..39887cc 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/IMessageService.java @@ -1,5 +1,7 @@ package com.ruoyi.test.seriver; +import com.ruoyi.test.domain.DO.MessageDO; +import com.ruoyi.test.domain.DO.MessageDO1; import com.ruoyi.test.domain.Message; import com.ruoyi.test.domain.Vo.MessageVo; @@ -12,4 +14,10 @@ public interface IMessageService { List selectById(Long id); Integer updateMessage(Long id); + + List selectMessage(); + + int deleteMessage(Long id); + + int addMessage(MessageDO1 messageDO1); } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/Class1ServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/Class1ServiceImpl.java index 1ff0584..d03ad45 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/Class1ServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/Class1ServiceImpl.java @@ -2,13 +2,22 @@ package com.ruoyi.test.seriver.Impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.impl.SysUserServiceImpl; import com.ruoyi.test.domain.Class1; +import com.ruoyi.test.domain.DO.StudentDO; +import com.ruoyi.test.domain.StudentClass; import com.ruoyi.test.mapper.Class1Mapper; +import com.ruoyi.test.mapper.StudentClassMapper; import com.ruoyi.test.seriver.IClass1Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; @Service public class Class1ServiceImpl extends ServiceImpl implements IClass1Service { @@ -16,6 +25,12 @@ public class Class1ServiceImpl extends ServiceImpl impleme @Autowired private Class1Mapper class1Mapper; + @Autowired + private StudentClassMapper studentClassMapper; + + @Autowired + private ISysUserService iSysUserService; + @Override public Class1 classList(String grade, String Class) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -37,7 +52,56 @@ public class Class1ServiceImpl extends ServiceImpl impleme } @Override - public int addclass1(String name, String grade, String Class1) { - return class1Mapper.addclass1(name,grade,Class1); + public int addclass1(String name, String grade, String Class1, String command) { + return class1Mapper.addclass1(name,grade,Class1,command); + } + + @Override + public List selectClass1(String name, String grade) { + System.out.println("name:"+name+" grade:"+grade); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (grade != null) { + queryWrapper.eq(Class1::getGrade, grade); + } + if (name != null) { + queryWrapper.like(Class1::getName, name); + } + System.out.println("========="+class1Mapper.selectList(queryWrapper)); + return class1Mapper.selectList(queryWrapper); + } + + @Override + public List studentListByGradeAndClass1(String grade, String Class1) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StudentClass::getGrade,grade) + .eq(StudentClass::getClass1,Class1); + List list = studentClassMapper.selectList(queryWrapper) + .stream() + .map(StudentClass::getStudentid) + .collect(Collectors.toList()); + List studentDOList = new ArrayList<>(); + for (Long aLong : list){ + SysUser sysUser = iSysUserService.selectUserById(aLong); + studentDOList.add(new StudentDO(sysUser.getUserId(),sysUser.getUserName())); + } + return studentDOList; + } + + @Override + public Integer deleteClass(Long id, String grade, String Class1) { + return class1Mapper.deleteStudentClass(id,grade,Class1); + } + + @Override + public Integer insertClassByStudentList(List studentList1, String grade, String Class1) { + for(Long aLong : studentList1){ + studentClassMapper.insertClassByStudentList(aLong,grade,Class1); + } + return 1; + } + + @Override + public int updateClass1(Class1 class1) { + return class1Mapper.updateClass1(class1); } } 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 a24483d..eac31da 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 @@ -2,7 +2,10 @@ package com.ruoyi.test.seriver.Impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.test.domain.DO.MessageDO; +import com.ruoyi.test.domain.DO.MessageDO1; import com.ruoyi.test.domain.Message; import com.ruoyi.test.domain.Vo.MessageVo; import com.ruoyi.test.mapper.MessageMapper; @@ -11,6 +14,10 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; @Service @@ -47,5 +54,45 @@ public class MessageServiceImpl extends ServiceImpl impl return messageMapper.updateMessage(id); } + @Override + public List selectMessage() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + List list = messageMapper.selectList(queryWrapper); + List list1 = new ArrayList<>(); + for(Message message : list){ + MessageDO messageDO = new MessageDO(); + BeanUtils.copyProperties(message,messageDO); + LocalDateTime createtime = message.getCreatetime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String formattedDateTime = createtime.format(formatter); + messageDO.setCreatetime(formattedDateTime); + Long teacherId = message.getTeacherId(); + SysUser sysUser = iSysUserService.selectUserById(teacherId); + messageDO.setTeacherName(sysUser.getUserName()); + Long studentId = message.getStudentId(); + SysUser sysUser1 = iSysUserService.selectUserById(studentId); + messageDO.setStudentName(sysUser1.getUserName()); + list1.add(messageDO); + } + return list1; + } + + @Override + public int deleteMessage(Long id) { + return messageMapper.deleteMessage(id); + } + + @Override + public int addMessage(MessageDO1 messageDO1) { + for(Long studentId : messageDO1.getList()){ + Message message = new Message(); + message.setStudentId(studentId); + message.setTeacherId(messageDO1.getId()); + message.setSource(messageDO1.getSource()); + messageMapper.addMessage(message); + } + return 1; + } + } diff --git a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/QuestionTypeServiceImpl.java b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/QuestionTypeServiceImpl.java index 49a1f33..0409703 100644 --- a/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/QuestionTypeServiceImpl.java +++ b/ruoyi-test/src/main/java/com/ruoyi/test/seriver/Impl/QuestionTypeServiceImpl.java @@ -16,9 +16,6 @@ public class QuestionTypeServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(QuestionType::getId,id); return questionTypeMapper.selectOne(queryWrapper).getType(); diff --git a/ruoyi-test/src/main/resources/mapper/Class1Mapper.xml b/ruoyi-test/src/main/resources/mapper/Class1Mapper.xml index f23d5ae..67ea398 100644 --- a/ruoyi-test/src/main/resources/mapper/Class1Mapper.xml +++ b/ruoyi-test/src/main/resources/mapper/Class1Mapper.xml @@ -11,15 +11,18 @@ grade, Class1, num, + command, createtime )values ( #{name}, #{grade}, #{Class1}, 0, + #{command}, Now() ) + diff --git a/ruoyi-test/src/main/resources/mapper/StudentClassMapper.xml b/ruoyi-test/src/main/resources/mapper/StudentClassMapper.xml index e157751..66e886e 100644 --- a/ruoyi-test/src/main/resources/mapper/StudentClassMapper.xml +++ b/ruoyi-test/src/main/resources/mapper/StudentClassMapper.xml @@ -4,4 +4,13 @@ + + + + + + diff --git a/vue2/vue/src/components/Login.vue b/vue2/vue/src/components/Login.vue index 598af0a..05ffa29 100644 --- a/vue2/vue/src/components/Login.vue +++ b/vue2/vue/src/components/Login.vue @@ -76,30 +76,28 @@ export default { }); if (response.data.code === 200) { - const res = await axios.get('http://localhost:8080/getInfo',{ method: 'GET', headers: { '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; - this.$store.dispatch('setToken', { userId, token }); + await this.$store.dispatch('setToken', {userId, token}); if(res.data.roles[0] === 'student'){ - this.$router.push({ + await this.$router.push({ path: '/user/profile', - query: { userId: userId } + query: {userId: userId} }); }else if(res.data.roles[0] === 'teacher'){ - this.$router.push({ + await this.$router.push({ path: '/teacher/homePage', - query: { userId: userId } + query: {userId: userId} }); }else if(res.data.roles[0] === 'gl'){ - this.$router.push({ + await this.$router.push({ path: '/gl/userCenter', query: {userId: userId} }); diff --git a/vue2/vue/src/components/Student/Header.vue b/vue2/vue/src/components/Student/Header.vue index d9c08c5..6cdc6aa 100644 --- a/vue2/vue/src/components/Student/Header.vue +++ b/vue2/vue/src/components/Student/Header.vue @@ -20,7 +20,7 @@
- 退出 + 退出
@@ -42,6 +42,7 @@ export default { }, created() { this.userId = this.$route.query.userId; + console.log('userId:', this.userId); this.sss(); }, methods: { @@ -59,7 +60,7 @@ export default { 'Content-Type': 'application/json', }, }) - console.log(response); + console.log("====="+this.userId); await this.$store.dispatch("clearToken", this.userId); // 调用 Vuex 登出逻辑 this.$message.success("退出成功!"); await this.$router.push("/login"); // 跳转到登录页面 diff --git a/vue2/vue/src/components/Teacher/Header.vue b/vue2/vue/src/components/Teacher/Header.vue index 6a3e562..1d6554c 100644 --- a/vue2/vue/src/components/Teacher/Header.vue +++ b/vue2/vue/src/components/Teacher/Header.vue @@ -4,7 +4,7 @@
- 退出 + 退出
diff --git a/vue2/vue/src/components/gl/Aside.vue b/vue2/vue/src/components/gl/Aside.vue index 5c0174c..dbbbbef 100644 --- a/vue2/vue/src/components/gl/Aside.vue +++ b/vue2/vue/src/components/gl/Aside.vue @@ -12,15 +12,20 @@ 在线考试管理端 - - - 主页 - - 用户中心 + + + + 班级管理 + + + + + 消息中心 + diff --git a/vue2/vue/src/components/gl/Header.vue b/vue2/vue/src/components/gl/Header.vue index 6a3e562..1d6554c 100644 --- a/vue2/vue/src/components/gl/Header.vue +++ b/vue2/vue/src/components/gl/Header.vue @@ -4,7 +4,7 @@
- 退出 + 退出
diff --git a/vue2/vue/src/router/index.js b/vue2/vue/src/router/index.js index e625c21..1208658 100644 --- a/vue2/vue/src/router/index.js +++ b/vue2/vue/src/router/index.js @@ -8,6 +8,18 @@ import store from '../store'; // 引入 Vuex store Vue.use(VueRouter); const routes = [ + { + path:'/gl/messageCenter', + name:'MessageCenter', + component: () => import(/* webpackChunkName: "about" */ '../views/gl/MessageCenter.vue'), + meta: { requiresAuth: true } + }, + { + path:'/gl/classManage', + name:'ClassManage', + component: () => import(/* webpackChunkName: "about" */ '../views/gl/ClassManage.vue'), + meta: { requiresAuth: true } + }, { path:'/gl/userCenter', name:'UserCenter', @@ -95,15 +107,14 @@ const routes = [ path: '/login', component: Login }, + { + path: '/', + redirect: '/login', // 默认重定向到 /login + }, { path: '/register', component: Register }, - { - path: '/homeView', - name: 'HomeView', - component: () => import(/* webpackChunkName: "about" */ '../views/HomeView.vue') - } ]; const router = new VueRouter({ diff --git a/vue2/vue/src/store.js b/vue2/vue/src/store.js index dbd211a..01568e9 100644 --- a/vue2/vue/src/store.js +++ b/vue2/vue/src/store.js @@ -16,7 +16,12 @@ export default new Vuex.Store({ }, // 清除指定 userId 的 token clearToken(state, userId) { - Vue.delete(state.tokens, userId); // 删除指定 userId 的 token + // 先删除指定的 token + console.log('clearToken', userId); + console.log('state.tokens', state.tokens); + const newTokens = { ...state.tokens }; // 创建 state.tokens 的副本 + delete newTokens[userId]; // 删除副本中的指定 token + state.tokens = newTokens; // 更新 state.tokens 为新的副本 localStorage.setItem('tokens', JSON.stringify(state.tokens)); // 更新 localStorage }, // 清除所有用户的 token @@ -25,6 +30,7 @@ export default new Vuex.Store({ localStorage.removeItem('tokens'); // 清除 localStorage 中的 tokens }, }, + actions: { // 设置指定 userId 的 token setToken({ commit }, { userId, token }) { diff --git a/vue2/vue/src/views/Teacher/HomePage.vue b/vue2/vue/src/views/Teacher/HomePage.vue index 7ccbd54..66254e7 100644 --- a/vue2/vue/src/views/Teacher/HomePage.vue +++ b/vue2/vue/src/views/Teacher/HomePage.vue @@ -100,9 +100,10 @@ export default { async fetchSummaryData() { try { const token = this.$store.state.tokens[this.userId]; + console.log('token:', token); if (!token) { alert("用户未登录,请重新登录!"); - this.$router.push("/login"); + await this.$router.push("/login"); return; } const response = await axios.get('http://localhost:8080/teacher/homepage/homepagesuju', { @@ -140,7 +141,7 @@ export default { this.initCharts(); // 数据更新后重新初始化图表 } catch (error) { - console.error('获取数据失败', error); + this.$message.error('获取数据失败'); } }, diff --git a/vue2/vue/src/views/gl/ClassManage.vue b/vue2/vue/src/views/gl/ClassManage.vue new file mode 100644 index 0000000..b825ddb --- /dev/null +++ b/vue2/vue/src/views/gl/ClassManage.vue @@ -0,0 +1,507 @@ + + + + + + \ No newline at end of file diff --git a/vue2/vue/src/views/gl/MessageCenter.vue b/vue2/vue/src/views/gl/MessageCenter.vue new file mode 100644 index 0000000..fb6e03e --- /dev/null +++ b/vue2/vue/src/views/gl/MessageCenter.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/vue2/vue/src/views/gl/UserCenter.vue b/vue2/vue/src/views/gl/UserCenter.vue index 373f7b2..e2ba533 100644 --- a/vue2/vue/src/views/gl/UserCenter.vue +++ b/vue2/vue/src/views/gl/UserCenter.vue @@ -16,7 +16,6 @@ - @@ -37,33 +36,47 @@ - + - - - - - {{ selectedUser.id }} + + + + + {{ selectedUser.userId || '暂无数据' }} - - {{ selectedUser.name }} + + + {{ selectedUser.userName || '暂无数据' }} + + + + {{ selectedUser.nickName || '暂无数据' }} - - {{ selectedUser.email }} + + + {{ selectedUser.sex === null || selectedUser.sex === undefined ? '暂无数据' : (selectedUser.sex === 0 ? '女' : '男') }} - - {{ selectedUser.role }} + + + {{ selectedUser.email || '暂无数据' }} + + + + {{ selectedUser.phonenumber || '暂无数据' }} + + @@ -73,6 +86,7 @@ import Header from "@/components/gl/Header.vue"; import Aside from "@/components/gl/Aside.vue"; import axios from "axios"; +import { MessageBox } from 'element-ui'; // 导入 MessageBox export default { name: "UserCenter", @@ -112,7 +126,7 @@ export default { const token = this.$store.state.tokens[this.userId]; if (!token) { alert("用户未登录,请重新登录!"); - this.$router.push("/login"); + await this.$router.push("/login"); return false; } const response = await axios.get("http://localhost:8080/system/role/selectUserByRoleKey", { @@ -125,7 +139,6 @@ export default { }, }); this.userList = response.data; - console.log(response); } catch (error) { console.error("接口获取失败:", error); this.$message.error("接口请求异常"); @@ -139,6 +152,50 @@ export default { refreshData() { this.fetchUserList(); // 重新加载数据 }, + confirmKickOut(user) { + MessageBox.confirm( + `是否确定强退名称为 ${user.userName} 的账号?`, // 确认消息内容 + '警告', // 对话框标题 + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', // 设置警告类型 + } + ).then(() => { + // 如果用户确认,执行强退操作 + this.kickOutUser(user); + }).catch(() => { + // 如果用户取消了,打印日志 + console.log("用户取消了强退操作"); + }); + }, + // 您原来的强退用户方法 + async kickOutUser(user) { + // 执行强退用户的逻辑 + try{ + const token = this.$store.state.tokens[this.userId]; + if (!token) { + alert("用户未登录,请重新登录!"); + await this.$router.push("/login"); + return false; + } + const response = await axios.delete(`http://localhost:8080/monitor/online/${user.tokenId}`, { + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + }); + if(response.data.code === 200){ + this.$message.success("强退成功"); + await this.fetchUserList(); + }else{ + this.$message.error("强退失败"); + } + }catch (error){ + this.$message.error("接口异常"); + } + // 这里可以添加 API 调用或其他逻辑来执行真正的强退操作 + }, }, mounted() { this.fetchUserList(); // 页面加载时初始化数据 @@ -150,22 +207,85 @@ export default { + diff --git a/vue2/vue/src/views/user/Profile.vue b/vue2/vue/src/views/user/Profile.vue index e04c8be..3ad17f6 100644 --- a/vue2/vue/src/views/user/Profile.vue +++ b/vue2/vue/src/views/user/Profile.vue @@ -261,7 +261,7 @@ export default { .then(response => { if (response.data.code==200) { this.$message.success("密码更新成功,请重新登录"); - this.$store.dispatch("logout"); // 调用 Vuex 登出逻辑 + this.$store.dispatch("clearToken",this.userId); // 调用 Vuex 登出逻辑 this.$router.push("/login"); // 跳转到登录页面 } else { this.$message.error("密码更新失败");