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] =?UTF-8?q?RecordController=E5=9F=BA=E6=9C=AC=E5=AE=8C?= =?UTF-8?q?=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); + } }