From 850fb12eb3e26f0721f17b073de1c6070b09bfcf Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Mon, 7 Jul 2025 17:35:09 +0800 Subject: [PATCH 01/11] =?UTF-8?q?7.6token=E6=8F=90=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Export/ExportServiceImpl.java | 40 +++++++++-- .../com/example/demo/domain/DTO/ConsumeDTO.java | 2 + .../com/example/demo/domain/export/Goldmingxi.java | 1 + .../com/example/demo/domain/export/Goldyve.java | 24 +++++++ .../demo/serviceImpl/ExportExcelServiceImpl.java | 77 ++++++++++++++++++++-- .../demo/serviceImpl/GoldDetailServiceImpl.java | 26 +++++++- src/main/resources/mapper/PermissionMapper.xml | 6 +- 7 files changed, 159 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/export/Goldyve.java diff --git a/src/main/java/com/example/demo/Export/ExportServiceImpl.java b/src/main/java/com/example/demo/Export/ExportServiceImpl.java index 2c52080..bdce7f0 100644 --- a/src/main/java/com/example/demo/Export/ExportServiceImpl.java +++ b/src/main/java/com/example/demo/Export/ExportServiceImpl.java @@ -1,15 +1,21 @@ package com.example.demo.Export; +import com.example.demo.Util.JWTUtil; import com.example.demo.domain.DTO.ConsumeDTO; import com.example.demo.domain.DTO.RechargeDTO; import com.example.demo.domain.DTO.RefundDTO; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.Result; import com.example.demo.exception.SystemException; import com.example.demo.mapper.GoldDetailMapper; import com.example.demo.Util.RedisUtil; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -33,13 +39,21 @@ public class ExportServiceImpl implements ExportService{ @Override public Result addExportRecharge(RechargeDTO dto) { + // 获取操作者 jwcode + HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + try { + UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + dto.setAccount(Integer.valueOf(token1.getUsername())); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } // 生成文件名 String fileName = String.format("%s_%s_%s.xlsx", "充值明细", "操作人", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); System.out.println(fileName); - dto.setAccount(123456); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); @@ -81,13 +95,21 @@ public class ExportServiceImpl implements ExportService{ @Override public Result addExportRefund(RefundDTO dto) { + // 获取操作者 jwcode + HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + try { + UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + dto.setAccount(Integer.valueOf(token1.getUsername())); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } // 生成文件名 String fileName = String.format("%s_%s_%s.xlsx", "退款明细", "操作人", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); System.out.println(fileName); - dto.setAccount(123456); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); @@ -129,13 +151,21 @@ public class ExportServiceImpl implements ExportService{ @Override public Result addExportConsume(ConsumeDTO dto) { + // 获取操作者 jwcode + HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + try { + UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + dto.setAccount(Integer.valueOf(token1.getUsername())); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } // 生成文件名 String fileName = String.format("%s_%s_%s.xlsx", - "消费明细", + "消耗明细", "操作人", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); System.out.println(fileName); - dto.setAccount(123456); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); @@ -167,7 +197,7 @@ public class ExportServiceImpl implements ExportService{ // 3. 发送到 Redis 消息队列 String jsonData = new ObjectMapper().writeValueAsString(exportData); - redisUtil.sendMessage("refund:queue:export_queue", jsonData); + redisUtil.sendMessage("consume:queue:export_queue", jsonData); }catch (Exception e){ e.printStackTrace(); throw new SystemException("导出数据异常,请稍后重试", e); diff --git a/src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java b/src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java index d8a7b01..a2eb47a 100644 --- a/src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java +++ b/src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java @@ -1,5 +1,6 @@ package com.example.demo.domain.DTO; +import com.example.demo.domain.vo.ConsumeUser; import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.NoArgsConstructor; @@ -31,6 +32,7 @@ public class ConsumeDTO { private Integer page = 1; @NotNull(message = "pageSize不能为空") private Integer pageSize = 20; + private ConsumeUser consumeUser; @Override public String toString() { diff --git a/src/main/java/com/example/demo/domain/export/Goldmingxi.java b/src/main/java/com/example/demo/domain/export/Goldmingxi.java index 41dd026..5291dc1 100644 --- a/src/main/java/com/example/demo/domain/export/Goldmingxi.java +++ b/src/main/java/com/example/demo/domain/export/Goldmingxi.java @@ -25,4 +25,5 @@ public class Goldmingxi { private Integer freeDecember; // 免费金币七月到期 private Integer taskGold; // 任务金币 private String adminName; //提交人 + private String createTime; // 提交时间 } diff --git a/src/main/java/com/example/demo/domain/export/Goldyve.java b/src/main/java/com/example/demo/domain/export/Goldyve.java new file mode 100644 index 0000000..26f6878 --- /dev/null +++ b/src/main/java/com/example/demo/domain/export/Goldyve.java @@ -0,0 +1,24 @@ +package com.example.demo.domain.export; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: GOLD + * @ClassName Goldyve + * @description: + * @author: huangqizhen + * @create: 2025−07-07 15:27 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class Goldyve { + private String name; + private Integer jwcode; + private String market; + private String currentPermanentGold ; + private String currentFreeJune; + private String currentFreeDecember; + private String currentTaskGold; +} diff --git a/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java index 98efdd1..9e425ed 100644 --- a/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java @@ -10,6 +10,7 @@ import com.example.demo.controller.GoldDetailController; import com.example.demo.controller.RechargeController; import com.example.demo.controller.RefundController; import com.example.demo.domain.entity.Export; +import com.example.demo.domain.entity.User; import com.example.demo.domain.export.Goldmingxi; import com.example.demo.domain.vo.*; @@ -294,7 +295,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = initExcelWriter(outputStream, "user"); + excelWriter = ExcelWriter(outputStream, "user"); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 Page page = new Page(); @@ -493,7 +494,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = initExcelWriter(outputStream, "user"); + excelWriter = RechargeExcelWriter(outputStream, "user"); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 Page page = new Page(); @@ -692,7 +693,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = initExcelWriter(outputStream, "user"); + excelWriter = ConExcelWriter(outputStream, "user"); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 Page page = new Page(); @@ -701,7 +702,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { Integer totalCount = 0; boolean hasMore = true; while (hasMore) { - Result pageResult = refundController.selcetBy(page); + Result pageResult = consumeController.selcetBy(page); Integer code = pageResult.getCode(); Object data = pageResult.getData(); @@ -891,7 +892,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 6. 初始化Excel写入器(指向本地文件流) - excelWriter = initExcelWriter(outputStream, "user"); + excelWriter = RefundExcelWriter(outputStream, "user"); WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); // 7. 分页查询并写入数据 Page page = new Page(); @@ -900,7 +901,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { Integer totalCount = 0; boolean hasMore = true; while (hasMore) { - Result pageResult = consumeController.selcetBy(page); + Result pageResult = refundController.selcetBy(page); Integer code = pageResult.getCode(); Object data = pageResult.getData(); @@ -1099,4 +1100,68 @@ public class ExportExcelServiceImpl implements ExportExcelService { throw new IllegalArgumentException("不支持的导出类型: " + exportType); } } + /** + * 初始化excel文件 + * @param os + * @param exportType + * @return + */ + private ExcelWriter ExcelWriter(OutputStream os, String exportType) { + switch (exportType) { + case "user": + return EasyExcel.write(os, User.class) + .inMemory(Boolean.TRUE) + .build(); + default: + throw new IllegalArgumentException("不支持的导出类型: " + exportType); + } + } + /** + * 初始化excel文件 + * @param os + * @param exportType + * @return + */ + private ExcelWriter RechargeExcelWriter(OutputStream os, String exportType) { + switch (exportType) { + case "user": + return EasyExcel.write(os, RechargeUser.class) + .inMemory(Boolean.TRUE) + .build(); + default: + throw new IllegalArgumentException("不支持的导出类型: " + exportType); + } + } + /** + * 初始化excel文件 + * @param os + * @param exportType + * @return + */ + private ExcelWriter ConExcelWriter(OutputStream os, String exportType) { + switch (exportType) { + case "user": + return EasyExcel.write(os, ConsumeUser.class) + .inMemory(Boolean.TRUE) + .build(); + default: + throw new IllegalArgumentException("不支持的导出类型: " + exportType); + } + }/** + * 初始化excel文件 + * @param os + * @param exportType + * @return + */ + private ExcelWriter RefundExcelWriter(OutputStream os, String exportType) { + switch (exportType) { + case "user": + return EasyExcel.write(os, RefundUser.class) + .inMemory(Boolean.TRUE) + .build(); + default: + throw new IllegalArgumentException("不支持的导出类型: " + exportType); + } + } + } \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java index 022c5dc..4e73d24 100644 --- a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java @@ -1,8 +1,10 @@ package com.example.demo.serviceImpl; +import com.example.demo.Util.JWTUtil; import com.example.demo.Util.RedisUtil; import com.example.demo.domain.DTO.GoldDetailDTO; import com.example.demo.domain.DTO.GoldUserDTO; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.*; import com.example.demo.exception.SystemException; @@ -11,8 +13,12 @@ import com.example.demo.service.GoldDetailService; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import java.io.IOException; import java.time.LocalDateTime; @@ -110,14 +116,20 @@ public class GoldDetailServiceImpl implements GoldDetailService { @Override public Result addExportRecord(GoldDetailDTO dto) { // 获取操作者 jwcode - + HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + try { + UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + dto.setAccount(Integer.valueOf(token1.getUsername())); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } // 生成文件名 String fileName = String.format("%s_%s_%s.xlsx", "客户金币明细", "操作人", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); System.out.println(fileName); - dto.setAccount(123456); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); @@ -159,13 +171,21 @@ public class GoldDetailServiceImpl implements GoldDetailService { @Override public Result addExportRecordGold(GoldUserDTO dto) { + // 获取操作者 jwcode + HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + try { + UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + dto.setAccount(Integer.valueOf(token1.getUsername())); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } // 生成文件名 String fileName = String.format("%s_%s_%s.xlsx", "金币余额明细", "操作人", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); System.out.println(fileName); - dto.setAccount(123456); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); diff --git a/src/main/resources/mapper/PermissionMapper.xml b/src/main/resources/mapper/PermissionMapper.xml index 3f2b03e..b75e6d8 100644 --- a/src/main/resources/mapper/PermissionMapper.xml +++ b/src/main/resources/mapper/PermissionMapper.xml @@ -47,13 +47,13 @@ - admin.account=#{account} + and admin.account=#{account} - admin.market=#{market} + and admin.market=#{market} - admin.postiton=#{postiton} + and admin.postiton=#{postiton} order by admin.admin_status desc From f273d34a389a5e64b992833221a27acc34e94172 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Mon, 7 Jul 2025 17:51:34 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E9=87=91=E5=B8=81?= =?UTF-8?q?=E5=8F=98=E8=B4=9F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/serviceImpl/ConsumeServiceImpl.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 32a34ac..46cbd0d 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -118,8 +118,8 @@ public class ConsumeServiceImpl implements ConsumeService { userGoldRecord.setOrderCode("XF" + timestampPart + counterPart); userGoldRecord.setJwcode(consumeUser.getJwcode()); userGoldRecord.setGoodsName(consumeUser.getGoodsName()); - userGoldRecord.setSumGold(consumeUser.getSumGold()); - userGoldRecord.setPermanentGold(consumeUser.getPermanentGold()); + userGoldRecord.setSumGold(-consumeUser.getSumGold()); + userGoldRecord.setPermanentGold(-consumeUser.getPermanentGold()); // 获取当前月份(1-12) int currentMonth = LocalDate.now().getMonthValue(); GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString()); @@ -131,23 +131,23 @@ public class ConsumeServiceImpl implements ConsumeService { if (currentMonth >= 1 && currentMonth <= 6) { // 1-6月:设置6月额度,12月保持默认值 if (consumeUser.getFreeGold() > gold.getNowFreeJune()) { - userGoldRecord.setFreeJune(gold.getNowFreeJune()); - userGoldRecord.setFreeDecember(consumeUser.getFreeGold() - gold.getNowFreeJune()); + userGoldRecord.setFreeJune(-gold.getNowFreeJune()); + userGoldRecord.setFreeDecember(-(consumeUser.getFreeGold() - gold.getNowFreeJune())); } else { - userGoldRecord.setFreeJune(consumeUser.getFreeGold()); + userGoldRecord.setFreeJune(-consumeUser.getFreeGold()); userGoldRecord.setFreeDecember(0); } } else { // 7-12月:设置12月额度,6月保持默认值 if (consumeUser.getFreeGold() > gold.getNowFreeDecember()) { - userGoldRecord.setFreeDecember(gold.getNowFreeDecember()); - userGoldRecord.setFreeJune(consumeUser.getFreeGold() - gold.getNowFreeDecember()); + userGoldRecord.setFreeDecember(-gold.getNowFreeDecember()); + userGoldRecord.setFreeJune(-(consumeUser.getFreeGold() - gold.getNowFreeDecember())); } else { - userGoldRecord.setFreeDecember(consumeUser.getFreeGold()); + userGoldRecord.setFreeDecember(-consumeUser.getFreeGold()); userGoldRecord.setFreeJune(0); } } - userGoldRecord.setTaskGold(consumeUser.getTaskGold()); + userGoldRecord.setTaskGold(-consumeUser.getTaskGold()); userGoldRecord.setRemark(consumeUser.getRemark()); userGoldRecord.setType((byte) 1); userGoldRecord.setIsRefund((byte) 0); From ccea361ef7f58f7ba8679e7394182834e2599b68 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Mon, 7 Jul 2025 18:00:55 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E9=87=91=E5=B8=81?= =?UTF-8?q?=E5=8F=98=E8=B4=9F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/ConsumeServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 46cbd0d..d14fa5e 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -159,10 +159,10 @@ public class ConsumeServiceImpl implements ConsumeService { consumeMapper.add(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.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()); userMapper.updateGold(user); From c2a4713c3294c21c01a32c037fe5b623788f7ca5 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Mon, 7 Jul 2025 18:32:22 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=A1=A8=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=8F=96?= =?UTF-8?q?=E7=BB=9D=E5=AF=B9=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/StatisticsServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java index d93852e..fc9de43 100644 --- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java @@ -241,25 +241,25 @@ public class StatisticsServiceImpl implements StatisticsService { .filter(record -> record.getType() == 1) // 类型为消费 .mapToInt(UserGoldRecord::getPermanentGold) .sum(); - statistics.setConsumePermanent(consumePermanent); + statistics.setConsumePermanent(Math.abs(consumePermanent)); //消费相关-当日新增消费(六月免费) Integer consumeFreeJune = records.stream() .filter(record -> record.getType() == 1) // 类型为消费 .mapToInt(UserGoldRecord::getFreeJune) .sum(); - statistics.setConsumeFreeJune(consumeFreeJune); + statistics.setConsumeFreeJune(Math.abs(consumeFreeJune)); //消费相关-当日新增消费(十二月免费) Integer consumeFreeDecember = records.stream() .filter(record -> record.getType() == 1) // 类型为消费 .mapToInt(UserGoldRecord::getFreeDecember) .sum(); - statistics.setConsumeFreeDecember(consumeFreeDecember); + statistics.setConsumeFreeDecember(Math.abs(consumeFreeDecember)); //消费相关-当日新增消费(任务) Integer consumeTask = records.stream() .filter(record -> record.getType() == 1) // 类型为消费 .mapToInt(UserGoldRecord::getTaskGold) .sum(); - statistics.setConsumeTask(consumeTask); + statistics.setConsumeTask(Math.abs(consumeTask)); // 使用 Math.abs 确保为正数 //退款相关-当日退款(永久) Integer refundPermanent = records.stream() .filter(record -> record.getType() == 2) // 类型为退款 From f56b782d2f97a2176750ca044b8b5840659c852a Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 8 Jul 2025 09:50:04 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E6=AF=8F=E5=B0=8F=E6=97=B6=E6=9B=B4=E6=96=B0=E4=B8=80?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/StatisticsServiceImpl.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java index fc9de43..0cc29bd 100644 --- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java @@ -36,11 +36,10 @@ public class StatisticsServiceImpl implements StatisticsService { private GeneralService generalService; /* - 12点,18点,23点30分执行定时任务更新当天part1数据 + 每小时执行定时任务更新当天part1数据 */ @Override - @Scheduled(cron = "0 0 1,12,18 * * ?") // 分别在 1:00 12:00 和 18:00 执行 - @Scheduled(cron = "0 30 23 * * ?") // 在 23:30 执行 + @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 public void runHourlyTaskPart1() { Date today = new Date(); //取当天日期 for(String market : generalService.getMarket()){ @@ -49,10 +48,10 @@ public class StatisticsServiceImpl implements StatisticsService { } /* - 12点,18点执行定时任务更新当天part2数据 + 每小时执行定时任务更新当天part2数据 */ @Override - @Scheduled(cron = "0 0 12,18 * * ?") + @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 public void runHourlyTaskPart2() { Date today = new Date(); //取当天日期 for(String market : generalService.getMarket()){ From 0df1b1dce8f0aeebf2594d7c008d3378f587464a Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Tue, 8 Jul 2025 10:59:06 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E7=B2=BE=E7=BD=91=E5=8F=B7=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/ConsumeServiceImpl.java | 4 ++++ .../com/example/demo/serviceImpl/RechargeServiceImpl.java | 4 ++++ .../com/example/demo/serviceImpl/RefundServiceImpl.java | 13 +++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index d14fa5e..8eb4811 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -102,6 +102,10 @@ public class ConsumeServiceImpl implements ConsumeService { if(consumeUser.getTaskGold()<0||consumeUser.getFreeGold()<0||consumeUser.getPermanentGold()<0){ return Result.error("金币不能为负数"); } + GoldUser goldUser = userMapper.selectUser(consumeUser.getJwcode().toString()); + if(goldUser==null){ + return Result.error("用户不存在"); + } UserGoldRecord userGoldRecord = new UserGoldRecord(); // 获取当前时间戳部分 diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index 81b344c..9c75c69 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -89,6 +89,10 @@ public class RechargeServiceImpl implements RechargeService { if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<=0||rechargeUser.getMoney()<=0){ return Result.error("充值不能为负数或0"); } + GoldUser goldUser = userMapper.selectUser(rechargeUser.getJwcode().toString()); + if(goldUser==null){ + return Result.error("用户不存在"); + } UserGoldRecord userGoldRecord = new UserGoldRecord(); // 获取当前时间戳部分 diff --git a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java index db3e664..5b5ecc2 100644 --- a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java @@ -1,10 +1,7 @@ package com.example.demo.serviceImpl; import com.example.demo.domain.entity.UserGoldRecord; -import com.example.demo.domain.vo.ConsumeUser; -import com.example.demo.domain.vo.Gold; -import com.example.demo.domain.vo.RefundUser; -import com.example.demo.domain.vo.Result; +import com.example.demo.domain.vo.*; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.RefundMapper; import com.example.demo.mapper.UserMapper; @@ -43,6 +40,10 @@ public class RefundServiceImpl implements RefundService { @Autowired private ConsumeMapper consumeMapper; + @Autowired + private UserMapper userMapper; + + @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) { PageHelper.startPage(pageNum, pageSize); @@ -100,6 +101,10 @@ public class RefundServiceImpl implements RefundService { if (refundUser.getTaskGold() < 0 || refundUser.getFreeGold() < 0 || refundUser.getPermanentGold() < 0) { return Result.error("金币不能为负数"); } + GoldUser goldUser = userMapper.selectUser(refundUser.getJwcode().toString()); + if(goldUser==null){ + return Result.error("用户不存在"); + } UserGoldRecord userGoldRecord = new UserGoldRecord(); String goodsNameWithOrder = refundUser.getGoodsName(); String orderCode = ""; From 27b0ee53a79504332069a1d84db9ad57492fefdd Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 8 Jul 2025 11:46:02 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A9=B3=E5=9B=9E=E4=BB=8D=E5=8A=A0=E9=87=91?= =?UTF-8?q?=E5=B8=81bug=EF=BC=8C=E9=87=91=E5=B8=81=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E4=BF=AE=E5=A4=8D=EF=BC=8C=E5=85=85=E5=80=BC?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=9C=AA=E7=AD=9B=E9=80=89=E9=A9=B3=E5=9B=9E?= =?UTF-8?q?=E4=B8=8E=E6=9C=AA=E5=AE=A1=E6=A0=B8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/serviceImpl/AuditServiceImpl.java | 98 +++++++++++----------- src/main/resources/application.yml | 6 +- src/main/resources/mapper/GoldDetailMapper.xml | 1 + src/main/resources/mapper/RechargeMapper.xml | 4 +- src/main/resources/mapper/RefundMapper.xml | 4 +- 5 files changed, 58 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java index 62c3838..851fc95 100644 --- a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java @@ -47,7 +47,8 @@ public class AuditServiceImpl implements AuditService { updateOrder.setAuditStatus(2); updateOrder.setRejectReason(rejectReason); updateOrder.setAuditTime(new Date()); - + // 执行审核更新 + auditMapper.updateOrder(updateOrder); if (order.getType()==2) { //退款 //2.获取对应的消费订单(退款订单号去掉开头"TK"即为对应消费订单) String consumeOrderCode = order.getOrderCode().replaceFirst("TK", ""); @@ -62,55 +63,56 @@ public class AuditServiceImpl implements AuditService { }else if (action==1) { //通过 updateOrder.setAuditStatus(1); updateOrder.setAuditTime(new Date()); - } - // 执行审核更新 - auditMapper.updateOrder(updateOrder); - //判断是充值还是退款 - if (order.getType()==0){ //充值 - //更新用户余额 - User update = new User(); - 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()); //当前任务金币 - auditMapper.updateUserGold(update); - //erp增加充值数据 - if(update.getJwcode().equals(94226013)){ - GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 - (double) (order.getPermanentGold() ) /100, - order.getRemark(),0, order.getPayPlatform(), "金币充值"); - GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 - (double) (order.getFreeDecember()+order.getFreeJune() ) /100, - order.getRemark(),0, order.getPayPlatform(), "金币充值"); - } - }else if (order.getType()==2) { //退款 - //更新用户余额 - User update = new User(); - update.setJwcode(order.getJwcode()); - update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币 - update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币 - update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币 - update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币 - auditMapper.updateUserGold(update); - //erp增加退款数据 - if(update.getJwcode().equals(94226013)){ - GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久金币 - (double) (order.getPermanentGold() ) /100, - order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName()); - GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费 - (double) (order.getFreeDecember()+order.getFreeJune() ) /100, - order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName()); - GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务 - (double) (order.getTaskGold() ) /100, - order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName()); - } + // 执行审核更新 + auditMapper.updateOrder(updateOrder); + //判断是充值还是退款 + if (order.getType()==0){ //充值 + //更新用户余额 + User update = new User(); + 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()); //当前任务金币 + auditMapper.updateUserGold(update); + //erp增加充值数据 + if(update.getJwcode().equals(94226013)){ + GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币 + (double) (order.getPermanentGold() ) /100, + order.getRemark(),0, order.getPayPlatform(), "金币充值"); + GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费 + (double) (order.getFreeDecember()+order.getFreeJune() ) /100, + order.getRemark(),0, order.getPayPlatform(), "金币充值"); + } + }else if (order.getType()==2) { //退款 + //更新用户余额 + User update = new User(); + update.setJwcode(order.getJwcode()); + update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币 + update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币 + update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币 + update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币 + auditMapper.updateUserGold(update); + //erp增加退款数据 + if(update.getJwcode().equals(94226013)){ + GoldTistV2.addCoinNew(order.getJwcode().toString(), 56, //退款永久金币 + (double) (order.getPermanentGold() ) /100, + order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName()); + GoldTistV2.addCoinNew(order.getJwcode().toString(), 55, //退款免费 + (double) (order.getFreeDecember()+order.getFreeJune() ) /100, + order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName()); + GoldTistV2.addCoinNew(order.getJwcode().toString(), 57, //退款任务 + (double) (order.getTaskGold() ) /100, + order.getRemark(),0, order.getPayPlatform(), "退款商品"+order.getGoodsName()); + } + } } + return true; } /* diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index bb5201b..c069a50 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,9 +4,9 @@ spring: fail-on-unknown-properties: false datasource: mysql1: - jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai - username: hwgoldc - password: zB48T55wCsHC8KPz + jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgold?serverTimezone=Asia/Shanghai + username: hwgold + password: aDiw7MERSATdfGta driver-class-name: com.mysql.cj.jdbc.Driver hikari: pool-name: mysql1HikariCP diff --git a/src/main/resources/mapper/GoldDetailMapper.xml b/src/main/resources/mapper/GoldDetailMapper.xml index fe5b351..5961ff2 100644 --- a/src/main/resources/mapper/GoldDetailMapper.xml +++ b/src/main/resources/mapper/GoldDetailMapper.xml @@ -13,6 +13,7 @@ left join `user` on `user`.jwcode = `ugr`.jwcode left join `admin` on `admin`.id = `ugr`.admin_id + ugr.audit_status IN (1,3) and ugr.jwcode = #{jwcode} diff --git a/src/main/resources/mapper/RechargeMapper.xml b/src/main/resources/mapper/RechargeMapper.xml index e8405f8..3358e7a 100644 --- a/src/main/resources/mapper/RechargeMapper.xml +++ b/src/main/resources/mapper/RechargeMapper.xml @@ -24,7 +24,7 @@ JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode JOIN admin a ON ugr.admin_id = a.id JOIN rate r ON ugr.rate_id = r.id - WHERE ugr.type = 0 + WHERE ugr.type = 0 AND ugr.audit_status IN (1,3) @@ -84,7 +84,7 @@ JOIN admin a ON ugr.admin_id = a.id JOIN rate r ON ugr.rate_id = r.id - ugr.type = 0 + ugr.type = 0 AND ugr.audit_status IN (1,3) AND ugr.jwcode = #{jwcode} diff --git a/src/main/resources/mapper/RefundMapper.xml b/src/main/resources/mapper/RefundMapper.xml index 032593d..df4aaea 100644 --- a/src/main/resources/mapper/RefundMapper.xml +++ b/src/main/resources/mapper/RefundMapper.xml @@ -23,7 +23,7 @@ user_gold_record ugr ON u.jwcode = ugr.jwcode JOIN admin a ON ugr.admin_id = a.id - WHERE ugr.type = 2 + WHERE ugr.type = 2 AND ugr.audit_status IN (1,3) @@ -82,7 +82,7 @@ JOIN admin a ON ugr.admin_id = a.id - ugr.type = 2 + ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.jwcode = #{jwcode} From 914eab6f70ad1f3a314c03d0e2993deac8695ace Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 8 Jul 2025 13:06:50 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E6=89=A3=E5=87=8F?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=87=91=E5=B8=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java | 6 +++--- src/main/resources/application.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 8eb4811..e8fd027 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -163,12 +163,12 @@ public class ConsumeServiceImpl implements ConsumeService { consumeMapper.add(userGoldRecord); User user = new User(); user.setJwcode(userGoldRecord.getJwcode()); - user.setCurrentPermanentGold(gold.getNowPermanentGold() + consumeUser.getPermanentGold()); + 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.setCurrentTaskGold(gold.getNowTaskGold() - consumeUser.getTaskGold()); user.setConsumeNum(gold.getConsumeNum() + 1); - user.setSumConsume(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold()); + user.setSumConsume(-(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold())); userMapper.updateGold(user); if(consumeUser.getJwcode().equals(94226013)){ GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c069a50..bb5201b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,9 +4,9 @@ spring: fail-on-unknown-properties: false datasource: mysql1: - jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgold?serverTimezone=Asia/Shanghai - username: hwgold - password: aDiw7MERSATdfGta + jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai + username: hwgoldc + password: zB48T55wCsHC8KPz driver-class-name: com.mysql.cj.jdbc.Driver hikari: pool-name: mysql1HikariCP From 2ba06397d23871213743814e35b916344806f1f5 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Tue, 8 Jul 2025 14:57:44 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/ConsumeServiceImpl.java | 11 +++-------- .../com/example/demo/serviceImpl/RechargeServiceImpl.java | 10 ++++------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index e8fd027..49ac168 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -110,16 +110,11 @@ public class ConsumeServiceImpl implements ConsumeService { // 获取当前时间戳部分 String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); - // 获取自增计数器部分(三位数,不足补零) - AtomicInteger atomicInteger = new AtomicInteger(0); - - int count = atomicInteger.getAndUpdate(c -> (c >= 999) ? 0 : c + 1); - String counterPart = String.format("%03d", count); - - + Random random = new Random(); + int randomNumber = random.nextInt(900) + 100; //订单号生成 - userGoldRecord.setOrderCode("XF" + timestampPart + counterPart); + userGoldRecord.setOrderCode("XF" + timestampPart + randomNumber); userGoldRecord.setJwcode(consumeUser.getJwcode()); userGoldRecord.setGoodsName(consumeUser.getGoodsName()); userGoldRecord.setSumGold(-consumeUser.getSumGold()); diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index 9c75c69..832db37 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -17,6 +17,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; +import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; /** @@ -98,15 +99,12 @@ public class RechargeServiceImpl implements RechargeService { // 获取当前时间戳部分 String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); - // 获取自增计数器部分(三位数,不足补零) - AtomicInteger atomicInteger = new AtomicInteger(0); - - int count = atomicInteger.getAndUpdate(c -> (c >= 999) ? 0 : c + 1); - String counterPart = String.format("%03d", count); + Random random = new Random(); + int randomNumber = random.nextInt(900) + 100; //订单号生成 - userGoldRecord.setOrderCode("CZ" + timestampPart + counterPart); + userGoldRecord.setOrderCode("CZ" + timestampPart + randomNumber); userGoldRecord.setJwcode(rechargeUser.getJwcode()); userGoldRecord.setActivity(rechargeUser.getActivity()); userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold()); From 0a068e447a574f616407d0f9911935d2072c8b44 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Tue, 8 Jul 2025 15:12:07 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=B1=87=E7=8E=87=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/controller/RateController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/controller/RateController.java b/src/main/java/com/example/demo/controller/RateController.java index 1d34ac1..74376b9 100644 --- a/src/main/java/com/example/demo/controller/RateController.java +++ b/src/main/java/com/example/demo/controller/RateController.java @@ -13,6 +13,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.Map; @@ -59,8 +60,8 @@ public class RateController { if (ObjectUtils.isEmpty(rate.getRateName())) { return Result.error("汇率名称不能为空"); } - if (rate.getNum() == null) { - return Result.error("汇率数值不能为空"); + if(rate.getNum()==null || rate.getNum().compareTo(BigDecimal.ZERO) <= 0){ + return Result.error(("汇率数值不能小于等于0")); } rateService.update(rate); return Result.success("编辑成功"); From 8c40a9f4ba0a542034874ad4779c57808ef6fb46 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 8 Jul 2025 15:19:14 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=B1=87=E7=8E=87=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/controller/RateController.java | 4 ++ .../java/com/example/demo/service/RateService.java | 3 +- .../example/demo/serviceImpl/RateServiceImpl.java | 11 +++- .../demo/serviceImpl/WorkbenchServiceImpl.java | 58 ---------------------- 4 files changed, 15 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/example/demo/controller/RateController.java b/src/main/java/com/example/demo/controller/RateController.java index 1d34ac1..3b0b66b 100644 --- a/src/main/java/com/example/demo/controller/RateController.java +++ b/src/main/java/com/example/demo/controller/RateController.java @@ -13,6 +13,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.Map; @@ -63,6 +64,9 @@ public class RateController { return Result.error("汇率数值不能为空"); } rateService.update(rate); + if (rate.getNum() == null || rate.getNum().equals(BigDecimal.ZERO)) { + return Result.error("汇率数值存在异常"); + }else return Result.success("编辑成功"); } diff --git a/src/main/java/com/example/demo/service/RateService.java b/src/main/java/com/example/demo/service/RateService.java index 685f6aa..0a14b2f 100644 --- a/src/main/java/com/example/demo/service/RateService.java +++ b/src/main/java/com/example/demo/service/RateService.java @@ -2,6 +2,7 @@ package com.example.demo.service; import com.example.demo.domain.entity.Rate; import com.example.demo.domain.vo.RateDetail; +import com.example.demo.domain.vo.Result; import com.github.pagehelper.PageInfo; public interface RateService { @@ -12,5 +13,5 @@ public interface RateService { void add(Rate rate); - void update(Rate rate); + Result update(Rate rate); } diff --git a/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java index 57f933a..e2b55aa 100644 --- a/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java @@ -3,6 +3,7 @@ package com.example.demo.serviceImpl; import com.example.demo.domain.entity.Rate; import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.RateDetail; +import com.example.demo.domain.vo.Result; import com.example.demo.mapper.RateMapper; import com.example.demo.service.RateService; import com.github.pagehelper.PageHelper; @@ -10,6 +11,7 @@ import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -37,7 +39,12 @@ public class RateServiceImpl implements RateService { } @Override - public void update(Rate rate) { + public Result update(Rate rate) { + rateMapper.update(rate); - } + if (rate.getNum() == null || rate.getNum().equals(BigDecimal.ZERO)) { + return Result.error("汇率数值存在异常"); + }else { + return Result.success("编辑成功"); + }} } diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java index afc3d8a..2f724b3 100644 --- a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java @@ -84,65 +84,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { .collect(Collectors.toList()); return new WorkbenchCard(token, marketCards,new ArrayList<>(), markets, date, date); - /* List marketCards = new ArrayList<>(); - // 遍历每个 marketCard 并填充数据 - for (String market : markets) { - if (market == null || market.trim().isEmpty()) continue; - - // 查询该地区当天的数据 - Statistics statistics = statisticsMapper.selectByMarketAndDate( - market, - Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()), - Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()) - ); - WorkbenchMarketCard card = new WorkbenchMarketCard(); - card.setMarket(market); - if (statistics != null){ - - // 卡片一:当前金币相关 - card.setCurrentPermanent(statistics.getCurrentPermanent());//余量-永久金币 - card.setCurrentFreeJune(statistics.getCurrentFreeJune()); //余量-免费六月金币 - card.setCurrentFreeDecember(statistics.getCurrentFreeDecember()); //余量-免费十二月金币 - card.setCurrentTask(statistics.getCurrentTask()); //余量-任务金币 - card.setCurrentFree(card.getCurrentFreeJune() + card.getCurrentFreeDecember()); //余量-免费金币 - card.setCurrentGold(card.getCurrentPermanent() + card.getCurrentFree() + card.getCurrentTask()); //余量-总金币 - card.setDailyChange(statistics.getDailyChange()); //较前一日变化 - // 卡片二:充值相关 - card.setRecharge(statistics.getRecharge()); //充值-当日充值 - card.setMoney(statistics.getMoney()); //充值-当日金额(永久) - card.setYearlyRecharge(calculateSum(market, "recharge",yearlyStartDate ,date));//充值-全年累计充值 - card.setYearlyMoney(calculateSum(market, "money",yearlyStartDate ,date)); //充值-全年累计金额(永久) - // 卡片三:消费与退款 - card.setConsumePermanent(statistics.getConsumePermanent());//消费-永久金币 - card.setConsumeFreeJune(statistics.getConsumeFreeJune());//消费-免费六月金币 - card.setConsumeFreeDecember(statistics.getConsumeFreeDecember());//消费-免费十二月金币 - card.setConsumeTask(statistics.getConsumeTask());//消费-任务金币 - card.setRefundPermanent(statistics.getRefundPermanent());//退款-永久金币 - card.setRefundFreeJune(statistics.getRefundFreeJune());//退款-免费六月金币 - card.setRefundFreeDecember(statistics.getRefundFreeDecember());//退款-免费十二月金币 - card.setRefundTask(statistics.getRefundTask());//退款-任务金币 - //当日总消费 - int totalConsume = card.getConsumePermanent() + card.getConsumeFreeJune() + card.getConsumeFreeDecember() + card.getConsumeTask(); - //当日总退款 - int totalRefund = card.getRefundPermanent() + card.getRefundFreeJune() + card.getRefundFreeDecember() + card.getRefundTask(); - card.setDailyReduce(totalConsume - totalRefund);//当日总消耗 - card.setYearlyConsume(calculateSum(market, "consume", yearlyStartDate,date));//年累计消费 - card.setYearlyRefund(calculateSum(market, "refund",yearlyStartDate ,date));//年累计退款 - card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗 - // 卡片四:人头数相关 - card.setRechargeNum(statistics.getRechargeNum()); - card.setFirstRecharge(statistics.getFirstRecharge()); - card.setYearlyRechargeNum(calculateSum(market,"rechargeNum",yearlyStartDate,date)); - // 周环比、日同比 - card.setWow(calculateWeekOverWeek(market, date)); - card.setDaily(calculateDayOverDay(market, date)); - - marketCards.add(card); - } - - } - return new WorkbenchCard(token, marketCards,markets,date,date);*/ } /* 获取卡片数据