Compare commits

...

24 Commits

Author SHA1 Message Date
lijianlin f30ddb43e0 8-17金币审核取消员工筛选 11 hours ago
lijianlin 2f8e4234b5 8-17金币审核新增员工号筛选 12 hours ago
sunjiabei cb5ef5c647 8月17日筛选员工数据标志 14 hours ago
lijianlin 5bcf093e82 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 2 days ago
lijianlin 5e05856e35 8-15金币充值审核,提交人姓名修复 2 days ago
sunjiabei 59172e1253 8月15日传入名称 2 days ago
sunjiabei 3540bad301 8月15日传入名称 2 days ago
lijianlin bd916348f3 8-15关闭工作台定时任务 2 days ago
lijianlin 3fb46e7144 8-15工作台当日消费详情修复 2 days ago
lijianlin d2acd72072 Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20250728171217-三期金豆消费相关 2 days ago
lijianlin cc44864af3 8-15工作台定时任务错峰 3 days ago
huangqizhen a00c9703c2 8.14修复后端处理数据 3 days ago
sunjiabei 81663dc760 8月14日类型修改 3 days ago
huangqizhen a8e21903f1 8.14修复查询地区 3 days ago
lijianlin 9ab6b083bd 8-14金豆直播消费优化,提升速度 4 days ago
huangqizhen 5588870010 8.12修复时间问题 4 days ago
lijianlin c32a3ef4e9 8-13审核金额添加、审核时间筛选修复 4 days ago
sunjiabei 7510a1029a 8月13日导出字段 4 days ago
sunjiabei 166e7941e0 8月13日排序字段 4 days ago
sunjiabei 79341c13ae 8月12日时间 5 days ago
lijianlin 07133218b6 8-12yml恢复 5 days ago
lijianlin 2d2ef388ad 8-12工作台统计去除员工数据 5 days ago
sunjiabei 6d8aae7dc7 8月12日员工数据去除 5 days ago
huangqizhen 9de626c74d 8.12员工号标识 6 days ago
  1. 25
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  2. 127
      src/main/java/com/example/demo/controller/coin/GoldDetailController.java
  3. 25
      src/main/java/com/example/demo/domain/entity/User.java
  4. 11
      src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java
  5. 18
      src/main/java/com/example/demo/domain/vo/coin/Gold.java
  6. 11
      src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java
  7. 21
      src/main/java/com/example/demo/domain/vo/coin/GoldUser.java
  8. 7
      src/main/java/com/example/demo/domain/vo/coin/RechargeAudit.java
  9. 14
      src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java
  10. 6
      src/main/java/com/example/demo/domain/vo/coin/RefundAudit.java
  11. 14
      src/main/java/com/example/demo/domain/vo/coin/RefundUser.java
  12. 10
      src/main/java/com/example/demo/domain/vo/coin/Total.java
  13. 2
      src/main/java/com/example/demo/mapper/coin/AuditMapper.java
  14. 2
      src/main/java/com/example/demo/mapper/live/LiveMapper.java
  15. 2
      src/main/java/com/example/demo/security/SecurityConfig.java
  16. 1
      src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java
  17. 40
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
  18. 56
      src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java
  19. 17
      src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java
  20. 24
      src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java
  21. 57
      src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java
  22. 10
      src/main/java/com/example/demo/serviceImpl/coin/StatisticsServiceImpl.java
  23. 3
      src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java
  24. 82
      src/main/resources/liveMapper/LiveMapper.xml
  25. 18
      src/main/resources/mapper/AuditMapper.xml
  26. 13
      src/main/resources/mapper/ConsumeMapper.xml
  27. 70
      src/main/resources/mapper/GoldDetailMapper.xml
  28. 22
      src/main/resources/mapper/RechargeMapper.xml
  29. 25
      src/main/resources/mapper/RefundMapper.xml
  30. 6
      src/main/resources/mapper/StatisticsMapper.xml
  31. 2
      src/main/resources/mapper/WorkBenchMapper.xml

25
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;
@ -162,7 +163,7 @@ public class MysqlServiceImpl implements MysqlService {
mysqlStmt.setString(12, remark);
mysqlStmt.setInt(15, 3);
mysqlStmt.setTimestamp(16, created_at);
if(remark.contains("测试")){
if(remark.contains("测试")&&remark.contains("员工")){
mysqlStmt.setInt(17, 0);
}else {
mysqlStmt.setInt(17, 1);
@ -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);

127
src/main/java/com/example/demo/controller/coin/GoldDetailController.java

@ -57,76 +57,145 @@ public class GoldDetailController {
@PostMapping("/getGoldDetail")
public Result getGoldDetail(@RequestBody Page page) throws Exception {
if(ObjectUtils.isEmpty(page.getPageNum())){
// 获取当前请求对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
// 解析 token 获取用户信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> markets = marketService.getMarketIds(userMarkets);
// 校验分页参数
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if(ObjectUtils.isEmpty(page.getPageSize())){
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
}
else{
if(page.getGoldDetail().getMarkets()==null||page.getGoldDetail().getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getGoldDetail().setMarkets(marketService.getMarketIds(markets));
// 获取传入的市场列表
List<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null;
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
if (markets.contains("9") || markets.contains("9999")) {
page.getGoldDetail().setMarkets(null); // 包含 9 9999 null
} else {
page.getGoldDetail().setMarkets(markets); // 不包含传原值
}
return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail()));
}
// 返回详情数据
return Result.success(goldDetailService.getGoldDetail(
page.getPageNum(),
page.getPageSize(),
page.getGoldDetail()
));
}
@PostMapping("/getTotal")
public Result getTotal(@RequestBody Page page) throws Exception {
Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize();
GoldDetail goldDetail = page.getGoldDetail();
if(page.getGoldDetail().getMarkets()==null||page.getGoldDetail().getMarkets().isEmpty()){
// 获取当前请求对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
// 解析 token 获取用户信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")&&!markets.contains("研发部")) {
List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> markets = marketService.getMarketIds(userMarkets);
// 获取传入的市场列表
List<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null;
page.getGoldDetail().setMarkets(marketService.getMarketIds(markets));
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
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));
}
@PostMapping("/goldTotal")
public Result GoldTotal(@RequestBody User user) throws Exception {
if(user.getMarkets()==null||user.getMarkets().isEmpty()) {
// 获取当前请求对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
// 解析 token 获取用户信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> markets = marketService.getMarketIds(userMarkets);
if(!markets.contains("总部")&&!markets.contains("研发部")) {
// 获取传入的市场列表
List<String> requestedMarkets = user != null ? user.getMarkets() : null;
user.setMarkets(marketService.getMarketIds(markets));
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
if (markets.contains("9") || markets.contains("9999")) {
user.setMarkets(null); // 包含 9 9999 null
} else {
user.setMarkets(markets); // 不包含传原值
}
}
return Result.success(goldDetailService.GoldTotal(user));
}
@PostMapping("/getGold")
public Result getGold(@RequestBody Page page) throws Exception {
// System.out.println( page);
if(ObjectUtils.isEmpty(page.getPageNum())){
// 获取当前请求对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
// 解析 token 获取用户信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> markets = marketService.getMarketIds(userMarkets);
// 校验分页参数
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if(ObjectUtils.isEmpty(page.getPageSize())){
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
}
if(page.getUser().getMarkets()==null||page.getUser().getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")&&!markets.contains("研发部")) {
// 获取传入的市场列表
List<String> requestedMarkets = page.getUser() != null ? page.getUser().getMarkets() : null;
page.getUser().setMarkets(marketService.getMarketIds(markets));
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
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()));

25
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<String> markets;
@ExcelProperty("首充日期")
@ -68,4 +69,6 @@ public class User implements Serializable {
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelIgnore
private Integer flag;//是否员工号
}

11
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; // 金币总数
private BigDecimal sumGold; // 金币总数
@ExcelProperty("永久金币")
private Integer permanentGold; // 永久金币
private BigDecimal permanentGold; // 永久金币
@ExcelProperty("免费金币")
private Integer freeGold; // 免费金币
private BigDecimal freeGold; // 免费金币
@ExcelProperty("任务金币")
private Integer taskGold; // 任务金币
private BigDecimal taskGold; // 任务金币
@ExcelProperty("备注")
private String remark; // 备注
@ExcelProperty("提交人ID")
@ -70,4 +71,6 @@ public class ConsumeUser implements Serializable {
private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表
@ExcelProperty
private Integer flag; //是否为员工号
}

18
src/main/java/com/example/demo/domain/vo/coin/Gold.java

@ -5,6 +5,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @program: gold-java
@ -21,8 +23,16 @@ 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;
// public void setPermanentGolds(BigDecimal permanentGolds) {
// if (permanentGolds != null) {
// // 保留两位小数四舍五入
// this.permanentGolds = permanentGolds.setScale(2, RoundingMode.HALF_UP);
// } else {
// this.permanentGolds = null;
// }
// }
}

11
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

21
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("消费次数")

7
src/main/java/com/example/demo/domain/vo/coin/RechargeAudit.java

@ -1,5 +1,6 @@
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
@ -33,6 +34,11 @@ public class RechargeAudit {
private List<String> markets; // 所属地区
private String refundType; // 退款类型
private Byte refundModel; // 退款类型
private Integer rateId; // 汇率ID
private String rateName; // 汇率名称
private Integer money; // 金额[]
private Integer sumGold; //充值金额
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
@ -49,6 +55,7 @@ public class RechargeAudit {
private String auditName; //审核人姓名
private Byte type; //类型
private String rejectReason; //驳回理由
// private Integer flag; //是否为员工号 0员工号 1非员工号
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private String payTime; //支付时间

14
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("永久金币")
private Integer permanentGold; // 永久金币
private BigDecimal permanentGold; // 永久金币
@ExcelProperty("免费金币")
private Integer freeGold; // 免费金币
private BigDecimal freeGold; // 免费金币
@ExcelProperty("支付方式")
private String payModel; // 支付方式
@ -74,6 +75,9 @@ public class RechargeUser {
@ExcelProperty("创建时间")
private Date payTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelProperty("审核时间")
private Date auditTime; // 审核时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelIgnore
private Date startTime; // 开始时间
@ExcelIgnore
@ -85,4 +89,6 @@ public class RechargeUser {
private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表
@ExcelProperty
private Integer flag; //是否为员工号
}

6
src/main/java/com/example/demo/domain/vo/coin/RefundAudit.java

@ -31,6 +31,11 @@ public class RefundAudit {
private List<String> markets; // 所属地区
private Integer refundModel; // 退款方式-全额 部分
private String goodsName; // 商品名称
private Integer rateId; // 汇率ID
private String rateName; // 汇率名称
private Integer money; // 金额[]
private Integer sumGold; // 退款金额
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
@ -46,6 +51,7 @@ public class RefundAudit {
private String auditName; //审核人姓名
private String rejectReason; //驳回理由
private Byte type; //类型
// private Integer flag; //是否为员工号 0-员工号 1-非员工号
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")

14
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; // 金币总数
private BigDecimal sumGold; // 金币总数
@ExcelProperty("永久金币")
private Integer permanentGold; // 永久金币
private BigDecimal permanentGold; // 永久金币
@ExcelProperty("免费金币")
private Integer freeGold; // 免费金币
private BigDecimal freeGold; // 免费金币
@ExcelProperty("任务金币")
private Integer taskGold; // 任务金币
private BigDecimal taskGold; // 任务金币
@ExcelProperty("退款原因")
private String remark; // 退款原因
@ExcelProperty("提交人ID")
@ -58,6 +59,9 @@ public class RefundUser {
@ExcelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间
@ExcelProperty("审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; // 审核时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelIgnore
private Date startTime; // 开始时间
@ -70,4 +74,6 @@ public class RefundUser {
private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表
@ExcelProperty
private Integer flag; //是否为员工号
}

10
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;
}

2
src/main/java/com/example/demo/mapper/coin/AuditMapper.java

@ -41,4 +41,6 @@ public interface AuditMapper {
@Param("pageSize") Integer pageSize,
@Param("refundAudit") RefundAudit refundAudit);
//获取审核人id对应的人名
String getName(Integer auditId);
}

2
src/main/java/com/example/demo/mapper/live/LiveMapper.java

@ -27,4 +27,6 @@ public interface LiveMapper {
BeanConsumeGold selectSumLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive);
//获取直播客户地区
List<String> getDept();
//获取直播消费列表总数
int selectLiveCount(BeanConsumeLive beanConsumeLive);
}

2
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/**","/statistics/**").permitAll()
.requestMatchers(
"/error","alipay/**","/upload/**","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**"
).permitAll()

1
src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java

@ -155,6 +155,7 @@ public class BeanConsumeServiceImpl implements BeanConsumeService {
public Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive) {
PageHelper.startPage(pageNum, pageSize);
List<BeanConsumeLive> beanConsumeLives = liveMapper.selectLiveBy(beanConsumeLive);
//int total = liveMapper.selectLiveCount(beanConsumeLive);
return new PageInfo<>(beanConsumeLives);
}
//筛选查询铁粉消费

40
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;
@ -57,6 +58,7 @@ public class AuditServiceImpl implements AuditService {
UserGoldRecord updateOrder = new UserGoldRecord();
updateOrder.setOrderCode(orderCode);
updateOrder.setAuditId(auditId);
String auditName = auditMapper.getName(auditId);
//判断是通过还是驳回
if (action==2){ //驳回
@ -85,33 +87,33 @@ 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增加充值数据
// if(update.getJwcode().equals(94226013)){
GoldTistV2.addCoinNew(order.getJwcode().toString(), 64, //充值永久金币
(double) (order.getPermanentGold() ) /100,
order.getRemark(),0, order.getPayPlatform(), "金币充值");
order.getRemark(),0, auditName, "金币充值");
GoldTistV2.addCoinNew(order.getJwcode().toString(), 63, //充值免费
(double) (order.getFreeDecember()+order.getFreeJune() ) /100,
order.getRemark(),0, order.getPayPlatform(), "金币充值");
order.getRemark(),0, auditName, "金币充值");
// }
}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()); //当前任务金币
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 +205,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 +248,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;
}
}

56
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<ConsumeUser> 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,17 +186,17 @@ 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,
(double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100,
userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName());
userGoldRecord.getRemark(), ((double) userGoldRecord.getPermanentGold() / 100), consumeUser.getAdminName(), userGoldRecord.getGoodsName());
// }
return Result.success();
}

17
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;
}

24
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<RechargeUser> 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());

57
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<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception{
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception {
List<String> 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<String> 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<RefundUser> 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<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser)throws Exception {
public PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception {
List<String> 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());

10
src/main/java/com/example/demo/serviceImpl/coin/StatisticsServiceImpl.java

@ -31,10 +31,10 @@ public class StatisticsServiceImpl implements StatisticsService {
/*
每小时第分执行定时任务更新当天part1数据
每小时第4分执行定时任务更新当天part1数据
*/
@Override
@Scheduled(cron = "0 10 * * * ?") // 每小时执行一次
// @Scheduled(cron = "0 4 * * * ?") // 每小时执行一次
public void runHourlyTaskPart1() {
LocalDate today = LocalDate.now(); //取当天日期
List<Statistics> list = statisticsMapper.listPart1All(today);
@ -48,7 +48,7 @@ public class StatisticsServiceImpl implements StatisticsService {
每小时执行定时任务更新当天part2数据
*/
@Override
@Scheduled(cron = "0 10 * * * ?") // 每小时执行一次
//@Scheduled(cron = "0 8 * * * ?") // 每小时执行一次
public void runHourlyTaskPart2() {
//设定起止时间 当天000000至235959
LocalDate today = LocalDate.now();
@ -68,7 +68,7 @@ public class StatisticsServiceImpl implements StatisticsService {
每小时执行定时任务更新年度数据
*/
@Override
@Scheduled(cron = "0 10 * * * ?") // 每小时执行一次
//@Scheduled(cron = "0 12 * * * ?") // 每小时执行一次
public void runHourlyTaskYear() {
LocalDate today = LocalDate.now();
LocalDate firstDay = today.withDayOfYear(1);
@ -88,7 +88,7 @@ public class StatisticsServiceImpl implements StatisticsService {
0点执行定时任务更新近一周part2数据
*/
@Override
@Scheduled(cron = "0 30 0 * * ?") // 修改为每天 00:30 执行
//@Scheduled(cron = "0 30 0 * * ?") // 修改为每天 00:30 执行
public void runDailyTaskPart2() {
List<Statistics> list = statisticsMapper.listPart2RangeAll();
if (!list.isEmpty()) {

3
src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java

@ -49,6 +49,9 @@ public class UserServiceImpl implements UserService {
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
List<String> markets = marketMapper.getMarketIds(list);
if (markets.contains("9") || markets.contains("9999")){
markets=null;
}
GoldUser user = userMapper.selectUserCard(jwcode,markets);
return Result.success(user);
}

82
src/main/resources/liveMapper/LiveMapper.xml

@ -4,9 +4,9 @@
<select id="selectLiveBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeLive">
select lgg.id as id,
mi.name as name,
lgg.jwcode as jwcode,
select lgg.id ,
mi.name ,
lgg.jwcode ,
mi.deptName as dept,
lg.name as gift,
lgg.knapsack as isBackpack,
@ -64,46 +64,65 @@
select distinct title from live_pindao where title is not null and title != ''
</select>
<!--计算直播消费金豆合计数-->
<select id="selectSumLiveBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeGold">
select
ifnull(sum(t.beanNum),0) as sunBeam,
ifnull(sum(t.freeBean),0) as freeBean,
ifnull(sum(t.buyBean),0) as permanentBean,
count(*) as totalNum
from
(select mi.name as name,
lgg.jwcode as jwcode,
mi.deptName as dept,
lg.name as gift,
lgg.gold_beans as beanNum,
lgg.gold_free as freeBean,
lgg.gold_buy as buyBean,
lp.title as liveChannel,
l.name as liveName,
lgg.created_at as consumeTime
<select id="selectSumLiveBy"
parameterType="com.example.demo.domain.vo.bean.BeanConsumeLive"
resultType="com.example.demo.domain.vo.bean.BeanConsumeGold">
SELECT
IFNULL(SUM(lgg.gold_beans), 0) AS sunBeam,
IFNULL(SUM(lgg.gold_free), 0) AS freeBean,
IFNULL(SUM(lgg.gold_buy), 0) AS permanentBean,
COUNT(*) AS totalNum
FROM live_give_gifts lgg
WHERE lgg.knapsack = 0
<if test="beanConsumeLive.jwcode != null and beanConsumeLive.jwcode != ''">
AND lgg.jwcode = #{beanConsumeLive.jwcode}
</if>
<if test="beanConsumeLive.startTime != null and beanConsumeLive.endTime != null">
AND lgg.created_at BETWEEN #{beanConsumeLive.startTime} AND #{beanConsumeLive.endTime}
</if>
<if test="beanConsumeLive.dept != null and beanConsumeLive.dept != ''">
AND EXISTS (SELECT 1 FROM member_info mi
WHERE mi.jwcode = lgg.jwcode AND mi.deptName = #{beanConsumeLive.dept})
</if>
<if test="beanConsumeLive.gift != null and beanConsumeLive.gift != ''">
AND EXISTS (SELECT 1 FROM live_gifts lg
WHERE lg.id = lgg.g_id AND lg.name = #{beanConsumeLive.gift})
</if>
<if test="beanConsumeLive.liveChannel != null and beanConsumeLive.liveChannel != ''">
AND EXISTS (SELECT 1 FROM live l JOIN live_pindao lp ON lp.pd_id = l.channel_id
WHERE l.id = lgg.live_id AND lp.title = #{beanConsumeLive.liveChannel})
</if>
<if test="beanConsumeLive.liveName != null and beanConsumeLive.liveName != ''">
AND EXISTS (SELECT 1 FROM live l
WHERE l.id = lgg.live_id
AND l.name LIKE CONCAT('%', #{beanConsumeLive.liveName}, '%'))
</if>
</select>
<select id="getDept" resultType="java.lang.String">
select distinct deptName from member_info
where deptName is not null and deptName != ''
</select>
<select id="selectLiveCount"
parameterType="com.example.demo.domain.vo.bean.BeanConsumeLive"
resultType="java.lang.Integer">
SELECT COUNT(1)
FROM live_give_gifts lgg
LEFT JOIN live_gifts lg ON lg.id = lgg.g_id
LEFT JOIN live l ON l.id = lgg.live_id
LEFT JOIN live_pindao lp ON lp.pd_id = l.channel_id
LEFT JOIN member_info mi ON mi.jwcode = lgg.jwcode
<where>
lgg.knapsack=0
<if test="beanConsumeLive.jwcode != null and beanConsumeLive.jwcode != ''">
AND lgg.jwcode = #{beanConsumeLive.jwcode}
</if>
<if test="beanConsumeLive.dept != null and beanConsumeLive.dept != ''">
AND mi.deptName = #{beanConsumeLive.dept}
</if>
<!-- <if test="beanConsumeLive.type != null and beanConsumeLive.type != ''">
AND fyr.source_type = #{beanConsumeLive.type}
</if>-->
<if test="beanConsumeLive.startTime != null and beanConsumeLive.endTime != null">
AND lgg.created_at BETWEEN #{beanConsumeLive.startTime}
AND #{beanConsumeLive.endTime}
AND lgg.created_at BETWEEN #{beanConsumeLive.startTime} AND #{beanConsumeLive.endTime}
</if>
<if test="beanConsumeLive.gift != null and beanConsumeLive.gift != ''">
AND lg.name =#{beanConsumeLive.gift}
AND lg.name = #{beanConsumeLive.gift}
</if>
<if test="beanConsumeLive.liveChannel != null and beanConsumeLive.liveChannel != ''">
AND lp.title = #{beanConsumeLive.liveChannel}
@ -111,11 +130,6 @@
<if test="beanConsumeLive.liveName != null and beanConsumeLive.liveName != ''">
AND l.name LIKE CONCAT('%', #{beanConsumeLive.liveName}, '%')
</if>
</where>)t
</select>
<select id="getDept" resultType="java.lang.String">
select distinct deptName from member_info
where deptName is not null and deptName != ''
</where>
</select>
</mapper>

18
src/main/resources/mapper/AuditMapper.xml

@ -48,6 +48,7 @@
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
u.name as name,
m.name as market,
r.rate_name AS rateName,
a1.admin_name as adminName,
a2.admin_name as auditName
FROM user_gold_record as ugr
@ -55,7 +56,12 @@
LEFT JOIN admin a1 ON ugr.admin_id = a1.id
LEFT JOIN admin a2 ON ugr.audit_id = a2.id
left join market m ON u.market = m.id
left JOIN rate r ON ugr.rate_id = r.id
<where>
<!-- <if test="rechargeAudit.flag != 0">
AND u.flag = 1
</if>-->
<if test="rechargeAudit.jwcode != null and rechargeAudit.jwcode != ''">
AND ugr.jwcode = #{rechargeAudit.jwcode}
</if>
@ -80,7 +86,7 @@
AND m.name = #{rechargeAudit.market}
</if>
<if test="rechargeAudit.startTime != null and rechargeAudit.endTime != null ">
AND ugr.pay_time between #{rechargeAudit.startTime} and #{rechargeAudit.endTime}
AND ugr.audit_time between #{rechargeAudit.startTime} and #{rechargeAudit.endTime}
</if>
<if test="rechargeAudit.auditStatus != null and rechargeAudit.auditStatus != ''">
@ -103,6 +109,7 @@
SELECT ugr.*,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
u.name as name,
r.rate_name AS rateName,
m.name as market,
a1.admin_name as adminName,
a2.admin_name as auditName
@ -111,8 +118,12 @@
LEFT JOIN admin a1 ON ugr.admin_id = a1.id
LEFT JOIN admin a2 ON ugr.audit_id = a2.id
left join market m ON u.market = m.id
left JOIN rate r ON ugr.rate_id = r.id
<where>
<!-- <if test="refundAudit.flag != 0">
AND u.flag = 1
</if>-->
<if test="refundAudit.jwcode != null">
AND ugr.jwcode = #{refundAudit.jwcode}
</if>
@ -132,7 +143,7 @@
)
</if>
<if test="refundAudit.startTime != null and refundAudit.endTime != null ">
AND ugr.create_time between #{refundAudit.startTime} and #{refundAudit.endTime}
AND ugr.audit_time between #{refundAudit.startTime} and #{refundAudit.endTime}
</if>
<if test="refundAudit.market != null and refundAudit.market != ''">
AND m.name = #{refundAudit.market}
@ -164,4 +175,7 @@
<select id="getAdminMarket" resultType="java.lang.String">
</select>
<select id="getName" resultType="java.lang.String">
select admin_name from admin where id = #{auditId}
</select>
</mapper>

13
src/main/resources/mapper/ConsumeMapper.xml

@ -23,7 +23,7 @@
admin a ON ugr.admin_id = a.id
left join market m ON u.market = m.id
<where>
ugr.type = 1 AND ugr.flag = 1
ugr.type = 1 AND ugr.flag = 1 AND u.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '9999' not in markets and '9' not in markets">
AND (
@ -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
@ -101,6 +101,9 @@
#{market}
</foreach>
</if>
<if test="flag != 0">
AND u.flag = 1
</if>
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>

70
src/main/resources/mapper/GoldDetailMapper.xml

@ -7,14 +7,27 @@
</insert>
<select id="getGoldDetail" resultType="com.example.demo.domain.vo.coin.GoldDetail">
select `user`.name, `user`.jwcode, m.name as market, `ugr`.pay_platform, `ugr`.type, `ugr`.sum_gold, `ugr`.permanent_gold, `ugr`.free_june, `ugr`.free_december, `ugr`.task_gold, `admin`.admin_name, `ugr`.audit_time,
`ugr`.free_june+`ugr`.free_december as free_gold
SELECT
`user`.name,
`user`.jwcode,
m.name AS market,
`ugr`.pay_platform,
`ugr`.type,
ROUND(`ugr`.sum_gold / 100.0, 2) AS SumGold,
ROUND(`ugr`.permanent_gold / 100.0, 2) AS PermanentGold,
ROUND(`ugr`.free_june / 100.0, 2) AS freeJune,
ROUND(`ugr`.free_december / 100.0, 2) AS freeDecember,
ROUND(`ugr`.task_gold / 100.0, 2) AS taskGold,
`admin`.admin_name,
`ugr`.audit_time,
ROUND((`ugr`.free_june + `ugr`.free_december) / 100.0, 2) AS freeGold
from user_gold_record ugr
left join `user` on `user`.jwcode = `ugr`.jwcode
left join `admin` on `admin`.id = `ugr`.admin_id
left join market m on m.id=`user`.market
<where>
ugr.flag = 1 and
`user`.flag = 1 and
ugr.audit_status IN (1,3)
<if test="jwcode != null">
and ugr.jwcode = #{jwcode}
@ -46,10 +59,15 @@
</select>
<select id="getTotal" resultType="com.example.demo.domain.vo.coin.Total">
select sum(sum_gold) as Goldtotal, sum(permanent_gold) as permanentGold, sum(free_june+free_december) as freeGold, sum(task_gold) as taskGold
SELECT
ROUND(SUM(sum_gold) / 100.0, 2) AS Goldtotal,
ROUND(SUM(permanent_gold) / 100.0, 2) AS permanentGold,
ROUND((SUM(free_june) + SUM(free_december)) / 100.0, 2) AS freeGold,
ROUND(SUM(task_gold) / 100.0, 2) AS taskGold
from user_gold_record ugr
<where>
ugr.flag = 1 and
`user`.flag = 1 and
ugr.audit_status IN (1,3)
<if test="jwcode != null">
and `ugr`.jwcode = #{jwcode}
@ -73,13 +91,26 @@
</select>
<select id="getGold" resultType="com.example.demo.domain.entity.User">
select u.id,u.jwcode,u.name,m.name as market,u.sum_permanent_gold,
u.sum_free_june,u.sum_free_december,u.sum_task_gold,
u.current_permanent_gold,u.current_free_june,
u.current_free_december,u.current_task_gold,
u.recharge_num,u.consume_num,
u.sum_consume_permanent,u.sum_consume_task,
u.sum_consume_free,u.first_recharge,u.create_time,
SELECT
u.id,
u.jwcode,
u.name,
m.name AS market,
ROUND(IFNULL(u.sum_permanent_gold, 0) / 100.0, 2) AS sumPermanentGold,
ROUND(IFNULL(u.sum_free_june, 0) / 100.0, 2) AS sumFreeJune,
ROUND(IFNULL(u.sum_free_december, 0) / 100.0, 2) AS sumFreeDecember,
ROUND(IFNULL(u.sum_task_gold, 0) / 100.0, 2) AS sumTaskGold,
ROUND(IFNULL(u.current_permanent_gold, 0) / 100.0, 2) AS currentPermanentGold,
ROUND(IFNULL(u.current_free_june, 0) / 100.0, 2) AS currentFreeJune,
ROUND(IFNULL(u.current_free_december, 0) / 100.0, 2) AS currentFreeDecember,
ROUND(IFNULL(u.current_task_gold, 0) / 100.0, 2) AS currentTaskGold,
ROUND(IFNULL(u.sum_consume_permanent, 0) / 100.0, 2) AS sumConsumePermanent,
ROUND(IFNULL(u.sum_consume_task, 0) / 100.0, 2) AS sumConsumeTask,
ROUND(IFNULL(u.sum_consume_free, 0) / 100.0, 2) AS sumConsumeFree,
u.recharge_num,
u.consume_num,
u.first_recharge,
u.create_time,
u.update_time
from user u
left join market m on u.market = m.id
@ -104,13 +135,22 @@
</choose>
</select>
<select id="GoldTotal" resultType="com.example.demo.domain.vo.coin.Total">
select
sum(current_permanent_gold) as permanentGold,
sum(current_free_june + current_free_december) as freeGold,
sum(current_task_gold) as taskGold,
sum(current_permanent_gold) + sum(current_free_june + current_free_december) + sum(current_task_gold) as Goldtotal
SELECT
CAST(SUM(COALESCE(current_permanent_gold, 0)) / 100.0 AS DECIMAL(18,2)) AS permanentGold,
CAST(SUM(COALESCE(current_free_june, 0) + COALESCE(current_free_december, 0)) / 100.0 AS DECIMAL(18,2)) AS freeGold,
CAST(SUM(COALESCE(current_task_gold, 0)) / 100.0 AS DECIMAL(18,2)) AS taskGold,
CAST(
SUM(
COALESCE(current_permanent_gold, 0) +
COALESCE(current_free_june, 0) +
COALESCE(current_free_december, 0) +
COALESCE(current_task_gold, 0)
) / 100.0 AS DECIMAL(18,2)
) AS Goldtotal
from `user`
<where>
flag = 1
<if test="jwcode != null ">
and jwcode = #{jwcode}
</if>

22
src/main/resources/mapper/RechargeMapper.xml

@ -28,7 +28,7 @@
<where>
ugr.type = 0 AND ugr.audit_status IN (1,3)
AND ugr.flag = 1
AND u.flag = 1
<if test="markets != null and markets.size() > 0 and '9999' not in markets and '9' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
@ -81,15 +81,16 @@
ugr.activity AS activity,
ugr.rate_id AS rateId,
r.rate_name AS rateName,
ugr.money AS money,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.money/100 AS money,
ugr.permanent_gold/100 AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))/100 AS freeGold,
ugr.pay_model AS payModel,
ugr.pay_platform AS payPlatform,
ugr.remark AS remark,
ugr.admin_id AS adminId,
a.admin_name AS adminName,
ugr.pay_time AS payTime
ugr.pay_time AS payTime,
ugr.audit_time AS auditTime
FROM user_gold_record ugr
left JOIN user u ON u.jwcode = ugr.jwcode
left JOIN admin a ON ugr.admin_id = a.id
@ -105,6 +106,9 @@
#{market}
</foreach>
</if>
<if test="flag != 0">
AND u.flag = 1
</if>
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
@ -118,7 +122,7 @@
AND ugr.pay_platform = #{payPlatform}
</if>
<if test="startTime != null and endTime != null">
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
@ -131,9 +135,9 @@
<when test="sortField == 'money'">ugr.money</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<!-- 对时间字段的排序处理 -->
<when test="sortField == 'payTime'">ugr.pay_time</when>
<when test="sortField == 'payTime'">ugr.audit_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.pay_time</otherwise>
<otherwise>ugr.audit_time</otherwise>
</choose>
<!-- 排序方向处理 -->
@ -151,7 +155,7 @@
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.pay_time DESC
ugr.audit_time DESC
</otherwise>
</choose>
</trim>

25
src/main/resources/mapper/RefundMapper.xml

@ -25,7 +25,7 @@
admin a ON ugr.admin_id = a.id
left join market m ON u.market = m.id
<where>
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 AND u.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '9999' not in markets and '9' not in markets">
AND (
@ -82,13 +82,14 @@
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
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
ugr.create_time AS createTime,
ugr.audit_time AS auditTime
FROM user_gold_record ugr
left JOIN
user u ON u.jwcode = ugr.jwcode
@ -97,12 +98,16 @@
left join market m ON u.market = m.id
<where>
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0">
AND u.market IN
<foreach collection="markets" item="market" open="(" separator="," close=")">
#{market}
</foreach>
</if>
<if test="flag != 0">
AND u.flag = 1
</if>
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
@ -119,7 +124,7 @@
AND ugr.refund_type = #{refundType}
</if>
<if test="startTime != null and endTime != null">
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
@ -137,9 +142,9 @@
0)+ COALESCE(ugr.permanent_gold, 0)+ COALESCE(ugr.task_gold, 0))
</when>
<!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when>
<when test="sortField == 'createTime'">ugr.audit_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
<otherwise>ugr.audit_time</otherwise>
</choose>
<!-- 排序方向处理 -->
@ -157,7 +162,7 @@
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
ugr.audit_time DESC
</otherwise>
</choose>
</trim>

6
src/main/resources/mapper/StatisticsMapper.xml

@ -93,6 +93,7 @@
AND ugr.type=0
AND ugr.audit_status IN (1,3)
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
AND u.flag = 1
</select>
<!--获取某地区某时间所在日期的数据(仅一条)-->
@ -142,12 +143,13 @@
FROM user u
left join market m on u.market=m.id
where m.name IS NOT NULL
and u.flag = 1
GROUP BY market
</select>
<select id="listPart2All" resultType="com.example.demo.domain.entity.Statistics">
SELECT
m.name as market,
'2025-08-04' AS current_datetime,
#{today} AS current_datetime,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold+ugr.free_june+ugr.free_december+ugr.task_gold END),0) AS recharge,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold END),0) AS money,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.permanent_gold END),0) AS consume_permanent,
@ -168,6 +170,7 @@
AND ugr.flag = 1
AND ugr.create_time BETWEEN #{start} AND #{end}
AND m.name IS NOT NULL
AND u.flag = 1
GROUP BY u.market
</select>
<select id="listYearAll" resultType="com.example.demo.domain.entity.Statistics">
@ -219,6 +222,7 @@
WHERE ugr.audit_status IN (1,3)
AND ugr.flag = 1
AND m.name IS NOT NULL
AND u.flag = 1
GROUP BY m.name, d.create_date
</select>

2
src/main/resources/mapper/WorkBenchMapper.xml

@ -55,6 +55,7 @@
#{startDate} and #{endDate}
AND ugr.audit_status IN (1,3)
and ugr.flag=1
AND u.flag = 1
</select>
<!--给定时间范围内的该地区消费永久金币数-->
@ -105,6 +106,7 @@
AND ugr.pay_time BETWEEN #{startDate} AND #{endDate}
AND ugr.audit_status IN (1, 3)
and ugr.flag=1
AND u.flag = 1
) AS totalRechargeNum
FROM statistics s
WHERE s.market = #{market}

Loading…
Cancel
Save