Browse Source

8.14修复后端处理数据

lijianlin/feature-20250728171217-三期金豆消费相关
huangqizhen 4 days ago
parent
commit
a00c9703c2
  1. 23
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  2. 23
      src/main/java/com/example/demo/domain/entity/User.java
  3. 11
      src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java
  4. 10
      src/main/java/com/example/demo/domain/vo/coin/Total.java
  5. 24
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
  6. 8
      src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java
  7. 22
      src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java
  8. 68
      src/main/resources/mapper/GoldDetailMapper.xml

23
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 org.springframework.web.client.RestTemplate;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.math.BigDecimal;
import java.sql.*; import java.sql.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.Month; import java.time.Month;
@ -237,30 +238,30 @@ public class MysqlServiceImpl implements MysqlService {
} }
if(currentMonth.getValue() >= 7){ if(currentMonth.getValue() >= 7){
user.setCurrentFreeJune(user.getCurrentFreeJune()+free);
user.setCurrentFreeJune(user.getCurrentFreeJune().add(BigDecimal.valueOf(free)));
} }
if(currentMonth.getValue() <7){ 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)) { if(validZeroTypes.contains(gtype)) {
user.setRechargeNum(user.getRechargeNum() + 1); 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){ if(currentMonth.getValue() >= 7){
user.setSumFreeJune(user.getSumFreeJune()+free);
user.setSumFreeJune(user.getSumFreeJune().add(BigDecimal.valueOf(free)));
} }
if(currentMonth.getValue() < 7){ if(currentMonth.getValue() < 7){
user.setSumFreeDecember(user.getSumFreeDecember()+free);
user.setSumFreeDecember(user.getSumFreeDecember().add(BigDecimal.valueOf(free)));
} }
} }
if (validOneTypes.contains(gtype)){ if (validOneTypes.contains(gtype)){
user.setConsumeNum(user.getConsumeNum() + 1); 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); userService.updateAllGold(user);

23
src/main/java/com/example/demo/domain/entity/User.java

@ -8,6 +8,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -26,21 +27,21 @@ public class User implements Serializable {
@ExcelProperty("所属地区") @ExcelProperty("所属地区")
private String market; // 所属地区 private String market; // 所属地区
@ExcelProperty("历史永久金币") @ExcelProperty("历史永久金币")
private Integer sumPermanentGold; // 历史永久金币
private BigDecimal sumPermanentGold; // 历史永久金币
@ExcelProperty("历史六月免费金币") @ExcelProperty("历史六月免费金币")
private Integer sumFreeJune; // 历史六月免费金币
private BigDecimal sumFreeJune; // 历史六月免费金币
@ExcelProperty("历史十二月免费金币") @ExcelProperty("历史十二月免费金币")
private Integer sumFreeDecember; // 历史十二月免费金币
private BigDecimal sumFreeDecember; // 历史十二月免费金币
@ExcelProperty("历史任务金币") @ExcelProperty("历史任务金币")
private Integer sumTaskGold; // 历史任务金币
private BigDecimal sumTaskGold; // 历史任务金币
@ExcelProperty("当前永久金币") @ExcelProperty("当前永久金币")
private Integer currentPermanentGold; // 当前永久金币
private BigDecimal currentPermanentGold; // 当前永久金币
@ExcelProperty("当前六月免费金币") @ExcelProperty("当前六月免费金币")
private Integer currentFreeJune; // 当前六月免费金币
private BigDecimal currentFreeJune; // 当前六月免费金币
@ExcelProperty("当前十二月免费金币") @ExcelProperty("当前十二月免费金币")
private Integer currentFreeDecember; // 当前十二月免费金币
private BigDecimal currentFreeDecember; // 当前十二月免费金币
@ExcelProperty("当前任务金币") @ExcelProperty("当前任务金币")
private Integer currentTaskGold; // 当前任务金币
private BigDecimal currentTaskGold; // 当前任务金币
@ExcelProperty("充值次数") @ExcelProperty("充值次数")
private Integer rechargeNum; // 充值次数 private Integer rechargeNum; // 充值次数
@ExcelProperty("历史消费") @ExcelProperty("历史消费")
@ -48,11 +49,11 @@ public class User implements Serializable {
@ExcelProperty("历史消费次数") @ExcelProperty("历史消费次数")
private Integer consumeNum; // 消费次数 private Integer consumeNum; // 消费次数
@ExcelProperty("历史消费永久金币") @ExcelProperty("历史消费永久金币")
private Integer sumConsumePermanent;
private BigDecimal sumConsumePermanent;
@ExcelProperty("历史消费任务金币") @ExcelProperty("历史消费任务金币")
private Integer sumConsumeTask;
private BigDecimal sumConsumeTask;
@ExcelProperty("历史消费免费金币") @ExcelProperty("历史消费免费金币")
private Integer sumConsumeFree;
private BigDecimal sumConsumeFree;
@ExcelIgnore @ExcelIgnore
private List<String> markets; private List<String> markets;
@ExcelProperty("首充日期") @ExcelProperty("首充日期")

11
src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -36,15 +37,15 @@ public class GoldDetail {
@ExcelProperty("类型") @ExcelProperty("类型")
private Integer type; // 类型 private Integer type; // 类型
@ExcelProperty("总金币") @ExcelProperty("总金币")
private Integer sumGold; // 总金币
private BigDecimal sumGold; // 总金币
@ExcelProperty("永久金币") @ExcelProperty("永久金币")
private Integer permanentGold; //永久金币
private BigDecimal permanentGold; //永久金币
@ExcelProperty("免费金币六月到期") @ExcelProperty("免费金币六月到期")
private Integer freeJune; // 免费金币六月到期
private BigDecimal freeJune; // 免费金币六月到期
@ExcelProperty("免费金币十二月到期") @ExcelProperty("免费金币十二月到期")
private Integer freeDecember; // 免费金币十二月到期
private BigDecimal freeDecember; // 免费金币十二月到期
@ExcelProperty("任务金币") @ExcelProperty("任务金币")
private Integer taskGold; // 任务金币
private BigDecimal taskGold; // 任务金币
@ExcelProperty("提交人") @ExcelProperty("提交人")
private String adminName; //提交人 private String adminName; //提交人
@ExcelIgnore @ExcelIgnore

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.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/** /**
* @program: GOLD * @program: GOLD
* @ClassName Total * @ClassName Total
@ -17,9 +19,9 @@ public class Total {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String token; 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;
} }

24
src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

@ -86,14 +86,14 @@ public class AuditServiceImpl implements AuditService {
GoldUser gold = userMapper.selectGold(order.getJwcode().toString()); GoldUser gold = userMapper.selectGold(order.getJwcode().toString());
update.setJwcode(order.getJwcode()); //精网号 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); //充值次数加一 update.setRechargeNum(1); //充值次数加一
auditMapper.updateUserGold(update); auditMapper.updateUserGold(update);
//erp增加充值数据 //erp增加充值数据
@ -109,10 +109,10 @@ public class AuditServiceImpl implements AuditService {
//更新用户余额 //更新用户余额
User update = new User(); User update = new User();
update.setJwcode(order.getJwcode()); 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); auditMapper.updateUserGold(update);
//erp增加退款数据 //erp增加退款数据
// if(update.getJwcode().equals(94226013)){ // if(update.getJwcode().equals(94226013)){

8
src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java

@ -186,10 +186,10 @@ public class ConsumeServiceImpl implements ConsumeService {
consumeMapper.updateUserGold(userGoldRecord); consumeMapper.updateUserGold(userGoldRecord);
User user = new User(); User user = new User();
user.setJwcode(userGoldRecord.getJwcode()); user.setJwcode(userGoldRecord.getJwcode());
user.setCurrentPermanentGold(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue());
user.setCurrentFreeJune(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune());
user.setCurrentFreeDecember(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember());
user.setCurrentTaskGold(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue());
user.setCurrentPermanentGold(BigDecimal.valueOf(gold.getNowPermanentGold().intValue() - consumeUser.getPermanentGold().intValue()));
user.setCurrentFreeJune(BigDecimal.valueOf(gold.getNowFreeJune().intValue() + userGoldRecord.getFreeJune()));
user.setCurrentFreeDecember(BigDecimal.valueOf(gold.getNowFreeDecember().intValue() + userGoldRecord.getFreeDecember()));
user.setCurrentTaskGold(BigDecimal.valueOf(gold.getNowTaskGold().intValue() - consumeUser.getTaskGold().intValue()));
user.setConsumeNum(gold.getConsumeNum().intValue() + 1); user.setConsumeNum(gold.getConsumeNum().intValue() + 1);
user.setSumConsume(-(consumeUser.getPermanentGold().intValue() + consumeUser.getFreeGold().intValue() + consumeUser.getTaskGold().intValue())); user.setSumConsume(-(consumeUser.getPermanentGold().intValue() + consumeUser.getFreeGold().intValue() + consumeUser.getTaskGold().intValue()));
userMapper.updateGold(user); userMapper.updateGold(user);

22
src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java

@ -86,34 +86,36 @@ public class GoldDetailServiceImpl implements GoldDetailService {
// 初始化累加器 // 初始化累加器
int totalNum=0; 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) { for (GoldDetail detail : goldDetails) {
// 累加永久金币 // 累加永久金币
if (detail.getPermanentGold() != null) { if (detail.getPermanentGold() != null) {
permanentGoldSum += detail.getPermanentGold();
permanentGoldSum = permanentGoldSum.add(detail.getPermanentGold());
} }
// 累加免费金币 // 累加免费金币
if (detail.getFreeJune() != null||detail.getFreeDecember() != null) { 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) { if (detail.getTaskGold() != null) {
taskGoldSum += detail.getTaskGold();
taskGoldSum = taskGoldSum.add(detail.getTaskGold());
} }
// 每遍历一条记录总条数加1 // 每遍历一条记录总条数加1
totalNum++; totalNum++;
} }
// 将累加结果设置到Gold对象 // 将累加结果设置到Gold对象
gold.setPermanentGolds(BigDecimal.valueOf(permanentGoldSum));
gold.setFreeGolds(BigDecimal.valueOf(freeGoldSum));
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTotalNum(totalNum); gold.setTotalNum(totalNum);
gold.setTaskGolds(BigDecimal.valueOf(taskGoldSum));
gold.setSumGolds(BigDecimal.valueOf(permanentGoldSum+freeGoldSum+taskGoldSum));
gold.setTaskGolds(taskGoldSum);
gold.setSumGolds(permanentGoldSum.add(freeGoldSum).add(taskGoldSum));
return gold; return gold;
} }

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

@ -7,8 +7,20 @@
</insert> </insert>
<select id="getGoldDetail" resultType="com.example.demo.domain.vo.coin.GoldDetail"> <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 from user_gold_record ugr
left join `user` on `user`.jwcode = `ugr`.jwcode left join `user` on `user`.jwcode = `ugr`.jwcode
left join `admin` on `admin`.id = `ugr`.admin_id left join `admin` on `admin`.id = `ugr`.admin_id
@ -47,7 +59,11 @@
</select> </select>
<select id="getTotal" resultType="com.example.demo.domain.vo.coin.Total"> <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 from user_gold_record ugr
<where> <where>
ugr.flag = 1 and ugr.flag = 1 and
@ -75,14 +91,27 @@
</select> </select>
<select id="getGold" resultType="com.example.demo.domain.entity.User"> <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,
u.update_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 from user u
left join market m on u.market = m.id left join market m on u.market = m.id
<where> <where>
@ -106,11 +135,18 @@
</choose> </choose>
</select> </select>
<select id="GoldTotal" resultType="com.example.demo.domain.vo.coin.Total"> <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` from `user`
<where> <where>

Loading…
Cancel
Save