From 9153a858f1ae61fa29bb7a926e7d50359117cd69 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 15 一月 2025 14:32:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java | 99 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 89 insertions(+), 10 deletions(-)
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
index 1a3ca07..0198cd8 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
@@ -1,26 +1,28 @@
package com.ruoyi.account.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.BalanceChangeRecord;
-import com.ruoyi.account.api.model.UserClickLog;
-import com.ruoyi.account.api.model.WithdrawalRequests;
import com.ruoyi.account.dto.BalanceQuery;
import com.ruoyi.account.mapper.BalanceChangeRecordMapper;
-import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.BalanceChangeRecordService;
import com.ruoyi.account.vo.CommissionStatistics;
+import com.ruoyi.account.vo.WalletStatistics;
+import com.ruoyi.account.vo.WalletStatisticsDetail;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.other.api.domain.ShopPoint;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.api.feignClient.ShopClient;
import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -28,20 +30,20 @@
@Service
public class BalanceChangeRecordServiceImpl extends ServiceImpl<BalanceChangeRecordMapper, BalanceChangeRecord> implements BalanceChangeRecordService {
@Resource
- private AppUserService appUserService;
+ private ShopClient shopClient;
@Override
public IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery) {
Page<BalanceChangeRecord> page = new Page<>();
page.setCurrent(agentQuery.getPageNum());
page.setSize(agentQuery.getPageSize());
- IPage<BalanceChangeRecord> shopIPage = this.baseMapper.pageList(page, agentQuery);
- return shopIPage;
+ return this.baseMapper.pageList(page, agentQuery);
}
@Override
public CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) {
List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList(balanceChangeRecord);
+
BigDecimal totalCommission = balanceChangeRecordList.stream()
.filter(item -> !(item.getChangeType().equals(2) && item.getChangeType().equals(5)))
.map(BalanceChangeRecord::getChangeAmount)
@@ -49,6 +51,83 @@
.setScale(2, RoundingMode.HALF_UP);
IPage<BalanceChangeRecord> balanceChangeRecordIPage = this.baseMapper.queryCommissionStatistics(page, balanceChangeRecord);
+ // 过滤商城购物
+ List<BalanceChangeRecord> collect = balanceChangeRecordIPage.getRecords().stream().filter(e -> e.getChangeType() != 5).collect(Collectors.toList());
+ for (BalanceChangeRecord changeRecord : collect) {
+ if (changeRecord.getBeforeAmount()!=null && changeRecord.getAfterAmount()!=null){
+ BigDecimal subtract = changeRecord.getBeforeAmount().subtract(changeRecord.getAfterAmount());
+ if (subtract.compareTo(BigDecimal.ZERO)>0){
+ // 减少
+ changeRecord.setChangeAmountString("-¥"+changeRecord.getChangeAmount());
+ }else if (subtract.compareTo(BigDecimal.ZERO)<0){
+ changeRecord.setChangeAmountString("+¥"+changeRecord.getChangeAmount());
+ }else{
+ changeRecord.setChangeAmountString("¥"+changeRecord.getChangeAmount());
+ }
+ }
+ }
+ balanceChangeRecordIPage.setRecords(collect);
return new CommissionStatistics(totalCommission, balanceChangeRecordIPage);
}
+
+ @Override
+ public WalletStatistics walletStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) {
+ ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
+ shopBalanceStatement.setType(1);
+
+ List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList(balanceChangeRecord);
+ List<WalletStatisticsDetail> walletStatisticsDetailList = new ArrayList<>();
+ for (BalanceChangeRecord changeRecord : balanceChangeRecordList) {
+ WalletStatisticsDetail walletStatisticsDetail = new WalletStatisticsDetail();
+ BeanUtils.copyBeanProp(walletStatisticsDetail, changeRecord);
+ walletStatisticsDetailList.add(walletStatisticsDetail);
+ }
+
+
+ // 按时间排序(倒序)
+ walletStatisticsDetailList.sort(Comparator.comparing(WalletStatisticsDetail::getCreateTime).reversed());
+
+ long current = page.getCurrent();
+ long size = page.getSize();
+ if (current < 1) {
+ current = 1;
+ }
+ int fromIndex = (int) ((current - 1) * size);
+ int toIndex = (int) Math.min(fromIndex + size, walletStatisticsDetailList.size());
+
+
+ Page<WalletStatisticsDetail> walletStatisticsDetailPage = new Page<>();
+ WalletStatistics walletStatistics = new WalletStatistics();
+ if (fromIndex >= walletStatisticsDetailList.size()) {
+ walletStatistics.setPage(walletStatisticsDetailPage);
+ return walletStatistics;
+ }
+
+ Map<Integer, BigDecimal> shopCommissionMap = walletStatisticsDetailList.stream()
+ .collect(Collectors.groupingBy(
+ WalletStatisticsDetail::getChangeType,
+ Collectors.reducing(
+ BigDecimal.ZERO,
+ WalletStatisticsDetail::getChangeAmount,
+ BigDecimal::add
+ )
+ ));
+
+ BigDecimal totalRecharge = shopCommissionMap.get(1);
+ BigDecimal totalWithdraw = shopCommissionMap.get(2);
+ BigDecimal totalShopWithdraw = shopCommissionMap.get(7);
+
+ List<WalletStatisticsDetail> walletStatisticsDetailList2 = walletStatisticsDetailList.subList(fromIndex, toIndex);
+
+ walletStatisticsDetailPage.setCurrent(current);
+ walletStatisticsDetailPage.setSize(size);
+ walletStatisticsDetailPage.setTotal(walletStatisticsDetailList.size());
+ walletStatisticsDetailPage.setRecords(walletStatisticsDetailList2);
+ walletStatistics.setPage(walletStatisticsDetailPage);
+ walletStatistics.setTotalRecharge(totalRecharge);
+ walletStatistics.setTotalWithdraw(totalWithdraw);
+ walletStatistics.setTotalShopWithdraw(totalShopWithdraw);
+ return walletStatistics;
+ }
+
}
--
Gitblit v1.7.1