|
|
@ -2,6 +2,7 @@ package com.example.demo.serviceImpl; |
|
|
|
|
|
|
|
import com.example.demo.domain.entity.Statistics; |
|
|
|
import com.example.demo.domain.vo.WorkbenchCard; |
|
|
|
import com.example.demo.domain.vo.WorkbenchFullStatistics; |
|
|
|
import com.example.demo.domain.vo.WorkbenchMarketCard; |
|
|
|
import com.example.demo.domain.vo.WorkbenchMarketGraph; |
|
|
|
import com.example.demo.mapper.StatisticsMapper; |
|
|
@ -17,10 +18,7 @@ import java.time.DayOfWeek; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.time.LocalTime; |
|
|
|
import java.time.ZoneId; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Calendar; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
@ -144,6 +142,9 @@ public class WorkbenchServiceImpl implements WorkbenchService { |
|
|
|
WorkbenchMarketCard card = new WorkbenchMarketCard(); |
|
|
|
card.setMarket(market); |
|
|
|
if (statistics != null) { |
|
|
|
// 一次性获取全年统计数据(从年初到今天) |
|
|
|
Map<String, Integer> yearlyStats = calculateAllSum(market, yearlyStartDate, date); |
|
|
|
|
|
|
|
// 卡片一:当前金币相关 |
|
|
|
card.setCurrentPermanent(statistics.getCurrentPermanent());//余量-永久金币 |
|
|
|
card.setCurrentFreeJune(statistics.getCurrentFreeJune()); //余量-免费六月金币 |
|
|
@ -155,8 +156,8 @@ public class WorkbenchServiceImpl implements WorkbenchService { |
|
|
|
// 卡片二:充值相关 |
|
|
|
card.setRecharge(statistics.getRecharge()); //充值-当日充值 |
|
|
|
card.setMoney(statistics.getMoney()); //充值-当日金额(永久) |
|
|
|
card.setYearlyRecharge(calculateSum(market, "recharge",yearlyStartDate ,date));//充值-全年累计充值 |
|
|
|
card.setYearlyMoney(calculateSum(market, "money",yearlyStartDate ,date)); //充值-全年累计金额(永久) |
|
|
|
card.setYearlyRecharge(yearlyStats.getOrDefault("recharge", 0)); // 充值-全年累计充值 |
|
|
|
card.setYearlyMoney(yearlyStats.getOrDefault("money", 0)); // 充值-全年累计金额(永久)//充值-全年累计金额(永久) |
|
|
|
// 卡片三:消费与退款 |
|
|
|
card.setConsumePermanent(statistics.getConsumePermanent());//消费-永久金币 |
|
|
|
card.setConsumeFreeJune(statistics.getConsumeFreeJune());//消费-免费六月金币 |
|
|
@ -171,13 +172,14 @@ public class WorkbenchServiceImpl implements WorkbenchService { |
|
|
|
//当日总退款 |
|
|
|
int totalRefund = card.getRefundPermanent() + card.getRefundFreeJune() + card.getRefundFreeDecember() + card.getRefundTask(); |
|
|
|
card.setDailyReduce(totalConsume - totalRefund);//当日总消耗 |
|
|
|
card.setYearlyConsume(calculateSum(market, "consume", yearlyStartDate,date));//年累计消费 |
|
|
|
card.setYearlyRefund(calculateSum(market, "refund",yearlyStartDate ,date));//年累计退款 |
|
|
|
card.setYearlyConsume(yearlyStats.getOrDefault("consume", 0)); // 年累计消费 |
|
|
|
card.setYearlyRefund(yearlyStats.getOrDefault("refund", 0)); // 年累计退款 |
|
|
|
|
|
|
|
card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗 |
|
|
|
// 卡片四:人头数相关 |
|
|
|
card.setRechargeNum(statistics.getRechargeNum()); |
|
|
|
card.setFirstRecharge(statistics.getFirstRecharge()); |
|
|
|
card.setYearlyRechargeNum(calculateSum(market,"rechargeNum",yearlyStartDate,date)); |
|
|
|
card.setYearlyRechargeNum(yearlyStats.getOrDefault("rechargeNum", 0)); |
|
|
|
|
|
|
|
|
|
|
|
// 周环比、日同比 |
|
|
@ -192,14 +194,16 @@ public class WorkbenchServiceImpl implements WorkbenchService { |
|
|
|
List<WorkbenchMarketGraph> marketGraphs = new ArrayList<>(); |
|
|
|
|
|
|
|
for (String market : markets) { |
|
|
|
Map<String, Integer> sums = calculateAllSum(market, startDate, endDate); |
|
|
|
|
|
|
|
WorkbenchMarketGraph graphs = new WorkbenchMarketGraph(); |
|
|
|
graphs.setMarket(market); |
|
|
|
graphs.setSumRechargePermanent(calculateSum(market, "money",startDate,endDate)); |
|
|
|
graphs.setSumRechargeFree(calculateSum(market, "rFree",startDate,endDate)); |
|
|
|
graphs.setSumConsumePermanent(calculateSum(market, "cPermanent",startDate,endDate)); |
|
|
|
graphs.setSumConsumeFree(calculateSum(market, "cFree",startDate,endDate)); |
|
|
|
graphs.setSumConsumeTask(calculateSum(market, "cTask",startDate,endDate)); |
|
|
|
marketGraphs.add( graphs); |
|
|
|
graphs.setSumRechargePermanent(sums.get("money")); |
|
|
|
graphs.setSumRechargeFree(sums.get("rFree")); |
|
|
|
graphs.setSumConsumePermanent(sums.get("cPermanent")); |
|
|
|
graphs.setSumConsumeFree(sums.get("cFree")); |
|
|
|
graphs.setSumConsumeTask(sums.get("cTask")); |
|
|
|
marketGraphs.add(graphs); |
|
|
|
} |
|
|
|
return new WorkbenchCard(token, new ArrayList<>(),marketGraphs,markets,startDate,endDate); |
|
|
|
} |
|
|
@ -208,33 +212,20 @@ public class WorkbenchServiceImpl implements WorkbenchService { |
|
|
|
根据类型获取统计数据 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public Integer calculateSum(String market, String type, Date startDate,Date endDate) { |
|
|
|
public Map<String, Integer> calculateAllSum(String market, Date startDate, Date endDate) { |
|
|
|
WorkbenchFullStatistics stats = workBenchMapper.getFullStatisticsByMarketAndDate(market, startDate, endDate); |
|
|
|
Map<String, Integer> result = new HashMap<>(); |
|
|
|
result.put("recharge", stats.getTotalRecharge() != null ? stats.getTotalRecharge() : 0); |
|
|
|
result.put("money", stats.getTotalMoney() != null ? stats.getTotalMoney() : 0); |
|
|
|
result.put("rFree", (stats.getTotalRecharge() != null ? stats.getTotalRecharge() : 0) |
|
|
|
- (stats.getTotalMoney() != null ? stats.getTotalMoney() : 0)); |
|
|
|
result.put("cPermanent", stats.getTotalConsumePermanent() != null ? stats.getTotalConsumePermanent() : 0); |
|
|
|
result.put("cFree", stats.getTotalConsumeFree() != null ? stats.getTotalConsumeFree() : 0); |
|
|
|
result.put("cTask", stats.getTotalConsumeTask() != null ? stats.getTotalConsumeTask() : 0); |
|
|
|
result.put("refund", stats.getTotalRefund() != null ? stats.getTotalRefund() : 0); |
|
|
|
result.put("rechargeNum", stats.getTotalRechargeNum() != null ? stats.getTotalRechargeNum() : 0); |
|
|
|
return result; |
|
|
|
|
|
|
|
//判断类型 |
|
|
|
switch |
|
|
|
(type) { |
|
|
|
case "recharge": //获取累计充值 |
|
|
|
return workBenchMapper.sumRecharge(market, startDate,endDate); |
|
|
|
case "money": //获取累计金额(永久) |
|
|
|
return workBenchMapper.sumMoney(market,startDate,endDate); |
|
|
|
case "rFree": //获取累计充值(免费) |
|
|
|
return workBenchMapper.sumRecharge(market,startDate,endDate)- |
|
|
|
workBenchMapper.sumMoney(market,startDate,endDate); |
|
|
|
case "consume": //获取累计消费 |
|
|
|
return workBenchMapper.sumConsume(market,startDate,endDate); |
|
|
|
case "cPermanent": //获取累计消费-永久 |
|
|
|
return workBenchMapper.sumCPermanent(market,startDate,endDate); |
|
|
|
case "cFree": //获取累计消费- 免费 |
|
|
|
return workBenchMapper.sumCFree(market,startDate,endDate); |
|
|
|
case "cTask": //获取累计消费- 任务 |
|
|
|
return workBenchMapper.sumCTask(market,startDate,endDate); |
|
|
|
case "refund": //获取累计退款 |
|
|
|
return workBenchMapper.sumRefund(market,startDate,endDate); |
|
|
|
case "rechargeNum": //获取累计充值人数 |
|
|
|
return workBenchMapper.countRechargeNum(market,startDate,endDate); |
|
|
|
default: |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
/* |
|
|
|