Browse Source

8-18 客户金币余额合计数优化+明细页面员工号筛选

lijianlin/feature-20250728171217-三期金豆消费相关
lijianlin 4 days ago
parent
commit
997b96d44f
  1. 2
      src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java
  2. 4
      src/main/java/com/example/demo/mapper/coin/GoldDetailMapper.java
  3. 40
      src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java
  4. 55
      src/main/resources/mapper/GoldDetailMapper.xml

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

@ -64,6 +64,6 @@ public class GoldDetail {
@ExcelIgnore
private List<String> markets;
@ExcelIgnore
private Integer UserFlag;// 用户标识
private Integer flag;// 是否为员工号 0员工号 1非员工号
}

4
src/main/java/com/example/demo/mapper/coin/GoldDetailMapper.java

@ -1,6 +1,7 @@
package com.example.demo.mapper.coin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.GoldDetail;
import com.example.demo.domain.vo.coin.Total;
import lombok.Data;
@ -26,6 +27,9 @@ public interface GoldDetailMapper {
Total getTotal(GoldDetail goldDetail);
List<User> getGold(User user);
Total GoldTotal(User user);
//获取金币明细合计数
Gold sumGold(@Param("goldDetail") GoldDetail goldDetail);
@Data
public static class ExportRecordIdHolder{
private Long id;

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

@ -78,44 +78,8 @@ public class GoldDetailServiceImpl implements GoldDetailService {
*/
@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;
BigDecimal permanentGoldSum = BigDecimal.ZERO;
BigDecimal freeGoldSum = BigDecimal.ZERO;
BigDecimal taskGoldSum = BigDecimal.ZERO;
// 遍历消费记录并累加金币
for (GoldDetail detail : goldDetails) {
// 累加永久金币
if (detail.getPermanentGold() != null) {
permanentGoldSum = permanentGoldSum.add(detail.getPermanentGold());
}
// 累加免费金币
if (detail.getFreeJune() != null||detail.getFreeDecember() != null) {
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 = taskGoldSum.add(detail.getTaskGold());
}
// 每遍历一条记录总条数加1
totalNum++;
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTotalNum(totalNum);
gold.setTaskGolds(taskGoldSum);
gold.setSumGolds(permanentGoldSum.add(freeGoldSum).add(taskGoldSum));
Gold gold=goldDetailMapper.sumGold(goldDetail);
return gold;
}

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

@ -28,8 +28,8 @@
<where>
ugr.flag = 1 and
ugr.audit_status IN (1,3)
<if test="UserFlag!=null and UserFlag.length > 0">
AND `user`.flag = #{UserFlag}
<if test="flag != 0">
AND `user`.flag = 1
</if>
<if test="jwcode != null">
and ugr.jwcode = #{jwcode}
@ -67,11 +67,12 @@
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
left join `user` u on u.jwcode = ugr.jwcode
<where>
ugr.flag = 1 and
ugr.audit_status IN (1,3)
<if test="UserFlag!=null and UserFlag.length > 0">
AND `user`.flag = #{UserFlag}
<if test="flag != 0">
AND u.flag = 1
</if>
<if test="jwcode != null">
and `ugr`.jwcode = #{jwcode}
@ -119,8 +120,8 @@
from user u
left join market m on u.market = m.id
<where>
<if test="UserFlag!=null and UserFlag.length > 0">
AND `user`.flag = #{UserFlag}
<if test="flag != 0">
AND u.flag = 1
</if>
<if test="jwcode != null">
and jwcode = #{jwcode}
@ -157,8 +158,8 @@
from `user`
<where>
<if test="UserFlag!=null and UserFlag.length > 0">
AND `user`.flag = #{UserFlag}
<if test="flag != 0">
AND `user`.flag = 1
</if>
<if test="jwcode != null ">
and jwcode = #{jwcode}
@ -207,4 +208,42 @@
</choose>
</select>
<select id="sumGold" resultType="com.example.demo.domain.vo.coin.Gold">
SELECT
ROUND(SUM(ugr.sum_gold) / 100.0, 2) AS sumGolds,
ROUND(SUM(ugr.permanent_gold) / 100.0, 2) AS permanentGolds,
ROUND(SUM(ugr.task_gold) / 100.0, 2) AS taskGolds,
ROUND(SUM(ugr.free_june + ugr.free_december) / 100.0, 2) AS freeGolds,
COUNT(*) AS totalNum
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
ugr.audit_status IN (1,3)
<if test="goldDetail.flag != 0">
AND `user`.flag = 1
</if>
<if test="goldDetail.jwcode != null">
and ugr.jwcode = #{goldDetail.jwcode}
</if>
<if test="goldDetail.payPlatform != null and goldDetail.payPlatform.length > 0">
and ugr.pay_platform = #{goldDetail.payPlatform}
</if>
<if test="goldDetail.type != null">
and ugr.type = #{goldDetail.type}
</if>
<if test="goldDetail.markets!= null and goldDetail.markets.size > 0">
AND user.market IN
<foreach collection="goldDetail.markets" item="goldDetail.markets" open="(" separator="," close=")">
#{goldDetail.markets}
</foreach>
</if>
<if test="goldDetail.startTime != null and goldDetail.endTime != null">
and ugr.`audit_time` BETWEEN #{goldDetail.startTime} AND #{goldDetail.endTime}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save