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);
+ }
}