diff --git a/src/main/java/com/example/demo/controller/RateController.java b/src/main/java/com/example/demo/controller/RateController.java index 68bfc42..ae9f408 100644 --- a/src/main/java/com/example/demo/controller/RateController.java +++ b/src/main/java/com/example/demo/controller/RateController.java @@ -34,59 +34,22 @@ public class RateController { } @PostMapping("/update") // 将 PUT 改为 POST public Result update(@RequestBody Rate rate) throws Exception { -// try { rateService.edit(rate); return Result.success(); -// } catch (Exception e) { -// log.warn(Arrays.toString(e.getStackTrace())); -// return Result.error(e.getMessage()); -// } } -// @PutMapping("/update") -// public Result update(@RequestBody Rate rate) { -// try { -// rateService.edit(rate); -// return Result.success(); -// } catch (Exception e) { -// log.warn(Arrays.toString(e.getStackTrace())); -// return Result.error(e.getMessage()); -// } -// } + @PostMapping("/delete/{rateId}") // 将 DELETE 改为 POST public Result delete(@PathVariable("rateId") Integer rateId) { try { - rateService.delete(rateId); + rateService.softDelete(rateId); return Result.success(); } catch (Exception e) { log.warn(Arrays.toString(e.getStackTrace())); return Result.error(e.getMessage()); } } -// @DeleteMapping("/{rateId}") -// public Result delete(@PathVariable("rateId") Integer rateId) { -// try { -// rateService.delete(rateId); -// return Result.success(); -// } catch (Exception e) { -// log.warn(Arrays.toString(e.getStackTrace())); -// return Result.error(e.getMessage()); -// } -// } - // @GetMapping("/{rateId}") -// public Result get(@PathVariable Integer rateId) { -// return Result.success(rateService.getById(rateId)); -// } -// -// @GetMapping -// public Result search(Integer pageNum, Integer pageSize,Rate rate) { -// if(ObjectUtils.isEmpty(pageNum)){ -// return Result.success(rateService.search(rate)); -// }else{ -// return Result.success(rateService.searchForPage(pageNum,pageSize,rate)); -// } -// } @PostMapping("/search") // 改为 POST 请求 public Result search(@RequestBody Page page) { Integer pageNum = page.getPageNum(); diff --git a/src/main/java/com/example/demo/domain/entity/Rate.java b/src/main/java/com/example/demo/domain/entity/Rate.java index 54e013a..a1af576 100644 --- a/src/main/java/com/example/demo/domain/entity/Rate.java +++ b/src/main/java/com/example/demo/domain/entity/Rate.java @@ -11,17 +11,23 @@ import java.util.Date; @NoArgsConstructor public class Rate { private Integer rateId; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date startTime; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date endTime; private String currency; private String exchangeRate; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date updateTime; private Integer adminId; private String adminName; - private String updateId; + private Integer flag; private String token; } diff --git a/src/main/java/com/example/demo/mapper/RateMapper.java b/src/main/java/com/example/demo/mapper/RateMapper.java index 11671a6..5536fe4 100644 --- a/src/main/java/com/example/demo/mapper/RateMapper.java +++ b/src/main/java/com/example/demo/mapper/RateMapper.java @@ -13,16 +13,17 @@ public interface RateMapper { @Insert({ "insert into rate", - "(start_time,end_time,currency,exchange_rate,create_time,update_time,admin_id)", + "(start_time,end_time,currency,exchange_rate,create_time,update_time,admin_id,flag)", "values", - "(#{startTime},#{endTime},#{currency},#{exchangeRate},now(),#{updateTime},#{adminId})" + "(#{startTime},#{endTime},#{currency},#{exchangeRate},now(),#{updateTime},#{adminId},1)" }) // 获取自增主键 @Options(useGeneratedKeys = true,keyColumn = "rate_id",keyProperty = "rateId") int insert(Rate rate); - @Delete({ - "delete from rate where rate_id=#{rateId}" + //软删除 + @Update({ + "update rate set flag = 0 where rate_id=#{rateId}" }) int deleteById(Integer rateId); @@ -35,7 +36,7 @@ public interface RateMapper { "currency=#{currency},", "exchange_rate=#{exchangeRate},", "update_time=#{updateTime},", - "update_id=#{updateId},", + "admin_id=#{adminId},", "", "where rate_id = #{rateId}", "" @@ -43,7 +44,7 @@ public interface RateMapper { int update(Rate rate); @Select({ - "select rate_id from rate where rate_id=#{rateId}" + "select * from rate where rate_id=#{rateId}" }) Rate selectById(Integer rateId); @@ -53,7 +54,7 @@ public interface RateMapper { "FROM rate r", "LEFT JOIN admin a ON r.admin_id = a.admin_id", "LEFT JOIN admin u ON r.admin_id = u.admin_id", - "", + "WHERE r.flag =1 ", "AND r.rate_id = #{rateId}", "AND r.start_time >= #{startTime}", "AND r.end_time <= #{endTime}", @@ -62,7 +63,6 @@ public interface RateMapper { "AND r.update_time LIKE CONCAT('%', #{updateTime}, '%')", "AND r.admin_id = #{adminId}", "AND r.update_id = #{updateId}", - "", "" }) diff --git a/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java index abb58dc..460f0d4 100644 --- a/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java @@ -26,17 +26,36 @@ public class RateServiceImpl implements RateService { return rateMapper.insert(rate); } + //自动软删除数据加更新数据 @Transactional @Override - @CacheEvict(value = "rate",allEntries = true) public int edit(Rate rate) { - return rateMapper.update(rate); + //获取旧的明细记录 + Rate oldRate = rateMapper.selectById(rate.getRateId()); + + if (oldRate == null || oldRate.getFlag() ==0 ) { + throw new IllegalArgumentException("该记录不存在或已被隐藏!"); + } + rateMapper.deleteById(oldRate.getRateId()); + + //如果字段被修改,显示修改后的内容,没有被修改的字段保持原来的值 + if(rate.getStartTime() ==null) rate.setStartTime(oldRate.getStartTime()); + if(rate.getEndTime() ==null) rate.setEndTime(oldRate.getEndTime()); + if(rate.getCurrency() ==null) rate.setCurrency(oldRate.getCurrency()); + if(rate.getAdminId() ==null) rate.setAdminId(oldRate.getAdminId()); + if(rate.getExchangeRate() ==null) rate.setExchangeRate(oldRate.getExchangeRate()); + + //插入新纪录 + rate.setRateId(null); + + return rateMapper.insert(rate); } -// @CachePut(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #rate.hashCode() ") + + //软删除 @CacheEvict(value = "rate",allEntries = true) @Override - public void delete(Integer rateId) throws Exception { + public void softDelete(Integer rateId) throws Exception { int result = rateMapper.deleteById(rateId); if(result == 0){ throw new Exception("未找到对应的记录,删除失败"); @@ -47,11 +66,13 @@ public class RateServiceImpl implements RateService { public Rate getById(Integer rateId) { return rateMapper.selectById(rateId); } + @Cacheable(key="#root.method.name") @Override public List search(Rate rate) { return rateMapper.select(rate); } + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #rate.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, Rate rate) { diff --git a/src/main/java/com/example/demo/sevice/RateService.java b/src/main/java/com/example/demo/sevice/RateService.java index 88e711b..cefe5b3 100644 --- a/src/main/java/com/example/demo/sevice/RateService.java +++ b/src/main/java/com/example/demo/sevice/RateService.java @@ -9,7 +9,8 @@ import java.util.List; public interface RateService { int add(Rate rate) throws Exception; int edit(Rate rate) throws Exception; - void delete(Integer rateId) throws Exception; + + void softDelete(Integer rateId) throws Exception; Rate getById(Integer rateId); List search(Rate rate); PageInfo searchForPage(Integer pageNum, Integer pageSize, Rate rate);