From b04a347c338c8ff6e13e689b0641b0ce22e581d7 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Sun, 8 Sep 2024 19:52:05 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A5=96=E6=83=A9=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sims/common/MybatisPlusConfig.java | 24 +++++++++++++ .../sims/controller/CategoryController.java | 34 +++++++++++++++++++ .../sims/entity/RewardPunishmentCategory.java | 14 ++++++-- .../sims/mapper/MpCategoryMapper.java | 7 ++++ .../sims/service/CategoryService.java | 14 ++++++-- 设计文档/奖惩类别的增删改查.md | 14 ++++++++ 6 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 src/main/java/top/suyiiyii/sims/common/MybatisPlusConfig.java create mode 100644 src/main/java/top/suyiiyii/sims/controller/CategoryController.java create mode 100644 src/main/java/top/suyiiyii/sims/mapper/MpCategoryMapper.java create mode 100644 设计文档/奖惩类别的增删改查.md diff --git a/src/main/java/top/suyiiyii/sims/common/MybatisPlusConfig.java b/src/main/java/top/suyiiyii/sims/common/MybatisPlusConfig.java new file mode 100644 index 0000000..546ba43 --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/common/MybatisPlusConfig.java @@ -0,0 +1,24 @@ +package top.suyiiyii.sims.common; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@MapperScan("top.suyiiyii.sims.mapper") +public class MybatisPlusConfig { + + /** + * 添加分页插件 + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加 + // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType + return interceptor; + } +} \ No newline at end of file diff --git a/src/main/java/top/suyiiyii/sims/controller/CategoryController.java b/src/main/java/top/suyiiyii/sims/controller/CategoryController.java new file mode 100644 index 0000000..ee9de62 --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/controller/CategoryController.java @@ -0,0 +1,34 @@ +package top.suyiiyii.sims.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.Operation; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import top.suyiiyii.sims.common.AuthAccess; +import top.suyiiyii.sims.common.Result; +import top.suyiiyii.sims.entity.RewardPunishmentCategory; +import top.suyiiyii.sims.service.CategoryService; + +import java.util.List; + +@RestController() +@RequestMapping("/category") +public class CategoryController { + + @Autowired + CategoryService categoryService; + @GetMapping("") + @Operation(summary = "获取所有类别信息,支持分页") + @AuthAccess(allowRoles = {"admin"}) + public Result> getAllCategory( + @RequestParam(value = "page", defaultValue = "1") Integer page, + @RequestParam(value = "size", defaultValue = "10") Integer size + ) { + Page pageObj = new Page<>(page, size); + return Result.success(categoryService.getCateGory(pageObj)); + } + +} diff --git a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java index 11d0971..2eb3e25 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java +++ b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java @@ -2,8 +2,9 @@ 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.autotable.annotation.ColumnNotNull; import com.tangzc.mpe.autotable.annotation.Table; +import com.tangzc.mpe.autotable.annotation.UniqueIndex; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -23,15 +24,22 @@ import java.util.Objects; @AllArgsConstructor @NoArgsConstructor public class RewardPunishmentCategory { - @TableId(type= IdType.AUTO) + @TableId(type = IdType.AUTO) private Integer id; - private Integer categoryId; // 类别名称 + @ColumnNotNull private String categoryName; + @ColumnNotNull + @UniqueIndex private String subCategoryName; // 类别说明 private String description; + + // 类别状态 + private String status; + + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/top/suyiiyii/sims/mapper/MpCategoryMapper.java b/src/main/java/top/suyiiyii/sims/mapper/MpCategoryMapper.java new file mode 100644 index 0000000..602805f --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/mapper/MpCategoryMapper.java @@ -0,0 +1,7 @@ +package top.suyiiyii.sims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import top.suyiiyii.sims.entity.RewardPunishmentCategory; + +public interface MpCategoryMapper extends BaseMapper { +} diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java index af37df7..0059797 100644 --- a/src/main/java/top/suyiiyii/sims/service/CategoryService.java +++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java @@ -1,8 +1,12 @@ package top.suyiiyii.sims.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import top.suyiiyii.sims.entity.RewardPunishmentCategory; import top.suyiiyii.sims.mapper.CategoryMapper; +import top.suyiiyii.sims.mapper.MpCategoryMapper; import java.util.List; @@ -19,6 +23,9 @@ public class CategoryService { @Autowired CategoryMapper categoryMapper; + @Autowired + MpCategoryMapper mpCategoryMapper; + public String getCategoryName(Integer id) { return categoryMapper.getCategoryName(id); @@ -29,12 +36,13 @@ public class CategoryService { } - public List getIdByCategoryName(String categoryName) { return categoryMapper.getIdByCategoryName(categoryName); } - - + public List getCateGory(Page pageObj) { + mpCategoryMapper.selectPage(pageObj, new LambdaQueryWrapper<>()); + return pageObj.getRecords(); + } } diff --git a/设计文档/奖惩类别的增删改查.md b/设计文档/奖惩类别的增删改查.md new file mode 100644 index 0000000..5e5eb65 --- /dev/null +++ b/设计文档/奖惩类别的增删改查.md @@ -0,0 +1,14 @@ +# 奖惩类别的增删改查 +## 需求 +1. 管理员可以查看奖惩类别的数据,可以按奖惩类型查看(类别名称,奖惩类型,是否启用,类别说明,操作),需分页展示 +2. 管理员可以启用或禁用某个奖惩类别,禁用后在添加奖惩记录的页面中不显示该奖惩类别 ,启动后恢复 +3. 管理员可以删除某个奖惩类别,但需要为已有该奖惩类别的奖惩记录选择一个替代的奖惩类别,替换后相应的奖惩记录也会同步更新 + +### 需求1 +基础增删改查,支持分页 + +### 需求2 +先使用已有接口进行查询,然后再查询已有数据的类型有没有被禁用,过滤即可 + +### 需求3 +全表替换 \ No newline at end of file From b8b14f7af90fc81c3a59b1e483c716fd80ee6f44 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Sun, 8 Sep 2024 20:19:50 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sims/controller/RecordController.java | 25 ++++++--------- .../java/top/suyiiyii/sims/dto/RecordDto.java | 2 ++ .../sims/entity/RewardPunishmentCategory.java | 2 +- .../sims/service/CategoryService.java | 5 +++ .../suyiiyii/sims/service/RecordService.java | 31 ++++++++++++++++--- 5 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/main/java/top/suyiiyii/sims/controller/RecordController.java b/src/main/java/top/suyiiyii/sims/controller/RecordController.java index 5476d18..7c20a46 100644 --- a/src/main/java/top/suyiiyii/sims/controller/RecordController.java +++ b/src/main/java/top/suyiiyii/sims/controller/RecordController.java @@ -2,7 +2,6 @@ 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; @@ -18,7 +17,6 @@ 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.util.ArrayList; import java.util.HashSet; @@ -53,7 +51,7 @@ RecordController { recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); recordDtos.add(recordDto); } - return Result.success(recordDtos); + return Result.success(recordService.filterRecordsDtos(recordDtos)); } @AuthAccess(allowRoles = {"user"}) @@ -72,7 +70,7 @@ RecordController { recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); recordDtos.add(recordDto); } - return Result.success(recordDtos); + return Result.success(recordService.filterRecordsDtos(recordDtos)); } @AuthAccess(allowRoles = {"admin"}) @Operation(summary = "更新单个奖惩记录") @@ -132,7 +130,7 @@ RecordController { studentIds.add(studentId); } String roleName = searchRequest.getRoleName(); - if(roleName!="") { + if(!roleName.isEmpty()) { //rolename查用户id Integer userId = roleService.getIdByrolename(roleName); // 用户id查记录 @@ -140,7 +138,7 @@ RecordController { studentIds.add(s1); } String username = searchRequest.getUsername(); - if(username!="") { + if(!username.isEmpty()) { //username查用户StudentId s1= roleService.getStudentIdByUsername(username); studentIds.add(s1); @@ -155,7 +153,7 @@ RecordController { RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); RecordDtos.add(RecordDto); } - return Result.success(RecordDtos); + return Result.success(recordService.filterRecordsDtos(RecordDtos)); } @AuthAccess(allowRoles = {"admin"}) @Operation(summary = "筛选查询奖惩记录") @@ -189,7 +187,7 @@ RecordController { RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); RecordDtos.add(RecordDto); } - return Result.success(RecordDtos); + return Result.success(recordService.filterRecordsDtos(RecordDtos)); } @AuthAccess(allowRoles = {"user","admin"}) @@ -199,12 +197,7 @@ RecordController { @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("请先登录"); - } + int userId = JwtInterceptor.getUserIdFromReq(request); List studentIds = new ArrayList<>(); //CategoryName不是奖励或者惩罚 if (!categoryName.equals("奖励") @@ -221,7 +214,7 @@ RecordController { List records=new ArrayList<>(); HashSet studentIds1= new HashSet<>(studentIds); for (Integer Sid : studentIds1) { - Integer studentId1 =userService.getStudentIdByUserId(Integer.valueOf(userId)); + Integer studentId1 =userService.getStudentIdByUserId(userId); if (studentId1!= null && studentId1.equals(Sid)) { records.addAll(recordService.getRecordsById(page, size, Sid)); } @@ -233,7 +226,7 @@ RecordController { RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId())); RecordDtos.add(RecordDto); } - return Result.success(RecordDtos); + return Result.success(recordService.filterRecordsDtos(RecordDtos)); } @Data public static class SearchRequest { diff --git a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java index 0ba56b3..dfcd45d 100644 --- a/src/main/java/top/suyiiyii/sims/dto/RecordDto.java +++ b/src/main/java/top/suyiiyii/sims/dto/RecordDto.java @@ -17,6 +17,8 @@ public class RecordDto { private String categoryName; private String subCategoryName; + // 类别id + private Integer categoryId; // 奖惩日期 private Long date; // 奖惩内容 diff --git a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java index 2eb3e25..918d166 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java +++ b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java @@ -36,7 +36,7 @@ public class RewardPunishmentCategory { // 类别说明 private String description; - // 类别状态 + // 类别状态 null:正常 "disable":删除 private String status; diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java index 0059797..2e433c9 100644 --- a/src/main/java/top/suyiiyii/sims/service/CategoryService.java +++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java @@ -45,4 +45,9 @@ public class CategoryService { mpCategoryMapper.selectPage(pageObj, new LambdaQueryWrapper<>()); return pageObj.getRecords(); } + + public List getCateByIds(List ids) { + return mpCategoryMapper.selectBatchIds(ids); + } + } diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java index 3b525b2..d1dc2d5 100644 --- a/src/main/java/top/suyiiyii/sims/service/RecordService.java +++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java @@ -4,14 +4,17 @@ 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.entity.RewardPunishmentCategory; import top.suyiiyii.sims.mapper.CategoryMapper; +import top.suyiiyii.sims.mapper.MpCategoryMapper; import top.suyiiyii.sims.mapper.RecordMapper; import top.suyiiyii.sims.mapper.UserMapper; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @Author tortoise @@ -31,6 +34,9 @@ public class RecordService { ModelMapper modelMapper; @Autowired CategoryMapper categoryMapper; + @Autowired + MpCategoryMapper mpCategoryMapper; + public List getAllRecords(Integer page, Integer size) { return recordMapper.getAllRecords(page, size); @@ -57,7 +63,7 @@ public class RecordService { //查看数据库里面是否有这个类别 String subCategoryName = categoryMapper.IsSubCategoryName(recordDto.getSubCategoryName()); - if(subCategoryName == null) { + if (subCategoryName == null) { //没有这个类别就加上 categoryMapper.addsubcategory(recordDto.getCategoryName(), recordDto.getSubCategoryName()); } @@ -69,12 +75,11 @@ public class RecordService { } public List getRecordsLike(int page, int size, Integer studentId, String userGroup, String grade) { - return recordMapper.getRecordsLike(page, size, studentId, userGroup,grade); + return recordMapper.getRecordsLike(page, size, studentId, userGroup, grade); } - - public List getSidByCategoryId(Integer i) { + public List getSidByCategoryId(Integer i) { return recordMapper.getSidByCategoryId(i); } @@ -85,4 +90,20 @@ public class RecordService { public Integer IsRecord(Integer id) { return recordMapper.IsRecord(id); } + + public List filterRecords(List records) { + List catIds = records.stream().map(Record::getCategoryId).distinct().toList(); + List categories = mpCategoryMapper.selectBatchIds(catIds); + Map catMap = categories.stream().collect(Collectors.toMap(RewardPunishmentCategory::getId, c -> c)); + List availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && catMap.get(c).getStatus() == null)).toList(); + return records.stream().filter(r -> availableCatIds.contains(r.getCategoryId())).toList(); + } + + public List filterRecordsDtos(List recordDtos) { + List catIds = recordDtos.stream().map(RecordDto::getCategoryId).distinct().toList(); + List categories = mpCategoryMapper.selectBatchIds(catIds); + Map catMap = categories.stream().collect(Collectors.toMap(RewardPunishmentCategory::getId, c -> c)); + List availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && catMap.get(c).getStatus() == null)).toList(); + return recordDtos.stream().filter(r -> availableCatIds.contains(r.getCategoryId())).toList(); + } } From df4230a5d280ea2436d60e0ca9454e5e40543662 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Sun, 8 Sep 2024 20:44:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E5=A2=9E=E5=8A=A0=E5=92=8C=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sims/controller/CategoryController.java | 36 ++++++++++++++++--- .../sims/service/CategoryService.java | 23 ++++++++++++ .../suyiiyii/sims/service/RecordService.java | 2 +- 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/java/top/suyiiyii/sims/controller/CategoryController.java b/src/main/java/top/suyiiyii/sims/controller/CategoryController.java index ee9de62..045a35a 100644 --- a/src/main/java/top/suyiiyii/sims/controller/CategoryController.java +++ b/src/main/java/top/suyiiyii/sims/controller/CategoryController.java @@ -3,10 +3,7 @@ package top.suyiiyii.sims.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; 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.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import top.suyiiyii.sims.common.AuthAccess; import top.suyiiyii.sims.common.Result; import top.suyiiyii.sims.entity.RewardPunishmentCategory; @@ -20,8 +17,9 @@ public class CategoryController { @Autowired CategoryService categoryService; + @GetMapping("") - @Operation(summary = "获取所有类别信息,支持分页") + @Operation(summary = "获取所有类别",description = "获取所有类别信息,支持分页") @AuthAccess(allowRoles = {"admin"}) public Result> getAllCategory( @RequestParam(value = "page", defaultValue = "1") Integer page, @@ -31,4 +29,32 @@ public class CategoryController { return Result.success(categoryService.getCateGory(pageObj)); } + @PostMapping("") + @Operation(summary = "添加类别") + @AuthAccess(allowRoles = {"admin"}) + public Result addCategory(@RequestBody RewardPunishmentCategory category) { + category.setId(null); + categoryService.addCategory(category); + return Result.success("添加成功"); + } + + @PutMapping("/{id}") + @Operation(summary = "更新类别",description = """ + 根据id更新类别信息\n当status为"disable"时,表示禁用该类别\n当status为null或"enable"时,表示启用该类别""") + @AuthAccess(allowRoles = {"admin"}) + public Result updateCategory(@RequestBody RewardPunishmentCategory category,@PathVariable Integer id) { + category.setId(id); + category.setCategoryId(id); + categoryService.updateCategory(category); + return Result.success("更新成功"); + } + + @DeleteMapping("/{id}") + @Operation(summary = "删除类别",description = "根据id删除类别") + @AuthAccess(allowRoles = {"admin"}) + public Result deleteCategory(@PathVariable Integer id) { + categoryService.deleteCategory(id); + return Result.success("删除成功"); + } + } diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java index 2e433c9..6a060d1 100644 --- a/src/main/java/top/suyiiyii/sims/service/CategoryService.java +++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import top.suyiiyii.sims.entity.RewardPunishmentCategory; +import top.suyiiyii.sims.exception.ServiceException; import top.suyiiyii.sims.mapper.CategoryMapper; import top.suyiiyii.sims.mapper.MpCategoryMapper; @@ -50,4 +51,26 @@ public class CategoryService { return mpCategoryMapper.selectBatchIds(ids); } + public void updateCategory(RewardPunishmentCategory category) { + if (!mpCategoryMapper.exists(new LambdaQueryWrapper().eq(RewardPunishmentCategory::getId, category.getId()))) { + throw new ServiceException("该类别不存在"); + } + RewardPunishmentCategory cateInDb = mpCategoryMapper.selectById(category.getId()); + category.setId(cateInDb.getId()); + category.setCategoryId(cateInDb.getCategoryId()); + mpCategoryMapper.updateById(category); + } + + public void addCategory(RewardPunishmentCategory category) { + mpCategoryMapper.insert(category); + category.setCategoryId(category.getId()); + mpCategoryMapper.updateById(category); + } + + public void deleteCategory(Integer id) { + if (!mpCategoryMapper.exists(new LambdaQueryWrapper().eq(RewardPunishmentCategory::getId, id))) { + throw new ServiceException("该类别不存在"); + } + mpCategoryMapper.deleteById(id); + } } diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java index d1dc2d5..a364583 100644 --- a/src/main/java/top/suyiiyii/sims/service/RecordService.java +++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java @@ -103,7 +103,7 @@ public class RecordService { List catIds = recordDtos.stream().map(RecordDto::getCategoryId).distinct().toList(); List categories = mpCategoryMapper.selectBatchIds(catIds); Map catMap = categories.stream().collect(Collectors.toMap(RewardPunishmentCategory::getId, c -> c)); - List availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && catMap.get(c).getStatus() == null)).toList(); + List availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && (catMap.get(c).getStatus() == null || catMap.get(c).getStatus().equals("enable")))).toList(); return recordDtos.stream().filter(r -> availableCatIds.contains(r.getCategoryId())).toList(); } } From ec0c8b20cec736f51c5ece6b335c6e5385f039a9 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Sun, 8 Sep 2024 21:15:17 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../top/suyiiyii/sims/controller/CategoryController.java | 5 +++-- .../java/top/suyiiyii/sims/mapper/MpRecordMapper.java | 7 +++++++ .../java/top/suyiiyii/sims/service/CategoryService.java | 9 ++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 src/main/java/top/suyiiyii/sims/mapper/MpRecordMapper.java diff --git a/src/main/java/top/suyiiyii/sims/controller/CategoryController.java b/src/main/java/top/suyiiyii/sims/controller/CategoryController.java index 045a35a..dfcfa6f 100644 --- a/src/main/java/top/suyiiyii/sims/controller/CategoryController.java +++ b/src/main/java/top/suyiiyii/sims/controller/CategoryController.java @@ -52,8 +52,9 @@ public class CategoryController { @DeleteMapping("/{id}") @Operation(summary = "删除类别",description = "根据id删除类别") @AuthAccess(allowRoles = {"admin"}) - public Result deleteCategory(@PathVariable Integer id) { - categoryService.deleteCategory(id); + public Result deleteCategory(@PathVariable Integer id, + @RequestParam Integer newId) { + categoryService.deleteCategory(id, newId); return Result.success("删除成功"); } diff --git a/src/main/java/top/suyiiyii/sims/mapper/MpRecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/MpRecordMapper.java new file mode 100644 index 0000000..4d902fb --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/mapper/MpRecordMapper.java @@ -0,0 +1,7 @@ +package top.suyiiyii.sims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import top.suyiiyii.sims.entity.Record; + +public interface MpRecordMapper extends BaseMapper { +} diff --git a/src/main/java/top/suyiiyii/sims/service/CategoryService.java b/src/main/java/top/suyiiyii/sims/service/CategoryService.java index 6a060d1..16c6615 100644 --- a/src/main/java/top/suyiiyii/sims/service/CategoryService.java +++ b/src/main/java/top/suyiiyii/sims/service/CategoryService.java @@ -1,13 +1,16 @@ package top.suyiiyii.sims.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import top.suyiiyii.sims.entity.Record; import top.suyiiyii.sims.entity.RewardPunishmentCategory; import top.suyiiyii.sims.exception.ServiceException; import top.suyiiyii.sims.mapper.CategoryMapper; import top.suyiiyii.sims.mapper.MpCategoryMapper; +import top.suyiiyii.sims.mapper.MpRecordMapper; import java.util.List; @@ -27,6 +30,9 @@ public class CategoryService { @Autowired MpCategoryMapper mpCategoryMapper; + @Autowired + MpRecordMapper mpRecordMapper; + public String getCategoryName(Integer id) { return categoryMapper.getCategoryName(id); @@ -67,10 +73,11 @@ public class CategoryService { mpCategoryMapper.updateById(category); } - public void deleteCategory(Integer id) { + public void deleteCategory(Integer id, Integer newId) { if (!mpCategoryMapper.exists(new LambdaQueryWrapper().eq(RewardPunishmentCategory::getId, id))) { throw new ServiceException("该类别不存在"); } mpCategoryMapper.deleteById(id); + mpRecordMapper.update(new LambdaUpdateWrapper().eq(Record::getCategoryId, id).set(Record::getCategoryId, newId)); } }