Browse Source

客户金币明细优化,审核排序修复

milestone-20250702-金币重构一期
lijianlin 6 hours ago
parent
commit
a655514f32
  1. 7
      src/main/java/com/example/demo/controller/GoldDetailController.java
  2. 2
      src/main/java/com/example/demo/domain/export/Goldmingxi.java
  3. 1
      src/main/java/com/example/demo/domain/vo/Gold.java
  4. 2
      src/main/java/com/example/demo/domain/vo/GoldDetail.java
  5. 3
      src/main/java/com/example/demo/mapper/GoldDetailMapper.java
  6. 6
      src/main/java/com/example/demo/service/GoldDetailService.java
  7. 48
      src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java
  8. 4
      src/main/resources/mapper/AuditMapper.xml
  9. 36
      src/main/resources/mapper/GoldDetailMapper.xml

7
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) {

2
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; // 任务金币

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

2
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; // 任务金币

3
src/main/java/com/example/demo/mapper/GoldDetailMapper.java

@ -20,6 +20,9 @@ import java.util.List;
@Mapper
public interface GoldDetailMapper {
List<GoldDetail> getGoldDetail(GoldDetail goldDetail);
List<GoldDetail> getGoldDetail1(@Param("pageNum") Integer pageNum,
@Param("pageSize") Integer pageSize,
@Param("goldDetail") GoldDetail goldDetail);
Total getTotal(GoldDetail goldDetail);
List<User> getGold(User user);
Total GoldTotal(User user);

6
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<User> getGold(Integer pageNum, Integer pageSize, User user);
Total GoldTotal(User user);
//金币统计
Gold sumGold(Integer pageNum, Integer pageSize, GoldDetail goldDetail);
//异步导出客户明细
Result addExportRecord(GoldDetailDTO dto);
//异步导出金币余额

48
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<GoldDetail> goldDetails = goldDetailMapper.getGoldDetail(goldDetail);
// List<GoldDetail> 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

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

@ -72,7 +72,7 @@
</where>
<choose>
<when test="rechargeAudit.sortField != null and rechargeAudit.sortField.length > 0 or rechargeAudit.sortOrder != null and rechargeAudit.sortOrder.length > 0">
ORDER BY #{rechargeAudit.sortField} #{rechargeAudit.sortOrder}
ORDER BY ${rechargeAudit.sortField} ${rechargeAudit.sortOrder}
</when>
<otherwise>
ORDER BY create_time DESC
@ -117,7 +117,7 @@
</where>
<choose>
<when test="refundAudit.sortField != null and refundAudit.sortField.length > 0 or refundAudit.sortOrder != null and refundAudit.sortOrder.length > 0">
ORDER BY #{refundAudit.sortField} #{refundAudit.sortOrder}
ORDER BY ${refundAudit.sortField} ${refundAudit.sortOrder}
</when>
<otherwise>
ORDER BY create_time DESC

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

@ -13,10 +13,10 @@
left join `admin` on `admin`.id = `ugr`.admin_id
<where>
<if test="jwcode != null">
and `ugr`.jwcode = #{jwcode}
and ugr.jwcode = #{jwcode}
</if>
<if test="payPlatform != null and payPlatform.length > 0">
and `ugr`.pay_platform = #{payPlatform}
and ugr.pay_platform = #{payPlatform}
</if>
<if test="type != null">
and `ugr`.type = #{type}
@ -95,4 +95,36 @@
</if>
</where>
</select>
<select id="getGoldDetail1" resultType="com.example.demo.domain.vo.GoldDetail">
select `user`.name, `user`.jwcode, `user`.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
from user_gold_record ugr
left join `user` on `user`.jwcode = `ugr`.jwcode
left join `admin` on `admin`.id = `ugr`.admin_id
<where>
<if test="jwcode != null">
and `ugr`.jwcode = #{jwcode}
</if>
<if test="payPlatform != null and payPlatform.length > 0">
and `ugr`.pay_platform = #{payPlatform}
</if>
<if test="type != null">
and `ugr`.type = #{type}
</if>
<if test="market != null and market.length > 0">
and `user`.market = #{market}
</if>
<if test="startTime != null and endTime != null">
and ugr.`audit_time` BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<choose>
<when test="sortField != null and sortField.length > 0 or sortOrder != null and sortOrder.length > 0">
ORDER BY ${sortField} ${sortOrder}
</when>
<otherwise>
ORDER BY audit_time DESC
</otherwise>
</choose>
</select>
</mapper>
Loading…
Cancel
Save