123333
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.ruoyi.cai.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
@@ -36,26 +37,29 @@ public class DayIncomeStatistics implements Serializable {
|
||||
@DateTimeFormat(pattern = DateConstant.PATTERN_DATE)
|
||||
@JsonFormat(pattern = DateConstant.PATTERN_DATE)
|
||||
private LocalDate date;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String dateStr;
|
||||
/**
|
||||
* 充值金额
|
||||
*/
|
||||
private BigDecimal expInMoney;
|
||||
/**
|
||||
* 充值订单
|
||||
*/
|
||||
private Integer orderCount;
|
||||
/**
|
||||
* 提现金额
|
||||
*/
|
||||
private BigDecimal outMoney;
|
||||
/**
|
||||
* vip金额
|
||||
*/
|
||||
private BigDecimal vipInMoney;
|
||||
/**
|
||||
* 提现数量
|
||||
*/
|
||||
private Integer cashCount;
|
||||
/**
|
||||
* 充值订单
|
||||
* vip金额
|
||||
*/
|
||||
private Integer orderCount;
|
||||
private BigDecimal vipInMoney;
|
||||
/**
|
||||
* vip订单
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.cai.dto.admin.vo.home;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class HomeAmountLine {
|
||||
private List<String> x = new ArrayList<>();
|
||||
@Schema(description = "充值金额")
|
||||
private List<Number> expInMoneyData = new ArrayList<>();
|
||||
@Schema(description = "充值订单数")
|
||||
private List<Number> orderCountData = new ArrayList<>();
|
||||
|
||||
@Schema(description = "提现金额")
|
||||
private List<Number> outMoneyData = new ArrayList<>();
|
||||
|
||||
@Schema(description = "提现数量")
|
||||
private List<Number> cashCountData = new ArrayList<>();
|
||||
|
||||
@Schema(description = "手工减少余额数")
|
||||
private List<Number> modifyCoinSubData = new ArrayList<>();
|
||||
|
||||
@Schema(description = "手工新增余额数")
|
||||
private List<Number> modifyCoinAddData = new ArrayList<>();
|
||||
|
||||
@Schema(description = "手工减少收益数")
|
||||
private List<Number> modifyIncomeSubData = new ArrayList<>();
|
||||
|
||||
@Schema(description = "手工新增余额数")
|
||||
private List<Number> modifyIncomeAddData = new ArrayList<>();
|
||||
|
||||
|
||||
public void addX(String date){
|
||||
x.add(date);
|
||||
}
|
||||
|
||||
public void addExpInMoneyData(Number expInMoney){
|
||||
expInMoneyData.add(expInMoney);
|
||||
}
|
||||
public void addOrderCountData(Number orderCount){
|
||||
orderCountData.add(orderCount);
|
||||
}
|
||||
public void addOutMoneyData(Number outMoney){
|
||||
outMoneyData.add(outMoney);
|
||||
}
|
||||
public void addCashCountData(Number cashCount){
|
||||
cashCountData.add(cashCount);
|
||||
}
|
||||
public void addModifyCoinSubData(Number modifyCoinSub){
|
||||
modifyCoinSubData.add(modifyCoinSub);
|
||||
}
|
||||
public void addModifyCoinAddData(Number modifyCoinAdd){
|
||||
modifyCoinAddData.add(modifyCoinAdd);
|
||||
}
|
||||
public void addModifyIncomeSubData(Number modifyIncomeSub){
|
||||
modifyIncomeSubData.add(modifyIncomeSub);
|
||||
}
|
||||
public void addModifyIncomeAddData(Number modifyIncomeAdd){
|
||||
modifyIncomeAddData.add(modifyIncomeAdd);
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,28 @@
|
||||
package com.ruoyi.cai.dto.admin.vo.home;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class HomeStaticIndexVo {
|
||||
@Schema(description = "今日登陆人数")
|
||||
private Long todayLoginNum;
|
||||
@Schema(description = "登陆与昨日相比")
|
||||
private BigDecimal todayLoginDiffLast;
|
||||
|
||||
@Schema(description = "主播人数")
|
||||
private Long anchorNum;
|
||||
|
||||
@Schema(description = "今日充值金额")
|
||||
private BigDecimal todayRechargeAmountNum;
|
||||
@Schema(description = "今日充值订单数")
|
||||
private Long todayRechargeNum;
|
||||
@Schema(description = "今日充值与昨日相比")
|
||||
private BigDecimal todayRechargeAmountDiffLast;
|
||||
|
||||
@Schema(description = "今日提现金额")
|
||||
private BigDecimal todayWithdrawAmount;
|
||||
@Schema(description = "今日提现订单数")
|
||||
private Long todayWithdrawNum;
|
||||
@Schema(description = "今日充值与昨日相比")
|
||||
private BigDecimal todayWithdrawAmountDiffLast;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@ package com.ruoyi.cai.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.cai.domain.DayIncomeStatistics;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 每日账单统计Mapper接口
|
||||
@@ -11,4 +15,5 @@ import com.ruoyi.cai.domain.DayIncomeStatistics;
|
||||
*/
|
||||
public interface DayIncomeStatisticsMapper extends BaseMapper<DayIncomeStatistics> {
|
||||
|
||||
List<DayIncomeStatistics> statisticsByMonth(@Param("begin") LocalDate begin, @Param("end") LocalDate end);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,10 @@ public class CaiDateUtil {
|
||||
return ChronoUnit.SECONDS.between(after, before);
|
||||
}
|
||||
|
||||
public static long diffDays(LocalDateTime before, LocalDateTime after){
|
||||
return ChronoUnit.DAYS.between(after, before);
|
||||
}
|
||||
|
||||
public static String betweenShowString(LocalDateTime minTime,LocalDateTime maxTime){
|
||||
Duration duration = Duration.between(minTime, maxTime);
|
||||
long seconds = duration.getSeconds();
|
||||
@@ -102,4 +106,8 @@ public class CaiDateUtil {
|
||||
public static String getCurrentTimeStr() {
|
||||
return localDateTimeToString(LocalDateTime.now());
|
||||
}
|
||||
|
||||
public static String formatDate(LocalDate begin) {
|
||||
return begin.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user