diff --git a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java index 712e27e..2d69e73 100644 --- a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java +++ b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import javax.sql.DataSource; +import java.math.BigDecimal; import java.sql.*; import java.time.LocalDateTime; import java.time.Month; @@ -237,30 +238,30 @@ public class MysqlServiceImpl implements MysqlService { } if(currentMonth.getValue() >= 7){ - user.setCurrentFreeJune(user.getCurrentFreeJune()+free); + user.setCurrentFreeJune(user.getCurrentFreeJune().add(BigDecimal.valueOf(free))); } if(currentMonth.getValue() <7){ - user.setCurrentFreeDecember(user.getCurrentFreeDecember()+free); + user.setCurrentFreeDecember(user.getCurrentFreeDecember().add(BigDecimal.valueOf(free))); } - user.setCurrentPermanentGold(user.getCurrentPermanentGold()+buy_jb); - user.setCurrentTaskGold(user.getCurrentTaskGold()+core_jb); + user.setCurrentPermanentGold(user.getCurrentPermanentGold().add(BigDecimal.valueOf(buy_jb))); + user.setCurrentTaskGold(user.getCurrentTaskGold().add(BigDecimal.valueOf(core_jb))); if(validZeroTypes.contains(gtype)) { user.setRechargeNum(user.getRechargeNum() + 1); - user.setSumPermanentGold(user.getSumPermanentGold()+buy_jb); - user.setSumTaskGold(user.getSumTaskGold()+core_jb); + user.setSumPermanentGold(user.getSumPermanentGold().add(BigDecimal.valueOf(buy_jb))); + user.setSumTaskGold(user.getSumTaskGold().add(BigDecimal.valueOf(core_jb))); if(currentMonth.getValue() >= 7){ - user.setSumFreeJune(user.getSumFreeJune()+free); + user.setSumFreeJune(user.getSumFreeJune().add(BigDecimal.valueOf(free))); } if(currentMonth.getValue() < 7){ - user.setSumFreeDecember(user.getSumFreeDecember()+free); + user.setSumFreeDecember(user.getSumFreeDecember().add(BigDecimal.valueOf(free))); } } if (validOneTypes.contains(gtype)){ user.setConsumeNum(user.getConsumeNum() + 1); - user.setSumConsumePermanent(user.getSumConsumePermanent() + buy_jb); - user.setSumConsumeTask(user.getSumConsumeTask() + core_jb); - user.setSumConsumeFree(user.getSumConsumeFree() + free); + user.setSumConsumePermanent(user.getSumConsumePermanent().add(BigDecimal.valueOf(buy_jb))); + user.setSumConsumeTask(user.getSumConsumeTask().add(BigDecimal.valueOf(core_jb))); + user.setSumConsumeFree(user.getSumConsumeFree().add(BigDecimal.valueOf(free))); } userService.updateAllGold(user); diff --git a/src/main/java/com/example/demo/domain/entity/User.java b/src/main/java/com/example/demo/domain/entity/User.java index 69beffb..60c4815 100644 --- a/src/main/java/com/example/demo/domain/entity/User.java +++ b/src/main/java/com/example/demo/domain/entity/User.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -26,21 +27,21 @@ public class User implements Serializable { @ExcelProperty("所属地区") private String market; // 所属地区 @ExcelProperty("历史永久金币") - private Integer sumPermanentGold; // 历史永久金币 + private BigDecimal sumPermanentGold; // 历史永久金币 @ExcelProperty("历史六月免费金币") - private Integer sumFreeJune; // 历史六月免费金币 + private BigDecimal sumFreeJune; // 历史六月免费金币 @ExcelProperty("历史十二月免费金币") - private Integer sumFreeDecember; // 历史十二月免费金币 + private BigDecimal sumFreeDecember; // 历史十二月免费金币 @ExcelProperty("历史任务金币") - private Integer sumTaskGold; // 历史任务金币 + private BigDecimal sumTaskGold; // 历史任务金币 @ExcelProperty("当前永久金币") - private Integer currentPermanentGold; // 当前永久金币 + private BigDecimal currentPermanentGold; // 当前永久金币 @ExcelProperty("当前六月免费金币") - private Integer currentFreeJune; // 当前六月免费金币 + private BigDecimal currentFreeJune; // 当前六月免费金币 @ExcelProperty("当前十二月免费金币") - private Integer currentFreeDecember; // 当前十二月免费金币 + private BigDecimal currentFreeDecember; // 当前十二月免费金币 @ExcelProperty("当前任务金币") - private Integer currentTaskGold; // 当前任务金币 + private BigDecimal currentTaskGold; // 当前任务金币 @ExcelProperty("充值次数") private Integer rechargeNum; // 充值次数 @ExcelProperty("历史消费") @@ -48,11 +49,11 @@ public class User implements Serializable { @ExcelProperty("历史消费次数") private Integer consumeNum; // 消费次数 @ExcelProperty("历史消费永久金币") - private Integer sumConsumePermanent; + private BigDecimal sumConsumePermanent; @ExcelProperty("历史消费任务金币") - private Integer sumConsumeTask; + private BigDecimal sumConsumeTask; @ExcelProperty("历史消费免费金币") - private Integer sumConsumeFree; + private BigDecimal sumConsumeFree; @ExcelIgnore private List markets; @ExcelProperty("首充日期") diff --git a/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java b/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java index 5f5af0e..e9845e8 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java +++ b/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -36,15 +37,15 @@ public class GoldDetail { @ExcelProperty("类型") private Integer type; // 类型 @ExcelProperty("总金币") - private Integer sumGold; // 总金币 + private BigDecimal sumGold; // 总金币 @ExcelProperty("永久金币") - private Integer permanentGold; //永久金币 + private BigDecimal permanentGold; //永久金币 @ExcelProperty("免费金币六月到期") - private Integer freeJune; // 免费金币六月到期 + private BigDecimal freeJune; // 免费金币六月到期 @ExcelProperty("免费金币十二月到期") - private Integer freeDecember; // 免费金币十二月到期 + private BigDecimal freeDecember; // 免费金币十二月到期 @ExcelProperty("任务金币") - private Integer taskGold; // 任务金币 + private BigDecimal taskGold; // 任务金币 @ExcelProperty("提交人") private String adminName; //提交人 @ExcelIgnore diff --git a/src/main/java/com/example/demo/domain/vo/coin/Total.java b/src/main/java/com/example/demo/domain/vo/coin/Total.java index 60a12d5..788f989 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/Total.java +++ b/src/main/java/com/example/demo/domain/vo/coin/Total.java @@ -3,6 +3,8 @@ package com.example.demo.domain.vo.coin; import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; + /** * @program: GOLD * @ClassName Total @@ -17,9 +19,9 @@ public class Total { private static final long serialVersionUID = 1L; private String token; - private Integer Goldtotal; - private Integer permanentGold; - private Integer freeGold; - private Integer taskGold; + private BigDecimal Goldtotal; + private BigDecimal permanentGold; + private BigDecimal freeGold; + private BigDecimal taskGold; } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index 348dd53..fcdc163 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -86,14 +86,14 @@ public class AuditServiceImpl implements AuditService { GoldUser gold = userMapper.selectGold(order.getJwcode().toString()); update.setJwcode(order.getJwcode()); //精网号 - update.setSumPermanentGold(order.getPermanentGold()); //历史永久金币 - update.setSumFreeJune(order.getFreeJune()); //历史六月免费金币 - update.setSumFreeDecember(order.getFreeDecember()); //历史十二月免费金币 - update.setSumTaskGold(order.getTaskGold()); //历史任务金币 - update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币 - update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币 - update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币 - update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币 + update.setSumPermanentGold(BigDecimal.valueOf(order.getPermanentGold())); //历史永久金币 + update.setSumFreeJune(BigDecimal.valueOf(order.getFreeJune())); //历史六月免费金币 + update.setSumFreeDecember(BigDecimal.valueOf(order.getFreeDecember())); //历史十二月免费金币 + update.setSumTaskGold(BigDecimal.valueOf(order.getTaskGold())); //历史任务金币 + update.setCurrentPermanentGold(BigDecimal.valueOf(order.getPermanentGold())); //当前永久金币 + update.setCurrentFreeJune(BigDecimal.valueOf(order.getFreeJune())); //当前六月免费金币 + update.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeDecember())); //当前十二月免费金币 + update.setCurrentTaskGold(BigDecimal.valueOf(order.getTaskGold())); //当前任务金币 update.setRechargeNum(1); //充值次数加一 auditMapper.updateUserGold(update); //erp增加充值数据 @@ -109,10 +109,10 @@ public class AuditServiceImpl implements AuditService { //更新用户余额 User update = new User(); update.setJwcode(order.getJwcode()); - update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币 - update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币 - update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币 - update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币 + update.setCurrentPermanentGold(BigDecimal.valueOf(order.getPermanentGold())); //当前永久金币 + update.setCurrentFreeJune(BigDecimal.valueOf(order.getFreeJune())); //当前六月免费金币 + update.setCurrentFreeDecember(BigDecimal.valueOf(order.getFreeDecember())); //当前十二月免费金币 + update.setCurrentTaskGold(BigDecimal.valueOf(order.getTaskGold())); //当前任务金币 auditMapper.updateUserGold(update); //erp增加退款数据 // if(update.getJwcode().equals(94226013)){ diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java index 1d1e8d7..d4b555c 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -186,10 +186,10 @@ public class ConsumeServiceImpl implements ConsumeService { consumeMapper.updateUserGold(userGoldRecord); User user = new User(); user.setJwcode(userGoldRecord.getJwcode()); - user.setCurrentPermanentGold(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()); - user.setCurrentFreeJune(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()); - user.setCurrentFreeDecember(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()); - user.setCurrentTaskGold(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()); + user.setCurrentPermanentGold(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue())); + user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune())); + user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember())); + user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue())); user.setConsumeNum(gold.getConsumeNum().intValue() + 1); user.setSumConsume(-(consumeUser.getPermanentGold().intValue() + consumeUser.getFreeGold().intValue() + consumeUser.getTaskGold().intValue())); userMapper.updateGold(user); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java index a145f19..d1f18db 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java @@ -86,34 +86,36 @@ public class GoldDetailServiceImpl implements GoldDetailService { // 初始化累加器 int totalNum=0; - int permanentGoldSum = 0; - int freeGoldSum = 0; - int taskGoldSum = 0; + BigDecimal permanentGoldSum = BigDecimal.ZERO; + BigDecimal freeGoldSum = BigDecimal.ZERO; + BigDecimal taskGoldSum = BigDecimal.ZERO; // 遍历消费记录并累加金币 for (GoldDetail detail : goldDetails) { // 累加永久金币 if (detail.getPermanentGold() != null) { - permanentGoldSum += detail.getPermanentGold(); + permanentGoldSum = permanentGoldSum.add(detail.getPermanentGold()); } // 累加免费金币 if (detail.getFreeJune() != null||detail.getFreeDecember() != null) { - freeGoldSum = freeGoldSum+detail.getFreeJune()+detail.getFreeDecember(); + BigDecimal freeJune = (detail.getFreeJune() != null) ? detail.getFreeJune() : BigDecimal.ZERO; + BigDecimal freeDecember = (detail.getFreeDecember() != null) ? detail.getFreeDecember() : BigDecimal.ZERO; + freeGoldSum = freeGoldSum.add(freeJune).add(freeDecember); } // 累加任务金币 if (detail.getTaskGold() != null) { - taskGoldSum += detail.getTaskGold(); + taskGoldSum = taskGoldSum.add(detail.getTaskGold()); } // 每遍历一条记录,总条数加1 totalNum++; } // 将累加结果设置到Gold对象 - gold.setPermanentGolds(BigDecimal.valueOf(permanentGoldSum)); - gold.setFreeGolds(BigDecimal.valueOf(freeGoldSum)); + gold.setPermanentGolds(permanentGoldSum); + gold.setFreeGolds(freeGoldSum); gold.setTotalNum(totalNum); - gold.setTaskGolds(BigDecimal.valueOf(taskGoldSum)); - gold.setSumGolds(BigDecimal.valueOf(permanentGoldSum+freeGoldSum+taskGoldSum)); + gold.setTaskGolds(taskGoldSum); + gold.setSumGolds(permanentGoldSum.add(freeGoldSum).add(taskGoldSum)); return gold; } diff --git a/src/main/resources/mapper/GoldDetailMapper.xml b/src/main/resources/mapper/GoldDetailMapper.xml index 438859b..3b13aaf 100644 --- a/src/main/resources/mapper/GoldDetailMapper.xml +++ b/src/main/resources/mapper/GoldDetailMapper.xml @@ -7,8 +7,20 @@