From 0449a6264819bce3869f47b9e5bd3729f158db54 Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期五, 14 三月 2025 16:05:24 +0800
Subject: [PATCH] 迭代版本:2.28
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java | 157 +++++++++++++++++++++++++++++++--------------------
1 files changed, 95 insertions(+), 62 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 33f6baf..2c0fe35 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,11 +1,15 @@
package com.ruoyi.account.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
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.BalanceChangeRecordCopy;
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;
@@ -14,6 +18,8 @@
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
+import com.ruoyi.order.model.Order;
import com.ruoyi.other.api.domain.ShopBalanceStatement;
import com.ruoyi.other.api.feignClient.ShopClient;
import org.springframework.stereotype.Service;
@@ -21,6 +27,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@@ -31,6 +38,10 @@
public class BalanceChangeRecordServiceImpl extends ServiceImpl<BalanceChangeRecordMapper, BalanceChangeRecord> implements BalanceChangeRecordService {
@Resource
private ShopClient shopClient;
+ @Resource
+ private RemoteOrderGoodsClient remoteOrderGoodsClient;
+ @Resource
+ private AppUserService appUserService;
@Override
public IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery) {
@@ -42,6 +53,7 @@
@Override
public CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) {
+ balanceChangeRecord.setChangeType(4);
List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList(balanceChangeRecord);
BigDecimal totalCommission = balanceChangeRecordList.stream()
@@ -53,6 +65,19 @@
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);
}
@@ -62,48 +87,28 @@
ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
shopBalanceStatement.setType(1);
- R<List<ShopBalanceStatement>> r;
- try {
- r = shopClient.getShopBalanceStatementList(shopBalanceStatement);
- } catch (Exception e) {
- log.error("获取店铺余额对账单列表时出错", e);
- return null;
- }
-
- if (R.isError(r)) {
- return null;
- }
-
- List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList(balanceChangeRecord);
+ List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList1(balanceChangeRecord);
List<WalletStatisticsDetail> walletStatisticsDetailList = new ArrayList<>();
+ BigDecimal totalWithdraw = BigDecimal.ZERO;
for (BalanceChangeRecord changeRecord : balanceChangeRecordList) {
+
WalletStatisticsDetail walletStatisticsDetail = new WalletStatisticsDetail();
BeanUtils.copyBeanProp(walletStatisticsDetail, changeRecord);
+
+ BigDecimal beforeAmount = changeRecord.getBeforeAmount();
+ BigDecimal afterAmount = changeRecord.getAfterAmount();
+
+ if (beforeAmount.compareTo(afterAmount) > 0){
+ BigDecimal changeAmount = changeRecord.getChangeAmount();
+ totalWithdraw = totalWithdraw.add(changeAmount);
+ walletStatisticsDetail.setFlag(2);
+ }else {
+ walletStatisticsDetail.setFlag(1);
+ }
walletStatisticsDetailList.add(walletStatisticsDetail);
}
-
- List<WalletStatisticsDetail> collect = r.getData().stream().map(this::createWalletStatisticsDetail).collect(Collectors.toList());
- // 根据门店名称、用户姓名、联系电话进行模糊过滤
- collect = collect.stream()
- .filter(e -> {
- if (StringUtils.isNotEmpty(balanceChangeRecord.getShopName())) {
- return e.getShopName().contains(balanceChangeRecord.getShopName());
- } else if (StringUtils.isNotEmpty(balanceChangeRecord.getUserName())) {
- return e.getUserName().contains(balanceChangeRecord.getUserName());
- } else if (StringUtils.isNotEmpty(balanceChangeRecord.getUserPhone())) {
- return e.getUserPhone().contains(balanceChangeRecord.getUserPhone());
- }
- // 根据时间进行范围过滤
- if (balanceChangeRecord.getStartTime() != null && balanceChangeRecord.getEndTime() != null) {
- return e.getCreateTime().isAfter(balanceChangeRecord.getStartTime()) && e.getCreateTime().isBefore(balanceChangeRecord.getEndTime());
- }
- return false;
- }).collect(Collectors.toList());
- walletStatisticsDetailList.addAll(collect);
-
// 按时间排序(倒序)
walletStatisticsDetailList.sort(Comparator.comparing(WalletStatisticsDetail::getCreateTime).reversed());
-
long current = page.getCurrent();
long size = page.getSize();
if (current < 1) {
@@ -112,11 +117,13 @@
int fromIndex = (int) ((current - 1) * size);
int toIndex = (int) Math.min(fromIndex + size, walletStatisticsDetailList.size());
- if (fromIndex >= walletStatisticsDetailList.size()) {
- throw new ServiceException("页面参数无效");
- }
- List<WalletStatisticsDetail> walletStatisticsDetailList2 = walletStatisticsDetailList.subList(fromIndex, toIndex);
+ Page<WalletStatisticsDetail> walletStatisticsDetailPage = new Page<>();
+ WalletStatistics walletStatistics = new WalletStatistics();
+ if (fromIndex >= walletStatisticsDetailList.size()) {
+ walletStatistics.setPage(walletStatisticsDetailPage);
+ return walletStatistics;
+ }
Map<Integer, BigDecimal> shopCommissionMap = walletStatisticsDetailList.stream()
@@ -130,32 +137,58 @@
));
BigDecimal totalRecharge = shopCommissionMap.get(1);
- BigDecimal totalWithdraw = shopCommissionMap.get(2);
BigDecimal totalShopWithdraw = shopCommissionMap.get(7);
-
- WalletStatistics walletStatistics = new WalletStatistics();
- Page<WalletStatisticsDetail> page1 = new Page<>();
- page1.setRecords(walletStatisticsDetailList2);
- page1.setTotal(walletStatisticsDetailList.size());
- page1.setCurrent(current);
- page1.setSize(size);
- walletStatistics.setPage(page1);
- walletStatistics.setTotalRecharge(totalRecharge);
- walletStatistics.setTotalWithdraw(totalWithdraw);
- walletStatistics.setTotalShopWithdraw(totalShopWithdraw);
+ List<WalletStatisticsDetail> walletStatisticsDetailList2 = walletStatisticsDetailList.subList(fromIndex, toIndex);
+ for (WalletStatisticsDetail changeRecord : walletStatisticsDetailList2) {
+ Integer flag = changeRecord.getFlag();
+ if (flag.equals(1)){
+ changeRecord.setChangeAmountString("+¥"+changeRecord.getChangeAmount());
+ }else {
+ changeRecord.setChangeAmountString("-¥"+changeRecord.getChangeAmount());
+ }
+ 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;
}
-
- private WalletStatisticsDetail createWalletStatisticsDetail(ShopBalanceStatement item) {
- WalletStatisticsDetail walletStatisticsDetail = new WalletStatisticsDetail();
- walletStatisticsDetail.setShopName(item.getShopName());
- walletStatisticsDetail.setUserName(item.getShopManagerName());
- walletStatisticsDetail.setUserPhone(item.getPhone());
- walletStatisticsDetail.setChangeType(4);
- walletStatisticsDetail.setCreateTime(item.getCreateTime());
- walletStatisticsDetail.setChangeAmount(item.getVariableAmount());
- return walletStatisticsDetail;
- }
-
+
+ @Override
+ public IPage<BalanceChangeRecordCopy> change(Page<BalanceChangeRecordCopy> page, Integer changeType, LocalDateTime startTime, LocalDateTime endTime, Long userId) {
+ List<BalanceChangeRecordCopy> change = this.baseMapper.change(page, changeType, startTime, endTime, userId);
+ List<Long> orderIds = change.stream().map(BalanceChangeRecordCopy::getOrderId).collect(Collectors.toList());
+ if (CollectionUtil.isNotEmpty(orderIds)){
+ R<List<Order>> r = remoteOrderGoodsClient.getOrderListByIds(orderIds);
+ if (!R.isSuccess(r)){
+ return null;
+ }
+ List<Order> orderList = r.getData();
+ change.forEach(bc -> {
+ orderList.stream().filter(o -> o.getId().equals(bc.getOrderId())).findFirst().ifPresent(o -> {
+ Long appUserId = o.getAppUserId();
+ AppUser appUser = appUserService.getById(appUserId);
+ if(null != appUser){
+ bc.setUserName(appUser.getName());
+ bc.setAmount(o.getPaymentAmount());
+ }
+ });
+
+ BigDecimal beforeAmount = bc.getBeforeAmount();
+ BigDecimal afterAmount = bc.getAfterAmount();
+ if (beforeAmount.compareTo(afterAmount) > 0){
+ bc.setFlag(2);
+ }else {
+ bc.setFlag(1);
+ }
+ });
+ }
+ page.setRecords(change);
+ return page;
+ }
}
--
Gitblit v1.7.1