This commit is contained in:
张良(004796)
2024-02-05 17:34:43 +08:00
parent 99e0772540
commit 18f9838338
9 changed files with 226 additions and 17 deletions

View File

@@ -1,27 +1,37 @@
package com.ruoyi.cai.manager;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.cache.RechargeTotalCache;
import com.ruoyi.cai.cache.WithdrawTotalCache;
import com.ruoyi.cai.cache.bean.RechargeTotalCacheBean;
import com.ruoyi.cai.cache.bean.WithdrawTotalCacheBean;
import com.ruoyi.cai.domain.DayIncomeStatistics;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.home.HomeAmountLine;
import com.ruoyi.cai.dto.admin.vo.home.HomeStaticIndexVo;
import com.ruoyi.cai.dto.admin.vo.rank.RankNodeAdminVo;
import com.ruoyi.cai.enums.rank.RankTimeTypeEnum;
import com.ruoyi.cai.mapper.DayIncomeStatisticsMapper;
import com.ruoyi.cai.rank.RankAdminManager;
import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.rank.RankNode;
import com.ruoyi.cai.rank.bean.RankAdminNode;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.util.CaiDateUtil;
import com.ruoyi.cai.util.CaiNumUtil;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.framework.OnlineUserTodayCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -143,4 +153,99 @@ public class AdminHomeManager {
vo.setTodayWithdrawAmountDiffLast(CaiNumUtil.diffRate(todayWithdraw.getAmount(),lastTodayWithdraw.getAmount()));
return vo;
}
@Resource
private DayIncomeStatisticsMapper dayIncomeStatisticsMapper;
public HomeAmountLine amountLine(LocalDate begin, LocalDate end) {
if(begin == null || end == null){
return new HomeAmountLine();
}
if(begin.isAfter(end)){
return new HomeAmountLine();
}
Period period = Period.between(begin, end);
if(period.getYears() > 2){
throw new ServiceException("一次性只能查询2年内的数据");
}
HomeAmountLine amountLine = new HomeAmountLine();
if(period.getMonths() == 0){ // 按天统计
List<DayIncomeStatistics> statisticsList = dayIncomeStatisticsMapper.selectList(Wrappers.lambdaQuery(DayIncomeStatistics.class)
.between(DayIncomeStatistics::getDate, begin, end));
Map<LocalDate, DayIncomeStatistics> statisticsMap = statisticsList.stream().collect(Collectors.toMap(DayIncomeStatistics::getDate, Function.identity()));
while (begin.isBefore(end)){
DayIncomeStatistics statistics = statisticsMap.get(begin);
String beginStr = CaiDateUtil.formatDate(begin);
BigDecimal expInMoney = BigDecimal.ZERO;
Integer orderCount = 0;
BigDecimal outMoney = BigDecimal.ZERO;
Integer cashCount = 0;
Long modifyCoinAdd = 0L;
Long modifyCoinSub = 0L;
Long modifyIncomeAdd = 0L;
Long modifyIncomeSub = 0L;
if(statistics != null){
expInMoney = statistics.getExpInMoney();
orderCount = statistics.getOrderCount();
outMoney = statistics.getOutMoney();
cashCount = statistics.getCashCount();
modifyCoinAdd = statistics.getModifyCoinAdd();
modifyCoinSub = statistics.getModifyCoinSub();
modifyIncomeAdd = statistics.getModifyIncomeAdd();
modifyIncomeSub = statistics.getModifyIncomeSub();
}
amountLine.addX(beginStr);
amountLine.addExpInMoneyData(expInMoney);
amountLine.addOrderCountData(orderCount);
amountLine.addOutMoneyData(outMoney);
amountLine.addCashCountData(cashCount);
amountLine.addModifyCoinAddData(modifyCoinAdd);
amountLine.addModifyCoinSubData(modifyCoinSub);
amountLine.addModifyIncomeAddData(modifyIncomeAdd);
amountLine.addModifyIncomeSubData(modifyIncomeSub);
begin = begin.plusDays(1);
}
}
else { // 按月统计
List<DayIncomeStatistics> statisticsList = dayIncomeStatisticsMapper.statisticsByMonth(begin,end);
Map<String, DayIncomeStatistics> statisticsMap = statisticsList.stream().collect(Collectors.toMap(DayIncomeStatistics::getDateStr, Function.identity()));
String endMonth = end.format(DateTimeFormatter.ofPattern("yyyy-MM"));
while (true) {
String beginMonth = begin.format(DateTimeFormatter.ofPattern("yyyy-MM"));
DayIncomeStatistics statistics = statisticsMap.get(beginMonth);
BigDecimal expInMoney = BigDecimal.ZERO;
Integer orderCount = 0;
BigDecimal outMoney = BigDecimal.ZERO;
Integer cashCount = 0;
Long modifyCoinAdd = 0L;
Long modifyCoinSub = 0L;
Long modifyIncomeAdd = 0L;
Long modifyIncomeSub = 0L;
if(statistics != null){
expInMoney = statistics.getExpInMoney();
orderCount = statistics.getOrderCount();
outMoney = statistics.getOutMoney();
cashCount = statistics.getCashCount();
modifyCoinAdd = statistics.getModifyCoinAdd();
modifyCoinSub = statistics.getModifyCoinSub();
modifyIncomeAdd = statistics.getModifyIncomeAdd();
modifyIncomeSub = statistics.getModifyIncomeSub();
}
amountLine.addX(beginMonth);
amountLine.addExpInMoneyData(expInMoney);
amountLine.addOrderCountData(orderCount);
amountLine.addOutMoneyData(outMoney);
amountLine.addCashCountData(cashCount);
amountLine.addModifyCoinAddData(modifyCoinAdd);
amountLine.addModifyCoinSubData(modifyCoinSub);
amountLine.addModifyIncomeAddData(modifyIncomeAdd);
amountLine.addModifyIncomeSubData(modifyIncomeSub);
if(beginMonth.equals(endMonth)){
break;
}
begin = begin.plusMonths(1);
}
}
return amountLine;
}
}