diff --git a/src/main/java/com/example/demo/controller/AuditController.java b/src/main/java/com/example/demo/controller/AuditController.java index 6f35358..d7180be 100644 --- a/src/main/java/com/example/demo/controller/AuditController.java +++ b/src/main/java/com/example/demo/controller/AuditController.java @@ -17,6 +17,8 @@ import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.Month; import java.util.Arrays; @RestController @@ -41,23 +43,110 @@ public class AuditController { return Result.error(e.getMessage()); } } + + @PostMapping("/goldedit") + public Result goldedit(@RequestBody Audit audit) throws Exception { + auditService.goldedit(audit); + return Result.success(); + } + @PostMapping("/edit") public Result edit(@RequestBody Audit audit){ + //先执行auditService.edit(audit); + //然后创建一个类,去接收这个audit,如果status=1 + //根据退款ID找到detail表中的记录获取到他的三种金币 + //把金币加到user表中对应的金币中 + auditService.edit(audit); + + //退款通过 if(audit.getStatus() == 1 && audit.getRefundId()!=null){ - Detail detail = detailMapper.selectByRefundId(audit.getRefundId()); + Detail detail = detailMapper.selectByDetailId(audit.getRefundId()); BigDecimal rechargeCoin = detail.getRechargeCoin(); BigDecimal taskCoin = detail.getTaskCoin(); BigDecimal freeCoin = detail.getFreeCoin(); - // User user = userMapper.selectByJwcode(detail.getJwcode()); -// user.setBuyJb(user.getBuyJb().add(rechargeCoin)); -// user.setCoreJb(user.getCoreJb().add(taskCoin)); -// user.setFree6(user.getFree6().add(freeCoin)); -// userMapper.update(user); + User user = userMapper.selectByJwcode(detail.getJwcode()); + user.setBuyJb(user.getBuyJb().add(rechargeCoin)); + user.setCoreJb(user.getCoreJb().add(taskCoin)); + + LocalDate now = LocalDate.now(); + Month currentMonth = now.getMonth(); + + // 判断月份范围并返回对应值 + if (currentMonth.getValue() <= 6) { + user.setFree6(user.getFree6().add(freeCoin)); // 在1月到6月时返回的值 + } else { + user.setFree12(user.getFree12().add(freeCoin)); // 在7月到12月时返回的值 + } + + userMapper.update(user); + } + // 充值驳回 + if (audit.getStatus() == 2 && audit.getRechargeId() != null) { + // 获取 detail1 对象 + Detail detail1 = detailMapper.selectByDetailId(audit.getDetailId()); + if (detail1 == null) { + throw new RuntimeException("驳回失败!未找到对应的 Detail 信息,audit.getDetailId() = " + audit.getDetailId()); + } + + // 获取金币数据 + BigDecimal rechargeCoin1 = detail1.getRechargeCoin(); + BigDecimal taskCoin1 = detail1.getTaskCoin(); + BigDecimal freeCoin1 = detail1.getFreeCoin(); + + // 获取 user1 对象 + User user1 = userMapper.selectByJwcode(detail1.getJwcode()); + if (user1 == null) { + throw new RuntimeException("驳回失败!未找到对应的用户信息,detail1.getJwcode() = " + detail1.getJwcode()); + } + + // 检查并更新用户金币 + if (rechargeCoin1 != null) { + if (user1.getBuyJb().compareTo(rechargeCoin1) < 0) { + throw new RuntimeException("驳回失败!该用户剩余 BuyJb 金币不足扣除数量!"); + } else { + user1.setBuyJb(user1.getBuyJb().subtract(rechargeCoin1)); + } + } + + if (taskCoin1 != null) { + if (user1.getCoreJb().compareTo(taskCoin1) < 0) { + throw new RuntimeException("驳回失败!该用户剩余 CoreJb 金币不足扣除数量!"); + } else { + user1.setCoreJb(user1.getCoreJb().subtract(taskCoin1)); + } + } + + + // 判断当前月份 + LocalDate now1 = LocalDate.now(); + Month currentMonth1 = now1.getMonth(); + + // 检查 free6 或 free12 的金币是否足够 + if (freeCoin1 != null) { + if (currentMonth1.getValue() <= 6) { + if (user1.getFree6().compareTo(freeCoin1) < 0) { + throw new RuntimeException("驳回失败!该用户剩余 free6 金币不足扣除数量!"); + } else { + user1.setFree6(user1.getFree6().subtract(freeCoin1)); + } + } else { + if (user1.getFree12().compareTo(freeCoin1) < 0) { + throw new RuntimeException("驳回失败!该用户剩余 free12 金币不足扣除数量!"); + } else { + user1.setFree12(user1.getFree12().subtract(freeCoin1)); + } + } + } + + // 更新用户信息到数据库 + userMapper.update(user1); } + return Result.success(); + } @PostMapping public Result search(@RequestBody Page page){ diff --git a/src/main/java/com/example/demo/domain/entity/Activity.java b/src/main/java/com/example/demo/domain/entity/Activity.java index d2fdb23..250af7f 100644 --- a/src/main/java/com/example/demo/domain/entity/Activity.java +++ b/src/main/java/com/example/demo/domain/entity/Activity.java @@ -21,34 +21,35 @@ public class Activity implements Serializable { private Integer activityId; private Integer adminId; private String dept; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonDeserialize(using = LocalDateTimeDeserializer.class) - private LocalDateTime startTime; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonDeserialize(using = LocalDateTimeDeserializer.class) - private LocalDateTime endTime; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startTime; + + + private Date endTime; private String activityName; private BigDecimal rechargeRatio; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonDeserialize(using = LocalDateTimeDeserializer.class) - private LocalDateTime createTime; + + private Date createTime; private Integer activityFlag; @DateTimeFormat(pattern = "yyyy-MM-dd") private String name; private Integer status; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonDeserialize(using = LocalDateTimeDeserializer.class) - private LocalDateTime startDate; - @JsonSerialize(using = LocalDateTimeSerializer.class) - @JsonDeserialize(using = LocalDateTimeDeserializer.class) - private LocalDateTime endDate; + private Date startDate; + + + private Date endDate; private String token; // 新增的token字段 + + + + private String adminName; + private String freeGold; } diff --git a/src/main/java/com/example/demo/domain/entity/Audit.java b/src/main/java/com/example/demo/domain/entity/Audit.java index 3301803..dadb0fc 100644 --- a/src/main/java/com/example/demo/domain/entity/Audit.java +++ b/src/main/java/com/example/demo/domain/entity/Audit.java @@ -25,5 +25,6 @@ public class Audit { private String reson; private Integer detailId; private String token; + private Recharge recharge; } diff --git a/src/main/java/com/example/demo/domain/vo/Meium.java b/src/main/java/com/example/demo/domain/vo/Meium.java index 523d002..99c9b88 100644 --- a/src/main/java/com/example/demo/domain/vo/Meium.java +++ b/src/main/java/com/example/demo/domain/vo/Meium.java @@ -25,12 +25,10 @@ public class Meium implements Serializable { private BigDecimal taskSumCoin; private String area; private String store; - private BigDecimal totalRechargeSum; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") + private BigDecimal totalRechargeSum; private Date searchStartTime; - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") private Date searchEndTime; private String updateType; private String type; diff --git a/src/main/java/com/example/demo/domain/vo/RechargeVo.java b/src/main/java/com/example/demo/domain/vo/RechargeVo.java index 48e6b32..4de8ad1 100644 --- a/src/main/java/com/example/demo/domain/vo/RechargeVo.java +++ b/src/main/java/com/example/demo/domain/vo/RechargeVo.java @@ -40,4 +40,6 @@ public class RechargeVo { private Integer auditId; private String token; + private Integer detailId; + } \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/DetailMapper.java b/src/main/java/com/example/demo/mapper/DetailMapper.java index f3bfe86..f1f25a7 100644 --- a/src/main/java/com/example/demo/mapper/DetailMapper.java +++ b/src/main/java/com/example/demo/mapper/DetailMapper.java @@ -26,7 +26,8 @@ public interface DetailMapper { @Select({ "SELECT * from detail where detail_id =#{detailId}" }) - Detail selectByRefundId(Integer detail_id); + Detail selectByDetailId(Integer detail_id); + @Select({ "" }) - List getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); -} + List getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime); +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java index e950746..3c62217 100644 --- a/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java @@ -50,24 +50,49 @@ public class ActivityServiceImpl implements ActivityService { } @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #activity.hashCode() ") @Override + public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { +// PageHelper.startPage(pageNum, pageSize); +// List list = activityMapper.select(activity); +// return new PageInfo<>(list); + PageHelper.startPage(pageNum, pageSize); + List list = activityMapper.select(activity); + Date nowDate = new Date(); + list.forEach(activity1 -> { + // 假设 getStartTime() 和 getEndTime() 返回的是 java.util.Date 类型 + Date startTime = activity1.getStartTime(); + Date endTime = activity1.getEndTime(); + + // 使用 Date 类的 before 和 after 方法进行比较 + if (nowDate.before(startTime)) { + activity1.setStatus(0); // 设置状态为 0 + } else if (nowDate.after(endTime)) { + activity1.setStatus(2); // 设置状态为 2 + } else { + activity1.setStatus(1); // 设置状态为 1 + } + + // 保存修改后的对象 + activityMapper.edit(activity1); + }); + return new PageInfo<>(list); + } +} + +// @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #activity.hashCode() ") +// @Override // public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { -//// PageHelper.startPage(pageNum, pageSize); -//// List list = activityMapper.select(activity); -//// return new PageInfo<>(list); -// // PageHelper.startPage(pageNum, pageSize); // List list = activityMapper.select(activity); -// Date nowDate = new Date(); -// list.forEach(activity1 -> { -// // 假设 getStartTime() 和 getEndTime() 返回的是 java.util.Date 类型 +// LocalDateTime nowDate = LocalDateTime.now(); +// +// for (Activity activity1 : list) { // Date startTime = activity1.getStartTime(); // Date endTime = activity1.getEndTime(); // -// // 使用 Date 类的 before 和 after 方法进行比较 -// if (nowDate.before(startTime)) { +// if (nowDate.isBefore(startTime)) { // activity1.setStatus(0); // 设置状态为 0 -// } else if (nowDate.after(endTime)) { +// } else if (nowDate.isAfter(endTime)) { // activity1.setStatus(2); // 设置状态为 2 // } else { // activity1.setStatus(1); // 设置状态为 1 @@ -75,32 +100,9 @@ public class ActivityServiceImpl implements ActivityService { // // // 保存修改后的对象 // activityMapper.edit(activity1); -// }); +// } +// +// // 返回分页信息 +// return new PageInfo<>(list); // } -//} - - public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { - PageHelper.startPage(pageNum, pageSize); - List list = activityMapper.select(activity); - LocalDateTime nowDate = LocalDateTime.now(); - - for (Activity activity1 : list) { - LocalDateTime startTime = activity1.getStartTime(); - LocalDateTime endTime = activity1.getEndTime(); - - if (nowDate.isBefore(startTime)) { - activity1.setStatus(0); // 设置状态为 0 - } else if (nowDate.isAfter(endTime)) { - activity1.setStatus(2); // 设置状态为 2 - } else { - activity1.setStatus(1); // 设置状态为 1 - } - - // 保存修改后的对象 - activityMapper.edit(activity1); - } - - // 返回分页信息 - return new PageInfo<>(list); - } -} \ No newline at end of file +//} \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java index 8750afe..203536f 100644 --- a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java @@ -4,8 +4,11 @@ package com.example.demo.serviceImpl; import com.example.demo.domain.entity.Audit; +import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.ConsumeDetail; import com.example.demo.mapper.AuditMapper; +import com.example.demo.mapper.RechargeMapper; +import com.example.demo.mapper.UserMapper; import com.example.demo.sevice.AuditService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -16,12 +19,17 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.Month; import java.util.List; @Transactional @Service @RequiredArgsConstructor @CacheConfig(cacheNames = "audit") public class AuditServiceImpl implements AuditService { + + private final UserMapper userMapper; private final AuditMapper auditMapper; @CacheEvict(value = {"audit", "recharge"}, allEntries = true) @@ -36,6 +44,53 @@ public class AuditServiceImpl implements AuditService { return auditMapper.update(audit); } + @CacheEvict(value = {"audit", "recharge","refund"}, allEntries = true) + @Override + public int goldedit(Audit audit) throws Exception { + int result = auditMapper.update(audit); + if (result != 1) { + throw new Exception("Failed to insert recharge data"); + } + Integer auditFlag = audit.getAuditFlag(); + if(auditFlag == 1){ + String jwcode=audit.getRecharge().getJwcode(); + BigDecimal paidGold1 =audit.getRecharge().getPaidGold(); + BigDecimal freeGold1 =audit.getRecharge().getFreeGold(); + User user = userMapper.select(jwcode); + BigDecimal buyJb =user.getBuyJb(); + + buyJb = buyJb.add(paidGold1); + +// 设置更新后的Sumgold回到user对象 + user.setBuyJb(buyJb); + LocalDate now = LocalDate.now(); + +// 判断当前日期是在六月之前还是之后 + Month currentMonth = now.getMonth(); + boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); + boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); + boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); + +// 根据月份更新 free6 或 free12 + if (isBeforeJune||isJune) { + // 如果是六月前,更新 free6 + BigDecimal free6 = user.getFree6().add(freeGold1); + user.setFree6(free6); + } else if (isAfterJune) { + // 如果是六月后,更新 free12 + BigDecimal free12 = user.getFree12().add(freeGold1); + user.setFree12(free12); + } + + System.out.println(user+"----------------------------------------------------------"); + result = userMapper.update(user); + if (result != 1) { + throw new Exception("Failed to insert recharge data"); + } + } + return auditMapper.update(audit); + } + @Override public List search(Audit audit) { return auditMapper.select(audit); diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index e2bf347..451cc2d 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -57,10 +57,11 @@ public class ConsumeServiceImpl implements ConsumeService { // 判断当前日期是在六月之前还是之后 Month currentMonth = now.getMonth(); boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); + boolean isJune = currentMonth.getValue() == Month.JUNE.getValue(); boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); // 根据月份更新 free6 或 free12 - if (isBeforeJune) { + if (isBeforeJune||isJune) { // 如果是六月前,更新 free6 BigDecimal free6 = user.getFree6().add(freeGold1); user.setFree6(free6); diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index e1eb44f..c04306e 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -92,7 +92,6 @@ public class RechargeServiceImpl implements RechargeService { } detail.setJwcode(JwCode); detail.setActivityId(activityId); - detail.setTaskCoin(paidGold); detail.setRechargeCoin(rechargeGold); detail.setFreeCoin(freeGold); detail.setRechargeWay(rechargeWay); @@ -109,35 +108,35 @@ public class RechargeServiceImpl implements RechargeService { throw new Exception("Failed to insert another entity"); } - BigDecimal paidGold1 =recharge.getPaidGold(); - BigDecimal freeGold1 =recharge.getFreeGold(); - User user = userMapper.select(jwcode); - BigDecimal buyJb =user.getBuyJb(); - - buyJb = buyJb.add(paidGold1); - -// 设置更新后的Sumgold回到user对象 - user.setBuyJb(buyJb); - LocalDate now = LocalDate.now(); - -// 判断当前日期是在六月之前还是之后 - Month currentMonth = now.getMonth(); - boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); - boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); - -// 根据月份更新 free6 或 free12 - if (isBeforeJune) { - // 如果是六月前,更新 free6 - BigDecimal free6 = user.getFree6().add(freeGold1); - user.setFree6(free6); - } else if (isAfterJune) { - // 如果是六月后,更新 free12 - BigDecimal free12 = user.getFree12().add(freeGold1); - user.setFree12(free12); - } - - System.out.println(user+"----------------------------------------------------------"); - result = userMapper.update(user); +// BigDecimal paidGold1 =recharge.getPaidGold(); +// BigDecimal freeGold1 =recharge.getFreeGold(); +// User user = userMapper.select(jwcode); +// BigDecimal buyJb =user.getBuyJb(); +// +// buyJb = buyJb.add(paidGold1); +// +//// 设置更新后的Sumgold回到user对象 +// user.setBuyJb(buyJb); +// LocalDate now = LocalDate.now(); +// +//// 判断当前日期是在六月之前还是之后 +// Month currentMonth = now.getMonth(); +// boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue(); +// boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue(); +// +//// 根据月份更新 free6 或 free12 +// if (isBeforeJune) { +// // 如果是六月前,更新 free6 +// BigDecimal free6 = user.getFree6().add(freeGold1); +// user.setFree6(free6); +// } else if (isAfterJune) { +// // 如果是六月后,更新 free12 +// BigDecimal free12 = user.getFree12().add(freeGold1); +// user.setFree12(free12); +// } +// +// System.out.println(user+"----------------------------------------------------------"); +// result = userMapper.update(user); if (result != 1) { throw new Exception("Failed to insert another entity"); } diff --git a/src/main/java/com/example/demo/sevice/AuditService.java b/src/main/java/com/example/demo/sevice/AuditService.java index 5133730..dfccdb7 100644 --- a/src/main/java/com/example/demo/sevice/AuditService.java +++ b/src/main/java/com/example/demo/sevice/AuditService.java @@ -11,6 +11,7 @@ import java.util.List; public interface AuditService { int add (Audit audit); int edit(Audit audit); + int goldedit(Audit audit) throws Exception; List search(Audit audit) ; PageInfo searchForPage(Integer pageNum, Integer pageSize, Audit audit); List searchForDetail(ConsumeDetail consumeDetail);