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