Browse Source

Merge branch 'refs/heads/lijianlin/feature-20250623120104-工作台与审核' into milestone-20250702-金币重构一期

lijianlin/feature-20250623120104-工作台与审核
lijianlin 1 day ago
parent
commit
0b5d9e9fb0
  1. 4
      pom.xml
  2. 3
      src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java
  3. 4
      src/main/java/com/example/demo/service/WorkbenchService.java
  4. 62
      src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
  5. 4
      src/main/resources/mapper/StatisticsMapper.xml

4
pom.xml

@ -175,7 +175,7 @@
</annotationProcessorPaths> </annotationProcessorPaths>
</configuration> </configuration>
</plugin> </plugin>
<!-- <plugin>
<plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<configuration> <configuration>
@ -186,7 +186,7 @@
</exclude> </exclude>
</excludes> </excludes>
</configuration> </configuration>
</plugin>-->
</plugin>
</plugins> </plugins>
</build> </build>

3
src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java

@ -55,6 +55,9 @@ public class WorkbenchMarketCard implements Serializable {
private Integer firstRecharge; // 当日首充人数 private Integer firstRecharge; // 当日首充人数
private Integer wow; // 周同比% private Integer wow; // 周同比%
private Integer daily; // 日环比% private Integer daily; // 日环比%
private Integer sumWow; // 总周同比%
private Integer sumDaily; // 总日环比%
private Integer yearlyRechargeNum; // 全年累计充值人头数 private Integer yearlyRechargeNum; // 全年累计充值人头数
//图表 //图表
private Integer SumRechargePermanent; //合计充值永久金币 private Integer SumRechargePermanent; //合计充值永久金币

4
src/main/java/com/example/demo/service/WorkbenchService.java

@ -30,9 +30,11 @@ public interface WorkbenchService {
//获取该日期该市场的日环比 //获取该日期该市场的日环比
Integer calculateDayOverDay(String market,Date date); Integer calculateDayOverDay(String market,Date date);
//获取总体日环比 //获取总体日环比
//Integer calculateAllDayOverDay(Date date);
Integer calculateAllDayOverDay(Date date);
//获取该日期该市场的周同比 //获取该日期该市场的周同比
Integer calculateWeekOverWeek(String market, Date date); Integer calculateWeekOverWeek(String market, Date date);
//获取该日期总体的周同比
Integer calculateAllWeekOverWeek( Date date);
//获取与传入的日期相差XX天的日期 //获取与传入的日期相差XX天的日期
Date addDays(Date date, int days); Date addDays(Date date, int days);
//获取传入时间所在周的第一天周一 //获取传入时间所在周的第一天周一

62
src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java

@ -184,7 +184,9 @@ public class WorkbenchServiceImpl implements WorkbenchService {
// 周环比日同比 // 周环比日同比
card.setWow(calculateWeekOverWeek(market, currentDate)); card.setWow(calculateWeekOverWeek(market, currentDate));
card.setSumWow(calculateAllWeekOverWeek(date));
card.setDaily(calculateDayOverDay(market, currentDate)); card.setDaily(calculateDayOverDay(market, currentDate));
card.setSumDaily(calculateAllDayOverDay(date));
} }
return card; return card;
} }
@ -260,28 +262,33 @@ public class WorkbenchServiceImpl implements WorkbenchService {
return (int) Math.round(rate); return (int) Math.round(rate);
} }
// 计算所有市场总体日环比 // 计算所有市场总体日环比
/* @Override
@Override
public Integer calculateAllDayOverDay(Date date) { public Integer calculateAllDayOverDay(Date date) {
//获取起止时间为当天零点与最后一秒
//获取今天的开始时间和结束时间
LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN);
LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1); LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1);
//获取地区列表
List<String> markets = generalService.getMarket();
int currentTotal = 0; //今日所有地区总的充值人数
int yesterdayTotal = 0; //昨日所有地区总的充值人数
//int currentTotalRechargeNum = statisticsMapper.countAllMarketRechargeNum(
Date yesterday = addDays(date, -1);
//过去昨天的开始时间和结束时间
LocalDateTime ydayStartTime = yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN);
LocalDateTime ydayEndTime= ydayStartTime.plusDays(1).minusSeconds(1);
for (String market : markets) {
currentTotal += statisticsMapper.countRechargeNum(market,
Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()));
yesterdayTotal += statisticsMapper.countRechargeNum(market,
Date.from(ydayStartTime.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(ydayEndTime.atZone(ZoneId.systemDefault()).toInstant()));
}
if (yesterdayTotal == 0) return 0; // 避免除以零的情况
if (currentTotalRechargeNum == 0) return 0; // 避免除以零的情况
Date yesterday = addDays(date, -1); // 昨天
int yesterdayTotalRechargeNum = statisticsMapper.countAllMarketRechargeNum(
Date.from(yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant()),
Date.from(yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant()));
if (yesterdayTotalRechargeNum == 0) return 0; // 避免除以零的情况
double rate = ((double)(currentTotalRechargeNum - yesterdayTotalRechargeNum) / yesterdayTotalRechargeNum) * 100;
double rate = ((double)(currentTotal - yesterdayTotal) / yesterdayTotal) * 100;
return (int)Math.round(rate); return (int)Math.round(rate);
}*/
}
/* /*
获取该日期该市场的周环比 获取该日期该市场的周环比
*/ */
@ -291,6 +298,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
Date thisWeekStart = getStartOfWeek(date); Date thisWeekStart = getStartOfWeek(date);
//获取传入日期上一周的周一 //获取传入日期上一周的周一
Date lastWeekStart = addDays(thisWeekStart, -7); Date lastWeekStart = addDays(thisWeekStart, -7);
// 获取本周周一至今天的充值人数总和 // 获取本周周一至今天的充值人数总和
int thisWeekTotal = statisticsMapper.countRechargeNum(market, thisWeekStart, date); int thisWeekTotal = statisticsMapper.countRechargeNum(market, thisWeekStart, date);
// 获取上周同一时间段的充值人数总和 // 获取上周同一时间段的充值人数总和
@ -301,6 +309,32 @@ public class WorkbenchServiceImpl implements WorkbenchService {
double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100; double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100;
return (int) Math.round(rate); return (int) Math.round(rate);
} }
/*
获取改天总体的的周环比
*/
@Override
public Integer calculateAllWeekOverWeek( Date date) {
List<String> markets = generalService.getMarket();
int thisWeekTotal = 0; //本周至当天充值人数
int lastWeekTotal = 0; //上周至当天充值人数
//获取本周周一
Date thisWeekStart = getStartOfWeek(date);
//获取传入日期上一周的周一
Date lastWeekStart = addDays(thisWeekStart, -7);
for (String market : markets) {
// 获取本周周一至今天的充值人数总和
thisWeekTotal += statisticsMapper.countRechargeNum(market, thisWeekStart, date);
// 获取上周同一时间段的充值人数总和
lastWeekTotal += statisticsMapper.countRechargeNum(market, lastWeekStart, addDays(date, -7));
}
if (lastWeekTotal == 0) {
return 0; // 避免除以零的情况
}
double rate = ((double) (thisWeekTotal - lastWeekTotal) / lastWeekTotal) * 100;
return (int) Math.round(rate);
}
@Override @Override
public Date addDays(Date date, int days) { public Date addDays(Date date, int days) {

4
src/main/resources/mapper/StatisticsMapper.xml

@ -86,6 +86,7 @@
FROM user_gold_record ugr FROM user_gold_record ugr
INNER JOIN user u ON ugr.jwcode = u.jwcode INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market} WHERE u.market = #{market}
AND ugr.type=0
AND ugr.audit_status IN (1,3) AND ugr.audit_status IN (1,3)
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime} AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
</select> </select>
@ -95,7 +96,8 @@
FROM user_gold_record ugr FROM user_gold_record ugr
INNER JOIN user u ON ugr.jwcode = u.jwcode INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market} WHERE u.market = #{market}
AND ugr.audit_status = 1
AND ugr.type=0
AND ugr.audit_status IN (1,3)
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime} AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
AND u.first_recharge = #{startTime} AND u.first_recharge = #{startTime}
</select> </select>

Loading…
Cancel
Save