diff --git a/src/main/java/com/example/demo/controller/AdminController.java b/src/main/java/com/example/demo/controller/AdminController.java index 21294f0..cae0ff5 100644 --- a/src/main/java/com/example/demo/controller/AdminController.java +++ b/src/main/java/com/example/demo/controller/AdminController.java @@ -45,16 +45,10 @@ public class AdminController { } } @PostMapping("/userinfo") - public UserDetails getUserInfo(@RequestBody String requestBody) { - ObjectMapper objectMapper = new ObjectMapper(); - TokenPayload token1; - try { - token1 = objectMapper.readValue(requestBody, TokenPayload.class); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } - String token = token1.getToken(); + public UserDetails getUserInfo(@RequestHeader("token") String token1) { + //String token = token1.getToken(); + String token = token1; System.out.println("1/*/*/*/*//*-*-*-*-*-*-1" +token); try { System.out.println("/+/+/+/+/+/+/+//" + JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class)); diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java index 9ddf11b..0914acb 100644 --- a/src/main/java/com/example/demo/controller/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/ConsumeController.java @@ -45,7 +45,7 @@ public class ConsumeController { return Result.success(consumeService.selectAll(page.getPageNum(), page.getPageSize(),page.getConsumeUser())); } } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查筛选数据的格式"); } @@ -65,7 +65,7 @@ public class ConsumeController { return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser())); } } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查筛选数据的格式"); } } @@ -77,7 +77,7 @@ public class ConsumeController { Gold gold = consumeService.statsGold(consumeUser); return Result.success(gold); } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查数据的格式"); } } @@ -94,7 +94,7 @@ public class ConsumeController { // } // } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查数据的格式"); } } diff --git a/src/main/java/com/example/demo/controller/ExportController.java b/src/main/java/com/example/demo/controller/ExportController.java index 2269657..b773b02 100644 --- a/src/main/java/com/example/demo/controller/ExportController.java +++ b/src/main/java/com/example/demo/controller/ExportController.java @@ -42,8 +42,13 @@ public class ExportController { @Autowired private ExportService exportService; @PostMapping("/export") - public Result export(@RequestBody Export Export){ - return Result.success(exportExcelService.getExcel(Export)); + public Result export(@RequestBody Export Export)throws Exception{ + try { + return Result.success(exportExcelService.getExcel(Export)); + } catch (Exception e) { + log.error("导出失败", e.getMessage()); + return Result.error("导出失败"+e.getMessage()); + } } @PostMapping("/exportRecharge") public Result export(@Valid @RequestBody RechargeDTO dto) { diff --git a/src/main/java/com/example/demo/controller/GoldDetailController.java b/src/main/java/com/example/demo/controller/GoldDetailController.java index dde8d2d..23db9b9 100644 --- a/src/main/java/com/example/demo/controller/GoldDetailController.java +++ b/src/main/java/com/example/demo/controller/GoldDetailController.java @@ -55,8 +55,11 @@ public class GoldDetailController { } } @PostMapping("/getTotal") - public Result getTotal(@RequestBody GoldDetail goldDetail) { - return Result.success(goldDetailService.getTotal(goldDetail)); + public Result getTotal(@RequestBody Page page) { + Integer pageNum = page.getPageNum(); + Integer pageSize = page.getPageSize(); + GoldDetail goldDetail = page.getGoldDetail(); + return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); } @PostMapping("/goldTotal") public Result GoldTotal(@RequestBody User user) { diff --git a/src/main/java/com/example/demo/controller/RechargeController.java b/src/main/java/com/example/demo/controller/RechargeController.java index 005e08a..ecd0880 100644 --- a/src/main/java/com/example/demo/controller/RechargeController.java +++ b/src/main/java/com/example/demo/controller/RechargeController.java @@ -42,7 +42,7 @@ public class RechargeController { return Result.success(rechargeService.selectAll(page.getPageNum(), page.getPageSize(),page.getRechargeUser())); } } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查筛选数据的格式"); } @@ -62,7 +62,7 @@ public class RechargeController { return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser())); } } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查筛选数据的格式"); } } @@ -74,7 +74,7 @@ public class RechargeController { Gold gold = rechargeService.statsGold(rechargeUser); return Result.success(gold); } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查数据的格式"); } } @@ -84,7 +84,7 @@ public class RechargeController { try { return rechargeService.add(rechargeUser); } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查数据的格式"); } } diff --git a/src/main/java/com/example/demo/controller/RefundController.java b/src/main/java/com/example/demo/controller/RefundController.java index edd707b..78b3446 100644 --- a/src/main/java/com/example/demo/controller/RefundController.java +++ b/src/main/java/com/example/demo/controller/RefundController.java @@ -43,7 +43,7 @@ public class RefundController { return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser())); } } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查筛选数据的格式"); } } @@ -57,10 +57,11 @@ public class RefundController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser())); } } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查筛选数据的格式"); } } @@ -71,7 +72,7 @@ public class RefundController { Gold gold = refundService.statsGold(refundUser); return Result.success(gold); } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查数据的格式"); } } @@ -95,7 +96,7 @@ public class RefundController { try { return refundService.add(refundUser); } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查数据的格式"); } } } diff --git a/src/main/java/com/example/demo/controller/UserController.java b/src/main/java/com/example/demo/controller/UserController.java index 09d3ccf..3f12756 100644 --- a/src/main/java/com/example/demo/controller/UserController.java +++ b/src/main/java/com/example/demo/controller/UserController.java @@ -35,7 +35,7 @@ public class UserController { user = userService.selectUser(user.getJwcode().toString()); return Result.success(user); } catch (Exception e) { - return Result.error("接口调用失败"); + return Result.error("请检查输入精网号"); } } } diff --git a/src/main/java/com/example/demo/domain/entity/Rate.java b/src/main/java/com/example/demo/domain/entity/Rate.java index 14a16b4..0ba7482 100644 --- a/src/main/java/com/example/demo/domain/entity/Rate.java +++ b/src/main/java/com/example/demo/domain/entity/Rate.java @@ -4,8 +4,10 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.poi.hpsf.Decimal; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @Data @@ -16,7 +18,7 @@ public class Rate implements Serializable { private Integer id; // 汇率id private String rateName; // 汇率名称 - private Integer num; // 汇率比例 + private BigDecimal num; // 汇率比例 private Integer adminId; // 用户(修改人)id @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") 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 a5c0b08..41dd026 100644 --- a/src/main/java/com/example/demo/domain/export/Goldmingxi.java +++ b/src/main/java/com/example/demo/domain/export/Goldmingxi.java @@ -20,7 +20,7 @@ public class Goldmingxi { private String payPlatform; // 支付平台 private Integer type; // 类型 private Integer sumGold; // 总金币 - private Integer permentGold; //永久金币 + private Integer permanentGold; //永久金币 private Integer freeJune; // 免费金币六月到期 private Integer freeDecember; // 免费金币七月到期 private Integer taskGold; // 任务金币 diff --git a/src/main/java/com/example/demo/domain/vo/AuditRequest.java b/src/main/java/com/example/demo/domain/vo/AuditRequest.java index 3be612a..6276f91 100644 --- a/src/main/java/com/example/demo/domain/vo/AuditRequest.java +++ b/src/main/java/com/example/demo/domain/vo/AuditRequest.java @@ -13,6 +13,7 @@ public class AuditRequest { private Integer auditId; //审核人id private Integer action; //操作 private String rejectReason; //驳回理由 - + private String sortField; //排序字段 + private String sortOrder; //排序顺序 } \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/vo/Gold.java b/src/main/java/com/example/demo/domain/vo/Gold.java index 94119e2..f94ff96 100644 --- a/src/main/java/com/example/demo/domain/vo/Gold.java +++ b/src/main/java/com/example/demo/domain/vo/Gold.java @@ -24,4 +24,5 @@ public class Gold implements Serializable { private Integer permanentGolds; // 永久金币总数 private Integer freeGolds; // 免费金币总数 private Integer taskGolds; // 任务金币总数 + private Integer sumGolds; } diff --git a/src/main/java/com/example/demo/domain/vo/GoldDetail.java b/src/main/java/com/example/demo/domain/vo/GoldDetail.java index bf676f7..7ed07e8 100644 --- a/src/main/java/com/example/demo/domain/vo/GoldDetail.java +++ b/src/main/java/com/example/demo/domain/vo/GoldDetail.java @@ -27,7 +27,7 @@ public class GoldDetail { private String payPlatform; // 支付平台 private Integer type; // 类型 private Integer sumGold; // 总金币 - private Integer permentGold; //永久金币 + private Integer permanentGold; //永久金币 private Integer freeJune; // 免费金币六月到期 private Integer freeDecember; // 免费金币七月到期 private Integer taskGold; // 任务金币 @@ -38,5 +38,7 @@ public class GoldDetail { private Date endTime; // 结束时间 private String sortField; //排序字段 private String sortOrder; //排序顺序 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date auditTime; } diff --git a/src/main/java/com/example/demo/domain/vo/RechargeAudit.java b/src/main/java/com/example/demo/domain/vo/RechargeAudit.java index 4438ea6..d1a5cac 100644 --- a/src/main/java/com/example/demo/domain/vo/RechargeAudit.java +++ b/src/main/java/com/example/demo/domain/vo/RechargeAudit.java @@ -1,6 +1,7 @@ package com.example.demo.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -19,6 +20,7 @@ import java.util.Date; @Data @NoArgsConstructor @AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) public class RechargeAudit { private static final long serialVersionUID = 1L; @@ -54,4 +56,6 @@ public class RechargeAudit { private Date endTime; // 结束时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date auditTime; // 审核时间 + private String sortField; //排序字段 + private String sortOrder; //排序顺序 } diff --git a/src/main/java/com/example/demo/domain/vo/RefundAudit.java b/src/main/java/com/example/demo/domain/vo/RefundAudit.java index 3c18eb6..727b2e4 100644 --- a/src/main/java/com/example/demo/domain/vo/RefundAudit.java +++ b/src/main/java/com/example/demo/domain/vo/RefundAudit.java @@ -1,6 +1,7 @@ package com.example.demo.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -19,6 +20,7 @@ import java.util.Date; @Data @NoArgsConstructor @AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) public class RefundAudit { private static final long serialVersionUID = 1L; private String name; // 客户姓名 @@ -51,4 +53,6 @@ public class RefundAudit { private Date endTime; // 结束时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date auditTime; // 审核时间 + private String sortField; //排序字段 + private String sortOrder; //排序顺序 } diff --git a/src/main/java/com/example/demo/domain/vo/WorkbenchFullStatistics.java b/src/main/java/com/example/demo/domain/vo/WorkbenchFullStatistics.java index 0eefc96..b635966 100644 --- a/src/main/java/com/example/demo/domain/vo/WorkbenchFullStatistics.java +++ b/src/main/java/com/example/demo/domain/vo/WorkbenchFullStatistics.java @@ -24,6 +24,7 @@ public class WorkbenchFullStatistics implements Serializable { private Integer totalConsumePermanent; //总消费-永久金币 private Integer totalConsumeFree; //总消费-免费金币 private Integer totalConsumeTask; //总消费-任务金币 + private Integer totalConsume; //总消费 private Integer totalRefund; //总退款 private Integer totalRechargeNum; //总充值人数 } diff --git a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java index 36db07f..5195f5b 100644 --- a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java +++ b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java @@ -55,6 +55,9 @@ public class WorkbenchMarketCard implements Serializable { private Integer firstRecharge; // 当日首充人数 private Integer wow; // 周同比(%) private Integer daily; // 日环比(%) + private Integer sumWow; // 总周同比(%) + private Integer sumDaily; // 总日环比(%) + private Integer yearlyRechargeNum; // 全年累计充值人头数 //图表 private Integer SumRechargePermanent; //合计充值永久金币 diff --git a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java index f2a15b4..32d28df 100644 --- a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java +++ b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java @@ -26,4 +26,5 @@ public class WorkbenchMarketGraph implements Serializable { private Integer SumConsumePermanent; //合计消费永久金币 private Integer SumConsumeFree; //合计消费免费金币 private Integer SumConsumeTask; //合计消费任务金币 + private Integer SumConsume; //合计消费金币 } diff --git a/src/main/java/com/example/demo/mapper/GoldDetailMapper.java b/src/main/java/com/example/demo/mapper/GoldDetailMapper.java index 7494332..93fccb9 100644 --- a/src/main/java/com/example/demo/mapper/GoldDetailMapper.java +++ b/src/main/java/com/example/demo/mapper/GoldDetailMapper.java @@ -20,6 +20,9 @@ import java.util.List; @Mapper public interface GoldDetailMapper { List getGoldDetail(GoldDetail goldDetail); + List getGoldDetail1(@Param("pageNum") Integer pageNum, + @Param("pageSize") Integer pageSize, + @Param("goldDetail") GoldDetail goldDetail); Total getTotal(GoldDetail goldDetail); List getGold(User user); Total GoldTotal(User user); diff --git a/src/main/java/com/example/demo/security/SecurityConfig.java b/src/main/java/com/example/demo/security/SecurityConfig.java index 4843f2a..5f0068f 100644 --- a/src/main/java/com/example/demo/security/SecurityConfig.java +++ b/src/main/java/com/example/demo/security/SecurityConfig.java @@ -60,7 +60,7 @@ public class SecurityConfig { request .requestMatchers( HttpMethod.POST, // 用户不登录就可以访问的路径 - "/admin/login","/upload/**","/detailY/ERP","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**","/**").permitAll() + "/admin/login","/upload/**","/detailY/ERP","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**").permitAll() .requestMatchers( "/error","alipay/**","/upload/**","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**" ).permitAll() diff --git a/src/main/java/com/example/demo/service/GoldDetailService.java b/src/main/java/com/example/demo/service/GoldDetailService.java index 6ac1d18..7ecc838 100644 --- a/src/main/java/com/example/demo/service/GoldDetailService.java +++ b/src/main/java/com/example/demo/service/GoldDetailService.java @@ -3,10 +3,8 @@ package com.example.demo.service; import com.example.demo.domain.DTO.GoldDetailDTO; import com.example.demo.domain.DTO.GoldUserDTO; import com.example.demo.domain.entity.User; -import com.example.demo.domain.vo.GoldDetail; +import com.example.demo.domain.vo.*; -import com.example.demo.domain.vo.Result; -import com.example.demo.domain.vo.Total; import com.github.pagehelper.PageInfo; @@ -24,6 +22,8 @@ public interface GoldDetailService { PageInfo getGold(Integer pageNum, Integer pageSize, User user); Total GoldTotal(User user); + //金币统计 + Gold sumGold(Integer pageNum, Integer pageSize, GoldDetail goldDetail); //异步导出客户明细 Result addExportRecord(GoldDetailDTO dto); //异步导出金币余额 diff --git a/src/main/java/com/example/demo/service/WorkbenchService.java b/src/main/java/com/example/demo/service/WorkbenchService.java index 70b26f0..35542c3 100644 --- a/src/main/java/com/example/demo/service/WorkbenchService.java +++ b/src/main/java/com/example/demo/service/WorkbenchService.java @@ -27,10 +27,14 @@ public interface WorkbenchService { WorkbenchCard getGraph(String token, Date startDate, Date endDate, List markets); //根据类型获取年初至今的统计数据 Map calculateAllSum(String market, Date startDate, Date endDate); - //获取该日期该市场的日同比 + //获取该日期该市场的日环比 Integer calculateDayOverDay(String market,Date date); - //获取该日期该市场的周环比 + //获取总体日环比 + Integer calculateAllDayOverDay(Date date); + //获取该日期该市场的周同比 Integer calculateWeekOverWeek(String market, Date date); + //获取该日期总体的周同比 + Integer calculateAllWeekOverWeek( Date date); //获取与传入的日期相差XX天的日期 Date addDays(Date date, int days); //获取传入时间所在周的第一天(周一) diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 7faf332..32a34ac 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -96,6 +96,12 @@ public class ConsumeServiceImpl implements ConsumeService { //新增消耗 @Override public Result add(ConsumeUser consumeUser) { + if(consumeUser.getTaskGold()==null||consumeUser.getFreeGold()==null||consumeUser.getPermanentGold()==null){ + return Result.error("金币数量不能为空"); + } + if(consumeUser.getTaskGold()<0||consumeUser.getFreeGold()<0||consumeUser.getPermanentGold()<0){ + return Result.error("金币不能为负数"); + } UserGoldRecord userGoldRecord = new UserGoldRecord(); // 获取当前时间戳部分 @@ -160,10 +166,11 @@ public class ConsumeServiceImpl implements ConsumeService { user.setConsumeNum(gold.getConsumeNum() + 1); user.setSumConsume(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold()); userMapper.updateGold(user); - //对接接口 -// GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, -// (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) /100, -// userGoldRecord.getRemark(),((double) userGoldRecord.getPermanentGold() /100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName()); + if(consumeUser.getJwcode().equals(94226013)){ + GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65, + (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) /100, + userGoldRecord.getRemark(),((double) userGoldRecord.getPermanentGold() /100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName()); + } return Result.success(); } } diff --git a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java index c3cce46..74166b0 100644 --- a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java @@ -8,10 +8,8 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * @program: GOLD @@ -42,13 +40,22 @@ public class GeneralServiceImpl implements GeneralService { @Override public List getGoods() { List list = generalMapper.getGoods(); - return list; + // 使用 Java 8 的 Stream API 过滤 null 和空字符串 + List filteredList = list.stream() + .filter(Objects::nonNull) // 过滤掉 null 值 + .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串 + .collect(Collectors.toList()); + return filteredList; } @Override public List getActivity() { List list = generalMapper.getActivity(); - return list; + List filteredList = list.stream() + .filter(Objects::nonNull) // 过滤掉 null 值 + .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串 + .collect(Collectors.toList()); + return filteredList; } diff --git a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java index 9fb1f91..022c5dc 100644 --- a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java @@ -4,9 +4,7 @@ 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.User; -import com.example.demo.domain.vo.GoldDetail; -import com.example.demo.domain.vo.Result; -import com.example.demo.domain.vo.Total; +import com.example.demo.domain.vo.*; import com.example.demo.exception.SystemException; import com.example.demo.mapper.GoldDetailMapper; import com.example.demo.service.GoldDetailService; @@ -65,6 +63,50 @@ public class GoldDetailServiceImpl implements GoldDetailService { return goldDetailMapper.GoldTotal(user); } + /* + 用户金币合计数 + */ + @Override + public Gold sumGold(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { + Gold gold = new Gold(); + //获取订单列表 + PageHelper.startPage(1, 500000); + List goldDetails = goldDetailMapper.getGoldDetail(goldDetail); + // List goldDetails=goldDetailMapper.getGoldDetail1(1,500000,goldDetail); + + // 初始化累加器 + int totalNum=0; + int permanentGoldSum = 0; + int freeGoldSum = 0; + int taskGoldSum = 0; + +// 遍历消费记录并累加金币 + for (GoldDetail detail : goldDetails) { + // 累加永久金币 + if (detail.getPermanentGold() != null) { + permanentGoldSum += detail.getPermanentGold(); + } + // 累加免费金币 + if (detail.getFreeJune() != null||detail.getFreeDecember() != null) { + freeGoldSum = freeGoldSum+detail.getFreeJune()+detail.getFreeDecember(); + } + // 累加任务金币 + if (detail.getTaskGold() != null) { + taskGoldSum += detail.getTaskGold(); + } + + // 每遍历一条记录,总条数加1 + totalNum++; + } + // 将累加结果设置到Gold对象 + gold.setPermanentGolds(permanentGoldSum); + gold.setFreeGolds(freeGoldSum); + gold.setTotalNum(totalNum); + gold.setTaskGolds(taskGoldSum); + gold.setSumGolds(permanentGoldSum+freeGoldSum+taskGoldSum); + return gold; + } + @Override public Result addExportRecord(GoldDetailDTO dto) { // 获取操作者 jwcode diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index bf93fd2..81b344c 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -83,6 +83,12 @@ public class RechargeServiceImpl implements RechargeService { @Override public Result add(RechargeUser rechargeUser) { + if(rechargeUser.getFreeGold()==null||rechargeUser.getPermanentGold()==null||rechargeUser.getMoney()==null){ + return Result.error("金币和金额不能为空"); + } + if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<=0||rechargeUser.getMoney()<=0){ + return Result.error("充值不能为负数或0"); + } 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 b46e73b..ffe7dac 100644 --- a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java @@ -21,7 +21,9 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** * @program: gold-java @@ -91,6 +93,12 @@ public class RefundServiceImpl implements RefundService { @Transactional @Override public Result add(RefundUser refundUser) { + if(refundUser.getTaskGold()==null||refundUser.getFreeGold()==null||refundUser.getPermanentGold()==null){ + return Result.error("金币不能为空"); + } + if(refundUser.getTaskGold()<0||refundUser.getFreeGold()<0||refundUser.getPermanentGold()<0){ + return Result.error("金币不能为负数"); + } UserGoldRecord userGoldRecord = new UserGoldRecord(); String goodsNameWithOrder = refundUser.getGoodsName(); String orderCode = ""; @@ -141,7 +149,11 @@ public class RefundServiceImpl implements RefundService { @Override public List getRefundType() { List list = refundMapper.getRefundType(); - return list; + List filteredList = list.stream() + .filter(Objects::nonNull) // 过滤掉 null 值 + .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串 + .collect(Collectors.toList()); + return filteredList; } @Override @@ -160,6 +172,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.setPermanentGold(record.getPermanentGold()); refundUser.setFreeGold(record.getFreeGold()); refundUser.setTaskGold(record.getTaskGold()); diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java index dc0270b..e495b0d 100644 --- a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java @@ -184,7 +184,9 @@ public class WorkbenchServiceImpl implements WorkbenchService { // 周环比、日同比 card.setWow(calculateWeekOverWeek(market, currentDate)); + card.setSumWow(calculateAllWeekOverWeek(date)); card.setDaily(calculateDayOverDay(market, currentDate)); + card.setSumDaily(calculateAllDayOverDay(date)); } return card; } @@ -203,6 +205,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { graphs.setSumConsumePermanent(sums.get("cPermanent")); graphs.setSumConsumeFree(sums.get("cFree")); graphs.setSumConsumeTask(sums.get("cTask")); + graphs.setSumConsume(sums.get("consume")); marketGraphs.add(graphs); } return new WorkbenchCard(token, new ArrayList<>(),marketGraphs,markets,startDate,endDate); @@ -222,6 +225,9 @@ public class WorkbenchServiceImpl implements WorkbenchService { result.put("cPermanent", stats.getTotalConsumePermanent() != null ? stats.getTotalConsumePermanent() : 0); result.put("cFree", stats.getTotalConsumeFree() != null ? stats.getTotalConsumeFree() : 0); result.put("cTask", stats.getTotalConsumeTask() != null ? stats.getTotalConsumeTask() : 0); + result.put("consume",(stats.getTotalConsumePermanent() != null ? stats.getTotalConsumePermanent() : 0) + +(stats.getTotalConsumeFree() != null ? stats.getTotalConsumeFree() : 0) + +(stats.getTotalConsumeTask() != null ? stats.getTotalConsumeTask() : 0)); result.put("refund", stats.getTotalRefund() != null ? stats.getTotalRefund() : 0); result.put("rechargeNum", stats.getTotalRechargeNum() != null ? stats.getTotalRechargeNum() : 0); return result; @@ -229,7 +235,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { } /* - 获取该日期该市场的日同比 + 获取该日期该市场的日环比 */ @Override public Integer calculateDayOverDay(String market, Date date) { @@ -255,6 +261,34 @@ public class WorkbenchServiceImpl implements WorkbenchService { double rate = ((double) (currentStatistics.getRechargeNum() - yesterdayStatistics.getRechargeNum()) / yesterdayStatistics.getRechargeNum()) * 100; return (int) Math.round(rate); } + // 计算所有市场总体日环比 + @Override + public Integer calculateAllDayOverDay(Date date) { + //获取今天的开始时间和结束时间 + LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); + LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1); + //获取地区列表 + List markets = generalService.getMarket(); + int currentTotal = 0; //今日所有地区总的充值人数 + int yesterdayTotal = 0; //昨日所有地区总的充值人数 + + Date yesterday = addDays(date, -1); + //过去昨天的开始时间和结束时间 + LocalDateTime ydayStartTime = yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); + LocalDateTime ydayEndTime= ydayStartTime.plusDays(1).minusSeconds(1); + for (String market : markets) { + currentTotal += statisticsMapper.countRechargeNum(market, + Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); + yesterdayTotal += statisticsMapper.countRechargeNum(market, + Date.from(ydayStartTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(ydayEndTime.atZone(ZoneId.systemDefault()).toInstant())); + } + if (yesterdayTotal == 0) return 0; // 避免除以零的情况 + + double rate = ((double)(currentTotal - yesterdayTotal) / yesterdayTotal) * 100; + return (int)Math.round(rate); + } /* 获取该日期该市场的周环比 */ @@ -264,6 +298,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { Date thisWeekStart = getStartOfWeek(date); //获取传入日期上一周的周一 Date lastWeekStart = addDays(thisWeekStart, -7); + // 获取本周周一至今天的充值人数总和 int thisWeekTotal = statisticsMapper.countRechargeNum(market, thisWeekStart, date); // 获取上周同一时间段的充值人数总和 @@ -274,6 +309,32 @@ public class WorkbenchServiceImpl implements WorkbenchService { double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100; return (int) Math.round(rate); } + /* + 获取改天总体的的周环比 + */ + @Override + public Integer calculateAllWeekOverWeek( Date date) { + + List markets = generalService.getMarket(); + int thisWeekTotal = 0; //本周至当天充值人数 + int lastWeekTotal = 0; //上周至当天充值人数 + //获取本周周一 + Date thisWeekStart = getStartOfWeek(date); + //获取传入日期上一周的周一 + Date lastWeekStart = addDays(thisWeekStart, -7); + for (String market : markets) { + // 获取本周周一至今天的充值人数总和 + thisWeekTotal += statisticsMapper.countRechargeNum(market, thisWeekStart, date); + // 获取上周同一时间段的充值人数总和 + lastWeekTotal += statisticsMapper.countRechargeNum(market, lastWeekStart, addDays(date, -7)); + } + + if (lastWeekTotal == 0) { + return 0; // 避免除以零的情况 + } + double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100; + return (int) Math.round(rate); + } @Override public Date addDays(Date date, int days) { diff --git a/src/main/resources/mapper/AuditMapper.xml b/src/main/resources/mapper/AuditMapper.xml index 15f4f28..0f627ee 100644 --- a/src/main/resources/mapper/AuditMapper.xml +++ b/src/main/resources/mapper/AuditMapper.xml @@ -38,6 +38,7 @@ diff --git a/src/main/resources/mapper/ExportMapper.xml b/src/main/resources/mapper/ExportMapper.xml index f67834b..c9c85bd 100644 --- a/src/main/resources/mapper/ExportMapper.xml +++ b/src/main/resources/mapper/ExportMapper.xml @@ -22,7 +22,6 @@ and account = #{account} + order by create_time desc - - \ No newline at end of file diff --git a/src/main/resources/mapper/GoldDetailMapper.xml b/src/main/resources/mapper/GoldDetailMapper.xml index cdb9a4e..fe5b351 100644 --- a/src/main/resources/mapper/GoldDetailMapper.xml +++ b/src/main/resources/mapper/GoldDetailMapper.xml @@ -7,16 +7,17 @@ + diff --git a/src/main/resources/mapper/RateMapper.xml b/src/main/resources/mapper/RateMapper.xml index 15eab29..e67a6fd 100644 --- a/src/main/resources/mapper/RateMapper.xml +++ b/src/main/resources/mapper/RateMapper.xml @@ -15,11 +15,17 @@ UPDATE rate - SET - rate_name=#{rateName}, - num=#{num}, - admin_id=#{adminId}, - update_time=#{updateTime} + + + num= #{num}, + + + rate_name= #{rateName}, + + + admin_id= #{adminId}, + + WHERE id=#{id} diff --git a/src/main/resources/mapper/RefundMapper.xml b/src/main/resources/mapper/RefundMapper.xml index faa99a7..032593d 100644 --- a/src/main/resources/mapper/RefundMapper.xml +++ b/src/main/resources/mapper/RefundMapper.xml @@ -108,6 +108,7 @@ ugr.task_gold ugr.permanent_gold (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) + (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)+ COALESCE(ugr.permanent_gold, 0)+ COALESCE(ugr.task_gold, 0)) ugr.create_time diff --git a/src/main/resources/mapper/StatisticsMapper.xml b/src/main/resources/mapper/StatisticsMapper.xml index 9c7fcfb..99398d7 100644 --- a/src/main/resources/mapper/StatisticsMapper.xml +++ b/src/main/resources/mapper/StatisticsMapper.xml @@ -86,6 +86,7 @@ FROM user_gold_record ugr INNER JOIN user u ON ugr.jwcode = u.jwcode WHERE u.market = #{market} + AND ugr.type=0 AND ugr.audit_status IN (1,3) AND ugr.audit_time BETWEEN #{startTime} AND #{endTime} @@ -95,7 +96,8 @@ FROM user_gold_record ugr INNER JOIN user u ON ugr.jwcode = u.jwcode WHERE u.market = #{market} - AND ugr.audit_status = 1 + AND ugr.type=0 + AND ugr.audit_status IN (1,3) AND ugr.audit_time BETWEEN #{startTime} AND #{endTime} AND u.first_recharge = #{startTime}