From 55d2072fa0f8888bfdb42e49190d852c4d8a30ab Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Fri, 16 Aug 2024 16:17:03 +0800
Subject: [PATCH 01/20] =?UTF-8?q?=E6=94=B9=E4=B8=80=E4=B8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 4 ++
.../top/suyiiyii/sims/SimsApplication.java | 2 +-
.../java/top/suyiiyii/sims/VO/UserVO.java | 24 --------
.../sims/controller/UserController.java | 46 ++++++++++----
.../java/top/suyiiyii/sims/dto/UserDto.java | 5 +-
.../suyiiyii/sims/service/UserService.java | 60 +++++++++++++------
6 files changed, 83 insertions(+), 58 deletions(-)
delete mode 100644 src/main/java/top/suyiiyii/sims/VO/UserVO.java
diff --git a/pom.xml b/pom.xml
index 115a8bc..9e79599 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,10 @@
mybatis-plus-ext-spring-boot3-starter
3.5.7-EXT691
+
+ org.springframework.session
+ spring-session-core
+
com.mysql
mysql-connector-j
diff --git a/src/main/java/top/suyiiyii/sims/SimsApplication.java b/src/main/java/top/suyiiyii/sims/SimsApplication.java
index 8dba06d..5c714c9 100644
--- a/src/main/java/top/suyiiyii/sims/SimsApplication.java
+++ b/src/main/java/top/suyiiyii/sims/SimsApplication.java
@@ -4,7 +4,7 @@ import com.tangzc.autotable.springboot.EnableAutoTable;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-@EnableAutoTable
+/*@EnableAutoTable*/
@SpringBootApplication
public class SimsApplication {
public static void main(String[] args) {
diff --git a/src/main/java/top/suyiiyii/sims/VO/UserVO.java b/src/main/java/top/suyiiyii/sims/VO/UserVO.java
deleted file mode 100644
index b465ef8..0000000
--- a/src/main/java/top/suyiiyii/sims/VO/UserVO.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package top.suyiiyii.sims.VO;
-
-import lombok.Data;
-import top.suyiiyii.sims.entity.Role;
-
-import java.util.List;
-
-/**
- * @Author tortoise
- * @Date 2024/8/15 16:04
- * @PackageName:top.suyiiyii.sims.VO
- * @ClassName: UserVO
- * @Description: TODO
- * @Version 1.0
- */
-@Data
-public class UserVO {
- private Integer userId;
- private String username;
- private String grade;
- private String group;
- private List roles; // 角色名称列表
-
-}
diff --git a/src/main/java/top/suyiiyii/sims/controller/UserController.java b/src/main/java/top/suyiiyii/sims/controller/UserController.java
index ce18f52..1e93373 100644
--- a/src/main/java/top/suyiiyii/sims/controller/UserController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/UserController.java
@@ -1,18 +1,25 @@
package top.suyiiyii.sims.controller;
import cn.hutool.core.util.StrUtil;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.session.Session;
+import org.springframework.session.SessionRepository;
import org.springframework.web.bind.annotation.*;
import top.suyiiyii.sims.common.AuthAccess;
import top.suyiiyii.sims.common.Result;
import top.suyiiyii.sims.dto.CommonResponse;
+import top.suyiiyii.sims.dto.UserDto;
import top.suyiiyii.sims.entity.User;
import top.suyiiyii.sims.exception.ServiceException;
import top.suyiiyii.sims.service.RoleService;
import top.suyiiyii.sims.service.UserService;
+import java.util.List;
+
/**
* @Author tortoise
@@ -32,6 +39,9 @@ public class UserController {
@Autowired
RoleService roleService;
+ private SessionRepository sessionRepository;
+
+
@AuthAccess
@GetMapping("/")
public Result hello() {
@@ -41,17 +51,20 @@ public class UserController {
}
@PostMapping("/user/login")
- public Result login(@RequestBody LoginRequest request) {
+ public Result login(@RequestBody LoginRequest request, HttpServletRequest httpServletRequest) {
log.info("login request:{}", request);
if (StrUtil.isBlank(request.getUsername()) || StrUtil.isBlank(request.getPassword())) {
return Result.error("用户名或密码不能为空");
}
-
- User user = userService.login(request.getUsername(), request.getPassword());
-
- return Result.success(new LoginResponse());
+ String token = userService.login(request.getUsername(), request.getPassword());
+ if (token == null) {
+ return Result.error("用户名或密码错误");
+ }
+ LoginResponse response = new LoginResponse();
+ response.setToken(token);
+ return Result.success(response);
}
@PostMapping("/user/register")
@@ -64,8 +77,13 @@ public class UserController {
if (request.getPassword() == null || request.getPassword().length() < 3) {
throw new ServiceException("密码长度不能小于3位");
}
-
- userService.register(new User());
+ User user = new User();
+ user.setUsername(request.getUsername());
+ user.setPassword(request.getPassword());
+ user.setEmail(request.getEmail());
+ user.setGrade(request.getGrade());
+ user.setGroup(request.getGroup());
+ userService.register(user);
return Result.success(CommonResponse.factory("注册成功"));
}
@@ -73,19 +91,23 @@ public class UserController {
@DeleteMapping("/admin/user/{id}")
public Result adminDelete(@PathVariable Integer id) {
log.info("delete request:{}", id);
-// userService.deleteUser(user.getId());
+ userService.deleteUser(id);
return Result.success(CommonResponse.factory("删除成功"));
}
- @GetMapping("/admin/user/{id}")
- public Result adminGetById(@PathVariable Integer id) {
+ @GetMapping("/admin/user")
+ public Result> adminGetById() {
+ List allUsers = userService.findAllUsers();
+ return Result.success(allUsers);
+ }
+ @GetMapping("/user/{id}")
+ public Result GetById(@PathVariable Integer id) {
log.info("selectById request:{}", id);
- User user = userService.selectById(id);
+ UserDto user = userService.findUser(id);
return Result.success(user);
}
-
@Data
public static class RegisterRequest {
private String username;
diff --git a/src/main/java/top/suyiiyii/sims/dto/UserDto.java b/src/main/java/top/suyiiyii/sims/dto/UserDto.java
index 3ad3334..c7a2a1a 100644
--- a/src/main/java/top/suyiiyii/sims/dto/UserDto.java
+++ b/src/main/java/top/suyiiyii/sims/dto/UserDto.java
@@ -14,8 +14,9 @@ import java.util.List;
*/
@Data
public class UserDto {
- private Long userId;
+ private Integer userId;
private String username;
+ private String grade;
+ private String group;
private List roles; // 角色名称列表
- private List permissions; // 权限列表
}
diff --git a/src/main/java/top/suyiiyii/sims/service/UserService.java b/src/main/java/top/suyiiyii/sims/service/UserService.java
index 0dba25d..c5a086d 100644
--- a/src/main/java/top/suyiiyii/sims/service/UserService.java
+++ b/src/main/java/top/suyiiyii/sims/service/UserService.java
@@ -2,10 +2,12 @@ package top.suyiiyii.sims.service;
+import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import top.suyiiyii.sims.VO.UserVO;
+
+import top.suyiiyii.sims.dto.UserDto;
import top.suyiiyii.sims.entity.*;
import top.suyiiyii.sims.exception.ServiceException;
import top.suyiiyii.sims.mapper.PermissionsMapper;
@@ -38,10 +40,6 @@ public class UserService {
userMapper.addUser(user);
}
- public User selectById(int id) {
- return userMapper.selectById(id);
- }
-
public void updateUser(User user) {
userMapper.updateUser(user);
}
@@ -54,7 +52,8 @@ public class UserService {
return userMapper.selectAll();
}
//TODO:返回一个DTO,用户基本信息
- public User login(String username, String password) {
+ public String login(String username, String password) {
+
User dbUser = userMapper.selectByUserName(username);
if (dbUser == null) {
throw new ServiceException("账号不存在");
@@ -78,10 +77,13 @@ public class UserService {
dbUser.setPermissions(permissionsSet);
String token = JwtUtils.createToken(dbUser.getId().toString(), dbUser.getPassword());
- dbUser.setToken(token);
- return dbUser;
+
+
+ return token;
+
}
+
public User register(User user) {
User dbUser = userMapper.selectByUserId(user.getStudentId());
@@ -114,17 +116,17 @@ public class UserService {
public void updatePassword(User user) {
userMapper.updatePassword(user);
}
- public List findAllUsers(){
+ public List findAllUsers(){
List users = userMapper.selectAll();
- List userVOS = new ArrayList<>();
+ List UserDtos = new ArrayList<>();
for (User user : users) {
- UserVO userVO = new UserVO();
- userVO.setUserId(user.getId());
- userVO.setUsername(user.getUsername());
- userVO.setGrade(user.getGrade());
- userVO.setGroup(user.getGroup());
- userVO.setRoles(new ArrayList<>());
+ UserDto UserDto = new UserDto();
+ UserDto.setUserId(user.getId());
+ UserDto.setUsername(user.getUsername());
+ UserDto.setGrade(user.getGrade());
+ UserDto.setGroup(user.getGroup());
+ UserDto.setRoles(new ArrayList<>());
Integer id = user.getId();
List userRoles = roleMapper.selectRolesById(id);
for (UserRole userRole : userRoles) {
@@ -132,11 +134,31 @@ public class UserService {
// 获取一个角色的名称列表
List roleNameList = roleMapper.selectRoleNamesByRoleId(roleId);
// 累加角色名称到用户的角色列表中
- userVO.getRoles().addAll(roleNameList);
+ UserDto.getRoles().addAll(roleNameList);
}
- userVOS.add(userVO);
+ UserDtos.add(UserDto);
}
- return userVOS;
+ return UserDtos;
}
+ public UserDto findUser(Integer id) {
+ UserDto UserDto = new UserDto();
+ User user = userMapper.selectById(id);
+ UserDto.setUserId(user.getId());
+ UserDto.setUsername(user.getUsername());
+ UserDto.setGrade(user.getGrade());
+ UserDto.setGroup(user.getGroup());
+ UserDto.setRoles(new ArrayList<>());
+ List userRoles = roleMapper.selectRolesById(id);
+ for (UserRole userRole : userRoles) {
+ Integer roleId = userRole.getRoleId();
+ // 获取一个角色的名称列表
+ List roleNameList = roleMapper.selectRoleNamesByRoleId(roleId);
+ // 累加角色名称到用户的角色列表中
+ UserDto.getRoles().addAll(roleNameList);
+ }
+
+
+ return UserDto;
+ }
}
From c484bdcf6908ea9a4126aa0ebf1e5dcc32c9fe40 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 16:32:05 +0800
Subject: [PATCH 02/20] =?UTF-8?q?docs(user):=20=E6=B7=BB=E5=8A=A0=E7=94=A8?=
=?UTF-8?q?=E6=88=B7=E6=8E=A5=E5=8F=A3=E7=9A=84=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sims/controller/UserController.java | 25 ++++++++++++-------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/src/main/java/top/suyiiyii/sims/controller/UserController.java b/src/main/java/top/suyiiyii/sims/controller/UserController.java
index 1e93373..5c5c0a4 100644
--- a/src/main/java/top/suyiiyii/sims/controller/UserController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/UserController.java
@@ -1,13 +1,11 @@
package top.suyiiyii.sims.controller;
import cn.hutool.core.util.StrUtil;
+import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpSession;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.session.Session;
-import org.springframework.session.SessionRepository;
import org.springframework.web.bind.annotation.*;
import top.suyiiyii.sims.common.AuthAccess;
import top.suyiiyii.sims.common.Result;
@@ -39,8 +37,6 @@ public class UserController {
@Autowired
RoleService roleService;
- private SessionRepository sessionRepository;
-
@AuthAccess
@GetMapping("/")
@@ -63,7 +59,7 @@ public class UserController {
return Result.error("用户名或密码错误");
}
LoginResponse response = new LoginResponse();
- response.setToken(token);
+ response.setToken(token);
return Result.success(response);
}
@@ -88,6 +84,7 @@ public class UserController {
return Result.success(CommonResponse.factory("注册成功"));
}
+ @Operation(description = "删除单个用户")
@DeleteMapping("/admin/user/{id}")
public Result adminDelete(@PathVariable Integer id) {
log.info("delete request:{}", id);
@@ -95,18 +92,28 @@ public class UserController {
return Result.success(CommonResponse.factory("删除成功"));
}
+ @Operation(description = "获取所有用户信息")
@GetMapping("/admin/user")
- public Result> adminGetById() {
+ public Result> adminGet() {
List allUsers = userService.findAllUsers();
return Result.success(allUsers);
}
- @GetMapping("/user/{id}")
- public Result GetById(@PathVariable Integer id) {
+
+ @Operation(description = "根据 id 获取用户信息")
+ @GetMapping("/admin/user/{id}")
+ public Result adminGetById(@PathVariable Integer id) {
log.info("selectById request:{}", id);
UserDto user = userService.findUser(id);
return Result.success(user);
}
+ @Operation(description = "获取当前用户信息")
+ @GetMapping("/user/me")
+ public Result getSelf() {
+ UserDto user = userService.findUser(0);
+ return Result.success(user);
+ }
+
@Data
public static class RegisterRequest {
From 675c07939e2f070573122222e62678b228be73f3 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 16:33:32 +0800
Subject: [PATCH 03/20] =?UTF-8?q?docs(record):=20=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E5=A5=96=E6=83=A9=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3=E7=9A=84?=
=?UTF-8?q?=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/top/suyiiyii/sims/controller/RecordController.java | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index d0f3914..1e31111 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -1,5 +1,6 @@
package top.suyiiyii.sims.controller;
+import io.swagger.v3.oas.annotations.Operation;
import org.springframework.web.bind.annotation.*;
import top.suyiiyii.sims.common.Result;
import top.suyiiyii.sims.dto.CommonResponse;
@@ -12,22 +13,26 @@ import java.util.List;
public class RecordController {
+ @Operation(summary = "获取所有奖惩记录")
@GetMapping("/admin/record")
public Result> adminRecord(Integer page, Integer size) {
return Result.success(new ArrayList<>());
}
+ @Operation(summary = "获取自己的奖惩记录")
@GetMapping("/record")
public Result> record(Integer page, Integer size) {
return Result.success(new ArrayList<>());
}
+ @Operation(summary = "更新单个奖惩记录")
@PutMapping("/admin/record/{id}")
public Result adminUpdateRecord(@PathVariable Integer id, @RequestBody RecordDto recordDto) {
return Result.msg("修改成功");
}
+ @Operation(summary = "删除单个奖惩记录")
@DeleteMapping("/admin/record/{id}")
public Result adminDeleteRecord(@PathVariable Integer id) {
@@ -35,6 +40,7 @@ public class RecordController {
}
+ @Operation(summary = "添加奖惩记录")
@PostMapping("/admin/record")
public Result adminAddRecord(@RequestBody RecordDto recordDto) {
From 7d016f856291d79f7e9bbcbbb27682ac65401a0c Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 21:25:14 +0800
Subject: [PATCH 04/20] =?UTF-8?q?feat(pre-commit):=E9=9B=86=E6=88=90pre-co?=
=?UTF-8?q?mmit-hooks=E5=92=8Cpre-commit-java=E4=BB=A5=E6=8F=90=E5=8D=87?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增检查工具集成,包括pre-commit-hooks v2.3.0和pre-commit-java v0.5.4,以自动化代码样式和质量验证。这些工具将帮助检测并修正yaml格式问题、修复文件末尾换行、修剪尾随空格,并执行Java代码的静态分析和风格检查,排除测试目录。
---
.pre-commit-config.yaml | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 .pre-commit-config.yaml
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..23fb352
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,17 @@
+repos:
+
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v2.3.0
+ hooks:
+ - id: check-yaml
+ - id: end-of-file-fixer
+ - id: trailing-whitespace
+ - repo: https://github.com/gherynos/pre-commit-java
+ rev: v0.5.4
+ hooks:
+ - id: pmd
+ exclude: /test/
+ - id: cpd
+ exclude: /test/
+ - id: checkstyle
+ exclude: /test/
\ No newline at end of file
From 645789254d12976e9ca2906384067815e83b2399 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 21:39:56 +0800
Subject: [PATCH 05/20] =?UTF-8?q?feat(pre-commit):=20=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E9=A2=9D=E5=A4=96=E7=9A=84hooks=E5=92=8Cshebangs=E6=A3=80?=
=?UTF-8?q?=E6=9F=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加了检查文件夹大小写冲突、合并冲突和可执行文件shebangs的预提交hooks。这确保了提交的文件在所有平台上都能正常工作,并遵循项目的编码风格。此外,实现了对可执行文件的shebangs进行自动修复的支持。
---
.pre-commit-config.yaml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 23fb352..8707a91 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -6,12 +6,14 @@ repos:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
+ - id: check-case-conflict
+ - id: check-merge-conflict
+ - id: check-executables-have-shebangs
+ args:
+ - --autofix
- repo: https://github.com/gherynos/pre-commit-java
rev: v0.5.4
hooks:
- id: pmd
- exclude: /test/
- id: cpd
- exclude: /test/
- id: checkstyle
- exclude: /test/
\ No newline at end of file
From e9bbc1e2744a0a738b9d470f7da8c63e25c1bddd Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 22:47:45 +0800
Subject: [PATCH 06/20] =?UTF-8?q?refactor(user):=20=E6=9B=B4=E6=94=B9?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E7=BB=84=E5=AD=97=E6=AE=B5=E5=B9=B6=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=E5=85=B3=E8=81=94=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
用户实体的group字段已被重命名为userGroup,以提高清晰度。此外,与用户组相关的逻辑已从UserService和UserController中更新,以适应这一变化。用户权限集合的处理逻辑也被移除。
---
.../top/suyiiyii/sims/controller/UserController.java | 2 +-
src/main/java/top/suyiiyii/sims/entity/User.java | 9 +--------
src/main/java/top/suyiiyii/sims/service/UserService.java | 8 +++-----
3 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/src/main/java/top/suyiiyii/sims/controller/UserController.java b/src/main/java/top/suyiiyii/sims/controller/UserController.java
index 5c5c0a4..c9e0362 100644
--- a/src/main/java/top/suyiiyii/sims/controller/UserController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/UserController.java
@@ -78,7 +78,7 @@ public class UserController {
user.setPassword(request.getPassword());
user.setEmail(request.getEmail());
user.setGrade(request.getGrade());
- user.setGroup(request.getGroup());
+ user.setUserGroup(request.getGroup());
userService.register(user);
return Result.success(CommonResponse.factory("注册成功"));
diff --git a/src/main/java/top/suyiiyii/sims/entity/User.java b/src/main/java/top/suyiiyii/sims/entity/User.java
index 6606503..d7bed55 100644
--- a/src/main/java/top/suyiiyii/sims/entity/User.java
+++ b/src/main/java/top/suyiiyii/sims/entity/User.java
@@ -1,14 +1,11 @@
package top.suyiiyii.sims.entity;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.Set;
-
/**
* @Author tortoise
* @Date 2024/8/9 14:02
@@ -29,9 +26,5 @@ public class User {
private String password;
private String email;
private String grade;
- private String group;
- @TableField(exist = false)
- private String token;
- @TableField(exist = false)
- private Set permissions;
+ private String userGroup;
}
diff --git a/src/main/java/top/suyiiyii/sims/service/UserService.java b/src/main/java/top/suyiiyii/sims/service/UserService.java
index c5a086d..fcaabc3 100644
--- a/src/main/java/top/suyiiyii/sims/service/UserService.java
+++ b/src/main/java/top/suyiiyii/sims/service/UserService.java
@@ -2,7 +2,6 @@ package top.suyiiyii.sims.service;
-import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -74,7 +73,6 @@ public class UserService {
permissionsSet.add(permissions);
}
}
- dbUser.setPermissions(permissionsSet);
String token = JwtUtils.createToken(dbUser.getId().toString(), dbUser.getPassword());
@@ -103,7 +101,7 @@ public class UserService {
if (user.getEmail() == null || user.getEmail().equals("")) {
throw new ServiceException("邮箱不能为空");
}
- if (user.getGroup() == null || user.getGroup().equals("")) {
+ if (user.getUserGroup() == null || user.getUserGroup().equals("")) {
throw new ServiceException("组别不能为空");
}
@@ -125,7 +123,7 @@ public class UserService {
UserDto.setUserId(user.getId());
UserDto.setUsername(user.getUsername());
UserDto.setGrade(user.getGrade());
- UserDto.setGroup(user.getGroup());
+ UserDto.setGroup(user.getUserGroup());
UserDto.setRoles(new ArrayList<>());
Integer id = user.getId();
List userRoles = roleMapper.selectRolesById(id);
@@ -147,7 +145,7 @@ public class UserService {
UserDto.setUserId(user.getId());
UserDto.setUsername(user.getUsername());
UserDto.setGrade(user.getGrade());
- UserDto.setGroup(user.getGroup());
+ UserDto.setGroup(user.getUserGroup());
UserDto.setRoles(new ArrayList<>());
List userRoles = roleMapper.selectRolesById(id);
for (UserRole userRole : userRoles) {
From a8f39e2b0cf99155e530991aec42e52f1b25ca96 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 22:51:06 +0800
Subject: [PATCH 07/20] =?UTF-8?q?feat(mapper):=20=E6=B7=BB=E5=8A=A0=20MpUs?=
=?UTF-8?q?erMapper=20=E5=8F=8A=E7=94=A8=E6=88=B7=E6=8F=92=E5=85=A5?=
=?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增 MpUserMapper 接口,扩展自 Mybatis Plus 的 BaseMapper,用于 User 实体的数据库操作。在 UserMapperTest 中添加 testAddUser 方法以验证用户插入功能,使用 SQLite 数据库进行单元测试。
---
.github/workflows/maven.yml | 3 +-
.gitignore | 1 +
pom.xml | 5 +++
.../top/suyiiyii/sims/SimsApplication.java | 4 ++-
.../suyiiyii/sims/mapper/MpUserMapper.java | 7 ++++
src/main/resources/application-test.yaml | 8 +++++
.../suyiiyii/sims/mapper/UserMapperTest.java | 33 +++++++++++++++++++
7 files changed, 59 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/top/suyiiyii/sims/mapper/MpUserMapper.java
create mode 100644 src/main/resources/application-test.yaml
create mode 100644 src/test/java/top/suyiiyii/sims/mapper/UserMapperTest.java
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 6e02720..c2c04d7 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -21,6 +21,7 @@ jobs:
steps:
- uses: actions/checkout@v4
+ - run: rm -rf test.db
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
@@ -28,7 +29,7 @@ jobs:
distribution: 'temurin'
cache: maven
- name: Build with Maven
- run: mvn -B package -DskipTests --file pom.xml
+ run: mvn -B package --file pom.xml
# Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
# - name: Update dependency graph
diff --git a/.gitignore b/.gitignore
index df127dd..7f9912b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@ build/
### VS Code ###
.vscode/
/src/main/resources/application.yaml
+/test.db
diff --git a/pom.xml b/pom.xml
index 9e79599..160087f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,6 +95,11 @@
springdoc-openapi-starter-webmvc-ui
2.3.0
+
+ org.xerial
+ sqlite-jdbc
+ test
+
diff --git a/src/main/java/top/suyiiyii/sims/SimsApplication.java b/src/main/java/top/suyiiyii/sims/SimsApplication.java
index 5c714c9..adbe2d4 100644
--- a/src/main/java/top/suyiiyii/sims/SimsApplication.java
+++ b/src/main/java/top/suyiiyii/sims/SimsApplication.java
@@ -1,11 +1,13 @@
package top.suyiiyii.sims;
import com.tangzc.autotable.springboot.EnableAutoTable;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-/*@EnableAutoTable*/
+@EnableAutoTable
@SpringBootApplication
+@MapperScan("top.suyiiyii.sims.mapper")
public class SimsApplication {
public static void main(String[] args) {
SpringApplication.run(SimsApplication.class, args);
diff --git a/src/main/java/top/suyiiyii/sims/mapper/MpUserMapper.java b/src/main/java/top/suyiiyii/sims/mapper/MpUserMapper.java
new file mode 100644
index 0000000..651b14e
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/mapper/MpUserMapper.java
@@ -0,0 +1,7 @@
+package top.suyiiyii.sims.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import top.suyiiyii.sims.entity.User;
+
+public interface MpUserMapper extends BaseMapper {
+}
diff --git a/src/main/resources/application-test.yaml b/src/main/resources/application-test.yaml
new file mode 100644
index 0000000..b73be74
--- /dev/null
+++ b/src/main/resources/application-test.yaml
@@ -0,0 +1,8 @@
+spring:
+ datasource:
+ url: jdbc:sqlite:test.db:testdb?cache=shared
+ driver-class-name: org.sqlite.JDBC
+ username:
+ password:
+
+
diff --git a/src/test/java/top/suyiiyii/sims/mapper/UserMapperTest.java b/src/test/java/top/suyiiyii/sims/mapper/UserMapperTest.java
new file mode 100644
index 0000000..bb51181
--- /dev/null
+++ b/src/test/java/top/suyiiyii/sims/mapper/UserMapperTest.java
@@ -0,0 +1,33 @@
+package top.suyiiyii.sims.mapper;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import top.suyiiyii.sims.entity.User;
+
+@SpringBootTest
+@ActiveProfiles("test")
+public class UserMapperTest {
+
+ @Autowired
+ private MpUserMapper userMapper;
+
+ @Test
+ public void testAddUser() {
+ User user = new User();
+ user.setStudentId(1);
+ user.setUsername("test");
+ user.setPassword("test");
+ user.setEmail("test");
+ user.setGrade("test");
+ user.setUserGroup("test");
+
+
+
+ int result = userMapper.insert(user);
+ Assertions.assertEquals(1, result);
+ }
+
+}
\ No newline at end of file
From 66de1d0ce4424ff45e7f3063d8cf1c99bf5634b8 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Fri, 16 Aug 2024 23:00:54 +0800
Subject: [PATCH 08/20] =?UTF-8?q?test(dependencies):=20=E5=B0=86sqlite-jdb?=
=?UTF-8?q?c=E4=BE=9D=E8=B5=96=E7=9A=84=E4=BD=9C=E7=94=A8=E8=8C=83?=
=?UTF-8?q?=E5=9B=B4=E6=9B=B4=E6=94=B9=E4=B8=BA=E8=BF=90=E8=A1=8C=E6=97=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 1 -
1 file changed, 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 160087f..df3c1ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,7 +98,6 @@
org.xerial
sqlite-jdbc
- test
From d7dc2563531db3b39207131072330665fae10510 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Sat, 17 Aug 2024 00:50:30 +0800
Subject: [PATCH 09/20] =?UTF-8?q?Revert=20"test(dependencies):=20=E5=B0=86?=
=?UTF-8?q?sqlite-jdbc=E4=BE=9D=E8=B5=96=E7=9A=84=E4=BD=9C=E7=94=A8?=
=?UTF-8?q?=E8=8C=83=E5=9B=B4=E6=9B=B4=E6=94=B9=E4=B8=BA=E8=BF=90=E8=A1=8C?=
=?UTF-8?q?=E6=97=B6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 66de1d0ce4424ff45e7f3063d8cf1c99bf5634b8.
---
pom.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/pom.xml b/pom.xml
index df3c1ea..160087f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,6 +98,7 @@
org.xerial
sqlite-jdbc
+ test
From 07d2aa00b08c31a7510eb707f55fb870fdc004c7 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Sat, 17 Aug 2024 00:55:26 +0800
Subject: [PATCH 10/20] =?UTF-8?q?refactor(gitignore):=20=E4=BB=8E.gitignor?=
=?UTF-8?q?e=E4=B8=AD=E7=A7=BB=E9=99=A4application.yaml=E7=A7=BB=E9=99=A4`?=
=?UTF-8?q?src/main/resources/application.yaml`=E6=96=87=E4=BB=B6=E7=9A=84?=
=?UTF-8?q?.gitignore=E6=9D=A1=E7=9B=AE=EF=BC=8C=E4=BB=A5=E4=BE=BF?=
=?UTF-8?q?=E5=B0=86=E5=85=B6=E5=8C=85=E5=90=AB=E5=9C=A8=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=B8=AD=E3=80=82=E6=AD=A4=E5=A4=96=EF=BC=8C?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E`src/main/resources/application-prod.yaml`?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84.gitignore=E6=9D=A1=E7=9B=AE?=
=?UTF-8?q?=EF=BC=8C=E4=BB=A5=E4=BF=9D=E6=8C=81=E7=8E=AF=E5=A2=83=E7=89=B9?=
=?UTF-8?q?=E5=AE=9A=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=B8=8D=E5=8F=97?=
=?UTF-8?q?=E7=89=88=E6=9C=AC=E6=8E=A7=E5=88=B6=E7=9A=84=E5=BD=B1=E5=93=8D?=
=?UTF-8?q?=E3=80=82=E5=90=8C=E6=97=B6=EF=BC=8C=E8=B0=83=E6=95=B4=E4=BA=86?=
=?UTF-8?q?`SimsApplication`=E7=B1=BB=E4=BB=A5=E5=BC=95=E5=85=A5`@Profile`?=
=?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=B8=BA=E4=B8=8D=E5=90=8C=E7=9A=84?=
=?UTF-8?q?=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=81=9A?=
=?UTF-8?q?=E5=A5=BD=E5=87=86=E5=A4=87=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 2 +-
src/main/resources/application.yaml | 14 ++++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
create mode 100644 src/main/resources/application.yaml
diff --git a/.gitignore b/.gitignore
index 7f9912b..0d33ed4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,5 +31,5 @@ build/
### VS Code ###
.vscode/
-/src/main/resources/application.yaml
/test.db
+/src/main/resources/application-prod.yaml
diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml
new file mode 100644
index 0000000..2b0fca7
--- /dev/null
+++ b/src/main/resources/application.yaml
@@ -0,0 +1,14 @@
+# datasource
+spring:
+ profiles:
+ active: prod
+ datasource:
+ url: ${DATASOURCE_URL}
+ username: ${DATASOURCE_USERNAME}
+ password: ${DATASOURCE_PASSWORD}
+ driver-class-name: ${DATASOURCE_DRIVER_CLASS_NAME}
+
+
+auto-table:
+ enable: true
+ model-package: top.suyiiyii.sims.entity
\ No newline at end of file
From a74b72404529271b42ea6c0565912038df8837ba Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Sat, 17 Aug 2024 01:13:36 +0800
Subject: [PATCH 11/20] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=89=80=E6=9C=89?=
=?UTF-8?q?=E5=A5=96=E6=83=A9=E8=AE=B0=E5=BD=95,=E6=94=B9=E4=BA=86userMapp?=
=?UTF-8?q?er=E9=87=8C=E9=9D=A2=E4=B8=80=E4=B8=AA=E9=94=99=E7=9A=84?=
=?UTF-8?q?=E5=91=BD=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sims/controller/RecordController.java | 62 ++++++++++++++++++-
.../java/top/suyiiyii/sims/dto/RecordDto.java | 21 +++++--
.../java/top/suyiiyii/sims/entity/Record.java | 7 +--
.../suyiiyii/sims/mapper/CategoryMapper.java | 22 +++++++
.../suyiiyii/sims/mapper/RecordMapper.java | 24 +++++++
.../top/suyiiyii/sims/mapper/RoleMapper.java | 2 +-
.../top/suyiiyii/sims/mapper/UserMapper.java | 2 +-
.../sims/service/CategoryService.java | 28 +++++++++
.../suyiiyii/sims/service/RecordService.java | 30 +++++++++
.../suyiiyii/sims/service/RoleService.java | 2 +-
.../suyiiyii/sims/service/UserService.java | 18 +++---
11 files changed, 193 insertions(+), 25 deletions(-)
create mode 100644 src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
create mode 100644 src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
create mode 100644 src/main/java/top/suyiiyii/sims/service/CategoryService.java
create mode 100644 src/main/java/top/suyiiyii/sims/service/RecordService.java
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index 1e31111..44fe19f 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -1,22 +1,78 @@
package top.suyiiyii.sims.controller;
import io.swagger.v3.oas.annotations.Operation;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
import org.springframework.web.bind.annotation.*;
import top.suyiiyii.sims.common.Result;
import top.suyiiyii.sims.dto.CommonResponse;
import top.suyiiyii.sims.dto.RecordDto;
+import top.suyiiyii.sims.entity.Record;
+import top.suyiiyii.sims.entity.Role;
+import top.suyiiyii.sims.entity.User;
+import top.suyiiyii.sims.entity.UserRole;
+import top.suyiiyii.sims.mapper.CategoryMapper;
+import top.suyiiyii.sims.mapper.UserMapper;
+import top.suyiiyii.sims.service.CategoryService;
+import top.suyiiyii.sims.service.RecordService;
+import top.suyiiyii.sims.service.RoleService;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@RestController
-public class RecordController {
-
+public class
+RecordController {
+ @Autowired
+ RecordService recordService;
+ @Autowired
+ UserMapper userMapper;
+ @Autowired
+ RoleService roleService;
+ @Autowired
+ CategoryService categoryService;
@Operation(summary = "获取所有奖惩记录")
@GetMapping("/admin/record")
public Result> adminRecord(Integer page, Integer size) {
- return Result.success(new ArrayList<>());
+ List recordDtos=new ArrayList<>();
+ List records = recordService.getAllRecords(page, size);
+ for (Record record : records) {
+ RecordDto recordDto = new RecordDto();
+ Integer studentId=record.getStudentId();
+ recordDto.setStudentId(studentId);
+ User user = userMapper.selectByUserId(studentId);
+ recordDto.setName(user.getUsername());
+ recordDto.setGrade(user.getGrade());
+ recordDto.setGroup(user.getUserGroup());
+ List roles = roleService.selectRolesById(studentId);
+ ArrayList roleName = new ArrayList<>();
+ for (Role role : roles) {
+ roleName.add(role.getRoleName());
+ }
+ recordDto.setRoles(roleName);
+ categoryService.getCategoryName(record.getCategoryId());
+ categoryService.getsubCategoryName(record.getCategoryId());
+ recordDto.setDate(record.getDate());
+ recordDto.setContent(record.getContent());
+ recordDto.setReason(record.getReason());
+ recordDto.setContent(record.getContent());
+ recordDto.setAmount(record.getAmount());
+ recordDto.setRemark(record.getRemark());
+ recordDto.setIsRevoked(record.getIsRevoked());
+ // 撤销日期
+ recordDto.setRevokeDate(record.getRevokeDate());
+ recordDto.setRevokeReason(record.getRevokeReason());
+ recordDto.setRevokeRemark(record.getRevokeRemark());
+ recordDto.setOperatorUserId(record.getOperatorUserId());
+ recordDto.setLastUpdateTime(record.getLastUpdateTime());
+ recordDtos.add(recordDto);
+ }
+
+
+ return Result.success(recordDtos);
}
@Operation(summary = "获取自己的奖惩记录")
diff --git a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java
index d0e4104..1f7a4b3 100644
--- a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java
+++ b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java
@@ -5,18 +5,27 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
+import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RecordDto {
- private Integer id;
+
// 用户ID
- private Integer userId;
- // 奖惩类型
- private String type;
- // 奖惩类别ID
- private Integer categoryId;
+ private Integer studentId;
+
+ private String name;
+
+ private String grade;
+
+ private String group;
+
+ private List roles;
+
+ private String categoryName;
+
+ private String subCategoryName;
// 奖惩日期
private LocalDateTime date;
// 奖惩内容
diff --git a/src/main/java/top/suyiiyii/sims/entity/Record.java b/src/main/java/top/suyiiyii/sims/entity/Record.java
index c6e8d9d..41e1268 100644
--- a/src/main/java/top/suyiiyii/sims/entity/Record.java
+++ b/src/main/java/top/suyiiyii/sims/entity/Record.java
@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* @Author tortoise
* @Date 2024/8/9 14:04
* @PackageName:top.suyiiyii.sims.entity
- * @ClassName: Record
+ * @ClassName: RecordMapper
* @Description: TODO
* @Version 1.0
*/
@@ -24,9 +24,8 @@ public class Record {
@TableId("id")
private Integer id;
// 用户ID
- private Integer userId;
- // 奖惩类型
- private String type;
+ private Integer StudentId;
+
// 奖惩类别ID
private Integer categoryId;
// 奖惩日期
diff --git a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
new file mode 100644
index 0000000..4da7165
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
@@ -0,0 +1,22 @@
+package top.suyiiyii.sims.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/16 23:31
+ * @PackageName:top.suyiiyii.sims.mapper
+ * @ClassName: CategoryMapper
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Mapper
+public interface CategoryMapper {
+ @Select("SELECT * FROM category WHERE categoryId=#{id}")
+ String getCategoryName(Integer categoryId);
+
+ @Select("SELECT categoryName FROM category WHERE categoryId=#{categoryId}")
+
+ String getSubCategoryName(Integer categoryId);
+}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
new file mode 100644
index 0000000..a3d12a4
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
@@ -0,0 +1,24 @@
+package top.suyiiyii.sims.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import top.suyiiyii.sims.dto.RecordDto;
+import top.suyiiyii.sims.entity.Record;
+
+import java.util.List;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/16 21:39
+ * @PackageName:top.suyiiyii.sims.mapper
+ * @ClassName: RecordMapper
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Mapper
+public interface RecordMapper {
+ //分页查询
+@Select("select * from record limit #{page},#{size}")
+ List getAllRecords(Integer page, Integer size);
+}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java
index d22fbfe..fd38bfa 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java
@@ -51,7 +51,7 @@ public interface RoleMapper {
"FROM role " +
"WHERE role_id IN " +
"(SELECT role_id FROM user_role WHERE user_id = #{user_id})")
- List selectRolesById(@Param("user_id") int id);
+ List selectRolesById(@Param("user_id") int id);
@Select("SELECT role_name FROM role WHERE role_id=#{roleId}")
List selectRoleNamesByRoleId(Integer roleId);
diff --git a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
index 8d7746a..d6e956c 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
@@ -49,7 +49,7 @@ public interface UserMapper extends BaseMapper {
/**
* 根据ID查询用户信息
- * @param id 用户ID
+ * @param
* @return 用户对象
*/
@Select("SELECT id, user_id, username, password, name, email, `group` from user WHERE id = #{Id}")
diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java
new file mode 100644
index 0000000..47eee90
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java
@@ -0,0 +1,28 @@
+package top.suyiiyii.sims.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import top.suyiiyii.sims.mapper.CategoryMapper;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/16 23:32
+ * @PackageName:top.suyiiyii.sims.service
+ * @ClassName: CategoryService
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Service
+public class CategoryService {
+ @Autowired
+ CategoryMapper categoryMapper;
+
+
+ public String getCategoryName(Integer id) {
+ return categoryMapper.getCategoryName(id);
+ }
+
+ public String getsubCategoryName(Integer categoryId) {
+ return categoryMapper.getSubCategoryName(categoryId);
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java
new file mode 100644
index 0000000..2dee1e4
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java
@@ -0,0 +1,30 @@
+package top.suyiiyii.sims.service;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import top.suyiiyii.sims.dto.RecordDto;
+import top.suyiiyii.sims.entity.Record;
+import top.suyiiyii.sims.mapper.RecordMapper;
+
+import java.util.List;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/16 21:47
+ * @PackageName:top.suyiiyii.sims.service
+ * @ClassName: RecordService
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Service
+public class RecordService {
+ @Autowired
+ RecordMapper recordMapper;
+
+
+ public List getAllRecords(Integer page, Integer size) {
+
+ return recordMapper.getAllRecords(page, size);
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/service/RoleService.java b/src/main/java/top/suyiiyii/sims/service/RoleService.java
index b8cdd70..6312a04 100644
--- a/src/main/java/top/suyiiyii/sims/service/RoleService.java
+++ b/src/main/java/top/suyiiyii/sims/service/RoleService.java
@@ -41,7 +41,7 @@ public class RoleService {
* @param Id
* @return: java.util.List
*/
- List selectRolesById(int id){
+ public List selectRolesById(int id){
return roleMapper.selectRolesById(id);
}
diff --git a/src/main/java/top/suyiiyii/sims/service/UserService.java b/src/main/java/top/suyiiyii/sims/service/UserService.java
index fcaabc3..26c84f0 100644
--- a/src/main/java/top/suyiiyii/sims/service/UserService.java
+++ b/src/main/java/top/suyiiyii/sims/service/UserService.java
@@ -62,10 +62,10 @@ public class UserService {
}
HashSet permissionsSet = new HashSet<>();
Integer id = dbUser.getId();
- List UserRoles = roleMapper.selectRolesById(id);
- for (UserRole userRole : UserRoles) {
+ List roles = roleMapper.selectRolesById(id);
+ for (Role role : roles) {
//根据roleid找所有permissionId
- List rolePerminsion = permissionsMapper.getRolePerminsionByRoleId(userRole.getRoleId());
+ List rolePerminsion = permissionsMapper.getRolePerminsionByRoleId(role.getRoleId());
for (RolePermission rolePermission : rolePerminsion) {
Integer permissionId = rolePermission.getPermissionId();
//根据permissionId找permission
@@ -126,9 +126,9 @@ public class UserService {
UserDto.setGroup(user.getUserGroup());
UserDto.setRoles(new ArrayList<>());
Integer id = user.getId();
- List userRoles = roleMapper.selectRolesById(id);
- for (UserRole userRole : userRoles) {
- Integer roleId = userRole.getRoleId();
+ List roles = roleMapper.selectRolesById(id);
+ for (Role role : roles) {
+ Integer roleId = role.getRoleId();
// 获取一个角色的名称列表
List roleNameList = roleMapper.selectRoleNamesByRoleId(roleId);
// 累加角色名称到用户的角色列表中
@@ -147,9 +147,9 @@ public class UserService {
UserDto.setGrade(user.getGrade());
UserDto.setGroup(user.getUserGroup());
UserDto.setRoles(new ArrayList<>());
- List userRoles = roleMapper.selectRolesById(id);
- for (UserRole userRole : userRoles) {
- Integer roleId = userRole.getRoleId();
+ List roles = roleMapper.selectRolesById(id);
+ for (Role role : roles) {
+ Integer roleId = role.getRoleId();
// 获取一个角色的名称列表
List roleNameList = roleMapper.selectRoleNamesByRoleId(roleId);
// 累加角色名称到用户的角色列表中
From a91f3dd203460b6818ea3a339d6c031ec3599fab Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Sat, 17 Aug 2024 01:46:33 +0800
Subject: [PATCH 12/20] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B0=8F=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sims/controller/RecordController.java | 12 ++++++++----
src/main/java/top/suyiiyii/sims/dto/UserDto.java | 2 +-
.../top/suyiiyii/sims/mapper/CategoryMapper.java | 4 ++--
.../top/suyiiyii/sims/mapper/UserMapper.java | 16 ++++++++--------
.../top/suyiiyii/sims/service/UserService.java | 12 ++++++++++--
5 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index 44fe19f..9459122 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -17,6 +17,7 @@ import top.suyiiyii.sims.mapper.UserMapper;
import top.suyiiyii.sims.service.CategoryService;
import top.suyiiyii.sims.service.RecordService;
import top.suyiiyii.sims.service.RoleService;
+import top.suyiiyii.sims.service.UserService;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -28,7 +29,7 @@ RecordController {
@Autowired
RecordService recordService;
@Autowired
- UserMapper userMapper;
+ UserService UserService;
@Autowired
RoleService roleService;
@Autowired
@@ -36,18 +37,21 @@ RecordController {
@Operation(summary = "获取所有奖惩记录")
@GetMapping("/admin/record")
- public Result> adminRecord(Integer page, Integer size) {
+ public Result> adminRecord(
+ @RequestParam(defaultValue = "0") int page,
+ @RequestParam(defaultValue = "10") int size) {
List recordDtos=new ArrayList<>();
+
List records = recordService.getAllRecords(page, size);
for (Record record : records) {
RecordDto recordDto = new RecordDto();
Integer studentId=record.getStudentId();
recordDto.setStudentId(studentId);
- User user = userMapper.selectByUserId(studentId);
+ User user = UserService.selectByUserId(studentId);
recordDto.setName(user.getUsername());
recordDto.setGrade(user.getGrade());
recordDto.setGroup(user.getUserGroup());
- List roles = roleService.selectRolesById(studentId);
+ List roles = UserService.selectRolesById(studentId);
ArrayList roleName = new ArrayList<>();
for (Role role : roles) {
roleName.add(role.getRoleName());
diff --git a/src/main/java/top/suyiiyii/sims/dto/UserDto.java b/src/main/java/top/suyiiyii/sims/dto/UserDto.java
index c7a2a1a..403a4c8 100644
--- a/src/main/java/top/suyiiyii/sims/dto/UserDto.java
+++ b/src/main/java/top/suyiiyii/sims/dto/UserDto.java
@@ -17,6 +17,6 @@ public class UserDto {
private Integer userId;
private String username;
private String grade;
- private String group;
+ private String userGroup;
private List roles; // 角色名称列表
}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
index 4da7165..6e83387 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
@@ -13,10 +13,10 @@ import org.apache.ibatis.annotations.Select;
*/
@Mapper
public interface CategoryMapper {
- @Select("SELECT * FROM category WHERE categoryId=#{id}")
+ @Select("SELECT * FROM reward_punishment_category WHERE category_id=#{id}")
String getCategoryName(Integer categoryId);
- @Select("SELECT categoryName FROM category WHERE categoryId=#{categoryId}")
+ @Select("SELECT category_name FROM reward_punishment_category WHERE category_id=#{categoryId}")
String getSubCategoryName(Integer categoryId);
}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
index d6e956c..b04f7e6 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
@@ -22,7 +22,7 @@ public interface UserMapper extends BaseMapper {
* @param user 新用户对象
* @return 影响的行数
*/
- @Insert("insert INTO user (id,user_id, username, password, name, email, `group`) VALUES (#{id},#{userId}, #{username}, #{password}, #{name}, #{email}, #{group})")
+ @Insert("insert INTO user (id,student_id, username, password, name, email, userGroup) VALUES (#{id},#{studentId}, #{username}, #{password}, #{name}, #{email}, #{userGroup})")
int addUser(User user);
/**
@@ -39,11 +39,11 @@ public interface UserMapper extends BaseMapper {
* @return 影响的行数
*/
@Update("UPDATE user SET " +
- "user_id = #{userId}, " +
+ "student_id = #{userId}, " +
"username = #{username}, " +
"name = #{name}, " +
"email = #{email}, " +
- "`group` = #{group} " +
+ "userGroup = #{group} " +
"WHERE id = #{id}")
int updateUser(User user);
@@ -52,21 +52,21 @@ public interface UserMapper extends BaseMapper {
* @param
* @return 用户对象
*/
- @Select("SELECT id, user_id, username, password, name, email, `group` from user WHERE id = #{Id}")
- User selectByUserId(Integer userId);
+ @Select("SELECT id, student_id, username, password, name, email,user_group from user WHERE id = #{id}")
+ User selectByUserId(Integer id);
/**
* 根据iD查询用户信息
* @param
* @return 用户对象
*/
- @Select("SELECT id, user_id, username, password, name, email, `group` from user WHERE id = #{Id}")
- User selectById(Integer Id);
+ @Select("SELECT id, student_id, username, password, name, email,grade, user_group from user WHERE id = #{id}")
+ User selectById(Integer id);
/**
* 查询所有用户信息
* @return 用户列表
*/
- @Select("SELECT id, user_id, username, password, name, email,grade, `group` FROM user")
+ @Select("SELECT id, student_id, username, password, name, email, grade, user_group FROM user")
List selectAll();
@Select("select * from user where username = #{username}")
diff --git a/src/main/java/top/suyiiyii/sims/service/UserService.java b/src/main/java/top/suyiiyii/sims/service/UserService.java
index 26c84f0..f870e76 100644
--- a/src/main/java/top/suyiiyii/sims/service/UserService.java
+++ b/src/main/java/top/suyiiyii/sims/service/UserService.java
@@ -123,7 +123,7 @@ public class UserService {
UserDto.setUserId(user.getId());
UserDto.setUsername(user.getUsername());
UserDto.setGrade(user.getGrade());
- UserDto.setGroup(user.getUserGroup());
+ UserDto.setUserGroup(user.getUserGroup());
UserDto.setRoles(new ArrayList<>());
Integer id = user.getId();
List roles = roleMapper.selectRolesById(id);
@@ -145,7 +145,7 @@ public class UserService {
UserDto.setUserId(user.getId());
UserDto.setUsername(user.getUsername());
UserDto.setGrade(user.getGrade());
- UserDto.setGroup(user.getUserGroup());
+ UserDto.setUserGroup(user.getUserGroup());
UserDto.setRoles(new ArrayList<>());
List roles = roleMapper.selectRolesById(id);
for (Role role : roles) {
@@ -159,4 +159,12 @@ public class UserService {
return UserDto;
}
+
+ public User selectByUserId(Integer studentId) {
+ return userMapper.selectByUserId(studentId);
+ }
+
+ public List selectRolesById(Integer studentId) {
+ return roleMapper.selectRolesById(studentId);
+ }
}
From 7528d960f1e0962a737b730f02339b610fccc6d3 Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Sat, 17 Aug 2024 01:58:41 +0800
Subject: [PATCH 13/20] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B0=8F=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/top/suyiiyii/sims/controller/RecordController.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index 9459122..477f47d 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -49,7 +49,7 @@ RecordController {
recordDto.setStudentId(studentId);
User user = UserService.selectByUserId(studentId);
recordDto.setName(user.getUsername());
- recordDto.setGrade(user.getGrade());
+ recordDto.setGrade(user.getUserGroup());
recordDto.setGroup(user.getUserGroup());
List roles = UserService.selectRolesById(studentId);
ArrayList roleName = new ArrayList<>();
@@ -57,8 +57,8 @@ RecordController {
roleName.add(role.getRoleName());
}
recordDto.setRoles(roleName);
- categoryService.getCategoryName(record.getCategoryId());
- categoryService.getsubCategoryName(record.getCategoryId());
+ recordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId()));
+ recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
recordDto.setDate(record.getDate());
recordDto.setContent(record.getContent());
recordDto.setReason(record.getReason());
From 734960d031cb989ed16da532f6e2a5ea1b833222 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Sat, 17 Aug 2024 02:06:05 +0800
Subject: [PATCH 14/20] =?UTF-8?q?fix(ci):=20=E8=B7=B3=E8=BF=87=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95=E5=B9=B6=E4=BF=AE=E5=A4=8D=E4=BE=9D=E8=B5=96=E5=9B=BE?=
=?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=9C=A8GitHub=20?=
=?UTF-8?q?Actions=E5=B7=A5=E4=BD=9C=E6=B5=81=E4=B8=AD=EF=BC=8CMaven?=
=?UTF-8?q?=E6=89=93=E5=8C=85=E6=AD=A5=E9=AA=A4=E7=8E=B0=E5=9C=A8=E8=B7=B3?=
=?UTF-8?q?=E8=BF=87=E6=B5=8B=E8=AF=95=E4=BB=A5=E5=8A=A0=E5=BF=AB=E6=9E=84?=
=?UTF-8?q?=E5=BB=BA=E9=80=9F=E5=BA=A6=E5=B9=B6=E9=81=BF=E5=85=8D=E4=B8=8D?=
=?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84=E4=BE=9D=E8=B5=96=E3=80=82=E6=AD=A4?=
=?UTF-8?q?=E5=A4=96=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=8A=E4=BC=A0?=
=?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=9B=BE=E7=9A=84=E6=AD=A5=E9=AA=A4=EF=BC=8C?=
=?UTF-8?q?=E4=BB=A5=E7=A1=AE=E4=BF=9D=E5=85=B6=E5=9C=A8=E6=9E=84=E5=BB=BA?=
=?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=B8=AD=E6=AD=A3=E7=A1=AE=E6=89=A7=E8=A1=8C?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/maven.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index c2c04d7..ee4c4c8 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -28,8 +28,10 @@ jobs:
java-version: '17'
distribution: 'temurin'
cache: maven
+ - run: mvn -B test --file pom.xml
- name: Build with Maven
- run: mvn -B package --file pom.xml
+ run: mvn -B package -DskipTests --file pom.xml
+
# Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
# - name: Update dependency graph
From c080be00932a58228db28cbad61bbc9359c594ed Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Sat, 17 Aug 2024 02:28:45 +0800
Subject: [PATCH 15/20] =?UTF-8?q?```javarefactor(maven):=20=E5=B0=86Java?=
=?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E5=88=B021?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
更新CI工作流和pom.xml中的Java版本。此更改包括将GitHub Actions工作流中使用的JDK版本从17更新到21,
以及将pom.xml中定义的Java版本属性从17更新到21,以适应新的Java版本。
```
---
.github/workflows/maven.yml | 4 ++--
pom.xml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index ee4c4c8..0c82c7e 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -22,10 +22,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- run: rm -rf test.db
- - name: Set up JDK 17
+ - name: Set up JDK 21
uses: actions/setup-java@v4
with:
- java-version: '17'
+ java-version: '21'
distribution: 'temurin'
cache: maven
- run: mvn -B test --file pom.xml
diff --git a/pom.xml b/pom.xml
index 160087f..976b8cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
- 17
+ 21
From 6c6ab8475c511b88a7673156d7dfdb6e1d0f7b3f Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Sat, 17 Aug 2024 02:31:18 +0800
Subject: [PATCH 16/20] =?UTF-8?q?Revert=20"```javarefactor(maven):=20?=
=?UTF-8?q?=E5=B0=86Java=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E5=88=B021"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit c080be00932a58228db28cbad61bbc9359c594ed.
---
.github/workflows/maven.yml | 4 ++--
pom.xml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 0c82c7e..ee4c4c8 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -22,10 +22,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- run: rm -rf test.db
- - name: Set up JDK 21
+ - name: Set up JDK 17
uses: actions/setup-java@v4
with:
- java-version: '21'
+ java-version: '17'
distribution: 'temurin'
cache: maven
- run: mvn -B test --file pom.xml
diff --git a/pom.xml b/pom.xml
index 976b8cd..160087f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
- 21
+ 17
From da6057ccab5e12ab99c228813e6c55e1f9137f84 Mon Sep 17 00:00:00 2001
From: suyiiyii
Date: Sat, 17 Aug 2024 02:39:34 +0800
Subject: [PATCH 17/20] =?UTF-8?q?test(sims):=20=E5=88=A0=E9=99=A4=E5=A4=9A?=
=?UTF-8?q?=E4=BD=99=E7=9A=84=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../top/suyiiyii/sims/SimsApplicationTests.java | 13 -------------
1 file changed, 13 deletions(-)
delete mode 100644 src/test/java/top/suyiiyii/sims/SimsApplicationTests.java
diff --git a/src/test/java/top/suyiiyii/sims/SimsApplicationTests.java b/src/test/java/top/suyiiyii/sims/SimsApplicationTests.java
deleted file mode 100644
index e7a4422..0000000
--- a/src/test/java/top/suyiiyii/sims/SimsApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package top.suyiiyii.sims;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class SimsApplicationTests {
-
- @Test
- void contextLoads() {
- }
-
-}
From aa08b363e123c5e7b8b02e3265eb8eb77d350a2d Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Mon, 19 Aug 2024 23:19:51 +0800
Subject: [PATCH 18/20] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E8=87=AA=E5=B7=B1=E7=9A=84=E8=AE=B0=E5=BD=95=E7=9A=84=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sims/common/InterceptorConfig.java | 1 -
.../suyiiyii/sims/common/JwtInterceptor.java | 6 +--
.../sims/controller/RecordController.java | 48 ++++++++++++++++++-
.../suyiiyii/sims/mapper/RecordMapper.java | 3 ++
.../top/suyiiyii/sims/mapper/UserMapper.java | 6 ++-
.../suyiiyii/sims/service/RecordService.java | 11 ++++-
6 files changed, 65 insertions(+), 10 deletions(-)
diff --git a/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java b/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java
index 0505380..ef27746 100644
--- a/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java
+++ b/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java
@@ -22,7 +22,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp
// .excludePathPatterns("/user/login") // 排除不需要验证的路径
// .excludePathPatterns("/user/register")
// .excludePathPatterns("/v3/api-docs/**");
-
super.addInterceptors(registry);
}
diff --git a/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java b/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java
index 9f9fa9a..a946758 100644
--- a/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java
+++ b/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java
@@ -42,10 +42,6 @@ public class JwtInterceptor implements HandlerInterceptor {
return true;
}
}
-
- // request.setAttribute();
- // request.getAttribute()
-
// 执行认证
if (StrUtil.isBlank(token)) {
//权限错误
@@ -65,6 +61,8 @@ public class JwtInterceptor implements HandlerInterceptor {
if (!JwtUtils.verifyToken(token, user.getPassword())) {
throw new ServiceException("401", "请登录");
}
+ // 验证token后,如果一切正常,将token存储到request的属性中
+ request.setAttribute("token", token);
return true;
}
}
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index 477f47d..1f43616 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -1,7 +1,11 @@
package top.suyiiyii.sims.controller;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.exceptions.JWTDecodeException;
+import com.auth0.jwt.interfaces.DecodedJWT;
import io.swagger.v3.oas.annotations.Operation;
+import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -18,6 +22,7 @@ import top.suyiiyii.sims.service.CategoryService;
import top.suyiiyii.sims.service.RecordService;
import top.suyiiyii.sims.service.RoleService;
import top.suyiiyii.sims.service.UserService;
+import top.suyiiyii.sims.utils.JwtUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -81,8 +86,47 @@ RecordController {
@Operation(summary = "获取自己的奖惩记录")
@GetMapping("/record")
- public Result> record(Integer page, Integer size) {
- return Result.success(new ArrayList<>());
+ public Result> record(@RequestParam(defaultValue = "0") int page,
+ @RequestParam(defaultValue = "10") int size,
+ HttpServletRequest request) {
+ String token = request.getHeader("Authorization").replace("Bearer ", "");
+ String userId= JwtUtils.extractUserId(token);
+ List recordDtos=new ArrayList<>();
+
+ List records = recordService.getMyAllRecords(page, size,userId);
+ for (Record record : records) {
+ RecordDto recordDto = new RecordDto();
+ Integer studentId=record.getStudentId();
+ recordDto.setStudentId(studentId);
+ User user = UserService.selectByUserId(studentId);
+ recordDto.setName(user.getUsername());
+ recordDto.setGrade(user.getGrade());
+ recordDto.setGroup(user.getUserGroup());
+ List roles = UserService.selectRolesById(user.getId());
+ ArrayList roleName = new ArrayList<>();
+ for (Role role : roles) {
+ roleName.add(role.getRoleName());
+ }
+
+ recordDto.setRoles(roleName);
+ recordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId()));
+ recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
+ recordDto.setDate(record.getDate());
+ recordDto.setContent(record.getContent());
+ recordDto.setReason(record.getReason());
+ recordDto.setAmount(record.getAmount());
+ recordDto.setRemark(record.getRemark());
+ recordDto.setIsRevoked(record.getIsRevoked());
+ // 撤销日期
+ recordDto.setRevokeDate(record.getRevokeDate());
+ recordDto.setRevokeReason(record.getRevokeReason());
+ recordDto.setRevokeRemark(record.getRevokeRemark());
+ recordDto.setOperatorUserId(record.getOperatorUserId());
+ recordDto.setLastUpdateTime(record.getLastUpdateTime());
+ recordDtos.add(recordDto);
+ }
+ return Result.success(recordDtos);
+
}
@Operation(summary = "更新单个奖惩记录")
diff --git a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
index a3d12a4..5372447 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
@@ -21,4 +21,7 @@ public interface RecordMapper {
//分页查询
@Select("select * from record limit #{page},#{size}")
List getAllRecords(Integer page, Integer size);
+//根据学号分页查询所以信息
+ @Select("select * from record where student_id = #{id} limit #{page},#{size}")
+ List getMyAllRecords(Integer page, Integer size, String id);
}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
index b04f7e6..1aef24f 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
@@ -43,6 +43,7 @@ public interface UserMapper extends BaseMapper {
"username = #{username}, " +
"name = #{name}, " +
"email = #{email}, " +
+ "grade = #{grade}, " +
"userGroup = #{group} " +
"WHERE id = #{id}")
int updateUser(User user);
@@ -52,7 +53,7 @@ public interface UserMapper extends BaseMapper {
* @param
* @return 用户对象
*/
- @Select("SELECT id, student_id, username, password, name, email,user_group from user WHERE id = #{id}")
+ @Select("SELECT id, student_id, username, password, name, email,grade,user_group from user WHERE student_id = #{id}")
User selectByUserId(Integer id);
/**
@@ -73,5 +74,6 @@ public interface UserMapper extends BaseMapper {
User selectByUserName(@Param("username") String username);
@Update("update user set password = #{password} where username = #{username}")
void updatePassword(User user);
-
+@Select("select student_id from user where id = #{userId}")
+ String getStudentIdById(String userId);
}
diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java
index 2dee1e4..4293125 100644
--- a/src/main/java/top/suyiiyii/sims/service/RecordService.java
+++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java
@@ -1,11 +1,13 @@
package top.suyiiyii.sims.service;
+import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.suyiiyii.sims.dto.RecordDto;
import top.suyiiyii.sims.entity.Record;
import top.suyiiyii.sims.mapper.RecordMapper;
+import top.suyiiyii.sims.mapper.UserMapper;
import java.util.List;
@@ -21,10 +23,17 @@ import java.util.List;
public class RecordService {
@Autowired
RecordMapper recordMapper;
-
+ @Autowired
+ UserMapper userMapper;
public List getAllRecords(Integer page, Integer size) {
return recordMapper.getAllRecords(page, size);
}
+
+
+ public List getMyAllRecords(Integer page, Integer size, String userId) {
+ String studentId = userMapper.getStudentIdById(userId);
+ return recordMapper.getMyAllRecords(page, size, studentId);
+ }
}
From a04c901b0411ace2fd156cacf8950335558c35f0 Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Tue, 20 Aug 2024 23:44:09 +0800
Subject: [PATCH 19/20] =?UTF-8?q?RecordController=E5=9F=BA=E6=9C=AC?=
=?UTF-8?q?=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 5 ++
.../sims/common/ModelMapperConfig.java | 44 ++++++++++
.../sims/controller/RecordController.java | 83 +++++--------------
.../java/top/suyiiyii/sims/dto/RecordDto.java | 13 +--
.../java/top/suyiiyii/sims/entity/Record.java | 11 +--
.../suyiiyii/sims/mapper/CategoryMapper.java | 3 +-
.../suyiiyii/sims/mapper/RecordMapper.java | 31 ++++++-
.../sims/service/CategoryService.java | 6 ++
.../suyiiyii/sims/service/RecordService.java | 12 +++
9 files changed, 128 insertions(+), 80 deletions(-)
create mode 100644 src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java
diff --git a/pom.xml b/pom.xml
index 160087f..29aef43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,11 @@
org.springframework.session
spring-session-core
+
+ org.modelmapper
+ modelmapper
+ 2.3.9
+
com.mysql
mysql-connector-j
diff --git a/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java b/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java
new file mode 100644
index 0000000..3241164
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java
@@ -0,0 +1,44 @@
+package top.suyiiyii.sims.common;
+
+import org.modelmapper.ModelMapper;
+import org.modelmapper.convention.MatchingStrategies;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import top.suyiiyii.sims.dto.RecordDto;
+import top.suyiiyii.sims.entity.User;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/20 21:19
+ * @PackageName:top.suyiiyii.sims.common
+ * @ClassName: ModelMapperConfig
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Configuration
+public class ModelMapperConfig {
+ @Bean
+ public ModelMapper modelMapper() {
+ ModelMapper modelMapper = new ModelMapper();
+ // 设置完全匹配
+ modelMapper.getConfiguration().setFullTypeMatchingRequired(true);
+
+ // 设置匹配策略为严格模式
+ modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
+ // configureUser(modelMapper);
+ return modelMapper;
+ }
+ // 配置 User 类的映射规则
+ private void configureUser(ModelMapper modelMapper) {
+ // 定义 UserModel -> User 的映射规则
+ // modelMapper.typeMap(RecordDto.class, Record.class)
+
+ // 跳过设置密码字段
+ // 定义 User -> UserModel 的映射规则
+ // modelMapper.typeMap(User.class, RecordDto.class)
+ // .addMappings(mapper -> mapper.skip(RecordDto::setPassword)) // 跳过设置密码字段
+ // .addMappings(mapper -> mapper.map(User::getRealName, UserModel::setName)); // 将 User 的 realName 映射为 UserModel 的 name
+// .addMappings(mapper -> mapper.using(dateToStringConverter).map(User::getCreateTime, UserModel::setCreateTime))
+// .addMappings(mapper -> mapper.using(dateToStringConverter).map(User::getUpdateTime, UserModel::setUpdateTime));
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index 1f43616..650458d 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -6,6 +6,7 @@ import com.auth0.jwt.interfaces.DecodedJWT;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
+import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -27,6 +28,7 @@ import top.suyiiyii.sims.utils.JwtUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
@RestController
public class
@@ -39,48 +41,23 @@ RecordController {
RoleService roleService;
@Autowired
CategoryService categoryService;
+ @Autowired
+ ModelMapper modelMapper;
@Operation(summary = "获取所有奖惩记录")
@GetMapping("/admin/record")
public Result> adminRecord(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
- List recordDtos=new ArrayList<>();
-
List records = recordService.getAllRecords(page, size);
+ List recordDtos = new ArrayList<>();
for (Record record : records) {
- RecordDto recordDto = new RecordDto();
- Integer studentId=record.getStudentId();
- recordDto.setStudentId(studentId);
- User user = UserService.selectByUserId(studentId);
- recordDto.setName(user.getUsername());
- recordDto.setGrade(user.getUserGroup());
- recordDto.setGroup(user.getUserGroup());
- List roles = UserService.selectRolesById(studentId);
- ArrayList roleName = new ArrayList<>();
- for (Role role : roles) {
- roleName.add(role.getRoleName());
- }
- recordDto.setRoles(roleName);
+
+ RecordDto recordDto = modelMapper.map(record, RecordDto.class);
recordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId()));
- recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
- recordDto.setDate(record.getDate());
- recordDto.setContent(record.getContent());
- recordDto.setReason(record.getReason());
- recordDto.setContent(record.getContent());
- recordDto.setAmount(record.getAmount());
- recordDto.setRemark(record.getRemark());
- recordDto.setIsRevoked(record.getIsRevoked());
- // 撤销日期
- recordDto.setRevokeDate(record.getRevokeDate());
- recordDto.setRevokeReason(record.getRevokeReason());
- recordDto.setRevokeRemark(record.getRevokeRemark());
- recordDto.setOperatorUserId(record.getOperatorUserId());
- recordDto.setLastUpdateTime(record.getLastUpdateTime());
+ recordDto.setSubCategoryName(categoryService.getsubCategoryName( record.getCategoryId()));
recordDtos.add(recordDto);
}
-
-
return Result.success(recordDtos);
}
@@ -95,34 +72,12 @@ RecordController {
List records = recordService.getMyAllRecords(page, size,userId);
for (Record record : records) {
- RecordDto recordDto = new RecordDto();
- Integer studentId=record.getStudentId();
- recordDto.setStudentId(studentId);
- User user = UserService.selectByUserId(studentId);
- recordDto.setName(user.getUsername());
- recordDto.setGrade(user.getGrade());
- recordDto.setGroup(user.getUserGroup());
- List roles = UserService.selectRolesById(user.getId());
- ArrayList roleName = new ArrayList<>();
- for (Role role : roles) {
- roleName.add(role.getRoleName());
- }
- recordDto.setRoles(roleName);
+ RecordDto recordDto = modelMapper.map(record, RecordDto.class);
+
recordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId()));
- recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
- recordDto.setDate(record.getDate());
- recordDto.setContent(record.getContent());
- recordDto.setReason(record.getReason());
- recordDto.setAmount(record.getAmount());
- recordDto.setRemark(record.getRemark());
- recordDto.setIsRevoked(record.getIsRevoked());
- // 撤销日期
- recordDto.setRevokeDate(record.getRevokeDate());
- recordDto.setRevokeReason(record.getRevokeReason());
- recordDto.setRevokeRemark(record.getRevokeRemark());
- recordDto.setOperatorUserId(record.getOperatorUserId());
- recordDto.setLastUpdateTime(record.getLastUpdateTime());
+ recordDto.setSubCategoryName(categoryService.getsubCategoryName( record.getCategoryId()));
+
recordDtos.add(recordDto);
}
return Result.success(recordDtos);
@@ -132,14 +87,15 @@ RecordController {
@Operation(summary = "更新单个奖惩记录")
@PutMapping("/admin/record/{id}")
public Result adminUpdateRecord(@PathVariable Integer id, @RequestBody RecordDto recordDto) {
-
+ Record record = modelMapper.map(recordDto, Record.class);
+ recordService.updateRecord(record,id);
return Result.msg("修改成功");
}
@Operation(summary = "删除单个奖惩记录")
@DeleteMapping("/admin/record/{id}")
public Result adminDeleteRecord(@PathVariable Integer id) {
-
+ recordService.deleteRecord(id);
return Result.msg("删除成功");
}
@@ -147,9 +103,14 @@ RecordController {
@Operation(summary = "添加奖惩记录")
@PostMapping("/admin/record")
public Result adminAddRecord(@RequestBody RecordDto recordDto) {
-
+ Integer categoryId = categoryService.getIdBySubCategoryName(recordDto.getSubCategoryName());
+ Record record = modelMapper.map(recordDto, Record.class);
+ if (categoryId == null) {
+ Result.error("请选择奖惩类别,以及类型");
+ }
+ record.setCategoryId(categoryId);
+ recordService.addRecord(record);
return Result.msg("添加成功");
}
-
}
diff --git a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java
index 1f7a4b3..617668e 100644
--- a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java
+++ b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java
@@ -15,19 +15,12 @@ public class RecordDto {
// 用户ID
private Integer studentId;
- private String name;
-
- private String grade;
-
- private String group;
-
- private List roles;
private String categoryName;
private String subCategoryName;
// 奖惩日期
- private LocalDateTime date;
+ private Long date;
// 奖惩内容
private String content;
// 奖惩原因
@@ -39,7 +32,7 @@ public class RecordDto {
// 是否撤销
private Boolean isRevoked;
// 撤销日期
- private LocalDateTime revokeDate;
+ private Long revokeDate;
// 撤销原因
private String revokeReason;
// 撤销备注
@@ -47,5 +40,5 @@ public class RecordDto {
// 操作人ID
private Integer operatorUserId;
// 最近一次更新时间
- private LocalDateTime lastUpdateTime;
+ private Long lastUpdateTime;
}
diff --git a/src/main/java/top/suyiiyii/sims/entity/Record.java b/src/main/java/top/suyiiyii/sims/entity/Record.java
index 41e1268..6390515 100644
--- a/src/main/java/top/suyiiyii/sims/entity/Record.java
+++ b/src/main/java/top/suyiiyii/sims/entity/Record.java
@@ -1,5 +1,6 @@
package top.suyiiyii.sims.entity;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
import lombok.AllArgsConstructor;
@@ -21,15 +22,15 @@ import java.time.LocalDateTime;
@AllArgsConstructor
@NoArgsConstructor
public class Record {
- @TableId("id")
+ @TableId(type = IdType.AUTO)
+ //自增
private Integer id;
// 用户ID
private Integer StudentId;
-
// 奖惩类别ID
private Integer categoryId;
// 奖惩日期
- private LocalDateTime date;
+ private Long date;
// 奖惩内容
private String content;
// 奖惩原因
@@ -41,7 +42,7 @@ public class Record {
// 是否撤销
private Boolean isRevoked;
// 撤销日期
- private LocalDateTime revokeDate;
+ private Long revokeDate;
// 撤销原因
private String revokeReason;
// 撤销备注
@@ -49,7 +50,7 @@ public class Record {
// 操作人ID
private Integer operatorUserId;
// 最近一次更新时间
- private LocalDateTime lastUpdateTime;
+ private Long lastUpdateTime;
}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
index 6e83387..902eadc 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java
@@ -17,6 +17,7 @@ public interface CategoryMapper {
String getCategoryName(Integer categoryId);
@Select("SELECT category_name FROM reward_punishment_category WHERE category_id=#{categoryId}")
-
String getSubCategoryName(Integer categoryId);
+@Select("SELECT category_id FROM reward_punishment_category WHERE sub_category_name=#{subCategoryName}")
+ Integer getIdBySubCategoryName(String subCategoryName);
}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
index 5372447..a4d635d 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java
@@ -1,8 +1,6 @@
package top.suyiiyii.sims.mapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.*;
import top.suyiiyii.sims.dto.RecordDto;
import top.suyiiyii.sims.entity.Record;
@@ -24,4 +22,31 @@ public interface RecordMapper {
//根据学号分页查询所以信息
@Select("select * from record where student_id = #{id} limit #{page},#{size}")
List getMyAllRecords(Integer page, Integer size, String id);
+
+ //根据id,更新对应信息
+ @Update("UPDATE record SET "
+
+ + "date = #{record.date}, "
+ + "content = #{record.content}, "
+ + "reason = #{record.reason}, "
+ + "amount = #{record.amount}, "
+ + "remark = #{record.remark}, "
+ + "is_revoked = #{record.isRevoked}, "
+ + "revoke_date = #{record.revokeDate}, "
+ + "revoke_reason = #{record.revokeReason}, "
+ + "revoke_remark = #{record.revokeRemark}, "
+ + "operator_user_id = #{record.operatorUserId}, "
+ + "last_update_time = #{record.lastUpdateTime} "
+ + "WHERE id = #{id}")
+ void updateRecord(Record record, Integer id);
+
+ @Delete("delete from record where id = #{id}")
+ void deleteRecord(Integer id);
+ @Insert({
+ "insert into record (student_id, category_id, `date`, content, reason, amount, remark, is_revoked,",
+ "revoke_date, revoke_reason, revoke_remark, operator_user_id, last_update_time)",
+ "VALUES (#{studentId}, #{categoryId}, #{date}, #{content}, #{reason}, #{amount}, #{remark}, #{isRevoked},",
+ "#{revokeDate}, #{revokeReason}, #{revokeRemark}, #{operatorUserId}, #{lastUpdateTime})"
+ })
+ void addRecord(Record record);
}
diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java
index 47eee90..98e20d1 100644
--- a/src/main/java/top/suyiiyii/sims/service/CategoryService.java
+++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java
@@ -25,4 +25,10 @@ public class CategoryService {
public String getsubCategoryName(Integer categoryId) {
return categoryMapper.getSubCategoryName(categoryId);
}
+
+
+ public Integer getIdBySubCategoryName(String subCategoryName) {
+ return categoryMapper.getIdBySubCategoryName(subCategoryName);
+
+ }
}
diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java
index 4293125..2afc0b7 100644
--- a/src/main/java/top/suyiiyii/sims/service/RecordService.java
+++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java
@@ -36,4 +36,16 @@ public class RecordService {
String studentId = userMapper.getStudentIdById(userId);
return recordMapper.getMyAllRecords(page, size, studentId);
}
+
+ public void updateRecord(Record record, Integer id) {
+ recordMapper.updateRecord(record, id);
+ }
+
+ public void deleteRecord(Integer id) {
+ recordMapper.deleteRecord(id);
+ }
+
+ public void addRecord(Record record) {
+ recordMapper.addRecord(record);
+ }
}
From 68ef028a1be11e02bfcd7abf4c0c5a49292a89c1 Mon Sep 17 00:00:00 2001
From: tortoise <2891138827@qq.com>
Date: Wed, 21 Aug 2024 21:21:48 +0800
Subject: [PATCH 20/20] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=9D=83=E9=99=90?=
=?UTF-8?q?=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../sims/common/InterceptorConfig.java | 58 +++++++++++++++++--
.../sims/controller/RecordController.java | 3 +-
.../top/suyiiyii/sims/mapper/RoleMapper.java | 2 +
.../suyiiyii/sims/service/RoleService.java | 21 ++++---
4 files changed, 69 insertions(+), 15 deletions(-)
diff --git a/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java b/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java
index ef27746..5becb7b 100644
--- a/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java
+++ b/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java
@@ -1,9 +1,16 @@
package top.suyiiyii.sims.common;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+import top.suyiiyii.sims.service.RoleService;
+import top.suyiiyii.sims.service.UserService;
+import top.suyiiyii.sims.utils.JwtUtils;
/**
* @Author tortoise
@@ -15,13 +22,23 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp
*/
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {
+ @Autowired
+ private RoleService roleService;
+
+
+
+ //UserService userService;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
-// registry.addInterceptor(jwtInterceptor())
-// .addPathPatterns("/**")
-// .excludePathPatterns("/user/login") // 排除不需要验证的路径
-// .excludePathPatterns("/user/register")
-// .excludePathPatterns("/v3/api-docs/**");
+ registry.addInterceptor(jwtInterceptor())
+ .addPathPatterns("/**")
+ .excludePathPatterns("/user/login") // 排除不需要验证的路径
+ .excludePathPatterns("/user/register")
+ .excludePathPatterns("/v3/api-docs/**");
+
+ // 注册AdminInterceptor,只拦截以admin/开头的路径
+ registry.addInterceptor(new AdminInterceptor())
+ .addPathPatterns("/admin/**");
super.addInterceptors(registry);
}
@@ -30,5 +47,36 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp
return new JwtInterceptor();
}
+ // AdminInterceptor的实现
+ public class AdminInterceptor implements HandlerInterceptor {
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+ String path = request.getRequestURI();
+ if (path.startsWith("/admin/") && !hasAdminPermission(request)) {
+ // 如果用户没有管理员权限,返回403 Forbidden
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return false;
+ }
+ return true;
+ }
+
+ private boolean hasAdminPermission(HttpServletRequest request) {
+ // 这里应该实现检查用户权限的逻辑
+ // 例如,从session、token或者数据库中获取用户信息并判断权限
+ // 以下仅为示例
+ String token = (String) request.getAttribute("token");
+ //非空
+ if (token == null) {
+ return false;
+ }
+ try {
+ Integer userId = Integer.valueOf(JwtUtils.extractUserId(token));
+ return roleService.isRoleNameAdmin(userId);
+ } catch (Exception e) {
+ // 处理令牌解析过程中可能出现的异常
+ return false;
+ }
+ }
+ }
}
diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
index 650458d..52e18ea 100644
--- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java
@@ -66,7 +66,7 @@ RecordController {
public Result> record(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size,
HttpServletRequest request) {
- String token = request.getHeader("Authorization").replace("Bearer ", "");
+ String token = (String) request.getAttribute("token");
String userId= JwtUtils.extractUserId(token);
List recordDtos=new ArrayList<>();
@@ -104,6 +104,7 @@ RecordController {
@PostMapping("/admin/record")
public Result adminAddRecord(@RequestBody RecordDto recordDto) {
Integer categoryId = categoryService.getIdBySubCategoryName(recordDto.getSubCategoryName());
+
Record record = modelMapper.map(recordDto, Record.class);
if (categoryId == null) {
Result.error("请选择奖惩类别,以及类型");
diff --git a/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java
index fd38bfa..6a59928 100644
--- a/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java
+++ b/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java
@@ -55,4 +55,6 @@ public interface RoleMapper {
@Select("SELECT role_name FROM role WHERE role_id=#{roleId}")
List selectRoleNamesByRoleId(Integer roleId);
+
+
}
diff --git a/src/main/java/top/suyiiyii/sims/service/RoleService.java b/src/main/java/top/suyiiyii/sims/service/RoleService.java
index 6312a04..e019e88 100644
--- a/src/main/java/top/suyiiyii/sims/service/RoleService.java
+++ b/src/main/java/top/suyiiyii/sims/service/RoleService.java
@@ -22,15 +22,7 @@ import java.util.List;
public class RoleService {
@Autowired
RoleMapper roleMapper;
- public void addRole(String name){
- roleMapper.addRole(name);
- }
- public void deleteRole(String name){
- roleMapper.deleteRole(name);
- }
- public void updateRole(String name,String newName){
- roleMapper.updateRole(name,newName);
- }
+
public List findAllUsersWithRoles(){
return roleMapper.selectAllUsersWithRoles();
}
@@ -46,4 +38,15 @@ public class RoleService {
}
+
+
+ public boolean isRoleNameAdmin(Integer id) {
+ List roles = roleMapper.selectRolesById(id);
+ for (Role role : roles) {
+ if (role.getRoleName().equals("admin")) {
+ return true;
+ }
+ }
+ return false;
+ }
}