diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java index 1ec9de1..a0caaec 100644 --- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java +++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java @@ -19,6 +19,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 @@ -52,7 +53,7 @@ RecordController { return Result.success(recordDtos); } - @AuthAccess(allowRoles = {"user","admin"}) + @AuthAccess(allowRoles = {"user"}) @Operation(summary = "获取自己的奖惩记录") @GetMapping("/record") public Result> record(@RequestParam(defaultValue = "0") int page, @@ -112,10 +113,12 @@ RecordController { @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, String username,Integer studentId, String userGroup, String grade,String roleName) { - Integer s1=studentId; + Integer s1; List studentIds = new ArrayList<>(); List records=new ArrayList<>(); - studentIds.add(studentId); + if(studentId!=null) { + studentIds.add(studentId); + } if(roleName!="") { //rolename查用户id Integer userId = roleService.getIdByrolename(roleName); @@ -134,10 +137,88 @@ RecordController { 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) { + Integer sid = recordService.getSidByCategoryId(i); + studentIds.add(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) { + Integer sid = recordService.getSidByCategoryId(i); + if(sid!=null) { + studentIds.add(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); + } } diff --git a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java index 3dafbc7..0ba56b3 100644 --- a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java +++ b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java @@ -9,6 +9,8 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class RecordDto { + // + private Integer id; // 用户ID private Integer studentId; diff --git a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java index 7681e3a..11d0971 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java +++ b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java @@ -8,6 +8,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Objects; + /** * @Author tortoise * @Date 2024/8/9 15:43 @@ -27,9 +29,19 @@ public class RewardPunishmentCategory { 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/mapper/CategoryMapper.java b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java index 7dd6c3a..8845d19 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/CategoryMapper.java @@ -5,6 +5,8 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; +import java.util.List; + /** * @Author tortoise * @Date 2024/8/16 23:31 @@ -15,16 +17,16 @@ import org.apache.ibatis.annotations.Update; */ @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 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}") - Integer getIdByCategoryName(String 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})") diff --git a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java index ab9f562..0caff2e 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java @@ -72,4 +72,11 @@ public interface RecordMapper { @Param("userGroup") String userGroup, @Param("grade") String grade ); + + + +@Select("select student_id from record where category_id = #{i}") + Integer getSidByCategoryId(Integer i); +@Select("SELECT * FROM record WHERE student_id = #{sid} LIMIT #{page},#{size}") + List getRecordsById(int page, int size, Integer sid); } diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java index 8f97ef9..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 @@ -28,11 +30,11 @@ public class CategoryService { - public Integer getIdByCategoryName(String categoryName) { + public List getIdByCategoryName(String categoryName) { return categoryMapper.getIdByCategoryName(categoryName); } - public String IsSubCategoryName(String subCategoryName) { - return categoryMapper.IsSubCategoryName(subCategoryName); - } + + + } diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java index 81bc45d..962e39d 100644 --- a/src/main/java/top/suyiiyii/sims/service/RecordService.java +++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java @@ -70,4 +70,14 @@ public class RecordService { public List getRecordsLike(int page, int size, Integer studentId, String userGroup, String grade) { return recordMapper.getRecordsLike(page, size, studentId, userGroup,grade); } + + + + public Integer getSidByCategoryId(Integer i) { + return recordMapper.getSidByCategoryId(i); + } + + public List getRecordsById(int page, int size, Integer sid) { + return recordMapper.getRecordsById(page, size, sid); + } }