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/controller/coin/GoldDetailController.java b/src/main/java/com/example/demo/controller/coin/GoldDetailController.java index ea0f61b..a498e85 100644 --- a/src/main/java/com/example/demo/controller/coin/GoldDetailController.java +++ b/src/main/java/com/example/demo/controller/coin/GoldDetailController.java @@ -85,8 +85,10 @@ public class GoldDetailController { } } else { // 如果传入的市场为空,则设置默认市场 - if (!markets.contains("9") || !markets.contains("9999")) { - page.getGoldDetail().setMarkets(markets); // 设置默认市场 + if (markets.contains("9") || markets.contains("9999")) { + page.getGoldDetail().setMarkets(null); // 包含 9 或 9999,传 null + } else { + page.getGoldDetail().setMarkets(markets); // 不包含,传原值 } } @@ -121,8 +123,10 @@ public class GoldDetailController { } } else { // 如果传入的市场为空,则设置默认市场 - if (!markets.contains("9") || !markets.contains("9999")) { - page.getGoldDetail().setMarkets(markets); // 设置默认市场 + if (markets.contains("9") || markets.contains("9999")) { + page.getGoldDetail().setMarkets(null); // 包含 9 或 9999,传 null + } else { + page.getGoldDetail().setMarkets(markets); // 不包含,传原值 } } return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); @@ -150,8 +154,10 @@ public class GoldDetailController { } } else { // 如果传入的市场为空,则设置默认市场 - if (!markets.contains("9") || !markets.contains("9999")) { - user.setMarkets(markets); // 设置默认市场 + if (markets.contains("9") || markets.contains("9999")) { + user.setMarkets(null); // 包含 9 或 9999,传 null + } else { + user.setMarkets(markets); // 不包含,传原值 } } return Result.success(goldDetailService.GoldTotal(user)); @@ -186,8 +192,10 @@ public class GoldDetailController { } } else { // 如果传入的市场为空,则设置默认市场 - if (!markets.contains("9") || !markets.contains("9999")) { - page.getUser().setMarkets(markets); // 设置默认市场 + if (markets.contains("9") || markets.contains("9999")) { + page.getUser().setMarkets(null); // 包含 9 或 9999,传 null + } else { + page.getUser().setMarkets(markets); // 不包含,传原值 } } return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser())); 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/ConsumeUser.java b/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java index 9ef8745..9aeeb8f 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -39,13 +40,13 @@ public class ConsumeUser implements Serializable { @ExcelProperty("消费平台") private String payPlatform; // 消费平台 @ExcelProperty("金币总数") - private Integer sumGold; // 金币总数 - @ExcelProperty("永久金币*100") - private Integer permanentGold; // 永久金币 - @ExcelProperty("免费金币*100") - private Integer freeGold; // 免费金币 - @ExcelProperty("任务金币*100") - private Integer taskGold; // 任务金币 + private BigDecimal sumGold; // 金币总数 + @ExcelProperty("永久金币") + private BigDecimal permanentGold; // 永久金币 + @ExcelProperty("免费金币") + private BigDecimal freeGold; // 免费金币 + @ExcelProperty("任务金币") + private BigDecimal taskGold; // 任务金币 @ExcelProperty("备注") private String remark; // 备注 @ExcelProperty("提交人ID") diff --git a/src/main/java/com/example/demo/domain/vo/coin/Gold.java b/src/main/java/com/example/demo/domain/vo/coin/Gold.java index 0d68ad8..5464d67 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/Gold.java +++ b/src/main/java/com/example/demo/domain/vo/coin/Gold.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.math.BigDecimal; /** * @program: gold-java @@ -21,8 +22,8 @@ import java.io.Serializable; public class Gold implements Serializable { private static final long serialVersionUID = 1L; private Integer totalNum; //总条数 - private Integer permanentGolds; // 永久金币总数 - private Integer freeGolds; // 免费金币总数 - private Integer taskGolds; // 任务金币总数 - private Integer sumGolds; + private BigDecimal permanentGolds; // 永久金币总数 + private BigDecimal freeGolds; // 免费金币总数 + private BigDecimal taskGolds; // 任务金币总数 + private BigDecimal sumGolds; } 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/GoldUser.java b/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java index ade5773..efac8d1 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java @@ -6,6 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -29,25 +30,25 @@ public class GoldUser { @ExcelProperty("所属地区") private String market; // 所属地区 @ExcelProperty("当前金币总数") - private Integer NowSumGold; // 当前金币总数 + private BigDecimal NowSumGold; // 当前金币总数 @ExcelProperty("当前永久金币") - private Integer NowPermanentGold; // 当前永久金币 + private BigDecimal NowPermanentGold; // 当前永久金币 @ExcelProperty("当前免费金币") - private Integer NowFreeGold; // 当前免费金币 + private BigDecimal NowFreeGold; // 当前免费金币 @ExcelProperty("当前免费金币6月") - private Integer NowFreeJune; // 免费金币6月 + private BigDecimal NowFreeJune; // 免费金币6月 @ExcelProperty("当前免费金币12月") - private Integer NowFreeDecember; // 免费金币12月 + private BigDecimal NowFreeDecember; // 免费金币12月 @ExcelProperty("当前任务金币") - private Integer NowTaskGold; // 当前任务金币 + private BigDecimal NowTaskGold; // 当前任务金币 @ExcelProperty("历史金币总数") - private Integer historySumGold; // 历史金币总数 + private BigDecimal historySumGold; // 历史金币总数 @ExcelProperty("历史永久金币") - private Integer historyPermanentGold; // 历史永久金币 + private BigDecimal historyPermanentGold; // 历史永久金币 @ExcelProperty("历史免费金币") - private Integer historyFreeGold; // 历史免费金币 + private BigDecimal historyFreeGold; // 历史免费金币 @ExcelProperty("历史任务金币") - private Integer historyTaskGold; // 历史任务金币 + private BigDecimal historyTaskGold; // 历史任务金币 @ExcelProperty("充值次数") private Integer rechargeNum; // 充值次数 @ExcelProperty("消费次数") diff --git a/src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java b/src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java index 98fbffd..8d04023 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java @@ -7,6 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -43,14 +44,14 @@ public class RechargeUser { @ExcelProperty("汇率名称") private String rateName; // 汇率名称 - @ExcelProperty("金额[分]") - private Integer money; // 金额[分] + @ExcelProperty("金额") + private BigDecimal money; // 金额[分] - @ExcelProperty("永久金币*100") - private Integer permanentGold; // 永久金币 + @ExcelProperty("永久金币") + private BigDecimal permanentGold; // 永久金币 - @ExcelProperty("免费金币*100") - private Integer freeGold; // 免费金币 + @ExcelProperty("免费金币") + private BigDecimal freeGold; // 免费金币 @ExcelProperty("支付方式") private String payModel; // 支付方式 diff --git a/src/main/java/com/example/demo/domain/vo/coin/RefundUser.java b/src/main/java/com/example/demo/domain/vo/coin/RefundUser.java index c84437d..301d281 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/RefundUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/RefundUser.java @@ -7,6 +7,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -41,13 +42,13 @@ public class RefundUser { @ExcelProperty("退款方式") private Byte refundModel; // 退款方式(0全部/1部分退款) @ExcelProperty("金币总数") - private Integer sumGold; // 金币总数 - @ExcelProperty("永久金币*100") - private Integer permanentGold; // 永久金币 - @ExcelProperty("免费金币*100") - private Integer freeGold; // 免费金币 - @ExcelProperty("任务金币*100") - private Integer taskGold; // 任务金币 + private BigDecimal sumGold; // 金币总数 + @ExcelProperty("永久金币") + private BigDecimal permanentGold; // 永久金币 + @ExcelProperty("免费金币") + private BigDecimal freeGold; // 免费金币 + @ExcelProperty("任务金币") + private BigDecimal taskGold; // 任务金币 @ExcelProperty("退款原因") private String remark; // 退款原因 @ExcelProperty("提交人ID") 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 fe239b6..fcdc163 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -85,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增加充值数据 @@ -108,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)){ @@ -203,8 +204,8 @@ public class AuditServiceImpl implements AuditService { totalNum++; } // 将累加结果设置到Gold对象 - gold.setPermanentGolds(permanentGoldSum); - gold.setFreeGolds(freeGoldSum); + gold.setPermanentGolds(BigDecimal.valueOf(permanentGoldSum)); + gold.setFreeGolds(BigDecimal.valueOf(freeGoldSum)); gold.setTotalNum(totalNum); return gold; } @@ -246,10 +247,10 @@ public class AuditServiceImpl implements AuditService { totalNum++; } // 将累加结果设置到Gold对象 - gold.setPermanentGolds(permanentGoldSum); - gold.setFreeGolds(freeGoldSum); + gold.setPermanentGolds(BigDecimal.valueOf(permanentGoldSum)); + gold.setFreeGolds(BigDecimal.valueOf(freeGoldSum)); gold.setTotalNum(totalNum); - gold.setTaskGolds(taskGoldSum); + gold.setTaskGolds(BigDecimal.valueOf(taskGoldSum)); return gold; } } 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 8b53daa..d4b555c 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -70,23 +71,23 @@ public class ConsumeServiceImpl implements ConsumeService { List consumeUsers = consumeMapper.selectBy(consumeUser); // 初始化累加器 - int permanentGoldSum = 0; - int freeGoldSum = 0; - int taskGoldSum = 0; + BigDecimal permanentGoldSum = BigDecimal.valueOf(0); + BigDecimal freeGoldSum = BigDecimal.valueOf(0); + BigDecimal taskGoldSum = BigDecimal.valueOf(0); // 遍历消费记录并累加金币 for (ConsumeUser user : consumeUsers) { // 累加永久金币 if (user.getPermanentGold() != null) { - permanentGoldSum += user.getPermanentGold(); + permanentGoldSum = permanentGoldSum.add(user.getPermanentGold()); } // 累加免费金币 if (user.getFreeGold() != null) { - freeGoldSum += user.getFreeGold(); + freeGoldSum = freeGoldSum.add(user.getFreeGold()); } // 累加任务金币 if (user.getTaskGold() != null) { - taskGoldSum += user.getTaskGold(); + taskGoldSum = taskGoldSum.add(user.getTaskGold()); } } @@ -119,7 +120,7 @@ public class ConsumeServiceImpl implements ConsumeService { if (consumeUser.getTaskGold() == null || consumeUser.getFreeGold() == null || consumeUser.getPermanentGold() == null) { return Result.error("金币数量不能为空"); } - if (consumeUser.getTaskGold() < 0 || consumeUser.getFreeGold() < 0 || consumeUser.getPermanentGold() < 0) { + if (consumeUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 || consumeUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) { return Result.error("金币不能为负数"); } if(consumeUser.getJwcode()<10000000||consumeUser.getJwcode()>99999999) @@ -141,37 +142,38 @@ public class ConsumeServiceImpl implements ConsumeService { userGoldRecord.setOrderCode("XF" + timestampPart + randomNumber); userGoldRecord.setJwcode(consumeUser.getJwcode()); userGoldRecord.setGoodsName(consumeUser.getGoodsName()); - userGoldRecord.setSumGold(-consumeUser.getSumGold()); - userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold()); + userGoldRecord.setSumGold(-consumeUser.getSumGold().intValue()); + userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold().intValue()); // 获取当前月份(1-12) int currentMonth = LocalDate.now().getMonthValue(); GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString()); - if (consumeUser.getFreeGold() > (gold.getNowFreeDecember() + gold.getNowFreeJune()) || consumeUser.getPermanentGold() > gold.getNowPermanentGold() - || consumeUser.getTaskGold() > gold.getNowTaskGold()) { + if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember().add(gold.getNowFreeJune())) > 0 + || consumeUser.getPermanentGold().compareTo(gold.getNowPermanentGold()) > 0 + || consumeUser.getTaskGold().compareTo(gold.getNowTaskGold()) > 0) { return Result.error("金币数量不足"); } // 根据当前月份设置对应字段 if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置6月额度,12月保持默认值 - if (consumeUser.getFreeGold() > gold.getNowFreeJune()) { - userGoldRecord.setFreeJune(-gold.getNowFreeJune()); - userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold() - gold.getNowFreeJune())); + if (consumeUser.getFreeGold().compareTo(gold.getNowFreeJune()) > 0) { + userGoldRecord.setFreeJune(-gold.getNowFreeJune().intValue()); + userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold().subtract(gold.getNowFreeJune())).intValue()); } else { - userGoldRecord.setFreeJune(-consumeUser.getFreeGold()); + userGoldRecord.setFreeJune(-consumeUser.getFreeGold().intValue()); userGoldRecord.setFreeDecember(0); } } else { // 7-12月:设置12月额度,6月保持默认值 - if (consumeUser.getFreeGold() > gold.getNowFreeDecember()) { - userGoldRecord.setFreeDecember(-gold.getNowFreeDecember()); - userGoldRecord.setFreeJune(-(consumeUser.getFreeGold() - gold.getNowFreeDecember())); + if (consumeUser.getFreeGold().compareTo(gold.getNowFreeDecember()) > 0) { + userGoldRecord.setFreeDecember(-gold.getNowFreeDecember().intValue()); + userGoldRecord.setFreeJune(-(consumeUser.getFreeGold().subtract(gold.getNowFreeDecember())).intValue()); } else { - userGoldRecord.setFreeDecember(-consumeUser.getFreeGold()); + userGoldRecord.setFreeDecember(-consumeUser.getFreeGold().intValue()); userGoldRecord.setFreeJune(0); } } //信息输入 - userGoldRecord.setTaskGold(-consumeUser.getTaskGold()); + userGoldRecord.setTaskGold(-consumeUser.getTaskGold().intValue()); userGoldRecord.setRemark(consumeUser.getRemark()); userGoldRecord.setType((byte) 1); userGoldRecord.setIsRefund((byte) 0); @@ -184,12 +186,12 @@ public class ConsumeServiceImpl implements ConsumeService { consumeMapper.updateUserGold(userGoldRecord); User user = new User(); user.setJwcode(userGoldRecord.getJwcode()); - user.setCurrentPermanentGold(gold.getNowPermanentGold() - consumeUser.getPermanentGold()); - user.setCurrentFreeJune(gold.getNowFreeJune() + userGoldRecord.getFreeJune()); - user.setCurrentFreeDecember(gold.getNowFreeDecember() + userGoldRecord.getFreeDecember()); - user.setCurrentTaskGold(gold.getNowTaskGold() - consumeUser.getTaskGold()); - user.setConsumeNum(gold.getConsumeNum() + 1); - user.setSumConsume(-(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold())); + 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); // if(consumeUser.getJwcode().equals(94226013)){ GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, 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 a6d5ddb..d1f18db 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import com.example.demo.domain.vo.coin.*; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; @@ -85,23 +86,25 @@ 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 @@ -112,7 +115,7 @@ public class GoldDetailServiceImpl implements GoldDetailService { gold.setFreeGolds(freeGoldSum); gold.setTotalNum(totalNum); gold.setTaskGolds(taskGoldSum); - gold.setSumGolds(permanentGoldSum+freeGoldSum+taskGoldSum); + gold.setSumGolds(permanentGoldSum.add(freeGoldSum).add(taskGoldSum)); return gold; } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java index 504f3b5..c7b022e 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java @@ -13,6 +13,8 @@ import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.demo.domain.vo.coin.*; + +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -83,18 +85,18 @@ public class RechargeServiceImpl implements RechargeService { List rechargeUsers = rechargeMapper.selectBy(rechargeUser); // 初始化累加器 - int permanentGoldSum = 0; - int freeGoldSum = 0; + BigDecimal permanentGoldSum = new BigDecimal(0); + BigDecimal freeGoldSum = new BigDecimal(0); // 遍历充值记录并累加金币 for (RechargeUser user : rechargeUsers) { // 累加永久金币 if (user.getPermanentGold() != null) { - permanentGoldSum += user.getPermanentGold(); + permanentGoldSum = permanentGoldSum.add(user.getPermanentGold()); } // 累加免费金币 if (user.getFreeGold() != null) { - freeGoldSum += user.getFreeGold(); + freeGoldSum = freeGoldSum.add(user.getFreeGold()); } } @@ -112,7 +114,7 @@ public class RechargeServiceImpl implements RechargeService { if(rechargeUser.getFreeGold()==null||rechargeUser.getPermanentGold()==null||rechargeUser.getMoney()==null){ return Result.error("金币和金额不能为空"); } - if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<0||rechargeUser.getMoney()<0){ + if(rechargeUser.getFreeGold().compareTo(BigDecimal.ZERO)<0||rechargeUser.getPermanentGold().compareTo(BigDecimal.ZERO)<0||rechargeUser.getMoney().compareTo(BigDecimal.ZERO)<0){ return Result.error("充值不能为0"); } if(rechargeUser.getJwcode()<10000000||rechargeUser.getJwcode()>99999999) @@ -120,7 +122,7 @@ public class RechargeServiceImpl implements RechargeService { return Result.error("精网号位数小于8位或大于8位"); } // 验证免费金币和永久金币是否均为0 - if (rechargeUser.getFreeGold() == 0 && rechargeUser.getPermanentGold() == 0) { + if (rechargeUser.getFreeGold().compareTo(BigDecimal.ZERO) == 0 && rechargeUser.getPermanentGold().compareTo(BigDecimal.ZERO) == 0) { return Result.error("免费金币和永久金币不能同时为0"); } GoldUser goldUser = userMapper.selectUser(rechargeUser.getJwcode().toString()); @@ -141,23 +143,23 @@ public class RechargeServiceImpl implements RechargeService { userGoldRecord.setOrderCode("CZ" + timestampPart + randomNumber); userGoldRecord.setJwcode(rechargeUser.getJwcode()); userGoldRecord.setActivity(rechargeUser.getActivity()); - userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold()); + userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold().intValue()); // 获取当前月份(1-12) int currentMonth = LocalDate.now().getMonthValue(); // 根据当前月份设置对应字段 if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置6月额度,12月保持默认值 userGoldRecord.setFreeJune(0); - userGoldRecord.setFreeDecember(rechargeUser.getFreeGold()); + userGoldRecord.setFreeDecember(rechargeUser.getFreeGold().intValue()); } else { // 7-12月:设置12月额度,6月保持默认值 - userGoldRecord.setFreeJune(rechargeUser.getFreeGold()); + userGoldRecord.setFreeJune(rechargeUser.getFreeGold().intValue()); userGoldRecord.setFreeDecember(0); } //数据输入 - userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold()); + userGoldRecord.setSumGold(rechargeUser.getFreeGold().intValue()+rechargeUser.getPermanentGold().intValue()); userGoldRecord.setRateId(rechargeUser.getRateId()); - userGoldRecord.setMoney(rechargeUser.getMoney()); + userGoldRecord.setMoney(rechargeUser.getMoney().intValue()); userGoldRecord.setVoucher(rechargeUser.getVoucher()); userGoldRecord.setPayPlatform("金币系统"); userGoldRecord.setPayModel(rechargeUser.getPayModel()); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java index 9b88b64..9bb0d1e 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java @@ -13,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.example.demo.domain.vo.coin.*; + +import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; @@ -47,7 +49,7 @@ public class RefundServiceImpl implements RefundService { //查找全部退款 @Override - public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception{ + public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception { List markets = marketMapper.getMarketIds(refundUser.getMarkets()); refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); @@ -59,31 +61,32 @@ public class RefundServiceImpl implements RefundService { @Override public Gold statsGold(RefundUser refundUser) { List markets = marketMapper.getMarketIds(refundUser.getMarkets()); - if (markets.contains("9") || markets.contains("9999")){ - markets=null; + if (markets.contains("9") || markets.contains("9999")) { + markets = null; } refundUser.setMarkets(markets); Gold gold = new Gold(); List refundUsers = refundMapper.selectBy(refundUser); // 初始化累加器 - int permanentGoldSum = 0; - int freeGoldSum = 0; - int taskGoldSum = 0; - // 遍历推开记录并累加金币 + BigDecimal permanentGoldSum = BigDecimal.valueOf(0); + BigDecimal freeGoldSum = BigDecimal.valueOf(0); + BigDecimal taskGoldSum = BigDecimal.valueOf(0); + + // 遍历退款记录并累加金币 for (RefundUser user : refundUsers) { // 累加永久金币 if (user.getPermanentGold() != null) { - permanentGoldSum += user.getPermanentGold(); + permanentGoldSum = permanentGoldSum.add(user.getPermanentGold()); } // 累加免费金币 if (user.getFreeGold() != null) { - freeGoldSum += user.getFreeGold(); + freeGoldSum = freeGoldSum.add(user.getFreeGold()); } // 累加任务金币 if (user.getTaskGold() != null) { - taskGoldSum += user.getTaskGold(); + taskGoldSum = taskGoldSum.add(user.getTaskGold()); } } @@ -97,10 +100,10 @@ public class RefundServiceImpl implements RefundService { //查找筛选退款 @Override - public PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser)throws Exception { + public PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception { List markets = marketMapper.getMarketIds(refundUser.getMarkets()); - if (markets.contains("9") || markets.contains("9999")){ - markets=null; + if (markets.contains("9") || markets.contains("9999")) { + markets = null; } refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); @@ -115,15 +118,16 @@ public class RefundServiceImpl implements RefundService { if (refundUser.getTaskGold() == null || refundUser.getFreeGold() == null || refundUser.getPermanentGold() == null) { return Result.error("金币不能为空"); } - if (refundUser.getTaskGold() < 0 || refundUser.getFreeGold() < 0 || refundUser.getPermanentGold() < 0) { + if (refundUser.getTaskGold().compareTo(BigDecimal.ZERO) < 0 || + refundUser.getFreeGold().compareTo(BigDecimal.ZERO) < 0 || + refundUser.getPermanentGold().compareTo(BigDecimal.ZERO) < 0) { return Result.error("金币不能为负数"); } - if(refundUser.getJwcode()<10000000||refundUser.getJwcode()>99999999) - { + if (refundUser.getJwcode() < 10000000 || refundUser.getJwcode() > 99999999) { return Result.error("精网号位数小于8位或大于8位"); } GoldUser goldUser = userMapper.selectUser(refundUser.getJwcode().toString()); - if(goldUser==null){ + if (goldUser == null) { return Result.error("用户不存在"); } UserGoldRecord userGoldRecord = new UserGoldRecord(); @@ -147,22 +151,22 @@ public class RefundServiceImpl implements RefundService { userGoldRecord.setJwcode(refundUser.getJwcode()); userGoldRecord.setRefundType(refundUser.getRefundType()); userGoldRecord.setRefundModel(refundUser.getRefundModel()); - userGoldRecord.setPermanentGold(refundUser.getPermanentGold()); + userGoldRecord.setPermanentGold(refundUser.getPermanentGold().intValue()); // 获取当前月份(1-12) int currentMonth = LocalDate.now().getMonthValue(); // 根据当前月份设置对应字段 if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置6月额度,12月保持默认值 userGoldRecord.setFreeJune(0); - userGoldRecord.setFreeDecember(refundUser.getFreeGold()); + userGoldRecord.setFreeDecember(refundUser.getFreeGold().intValue()); } else { // 7-12月:设置12月额度,6月保持默认值 - userGoldRecord.setFreeJune(refundUser.getFreeGold()); + userGoldRecord.setFreeJune(refundUser.getFreeGold().intValue()); userGoldRecord.setFreeDecember(0); } //信息输入 - userGoldRecord.setTaskGold(refundUser.getTaskGold()); - userGoldRecord.setSumGold(refundUser.getSumGold()); + userGoldRecord.setTaskGold(refundUser.getTaskGold().intValue()); + userGoldRecord.setSumGold(refundUser.getSumGold().intValue()); userGoldRecord.setPayPlatform("金币系统"); userGoldRecord.setRemark(refundUser.getRemark()); userGoldRecord.setAdminId(refundUser.getAdminId()); @@ -173,13 +177,12 @@ public class RefundServiceImpl implements RefundService { //消费订单号校验 if (list == null || list.isEmpty()) { return Result.error("该用户没有该订单号"); - }else if(list.size()==1){ + } else if (list.size() == 1) { ConsumeUser consumeUser = list.getFirst(); - if(consumeUser.getIsRefund().equals(1)) - { + if (consumeUser.getIsRefund().equals(1)) { return Result.error("该订单已被退款"); } - }else { + } else { return Result.error("消费订单重复"); } refundMapper.add(userGoldRecord); @@ -215,7 +218,7 @@ public class RefundServiceImpl implements RefundService { String combined = orderCode + "_" + goodsName; RefundUser refundUser = new RefundUser(); refundUser.setGoodsName(combined); - refundUser.setSumGold(record.getPermanentGold() + record.getFreeGold() + record.getTaskGold()); + refundUser.setSumGold(record.getPermanentGold().add(record.getFreeGold()).add(record.getTaskGold())); refundUser.setPermanentGold(record.getPermanentGold()); refundUser.setFreeGold(record.getFreeGold()); refundUser.setTaskGold(record.getTaskGold()); diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index e9f1449..6ebb402 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -79,10 +79,10 @@ m.name as market, ugr.goods_name AS goodsName, ugr.pay_platform AS payPlatform, - ugr.sum_gold AS sumGold, - ugr.permanent_gold AS permanentGold, - (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold, - ugr.task_gold AS taskGold, + ugr.sum_gold/100 AS sumGold, + ugr.permanent_gold/100 AS permanentGold, + (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGold, + ugr.task_gold/100 AS taskGold, ugr.remark AS remark, a.admin_name AS adminName, ugr.create_time AS createTime 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 @@