xdd 1 månad sedan
förälder
incheckning
f71f1f6234

+ 10 - 5
fs-admin/src/main/java/com/fs/api/controller/IndexStatisticsController.java

@@ -13,8 +13,7 @@ import com.fs.common.core.domain.R;
 import java.util.ArrayList;
 import java.util.List;
 
-import static com.fs.statis.StatisticsRedisConstant.CHARTS_MEMBER_TOP_TEN_WATCH;
-import static com.fs.statis.StatisticsRedisConstant.DATA_OVERVIEW_DEALER_CHARTS;
+import static com.fs.statis.StatisticsRedisConstant.*;
 
 /**
  * 首页-统计
@@ -93,7 +92,9 @@ public class IndexStatisticsController {
      */
     @PostMapping("/rewardMoneyTopTen")
     public R rewardMoneyTopTen(@RequestBody AnalysisPreviewQueryDTO param){
-        List<RewardMoneyTopTenDTO> rewardMoneyTopTenDTOS = statisticsService1.rewardMoneyTopTen(param);
+        Integer type = param.getType();
+        Integer dataType = param.getDataType();
+        List<RewardMoneyTopTenDTO> rewardMoneyTopTenDTOS = redisCache.getCacheObject( String.format("%s::%d::%d", CHARTS_REWARD_MONEY_TOP_TEN, type,dataType));
         return R.ok().put("data", rewardMoneyTopTenDTOS);
     }
 
@@ -102,7 +103,8 @@ public class IndexStatisticsController {
      */
     @PostMapping("/rewardMoneyTrend")
     public R rewardMoneyTrend(@RequestBody AnalysisPreviewQueryDTO param){
-        List<RewardMoneyTrendDTO> rewardMoneyTrendDTOS = statisticsService1.rewardMoneyTrendDTO(param);
+        Integer type = param.getType();
+        List<RewardMoneyTrendDTO> rewardMoneyTrendDTOS = redisCache.getCacheObject( String.format("%s::%d", CHARTS_REWARD_MONEY_TREND, type));
         return R.ok().put("data", rewardMoneyTrendDTOS);
     }
 
@@ -111,7 +113,10 @@ public class IndexStatisticsController {
      */
     @PostMapping("/watchCourseTopTen")
     public R watchCourseTopTen(@RequestBody AnalysisPreviewQueryDTO param){
-        List<CourseStatsDTO> courseStatsDTOS = statisticsService1.watchCourseTopTen(param);
+        Integer type = param.getType();
+        String sort = param.getSort();
+        Integer statisticalType = param.getStatisticalType();
+        List<CourseStatsDTO> courseStatsDTOS = redisCache.getCacheObject(String.format("%s::%d::%d::%s", CHARTS_WATCH_TOP_TEN, type,statisticalType,sort));
         return R.ok().put("data", courseStatsDTOS);
     }
 

+ 21 - 14
fs-service-system/src/main/java/com/fs/statis/StatisticsRedisConstant.java

@@ -7,58 +7,65 @@ public class StatisticsRedisConstant {
     /**
      * 经销商统计
      */
-    public static final String DATA_OVERVIEW_DEALER_AGGREGATED = "statistics::data::overview::DealerAggregatedDTO";
+    public static final String DATA_OVERVIEW_DEALER_AGGREGATED = "overview::DealerAggregatedDTO";
     /**
      * 短信余额
      */
-    public static final String DATA_OVERVIEW_DEALER_SMS_BALANCE = "statistics::data::overview::SMS::BALANCE";
+    public static final String DATA_OVERVIEW_DEALER_SMS_BALANCE = "overview::SMS::BALANCE";
     /**
      * 余额类
      */
-    public static final String DATA_OVERVIEW_DEALER_BALANCE = "statistics::data::overview::balance";
+    public static final String DATA_OVERVIEW_DEALER_BALANCE = "overview::balance";
     /**
      * 平台统计类信息
      */
-    public static final String DATA_OVERVIEW_DEALER_AUTHORIZATION_INFO = "statistics::data::overview::authorizationInfo";
+    public static final String DATA_OVERVIEW_DEALER_AUTHORIZATION_INFO = "overview::authorizationInfo";
 
     /**
      * 分析概览-今日
      */
-    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_TODAY = "statistics::data::overview::AnalysisPreviewDTO::0";
+    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_TODAY = "overview::AnalysisPreviewDTO::0";
     /**
      * 分析概览-昨日
      */
-    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_YESTODAY = "statistics::data::overview::AnalysisPreviewDTO::1";
+    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_YESTODAY = "overview::AnalysisPreviewDTO::1";
 
     /**
      * 分析概览-本周
      */
-    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_THIS_WEEEK = "statistics::data::overview::AnalysisPreviewDTO::2";
+    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_THIS_WEEEK = "overview::AnalysisPreviewDTO::2";
 
     /**
      * 分析概览-本月
      */
-    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_THIS_MONTH = "statistics::data::overview::AnalysisPreviewDTO::3";
+    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_THIS_MONTH = "overview::AnalysisPreviewDTO::3";
     /**
      * 分析概览-上月
      */
-    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_BEFORE_MONTH = "statistics::data::overview::AnalysisPreviewDTO::4";
+    public static final String DATA_OVERVIEW_DEALER_ANALYSISPREVIEW_BEFORE_MONTH = "overview::AnalysisPreviewDTO::4";
 
 
     /**
      * 会员观看、完播人数趋势图
      */
-    public static final String DATA_OVERVIEW_DEALER_CHARTS = "statistics::data::charts::dealer::charts";
+    public static final String DATA_OVERVIEW_DEALER_CHARTS = "charts::dealer::charts";
 
 
     /**
      * 经销商会员观看TOP10 - 按观看人数
      */
-    public static final String CHARTS_MEMBER_TOP_TEN_WATCH = "statistics::data::charts::memeber::top10::watch::user::count";
+    public static final String CHARTS_MEMBER_TOP_TEN_WATCH = "charts::memeber::top10::watch::user::count";
     /**
-     * 经销商会员观看TOP10 - 按完播人数
+     * 课程观看TOP10
      */
-    public static final String CHARTS_MEMBER_TOP_TEN_COMPLETED = "statistics::data:charts::memeber::top10::watch::completed::user::count";
-
+    public static final String CHARTS_WATCH_TOP_TEN = "charts::watch::top10";
+    /**
+     * 答题红包金额TOP10
+     */
+    public static final String CHARTS_REWARD_MONEY_TOP_TEN = "charts::reward::money::top10";
+    /**
+     * 答题红包金额趋势图
+     */
+    public static final String CHARTS_REWARD_MONEY_TREND = "charts::reward::money::trend";
 
 }

+ 3 - 2
fs-service-system/src/main/java/com/fs/statis/service/IStatisticsService.java

@@ -34,12 +34,13 @@ public interface IStatisticsService {
     /**
      * 课程观看TOP10
      */
-    void watchCourseTopTenTask();
+    void watchCourseTopTenTask(Integer type,Integer statisticalType,String sort);
 
     /**
      * 答题红包金额TOP10
      */
-    void rewardMoneyTopTenTask();
+    void rewardMoneyTopTenTask(Integer type,Integer dataType);
+    void rewardMoneyTradeTask(Integer type);
 
     /**
      * 分析概览 - 经销商统计

+ 211 - 6
fs-service-system/src/main/java/com/fs/statis/service/impl/StatisticsServiceImpl.java

@@ -24,8 +24,7 @@ import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.List;
 
-import static com.fs.statis.StatisticsRedisConstant.CHARTS_MEMBER_TOP_TEN_WATCH;
-import static com.fs.statis.StatisticsRedisConstant.DATA_OVERVIEW_DEALER_CHARTS;
+import static com.fs.statis.StatisticsRedisConstant.*;
 
 @Service("statisticsService")
 public class StatisticsServiceImpl implements IStatisticsService {
@@ -193,8 +192,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
         companyWatchCourseTopTenTask(0,1);
     }
 
-//    @Scheduled(cron = "0 0 1 * * *")
-    @Scheduled(cron = "0 0/1 * * * *")
+    @Scheduled(cron = "0 0 1 * * *")
     public void companyWatchCourseTopTenTask1(){
         companyWatchCourseTopTenTask(1,0);
         companyWatchCourseTopTenTask(1,1);
@@ -254,12 +252,219 @@ public class StatisticsServiceImpl implements IStatisticsService {
     }
 
     @Override
-    public void watchCourseTopTenTask() {
+    public void watchCourseTopTenTask(Integer type,Integer statisticalType,String sort) {
+        AnalysisPreviewQueryDTO dto = new AnalysisPreviewQueryDTO();
+        dto.setType(type);
+        dto.setStatisticalType(statisticalType);
+        dto.setSort(sort);
+
+        String startDate = "";
+        String endDate = "";
+
+        LocalDateTime now = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+
+        if(0 == type){
+            startDate = now.format(formatter);
+            endDate = now.format(formatter);
+        } else if(1 == type){
+            LocalDateTime yesterday = now.minusDays(1);
+            startDate = yesterday.format(formatter);
+            endDate = yesterday.format(formatter);
+        } else if(2 == type) {
+            LocalDateTime startOfWeek = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+            startDate = startOfWeek.format(formatter);
+            endDate = now.format(formatter);
+        } else if(3 == type) {
+            LocalDateTime startOfMonth = now.withDayOfMonth(1);
+            startDate = startOfMonth.format(formatter);
+            endDate = now.format(formatter);
+        } else if(4 == type) {
+            LocalDateTime firstDayOfPreviousMonth = now.minusMonths(1).withDayOfMonth(1);
+            LocalDateTime lastDayOfPreviousMonth = now.withDayOfMonth(1).minusDays(1);
+            startDate = firstDayOfPreviousMonth.format(formatter);
+            endDate = lastDayOfPreviousMonth.format(formatter);
+        }
+
+        dto.setStartTime(startDate);
+        dto.setEndTime(endDate);
+
+        List<CourseStatsDTO> courseStatsDTOS = watchCourseTopTen(dto);
+
+        redisCache.setCacheObject( String.format("%s::%d::%d::%s", CHARTS_WATCH_TOP_TEN, type,statisticalType,sort), courseStatsDTOS);
+    }
+
+    @Scheduled(cron = "0 0/15 * * * *")
+    public void watchCourseTopTenTask0(){
+        watchCourseTopTenTask(0,0,"DESC");
+        watchCourseTopTenTask(0,0,"ASC");
+
+        watchCourseTopTenTask(0,1,"DESC");
+        watchCourseTopTenTask(0,1,"ASC");
+
+        watchCourseTopTenTask(0,2,"DESC");
+        watchCourseTopTenTask(0,2,"ASC");
+
+        watchCourseTopTenTask(0,3,"DESC");
+        watchCourseTopTenTask(0,3,"ASC");
+    }
+
+    @Scheduled(cron = "0 0 1 * * *")
+    public void watchCourseTopTenTask1(){
+        watchCourseTopTenTask(1,0,"DESC");
+        watchCourseTopTenTask(1,0,"ASC");
+
+        watchCourseTopTenTask(1,1,"DESC");
+        watchCourseTopTenTask(1,1,"ASC");
+
+        watchCourseTopTenTask(1,2,"DESC");
+        watchCourseTopTenTask(1,2,"ASC");
+
+        watchCourseTopTenTask(1,3,"DESC");
+        watchCourseTopTenTask(1,3,"ASC");
+
+
+        watchCourseTopTenTask(2,0,"DESC");
+        watchCourseTopTenTask(2,0,"ASC");
+
+        watchCourseTopTenTask(2,1,"DESC");
+        watchCourseTopTenTask(2,1,"ASC");
+
+        watchCourseTopTenTask(2,2,"DESC");
+        watchCourseTopTenTask(2,2,"ASC");
+
+        watchCourseTopTenTask(2,3,"DESC");
+        watchCourseTopTenTask(2,3,"ASC");
+
+
+        watchCourseTopTenTask(3,0,"DESC");
+        watchCourseTopTenTask(3,0,"ASC");
+
+        watchCourseTopTenTask(3,1,"DESC");
+        watchCourseTopTenTask(3,1,"ASC");
+
+        watchCourseTopTenTask(3,2,"DESC");
+        watchCourseTopTenTask(3,2,"ASC");
+
+        watchCourseTopTenTask(3,3,"DESC");
+        watchCourseTopTenTask(3,3,"ASC");
+    }
+
+
+    @Scheduled(cron = "0 0/15 * * * *")
+    public void rewardMoneyTask15Minutes(){
+        rewardMoneyTopTenTask(0,0);
+        rewardMoneyTopTenTask(0,1);
+
+        rewardMoneyTradeTask(0);
+    }
+
+
+    @Scheduled(cron = "0 0 1 * * *")
+    public void rewardMoneyTaskEveryday(){
+        rewardMoneyTopTenTask(1,0);
+        rewardMoneyTopTenTask(1,1);
+
+
+        rewardMoneyTopTenTask(2,0);
+        rewardMoneyTopTenTask(2,1);
+
+        rewardMoneyTopTenTask(3,0);
+        rewardMoneyTopTenTask(3,1);
+
+        rewardMoneyTopTenTask(4,0);
+        rewardMoneyTopTenTask(4,1);
+
+
+        rewardMoneyTradeTask(1);
+        rewardMoneyTradeTask(2);
+        rewardMoneyTradeTask(3);
+        rewardMoneyTradeTask(4);
+    }
+
+    @Override
+    public void rewardMoneyTopTenTask(Integer type,Integer dataType) {
+        AnalysisPreviewQueryDTO dto = new AnalysisPreviewQueryDTO();
+        dto.setType(type);
+        dto.setDataType(dataType);
+
+        String startDate = "";
+        String endDate = "";
+
+        LocalDateTime now = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+
+        if(0 == type){
+            startDate = now.format(formatter);
+            endDate = now.format(formatter);
+        } else if(1 == type){
+            LocalDateTime yesterday = now.minusDays(1);
+            startDate = yesterday.format(formatter);
+            endDate = yesterday.format(formatter);
+        } else if(2 == type) {
+            LocalDateTime startOfWeek = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+            startDate = startOfWeek.format(formatter);
+            endDate = now.format(formatter);
+        } else if(3 == type) {
+            LocalDateTime startOfMonth = now.withDayOfMonth(1);
+            startDate = startOfMonth.format(formatter);
+            endDate = now.format(formatter);
+        } else if(4 == type) {
+            LocalDateTime firstDayOfPreviousMonth = now.minusMonths(1).withDayOfMonth(1);
+            LocalDateTime lastDayOfPreviousMonth = now.withDayOfMonth(1).minusDays(1);
+            startDate = firstDayOfPreviousMonth.format(formatter);
+            endDate = lastDayOfPreviousMonth.format(formatter);
+        }
+
+        dto.setStartTime(startDate);
+        dto.setEndTime(endDate);
+
+        List<RewardMoneyTopTenDTO> rewardMoneyTopTenDTOS = rewardMoneyTopTen(dto);
+
+        redisCache.setCacheObject( String.format("%s::%d::%d", CHARTS_REWARD_MONEY_TOP_TEN, type,dataType), rewardMoneyTopTenDTOS);
 
     }
 
     @Override
-    public void rewardMoneyTopTenTask() {
+    public void rewardMoneyTradeTask(Integer type) {
+        AnalysisPreviewQueryDTO dto = new AnalysisPreviewQueryDTO();
+        dto.setType(type);
+
+        String startDate = "";
+        String endDate = "";
+
+        LocalDateTime now = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+
+        if(0 == type){
+            startDate = now.format(formatter);
+            endDate = now.format(formatter);
+        } else if(1 == type){
+            LocalDateTime yesterday = now.minusDays(1);
+            startDate = yesterday.format(formatter);
+            endDate = yesterday.format(formatter);
+        } else if(2 == type) {
+            LocalDateTime startOfWeek = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+            startDate = startOfWeek.format(formatter);
+            endDate = now.format(formatter);
+        } else if(3 == type) {
+            LocalDateTime startOfMonth = now.withDayOfMonth(1);
+            startDate = startOfMonth.format(formatter);
+            endDate = now.format(formatter);
+        } else if(4 == type) {
+            LocalDateTime firstDayOfPreviousMonth = now.minusMonths(1).withDayOfMonth(1);
+            LocalDateTime lastDayOfPreviousMonth = now.withDayOfMonth(1).minusDays(1);
+            startDate = firstDayOfPreviousMonth.format(formatter);
+            endDate = lastDayOfPreviousMonth.format(formatter);
+        }
+
+        dto.setStartTime(startDate);
+        dto.setEndTime(endDate);
+        List<RewardMoneyTrendDTO> rewardMoneyTrendDTOS = rewardMoneyTrendDTO(dto);
+        redisCache.setCacheObject( String.format("%s::%d", CHARTS_REWARD_MONEY_TREND, type), rewardMoneyTrendDTOS);
 
     }