diff --git a/README.md b/README.md index cadf565..41772f8 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,10 @@ Super Invincible Management System 5. git fetch origin && git merge origin/main: 拉取远程仓库的最新代码并合并到当前分支 6. git push origin xxx: 推送当前分支到远程仓库 7. 提 PR -8. require review: 请求reviewpush +8. require review: 请求review 9. merge: 合并 PR 10. delete: 删除分支 - + 1. 基础rbac的五张表: user, role, permission, user_role, role_permission 2. 然后奖惩记录这张表,通过用户id来查到,里面有相应的记录, 有一个 奖惩类别ID是对应到奖惩类型去的 3. 有一个上下级关系表,想着是用户明确查上下级就可以用查, diff --git a/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java b/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java index 69a7ff4..5ab170e 100644 --- a/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java +++ b/src/main/java/top/suyiiyii/sims/common/InterceptorConfig.java @@ -16,9 +16,6 @@ import top.suyiiyii.sims.service.RoleService; */ @Configuration public class InterceptorConfig extends WebMvcConfigurationSupport { - @Autowired - private RoleService roleService; - @Autowired private JwtInterceptor jwtInterceptor; diff --git a/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java b/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java index ad495cf..d7f6bbb 100644 --- a/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java +++ b/src/main/java/top/suyiiyii/sims/common/ModelMapperConfig.java @@ -4,6 +4,7 @@ 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; /** * @Author tortoise @@ -20,24 +21,22 @@ public class ModelMapperConfig { ModelMapper modelMapper = new ModelMapper(); // 设置完全匹配 modelMapper.getConfiguration().setFullTypeMatchingRequired(true); - // 设置匹配策略为严格模式 modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); - // configureUser(modelMapper); + // 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)); +//定义 Record -> UserRecordDto 的映射规则 + //modelMapper.typeMap(Record.class, UserRecordDto.class) + // .addMappings(mapper -> mapper.skip(UserRecordDto::setRevokeDate)) + // .addMappings(mapper -> mapper.skip(UserRecordDto::setRevokeReason)) + // .addMappings(mapper -> mapper.skip(UserRecordDto::setRevokeRemark)) + // .addMappings(mapper -> mapper.skip(UserRecordDto::setOperatorUserId)) + // .addMappings(mapper -> mapper.skip(UserRecordDto::setLastUpdateTime)); } } diff --git a/src/main/java/top/suyiiyii/sims/common/RbacInterceptor.java b/src/main/java/top/suyiiyii/sims/common/RbacInterceptor.java index 35ec723..e10d19b 100644 --- a/src/main/java/top/suyiiyii/sims/common/RbacInterceptor.java +++ b/src/main/java/top/suyiiyii/sims/common/RbacInterceptor.java @@ -29,9 +29,7 @@ public class RbacInterceptor implements HandlerInterceptor { } // 获取用户角色 List roles = getUserRole(request).stream().map(Role::getRoleName).toList(); - List allowRoles = null; - // 获取当前请求的方法上的 AuthAccess 注解,从而获取允许访问的角色 if (handler instanceof HandlerMethod) { AuthAccess annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthAccess.class); diff --git a/src/main/java/top/suyiiyii/sims/controller/AdminController.java b/src/main/java/top/suyiiyii/sims/controller/AdminController.java index 4aad012..23999f2 100644 --- a/src/main/java/top/suyiiyii/sims/controller/AdminController.java +++ b/src/main/java/top/suyiiyii/sims/controller/AdminController.java @@ -1,15 +1,19 @@ package top.suyiiyii.sims.controller; +import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import top.suyiiyii.sims.common.AuthAccess; import top.suyiiyii.sims.common.Result; +import top.suyiiyii.sims.dto.RecordDto; +import top.suyiiyii.sims.dto.UserDto; import top.suyiiyii.sims.entity.User; import top.suyiiyii.sims.service.RoleService; import top.suyiiyii.sims.service.UserService; +import java.util.ArrayList; import java.util.List; /** @@ -27,12 +31,20 @@ public class AdminController { private RoleService roleService; @Autowired private UserService userService; - + @Autowired + ModelMapper modelMapper; @AuthAccess(allowRoles = {"admin"}) @GetMapping("/findAllUsersWithRoles") - public Result findAllUsersWithRoles() { - List userList = roleService.findAllUsersWithRoles(); - return Result.success(userList); + public Result> findAllUsersWithRoles() { + List users = userService.selectAll(); + List UserDtos = new ArrayList<>(); + for (User user : users) { + UserDto userDto = modelMapper.map(user, UserDto.class); + userDto.setUserId(user.getStudentId()); + userDto.setRoles(roleService.getRolesById(user.getId())); + UserDtos.add(userDto); + } + return Result.success(UserDtos); } @AuthAccess(allowRoles = {"admin"}) @@ -41,10 +53,5 @@ public class AdminController { List users = userService.selectAll(); return Result.success(users); } + } -/** - * request.setAttribute();lUsers(); - * return Result.success(userList); - * } - * } - **/ \ No newline at end of file diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java index cefabb1..5476d18 100644 --- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java +++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java @@ -2,14 +2,18 @@ package top.suyiiyii.sims.controller; import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import lombok.Data; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import top.suyiiyii.sims.common.AuthAccess; +import top.suyiiyii.sims.common.JwtInterceptor; 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.service.CategoryService; import top.suyiiyii.sims.service.RecordService; import top.suyiiyii.sims.service.RoleService; @@ -17,6 +21,7 @@ import top.suyiiyii.sims.service.UserService; import top.suyiiyii.sims.utils.JwtUtils; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; @RestController @@ -25,7 +30,7 @@ RecordController { @Autowired RecordService recordService; @Autowired - UserService UserService; + UserService userService; @Autowired RoleService roleService; @Autowired @@ -42,8 +47,8 @@ RecordController { List records = recordService.getAllRecords(page, size); List recordDtos = new ArrayList<>(); for (Record record : records) { - RecordDto recordDto = modelMapper.map(record, RecordDto.class); + recordDto.setId(record.getId()); recordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId())); recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); recordDtos.add(recordDto); @@ -57,29 +62,27 @@ RecordController { public Result> record(@RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, HttpServletRequest request) { - String token = (String) request.getAttribute("token"); - String userId = JwtUtils.extractUserId(token); + String userId = String.valueOf(JwtInterceptor.getUserIdFromReq(request)); List recordDtos = new ArrayList<>(); - List records = recordService.getMyAllRecords(page, size, userId); for (Record record : records) { - RecordDto recordDto = modelMapper.map(record, RecordDto.class); - + recordDto.setId(record.getId()); recordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId())); recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); - recordDtos.add(recordDto); } return Result.success(recordDtos); - } - @AuthAccess(allowRoles = {"admin"}) @Operation(summary = "更新单个奖惩记录") @PutMapping("/admin/record/{id}") public Result adminUpdateRecord(@PathVariable Integer id, @RequestBody RecordDto recordDto) { Record record = modelMapper.map(recordDto, Record.class); + Integer i = recordService.IsRecord(id); + if(i==null) { + throw new RuntimeException("该记录不存在"); + } recordService.updateRecord(record, id); return Result.msg("修改成功"); } @@ -88,6 +91,10 @@ RecordController { @Operation(summary = "删除单个奖惩记录") @DeleteMapping("/admin/record/{id}") public Result adminDeleteRecord(@PathVariable Integer id) { + Integer i = recordService.IsRecord(id); + if(i==null) { + throw new RuntimeException("该记录不存在"); + } recordService.deleteRecord(id); return Result.msg("删除成功"); } @@ -97,15 +104,143 @@ 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("请选择奖惩类别,以及类型"); +//CategoryName不是奖励或者惩罚 + if (!recordDto.getCategoryName().equals("奖励") + && !recordDto.getCategoryName().equals("惩罚")) { + return Result.error("请选择正确奖惩类别"); } - record.setCategoryId(categoryId); - recordService.addRecord(record); + if (recordDto.getSubCategoryName().isEmpty()) { + return Result.error("请输入奖惩类型"); + } + + recordService.addRecord(recordDto); return Result.msg("添加成功"); } + @AuthAccess(allowRoles = {"admin"}) + @Operation(summary = "模糊查询奖惩记录") + @GetMapping("/admin/likeRecords") + public Result> searchRecords( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size, + SearchRequest searchRequest) { + Integer s1; + List studentIds = new ArrayList<>(); + List records=new ArrayList<>(); + Integer studentId = searchRequest.getStudentId(); + if(studentId!=null) { + studentIds.add(studentId); + } + String roleName = searchRequest.getRoleName(); + if(roleName!="") { + //rolename查用户id + Integer userId = roleService.getIdByrolename(roleName); + // 用户id查记录 + s1 = userService.getStudentIdByUserId(userId); + studentIds.add(s1); + } + String username = searchRequest.getUsername(); + if(username!="") { + //username查用户StudentId + s1= roleService.getStudentIdByUsername(username); + studentIds.add(s1); + } + for (Integer Sid : studentIds) { + records.addAll(recordService.getRecordsLike(page,size,Sid,searchRequest.getUserGroup(),searchRequest.getGrade())); + } + List RecordDtos = new ArrayList<>(); + for (Record record : records) { + RecordDto RecordDto = modelMapper.map(record, RecordDto.class); + RecordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId())); + RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); + RecordDtos.add(RecordDto); + } + return Result.success(RecordDtos); + } + @AuthAccess(allowRoles = {"admin"}) + @Operation(summary = "筛选查询奖惩记录") + @GetMapping("/admin/screenRecords") + public Result> screenRecords( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size, + String categoryName) { + List studentIds = new ArrayList<>(); + //CategoryName不是奖励或者惩罚 + if (!categoryName.equals("奖励") + && !categoryName.equals("惩罚")) { + return Result.error("请选择正确奖惩类别"); + } + List idByCategoryName = categoryService.getIdByCategoryName(categoryName); + for (Integer i : idByCategoryName) { + List sid = recordService.getSidByCategoryId(i); + studentIds.addAll(sid); + } + List records=new ArrayList<>(); + HashSet studentIds1= new HashSet<>(studentIds); + for (Integer Sid : studentIds1) { + if(Sid!=null){ + records.addAll(recordService.getRecordsById(page,size,Sid)); + } + } + List RecordDtos = new ArrayList<>(); + for (Record record : records) { + RecordDto RecordDto = modelMapper.map(record, RecordDto.class); + RecordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId())); + RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); + RecordDtos.add(RecordDto); + } + return Result.success(RecordDtos); + } + + @AuthAccess(allowRoles = {"user","admin"}) + @Operation(summary = "用户筛选查询奖惩记录") + @GetMapping("/screenRecords") + public Result> screenRecords1( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size, + String categoryName,HttpServletRequest request) { + HttpSession session = request.getSession(); + String token = (String) session.getAttribute("token"); + String userId = JwtUtils.extractUserId(token); + if (userId==null){ + throw new RuntimeException("请先登录"); + } + List studentIds = new ArrayList<>(); + //CategoryName不是奖励或者惩罚 + if (!categoryName.equals("奖励") + && !categoryName.equals("惩罚")) { + return Result.error("请选择正确奖惩类别"); + } + List idByCategoryName = categoryService.getIdByCategoryName(categoryName); + for (Integer i : idByCategoryName) { + List sid = recordService.getSidByCategoryId(i); + if(sid!=null) { + studentIds.addAll(sid); + } + } + List records=new ArrayList<>(); + HashSet studentIds1= new HashSet<>(studentIds); + for (Integer Sid : studentIds1) { + Integer studentId1 =userService.getStudentIdByUserId(Integer.valueOf(userId)); + if (studentId1!= null && studentId1.equals(Sid)) { + records.addAll(recordService.getRecordsById(page, size, Sid)); + } + } + List RecordDtos = new ArrayList<>(); + for (Record record : records) { + RecordDto RecordDto = modelMapper.map(record, RecordDto.class); + RecordDto.setCategoryName(categoryService.getCategoryName(record.getCategoryId())); + RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); + RecordDtos.add(RecordDto); + } + return Result.success(RecordDtos); + } + @Data + public static class SearchRequest { + private String username; + private Integer studentId; + private String grade; + private String userGroup; + private String roleName; + } } diff --git a/src/main/java/top/suyiiyii/sims/controller/RevokedController.java b/src/main/java/top/suyiiyii/sims/controller/RevokedController.java new file mode 100644 index 0000000..f13741f --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/controller/RevokedController.java @@ -0,0 +1,30 @@ +package top.suyiiyii.sims.controller; + +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import top.suyiiyii.sims.service.RevokedService; + +/** + * @Author tortoise + * @Date 2024/9/6 10:03 + * @PackageName:top.suyiiyii.sims.controller + * @ClassName: RevokedController + * @Description: TODO + * @Version 1.0 + */ +@RestController +@RequestMapping("/revoked") +@Slf4j +public class RevokedController { + @Autowired + RevokedService revokedService; + //TODO 普通成员向管理员申请撤销 + + //TODO 管理员查看所有撤销申请 + + //TODO 管理员可以撤销某一成员的奖励或惩罚记录,需填写撤销原因,撤销备注 +} diff --git a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java index 4e68526..0ba56b3 100644 --- a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java +++ b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java @@ -9,10 +9,11 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class RecordDto { + // + private Integer id; // 用户ID private Integer studentId; - private String categoryName; private String subCategoryName; diff --git a/src/main/java/top/suyiiyii/sims/dto/UserDto.java b/src/main/java/top/suyiiyii/sims/dto/UserDto.java index 403a4c8..9123552 100644 --- a/src/main/java/top/suyiiyii/sims/dto/UserDto.java +++ b/src/main/java/top/suyiiyii/sims/dto/UserDto.java @@ -15,6 +15,7 @@ import java.util.List; @Data public class UserDto { private Integer userId; + private Integer studentId; private String username; private String grade; private String userGroup; diff --git a/src/main/java/top/suyiiyii/sims/entity/Attachment.java b/src/main/java/top/suyiiyii/sims/entity/Attachment.java index b836fb9..5c4a312 100644 --- a/src/main/java/top/suyiiyii/sims/entity/Attachment.java +++ b/src/main/java/top/suyiiyii/sims/entity/Attachment.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; @@ -19,7 +20,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class Attachment { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; private Integer recordId; // 文件路径 diff --git a/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java b/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java index ec9e865..285edfb 100644 --- a/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java +++ b/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.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; @@ -19,7 +20,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class HierarchyRelation { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; // 上级用户ID diff --git a/src/main/java/top/suyiiyii/sims/entity/Notification.java b/src/main/java/top/suyiiyii/sims/entity/Notification.java index d3a5779..c28cddb 100644 --- a/src/main/java/top/suyiiyii/sims/entity/Notification.java +++ b/src/main/java/top/suyiiyii/sims/entity/Notification.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,7 +22,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor public class Notification { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; private String title; private String content; diff --git a/src/main/java/top/suyiiyii/sims/entity/Permissions.java b/src/main/java/top/suyiiyii/sims/entity/Permissions.java index e2235be..aa13ea7 100644 --- a/src/main/java/top/suyiiyii/sims/entity/Permissions.java +++ b/src/main/java/top/suyiiyii/sims/entity/Permissions.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,7 +22,7 @@ import java.util.Objects; @AllArgsConstructor @NoArgsConstructor public class Permissions { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; //权限id private Integer permissionId; diff --git a/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java b/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java index 70bdb12..65218c9 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java +++ b/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.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,7 +22,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor public class RevokeRequest { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; private Integer recordId; private Integer userId; diff --git a/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java b/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java index c8f2c5d..3918cd7 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java +++ b/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.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,7 +22,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor public class RevokedRecord { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; // 被撤销的奖惩记录ID private Integer recordId; diff --git a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java index 1220b6d..11d0971 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java +++ b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java @@ -1,11 +1,15 @@ package top.suyiiyii.sims.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.tangzc.mpe.autotable.annotation.Column; import com.tangzc.mpe.autotable.annotation.Table; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Objects; + /** * @Author tortoise * @Date 2024/8/9 15:43 @@ -19,15 +23,25 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class RewardPunishmentCategory { - @TableId("id") + @TableId(type= IdType.AUTO) private Integer id; private Integer categoryId; // 类别名称 private String categoryName; - private String subCategoryName; // 类别说明 private String description; + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RewardPunishmentCategory that = (RewardPunishmentCategory) o; + return Objects.equals(categoryId, that.categoryId); + } + @Override + public int hashCode() { + return Objects.hash(categoryId); + } } diff --git a/src/main/java/top/suyiiyii/sims/entity/Role.java b/src/main/java/top/suyiiyii/sims/entity/Role.java index 8ad43ba..a1f815c 100644 --- a/src/main/java/top/suyiiyii/sims/entity/Role.java +++ b/src/main/java/top/suyiiyii/sims/entity/Role.java @@ -21,7 +21,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class Role { + @ColumnId(mode = IdType.AUTO, comment = "id主键") + private Integer id; //管理员,普通用户,组员,组长,队长 @ColumnNotNull diff --git a/src/main/java/top/suyiiyii/sims/entity/RolePermission.java b/src/main/java/top/suyiiyii/sims/entity/RolePermission.java index 8a4fbce..9826ca9 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RolePermission.java +++ b/src/main/java/top/suyiiyii/sims/entity/RolePermission.java @@ -21,7 +21,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class RolePermission { + @ColumnId(mode = IdType.AUTO, comment = "id主键") + private Integer id; @ColumnNotNull private Integer roleId; diff --git a/src/main/java/top/suyiiyii/sims/entity/User.java b/src/main/java/top/suyiiyii/sims/entity/User.java index 9c41bfb..27d2025 100644 --- a/src/main/java/top/suyiiyii/sims/entity/User.java +++ b/src/main/java/top/suyiiyii/sims/entity/User.java @@ -1,8 +1,10 @@ package top.suyiiyii.sims.entity; import com.baomidou.mybatisplus.annotation.IdType; + import com.tangzc.mpe.autotable.annotation.Column; import com.tangzc.mpe.autotable.annotation.ColumnId; + import com.tangzc.mpe.autotable.annotation.Table; import com.tangzc.mpe.autotable.annotation.UniqueIndex; import lombok.AllArgsConstructor; @@ -22,7 +24,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class User { + @ColumnId(mode = IdType.AUTO, comment = "id主键") + private Integer id; @UniqueIndex @Column(comment = "学生id", notNull = true) diff --git a/src/main/java/top/suyiiyii/sims/entity/UserRole.java b/src/main/java/top/suyiiyii/sims/entity/UserRole.java index 3d82dc1..22042fc 100644 --- a/src/main/java/top/suyiiyii/sims/entity/UserRole.java +++ b/src/main/java/top/suyiiyii/sims/entity/UserRole.java @@ -21,7 +21,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class UserRole { + @ColumnId(mode = IdType.AUTO, comment = "id主键") + private Integer id; @ColumnNotNull private Integer userId; diff --git a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java index d1f0675..8845d19 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java @@ -1,7 +1,11 @@ package top.suyiiyii.sims.mapper; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; /** * @Author tortoise @@ -13,12 +17,21 @@ import org.apache.ibatis.annotations.Select; */ @Mapper public interface CategoryMapper { - @Select("SELECT * FROM reward_punishment_category WHERE category_id=#{id}") + @Select("SELECT category_name FROM reward_punishment_category WHERE category_id=#{id}") String getCategoryName(Integer categoryId); - @Select("SELECT category_name FROM reward_punishment_category WHERE category_id=#{categoryId}") + @Select("SELECT sub_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}") + @Select("SELECT id FROM reward_punishment_category WHERE sub_category_name=#{subCategoryName}") Integer getIdBySubCategoryName(String subCategoryName); + @Select("SELECT category_id FROM reward_punishment_category WHERE category_name=#{categoryName}") + List getIdByCategoryName(String categoryName); + @Select("SELECT sub_category_name FROM reward_punishment_category WHERE sub_category_name=#{subCategoryName}") + String IsSubCategoryName(String subCategoryName); +@Insert("INSERT INTO reward_punishment_category (category_name, sub_category_name) VALUES (#{categoryName}, #{subCategoryName})") + void addsubcategory(String categoryName, String subCategoryName); +//把categoryId放入对应id下 +@Update("update reward_punishment_category set category_id=#{categoryId} where id=#{categoryId}") + void addCategoryId(Integer categoryId); } diff --git a/src/main/java/top/suyiiyii/sims/mapper/MpRevRecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/MpRevRecordMapper.java new file mode 100644 index 0000000..9ca809f --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/mapper/MpRevRecordMapper.java @@ -0,0 +1,15 @@ +package top.suyiiyii.sims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import top.suyiiyii.sims.entity.RevokedRecord; + +/** + * @Author tortoise + * @Date 2024/9/6 10:04 + * @PackageName:top.suyiiyii.sims.mapper + * @ClassName: MpRevRecordMapper + * @Description: TODO + * @Version 1.0 + */ +public interface MpRevRecordMapper extends BaseMapper { +} diff --git a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java index 955e594..a35517c 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java @@ -22,7 +22,6 @@ 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 " @@ -39,7 +38,6 @@ public interface RecordMapper { + "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); @@ -50,4 +48,37 @@ public interface RecordMapper { "#{revokeDate}, #{revokeReason}, #{revokeRemark}, #{operatorUserId}, #{lastUpdateTime})" }) void addRecord(Record record); + + @Select({ + "" + }) + List getRecordsLike( + @Param("size") int size, + @Param("page") int page, + + @Param("studentId") Integer studentId, + @Param("userGroup") String userGroup, + @Param("grade") String grade + ); + + + +@Select("select student_id from record where category_id = #{i}") + List getSidByCategoryId(Integer i); +@Select("SELECT * FROM record WHERE student_id = #{sid} LIMIT #{page},#{size}") + List getRecordsById(int page, int size, Integer sid); +@Select("SELECT id FROM record WHERE id = #{id}") + Integer IsRecord(Integer id); } diff --git a/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java index 0d9dfe2..66eb82e 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/RoleMapper.java @@ -16,14 +16,6 @@ import java.util.List; */ @Mapper public interface RoleMapper { - @Insert("INSERT INTO role(name) VALUES(#{name}") - void addRole(String name); - - @Delete("DELETE FROM role WHERE name=#{name}") - void deleteRole(String name); - - @Update("UPDATE role SET name=#{newName} WHERE name=#{name}") - void updateRole(String name, String newName); /** * @param @@ -32,28 +24,40 @@ public interface RoleMapper { * @Description: TODO 查询用户信息 * @return: java.util.List */ - @Select("SELECT u.username, u.name, u.userId, r.role_name " + + @Select("SELECT u.username, u.student_id, r.role_name " + "FROM user u " + - "LEFT JOIN user_role ur ON u.user_id = ur.user_id " + - "LEFT JOIN role r ON ur.role_id = r.role_id") + "LEFT JOIN user_role ur ON u.student_id = ur.user_id " + + "LEFT JOIN role r ON ur.role_id = r.id") @Results({ @Result(property = "username", column = "username"), - @Result(property = "name", column = "name"), + @Result(property = "userId", column = "userId"), @Result(property = "group", column = "group"), - @Result(property = "roles", column = "role_name", many = @Many(select = "selectRolesByUser")) + @Result(property = "roles", column = "role_name", many = @Many(select = "selectRolesById")) }) List selectAllUsersWithRoles(); // 根据用户ID查询角色 @Select("SELECT role_id, role_name " + "FROM role " + - "WHERE role_id IN " + - "(SELECT role_id FROM user_role WHERE user_id = #{user_id})") - List selectRolesById(@Param("user_id") int id); + "WHERE id IN " + + "(SELECT role_id FROM user_role WHERE user_id = #{student_id})") + List selectRolesById(@Param("student_id") int id); @Select("SELECT role_name FROM role WHERE role_id=#{roleId}") List selectRoleNamesByRoleId(Integer roleId); + @Select("SELECT user_id " + + "FROM user_role " + + "WHERE role_id IN " + + "(SELECT role_id FROM role WHERE role_name=#{roleName})") + Integer getIdByrolename(String roleName); +@Select("SELECT student_id FROM user WHERE username=#{username}") + Integer getStudentIdByUsername(String username); + @Select("SELECT role_name " + + "FROM role " + + "WHERE id IN " + + "(SELECT role_id FROM user_role WHERE user_id = #{id})") + List getRolesById(int id); } diff --git a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java index cf73d60..22dd1f1 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java @@ -22,7 +22,9 @@ public interface UserMapper extends BaseMapper { * @param user 新用户对象 * @return 影响的行数 */ + @Insert("insert INTO user (id,student_id, username, password, username, email, user_group) VALUES (#{id},#{studentId}, #{username}, #{password}, #{name}, #{email}, #{userGroup})") + int addUser(User user); /** @@ -43,7 +45,9 @@ public interface UserMapper extends BaseMapper { @Update("UPDATE user SET " + "student_id = #{userId}, " + "username = #{username}, " + + "username = #{name}, " + + "email = #{email}, " + "grade = #{grade}, " + "user_group = #{group} " + @@ -56,7 +60,9 @@ public interface UserMapper extends BaseMapper { * @param * @return 用户对象 */ + @Select("SELECT id, student_id, username, password, username, email,grade,user_group from user WHERE student_id = #{id}") + User selectByUserId(Integer id); /** @@ -65,7 +71,9 @@ public interface UserMapper extends BaseMapper { * @param * @return 用户对象 */ + @Select("SELECT id, student_id, username, password, username, email,grade, user_group from user WHERE id = #{id}") + User selectById(Integer id); /** @@ -73,7 +81,9 @@ public interface UserMapper extends BaseMapper { * * @return 用户列表 */ + @Select("SELECT id, student_id, username, password, username, email, grade, user_group FROM user") + List selectAll(); @Select("select * from user where username = #{username}") @@ -82,6 +92,10 @@ public interface UserMapper extends BaseMapper { @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); + + @Select("select student_id from user where id = #{userId}") + Integer getStudentIdByUserId(Integer userId); } diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java index ee6c966..af37df7 100644 --- a/src/main/java/top/suyiiyii/sims/service/CategoryService.java +++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java @@ -4,6 +4,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import top.suyiiyii.sims.mapper.CategoryMapper; +import java.util.List; + /** * @Author tortoise * @Date 2024/8/16 23:32 @@ -27,8 +29,12 @@ public class CategoryService { } - public Integer getIdBySubCategoryName(String subCategoryName) { - return categoryMapper.getIdBySubCategoryName(subCategoryName); + public List getIdByCategoryName(String categoryName) { + return categoryMapper.getIdByCategoryName(categoryName); } + + + + } diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java index e009f88..3b525b2 100644 --- a/src/main/java/top/suyiiyii/sims/service/RecordService.java +++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java @@ -1,9 +1,13 @@ package top.suyiiyii.sims.service; +import org.modelmapper.ModelMapper; 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.CategoryMapper; import top.suyiiyii.sims.mapper.RecordMapper; import top.suyiiyii.sims.mapper.UserMapper; @@ -23,7 +27,10 @@ public class RecordService { RecordMapper recordMapper; @Autowired UserMapper userMapper; - + @Autowired + ModelMapper modelMapper; + @Autowired + CategoryMapper categoryMapper; public List getAllRecords(Integer page, Integer size) { return recordMapper.getAllRecords(page, size); @@ -43,7 +50,39 @@ public class RecordService { recordMapper.deleteRecord(id); } - public void addRecord(Record record) { + public void addRecord(RecordDto recordDto) { + //把recordDto转化成Record + recordDto.setId(null); + Record record = modelMapper.map(recordDto, Record.class); + + //查看数据库里面是否有这个类别 + String subCategoryName = categoryMapper.IsSubCategoryName(recordDto.getSubCategoryName()); + if(subCategoryName == null) { + //没有这个类别就加上 + categoryMapper.addsubcategory(recordDto.getCategoryName(), recordDto.getSubCategoryName()); + } + Integer categoryId = categoryMapper.getIdBySubCategoryName(recordDto.getSubCategoryName()); + categoryMapper.addCategoryId(categoryId); + record.setCategoryId(categoryId); recordMapper.addRecord(record); + + } + + public List getRecordsLike(int page, int size, Integer studentId, String userGroup, String grade) { + return recordMapper.getRecordsLike(page, size, studentId, userGroup,grade); + } + + + + public List getSidByCategoryId(Integer i) { + return recordMapper.getSidByCategoryId(i); + } + + public List getRecordsById(int page, int size, Integer sid) { + return recordMapper.getRecordsById(page, size, sid); + } + + public Integer IsRecord(Integer id) { + return recordMapper.IsRecord(id); } } diff --git a/src/main/java/top/suyiiyii/sims/service/RevokedService.java b/src/main/java/top/suyiiyii/sims/service/RevokedService.java new file mode 100644 index 0000000..7ff5a4c --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/service/RevokedService.java @@ -0,0 +1,20 @@ +package top.suyiiyii.sims.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.suyiiyii.sims.mapper.MpRevRecordMapper; +import top.suyiiyii.sims.mapper.RoleMapper; + +/** + * @Author tortoise + * @Date 2024/9/6 10:06 + * @PackageName:top.suyiiyii.sims.service + * @ClassName: RevokedService + * @Description: TODO + * @Version 1.0 + */ +@Service +public class RevokedService { + @Autowired + MpRevRecordMapper mpRevRecordMapper; +} diff --git a/src/main/java/top/suyiiyii/sims/service/RoleService.java b/src/main/java/top/suyiiyii/sims/service/RoleService.java index a4d595e..7620962 100644 --- a/src/main/java/top/suyiiyii/sims/service/RoleService.java +++ b/src/main/java/top/suyiiyii/sims/service/RoleService.java @@ -26,14 +26,14 @@ public class RoleService { } /** - * @param Id + * @param * @author: tortoise * @date: 2024/8/14 14:39 * @Description: TODO 查看自己身份 * @return: java.util.List */ - public List selectRolesById(int id) { - return roleMapper.selectRolesById(id); + public List getRolesById(int id) { + return roleMapper.getRolesById(id); } @@ -46,4 +46,12 @@ public class RoleService { } return false; } + + public Integer getIdByrolename(String roleName) { + return roleMapper.getIdByrolename(roleName); + } + + public Integer getStudentIdByUsername(String username) { + return roleMapper.getStudentIdByUsername(username); + } } diff --git a/src/main/java/top/suyiiyii/sims/service/UserService.java b/src/main/java/top/suyiiyii/sims/service/UserService.java index 884c6a0..f4b2c98 100644 --- a/src/main/java/top/suyiiyii/sims/service/UserService.java +++ b/src/main/java/top/suyiiyii/sims/service/UserService.java @@ -45,14 +45,6 @@ public class UserService { @Autowired private ModelMapper modelMapper; - public void addUser(User user) { - userMapper.addUser(user); - } - - public void updateUser(User user) { - userMapper.updateUser(user); - } - public void deleteUser(int id) { userMapper.deleteUser(id); } @@ -82,19 +74,11 @@ public class UserService { throw new ServiceException("账号已经存在"); } User user = modelMapper.map(req, User.class); - mpUserMapper.insert(user); user = mpUserMapper.selectOne(new LambdaQueryWrapper().eq(User::getUsername, req.getUsername())); rbacService.addRoleWithUserId(user.getId(), "user"); } - public User selectByUsername(String username) { - return userMapper.selectByUserName(username); - } - - public void updatePassword(User user) { - userMapper.updatePassword(user); - } public List findAllUsers() { List users = userMapper.selectAll(); @@ -115,25 +99,33 @@ public class UserService { public UserDto findUser(Integer id) { - UserDto UserDto = new UserDto(); + UserDto userDto = new UserDto(); User user = userMapper.selectById(id); if (user == null) { throw new ServiceException("用户不存在"); } - UserDto.setUserId(user.getId()); - UserDto.setUsername(user.getUsername()); - UserDto.setGrade(user.getGrade()); - UserDto.setUserGroup(user.getUserGroup()); - UserDto.setRoles(new ArrayList<>()); - //TODO: 获取用户角色 - return UserDto; + userDto.setUserId(user.getId()); + userDto.setUsername(user.getUsername()); + userDto.setGrade(user.getGrade()); + userDto.setUserGroup(user.getUserGroup()); + userDto.setStudentId(user.getStudentId()); + userDto.setRoles(new ArrayList<>()); + List roles = roleMapper.getRolesById(id); + userDto.setRoles(roles); + return userDto; } public User selectByUserId(Integer studentId) { return userMapper.selectByUserId(studentId); } + + public List selectRolesById(Integer studentId) { return roleMapper.selectRolesById(studentId); } + + public Integer getStudentIdByUserId(Integer userId) { + return userMapper.getStudentIdByUserId(userId); + } } diff --git a/src/main/java/top/suyiiyii/sims/utils/JwtUtils.java b/src/main/java/top/suyiiyii/sims/utils/JwtUtils.java index e39f97b..bdc88d3 100644 --- a/src/main/java/top/suyiiyii/sims/utils/JwtUtils.java +++ b/src/main/java/top/suyiiyii/sims/utils/JwtUtils.java @@ -42,7 +42,7 @@ public class JwtUtils { public static String createToken(String userId, String sign) { return JWT.create() .withAudience(userId) - .withExpiresAt(DateUtil.offsetHour(new Date(), 2)) + .withExpiresAt(DateUtil.offsetWeek(new Date(), 2)) .sign(Algorithm.HMAC256(sign)); // 设置令牌过期时间为2小时 }