From f06a592dd1a7e995bf313ccb5efe7dff73ccfc4e Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 12 四月 2023 18:25:52 +0800
Subject: [PATCH] 增加本地获取IP归属地/广告优化

---
 src/main/java/com/yeshi/buwan/controller/admin/api/StatisticsController.java |  359 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 210 insertions(+), 149 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/controller/admin/api/StatisticsController.java b/src/main/java/com/yeshi/buwan/controller/admin/api/StatisticsController.java
index 38c9b9e..7a42191 100644
--- a/src/main/java/com/yeshi/buwan/controller/admin/api/StatisticsController.java
+++ b/src/main/java/com/yeshi/buwan/controller/admin/api/StatisticsController.java
@@ -1,12 +1,20 @@
 package com.yeshi.buwan.controller.admin.api;
 
+import java.io.IOException;
 import java.io.PrintWriter;
+import java.lang.reflect.Type;
+import java.sql.Time;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.yeshi.buwan.util.JsonUtil;
+import com.yeshi.buwan.util.RedisManager;
+import com.yeshi.buwan.util.log.SearchKeyLogUtil;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -24,173 +32,226 @@
 @RequestMapping("admin/new/api/statistics")
 public class StatisticsController {
 
-	@Resource
-	private SystemService systemService;
-	@Resource
-	private StatisticsService statisticsService;
+    @Resource
+    private SystemService systemService;
+    @Resource
+    private StatisticsService statisticsService;
 
-	@RequestMapping(value = "/gettesterdaydata", method = RequestMethod.POST)
-	public void getYesterdayData(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
+    @Resource
+    private RedisManager redisManager;
 
-		startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
-		enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
-		fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
-		if (!"0".equalsIgnoreCase(fastdate)) {
-			enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
-			startdate = TimeUtil.getGernalTime(
-					System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
-		}
+    @RequestMapping(value = "/gettesterdaydata", method = RequestMethod.POST)
+    public void getYesterdayData(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
 
-		long registerCount = statisticsService.getRegisterCount(startdate, enddate, detailsystem + "");
-		long totalRegisterCount = statisticsService.getTotalRegisterCount(detailsystem + "");
-		List<StatisticXY> xyList = statisticsService.getDetailSystemWatchCount(startdate, enddate, detailsystem + "");
-		long watchCount = 0;
-		if (xyList != null && xyList.size() > 0)
-			watchCount = xyList.get(0).getY();
+        startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
+        enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
+        fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
+        if (!"0".equalsIgnoreCase(fastdate)) {
+            enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
+            startdate = TimeUtil.getGernalTime(
+                    System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
+        }
 
-		JSONObject object = new JSONObject();
-		object.put("code", 0);
-		JSONObject data = new JSONObject();
-		data.put("rcount", registerCount);
-		data.put("trcount", totalRegisterCount);
-		data.put("wcount", watchCount);
-		object.put("data", data);
-		out.print(object);
-	}
+        long registerCount = statisticsService.getRegisterCount(startdate, enddate, detailsystem + "");
+        long totalRegisterCount = statisticsService.getTotalRegisterCount(detailsystem + "");
+        List<StatisticXY> xyList = statisticsService.getDetailSystemWatchCount(startdate, enddate, detailsystem + "");
+        long watchCount = 0;
+        if (xyList != null && xyList.size() > 0)
+            watchCount = xyList.get(0).getY();
 
-	@RequestMapping(value = "/gettopplay", method = RequestMethod.POST)
-	public void getTopPlay(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
+        JSONObject object = new JSONObject();
+        object.put("code", 0);
+        JSONObject data = new JSONObject();
+        data.put("rcount", registerCount);
+        data.put("trcount", totalRegisterCount);
+        data.put("wcount", watchCount);
+        object.put("data", data);
+        out.print(object);
+    }
 
-		startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
-		enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
-		fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
-		if (!"0".equalsIgnoreCase(fastdate)) {
-			enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
-			startdate = TimeUtil.getGernalTime(
-					System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
-		}
+    @RequestMapping(value = "/gettopplay", method = RequestMethod.POST)
+    public void getTopPlay(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
 
-		List<StatisticXY> xyList = statisticsService.getWatchDetail(startdate, enddate, detailsystem + "");
+        startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
+        enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
+        fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
+        if (!"0".equalsIgnoreCase(fastdate)) {
+            enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
+            startdate = TimeUtil.getGernalTime(
+                    System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
+        }
 
-		JSONArray nameArray = new JSONArray();
-		JSONArray countArray = new JSONArray();
-		for (StatisticXY xy : xyList) {
-			if ((xy.getTime() + "").length() > 15)
-				xy.setTime(xy.getTime().substring(0, 15) + "..");
-			nameArray.add(xy.getTime());
-			countArray.add(xy.getY());
-		}
-		JSONObject object = new JSONObject();
-		object.put("code", 0);
-		JSONObject data = new JSONObject();
-		data.put("name", nameArray);
-		data.put("count", countArray);
-		object.put("data", data);
-		out.print(object);
-	}
+        List<StatisticXY> xyList = statisticsService.getWatchDetail(startdate, enddate, detailsystem + "");
 
-	@RequestMapping(value = "/totalplay", method = RequestMethod.POST)
-	public void totalPlay(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
+        JSONArray nameArray = new JSONArray();
+        JSONArray countArray = new JSONArray();
+        for (StatisticXY xy : xyList) {
+            if ((xy.getTime() + "").length() > 15)
+                xy.setTime(xy.getTime().substring(0, 15) + "..");
+            nameArray.add(xy.getTime());
+            countArray.add(xy.getY());
+        }
+        JSONObject object = new JSONObject();
+        object.put("code", 0);
+        JSONObject data = new JSONObject();
+        data.put("name", nameArray);
+        data.put("count", countArray);
+        object.put("data", data);
+        out.print(object);
+    }
 
-		startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
-		enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
-		fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
-		if (!"0".equalsIgnoreCase(fastdate)) {
-			enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
-			startdate = TimeUtil.getGernalTime(
-					System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
-		}
+    @RequestMapping(value = "/gettopsearch", method = RequestMethod.POST)
+    public void getTopSearch(int detailsystem, PrintWriter out) {
+        //鏄惁鏈�杩�1灏忔椂鏇存柊杩�
+        String updateTime = redisManager.getCommonString("search_key_updatetime");
+        if (StringUtil.isNullOrEmpty(updateTime)) {
+            //鏇存柊鏁版嵁
+            refreshTopSearch(detailsystem, out);
+        }
 
-		List<StatisticXY> xyList = statisticsService.getDetailSystemWatchCount(startdate, enddate, detailsystem + "");
-		JSONArray dateArray = new JSONArray();
-		JSONArray countArray = new JSONArray();
-		for (StatisticXY xy : xyList) {
-			dateArray.add(xy.getTime());
-			countArray.add(xy.getY());
-		}
-		JSONObject object = new JSONObject();
-		object.put("code", 0);
-		JSONObject data = new JSONObject();
-		data.put("date", dateArray);
-		data.put("count", countArray);
-		object.put("data", data);
-		out.print(object);
-	}
 
-	@RequestMapping(value = "/typeplay", method = RequestMethod.POST)
-	public void typePlay(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
-		startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
-		enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
-		fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
-		if (!"0".equalsIgnoreCase(fastdate)) {
-			enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
-			startdate = TimeUtil.getGernalTime(
-					System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
-		}
+        String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd");
+        String key = "search_key-" + day;
+        String value = redisManager.getCommonString(key);
+        JSONArray countList = new JSONArray();
+        JSONArray nameList = new JSONArray();
+        if (!StringUtil.isNullOrEmpty(value)) {
+            Type type = new TypeToken<List<SearchKeyLogUtil.RankInfo>>() {
+            }.getType();
+            List<SearchKeyLogUtil.RankInfo> resultList = new Gson().fromJson(value, type);
+            for (SearchKeyLogUtil.RankInfo rank : resultList) {
+                countList.add(rank.getCount());
+                nameList.add(rank.getKey());
+            }
+        }
+        JSONObject data = new JSONObject();
+        data.put("name", nameList);
+        data.put("count", countList);
+        out.print(JsonUtil.loadTrueAdmin(data));
+    }
 
-		Map<String, List<StatisticXY>> map = statisticsService.getCategoryPlayStatistics(startdate, enddate,
-				detailsystem + "");
-		Iterator<String> its = map.keySet().iterator();
-		JSONArray countArray = new JSONArray();
-		while (its.hasNext()) {
-			String key = its.next();
-			List<StatisticXY> list = map.get(key);
-			JSONObject item = new JSONObject();
-			item.put("name", key);
-			JSONArray itemtA = new JSONArray();
-			for (StatisticXY xy : list) {
-				itemtA.add(xy.getY());
-			}
-			item.put("data", itemtA);
-			countArray.add(item);
-		}
+    @RequestMapping(value = "/refreshtopsearch", method = RequestMethod.POST)
+    public void refreshTopSearch(int detailsystem, PrintWriter out) {
+        String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd");
+        List<SearchKeyLogUtil.RankInfo> rankList = null;
+        try {
+            rankList = SearchKeyLogUtil.getTodayRankList(50);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
 
-		JSONArray dateArray = new JSONArray();
-		its = map.keySet().iterator();
-		if (its.hasNext()) {
-			List<StatisticXY> list = map.get(its.next());
-			for (StatisticXY xy : list) {
-				dateArray.add(xy.getTime());
-			}
-		}
-		JSONObject object = new JSONObject();
-		object.put("code", 0);
-		JSONObject data = new JSONObject();
-		data.put("date", dateArray);
-		data.put("count", countArray);
-		object.put("data", data);
-		out.print(object);
+        if (rankList == null) {
+            out.print(JsonUtil.loadFalseAdmin("鏇存柊澶辫触"));
+        } else {
+            String key = "search_key-" + day;
+            redisManager.cacheCommonString(key, new Gson().toJson(rankList));
+            redisManager.cacheCommonString("search_key_updatetime", System.currentTimeMillis() + "",3600);
+            out.print(JsonUtil.loadTrueAdmin("鏇存柊鎴愬姛"));
+        }
+    }
 
-	}
+    @RequestMapping(value = "/totalplay", method = RequestMethod.POST)
+    public void totalPlay(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
 
-	@RequestMapping(value = "/singleplay", method = RequestMethod.POST)
-	public void singlePlay(String videoid, String startdate, String enddate, String fastdate, int detailsystem,
-			PrintWriter out) {
-		startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
-		enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
-		fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
-		if (!"0".equalsIgnoreCase(fastdate)) {
-			enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
-			startdate = TimeUtil.getGernalTime(
-					System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
-		}
+        startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
+        enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
+        fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
+        if (!"0".equalsIgnoreCase(fastdate)) {
+            enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
+            startdate = TimeUtil.getGernalTime(
+                    System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
+        }
 
-		List<StatisticXY> list = statisticsService.getVideoWatchDetail(videoid, startdate, enddate, detailsystem + "");
-		JSONArray countArray = new JSONArray();
-		JSONArray dateArray = new JSONArray();
-		for (StatisticXY xy : list) {
-			countArray.add(xy.getY());
-			dateArray.add(xy.getTime());
-		}
+        List<StatisticXY> xyList = statisticsService.getDetailSystemWatchCount(startdate, enddate, detailsystem + "");
+        JSONArray dateArray = new JSONArray();
+        JSONArray countArray = new JSONArray();
+        for (StatisticXY xy : xyList) {
+            dateArray.add(xy.getTime());
+            countArray.add(xy.getY());
+        }
+        JSONObject object = new JSONObject();
+        object.put("code", 0);
+        JSONObject data = new JSONObject();
+        data.put("date", dateArray);
+        data.put("count", countArray);
+        object.put("data", data);
+        out.print(object);
+    }
 
-		JSONObject object = new JSONObject();
-		object.put("code", 0);
-		JSONObject data = new JSONObject();
-		data.put("date", dateArray);
-		data.put("count", countArray);
-		object.put("data", data);
-		out.print(object);
+    @RequestMapping(value = "/typeplay", method = RequestMethod.POST)
+    public void typePlay(String startdate, String enddate, String fastdate, int detailsystem, PrintWriter out) {
+        startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
+        enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
+        fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
+        if (!"0".equalsIgnoreCase(fastdate)) {
+            enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
+            startdate = TimeUtil.getGernalTime(
+                    System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
+        }
 
-	}
+        Map<String, List<StatisticXY>> map = statisticsService.getCategoryPlayStatistics(startdate, enddate,
+                detailsystem + "");
+        Iterator<String> its = map.keySet().iterator();
+        JSONArray countArray = new JSONArray();
+        while (its.hasNext()) {
+            String key = its.next();
+            List<StatisticXY> list = map.get(key);
+            JSONObject item = new JSONObject();
+            item.put("name", key);
+            JSONArray itemtA = new JSONArray();
+            for (StatisticXY xy : list) {
+                itemtA.add(xy.getY());
+            }
+            item.put("data", itemtA);
+            countArray.add(item);
+        }
+
+        JSONArray dateArray = new JSONArray();
+        its = map.keySet().iterator();
+        if (its.hasNext()) {
+            List<StatisticXY> list = map.get(its.next());
+            for (StatisticXY xy : list) {
+                dateArray.add(xy.getTime());
+            }
+        }
+        JSONObject object = new JSONObject();
+        object.put("code", 0);
+        JSONObject data = new JSONObject();
+        data.put("date", dateArray);
+        data.put("count", countArray);
+        object.put("data", data);
+        out.print(object);
+
+    }
+
+    @RequestMapping(value = "/singleplay", method = RequestMethod.POST)
+    public void singlePlay(String videoid, String startdate, String enddate, String fastdate, int detailsystem,
+                           PrintWriter out) {
+        startdate = StringUtil.isNullOrEmpty(startdate) ? "" : startdate;
+        enddate = StringUtil.isNullOrEmpty(enddate) ? "" : enddate;
+        fastdate = StringUtil.isNullOrEmpty(fastdate) ? "0" : fastdate;
+        if (!"0".equalsIgnoreCase(fastdate)) {
+            enddate = TimeUtil.getGernalTime(System.currentTimeMillis());
+            startdate = TimeUtil.getGernalTime(
+                    System.currentTimeMillis() - 24 * 60 * 60 * 1000L * (Integer.parseInt(fastdate) - 1));
+        }
+
+        List<StatisticXY> list = statisticsService.getVideoWatchDetail(videoid, startdate, enddate, detailsystem + "");
+        JSONArray countArray = new JSONArray();
+        JSONArray dateArray = new JSONArray();
+        for (StatisticXY xy : list) {
+            countArray.add(xy.getY());
+            dateArray.add(xy.getTime());
+        }
+
+        JSONObject object = new JSONObject();
+        object.put("code", 0);
+        JSONObject data = new JSONObject();
+        data.put("date", dateArray);
+        data.put("count", countArray);
+        object.put("data", data);
+        out.print(object);
+
+    }
 
 }

--
Gitblit v1.8.0