FgController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. package com.ruoyi.web.controller.fg;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson2.JSON;
  5. import com.ruoyi.common.annotation.Log;
  6. import com.ruoyi.common.core.domain.AjaxResult;
  7. import com.ruoyi.common.enums.BusinessType;
  8. import com.ruoyi.common.utils.StringUtils;
  9. import com.ruoyi.common.utils.fg.FgUrlConstant;
  10. import com.ruoyi.common.utils.http.HttpUtils;
  11. import com.ruoyi.common.utils.http.OkHttpFGUtils;
  12. import com.ruoyi.common.utils.poi.ExcelUtil;
  13. import com.ruoyi.system.domain.fg.Overview;
  14. import com.ruoyi.system.domain.fg.SalesTrendData;
  15. import com.ruoyi.system.domain.fg.School;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.springframework.stereotype.Controller;
  19. import org.springframework.web.bind.annotation.PostMapping;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.ResponseBody;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.util.ArrayList;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. @Api(value = "fgController", tags = "飞瓜数据抓取接口")
  28. @Controller
  29. @RequestMapping(value = "/fg")
  30. public class FgController {
  31. /**
  32. * 获取数据
  33. * @param response
  34. */
  35. @ApiOperation(value = "导出数据")
  36. @PostMapping("/exportOverviewData")
  37. @ResponseBody
  38. public void exportOverviewData(HttpServletResponse response) {
  39. List<Overview> resultList = new ArrayList<>();
  40. /**
  41. * 8074429374 小陈茶事
  42. * 99666314082 学茶研习社
  43. * 50792923107 茶小曼
  44. * 69965719530 小茶婆婆
  45. * 4367697845697440 晨曦语茶
  46. * 2862722089489764 伍刻茶馆
  47. * 2383382425373133 茶姐Molly
  48. * 3034272730720768 茶诵君
  49. * 3109849681105640 八马茶叶官方旗舰店
  50. * 44432286818743 柒月茶坊
  51. */
  52. String[] strings = {"8074429374","99666314082","50792923107","69965719530","4367697845697440",
  53. "2862722089489764","2383382425373133","3034272730720768","3109849681105640","44432286818743","109581763451","2444960999676388"};
  54. String[] names = {"小陈茶事","学茶研习社","茶小曼","小茶婆婆","晨曦语茶",
  55. "伍刻茶馆","茶姐Molly","茶诵君","八马茶叶官方旗舰店","柒月茶坊","茶二代","茶三姐"};
  56. for (int i = 0; i < strings.length; i++) {
  57. Overview po = new Overview();
  58. po.setUuid(strings[i]);
  59. po.setName(names[i]);
  60. resultList.add(po);
  61. }
  62. // todo 直播数据
  63. for (Overview overview: resultList) {
  64. String liveResult = HttpUtils.sendGet("http://120.27.232.118/api/v3/blogger/overview/live/stat","uid="+overview.getUuid()+"&fromDateCode=20221206&toDateCode=20231130");
  65. Map liveMaps = (Map) JSON.parse(liveResult);
  66. for(Object map : liveMaps.entrySet()){
  67. if(((Map.Entry)map).getKey().toString().equals("Data")){
  68. Map poMap = (Map) JSON.parse(((Map.Entry)map).getValue().toString());
  69. overview.setAvgDurationStr(poMap.get("AvgDurationStr").toString());
  70. overview.setAvgLiveSaleCountStr(poMap.get("AvgLiveSaleCountStr").toString());
  71. overview.setAvgLiveSaleGmvStr(poMap.get("AvgLiveSaleGmvStr").toString());
  72. overview.setAvgLiveTotalUserCountStr(poMap.get("AvgLiveTotalUserCountStr").toString());
  73. overview.setAvgLiveUserCountStr(poMap.get("AvgLiveUserCountStr").toString());
  74. overview.setAvgUserPriceStr(poMap.get("AvgUserPriceStr").toString());
  75. overview.setCommerceLiveCountStr(poMap.get("CommerceLiveCountStr").toString());
  76. overview.setLiveCountStr(poMap.get("LiveCountStr").toString());
  77. overview.setLiveSaleCountStr(poMap.get("LiveSaleCountStr").toString());
  78. overview.setLiveSaleGmvStr(poMap.get("LiveSaleGmvStr").toString());
  79. overview.setMaxLiveTotalUserCountStr(poMap.get("MaxLiveTotalUserCountStr").toString());
  80. overview.setUVStr(poMap.get("UVStr").toString());
  81. }
  82. }
  83. String awemeResult = HttpUtils.sendGet("http://120.27.232.118/api/v3/blogger/overview/aweme/stat","uid="+overview.getUuid()+"&fromDateCode=20221206&toDateCode=20231130");
  84. Map awemeMaps = (Map) JSON.parse(awemeResult);
  85. for(Object map : awemeMaps.entrySet()){
  86. if(((Map.Entry)map).getKey().toString().equals("Data")){
  87. Map poMap = (Map) JSON.parse(((Map.Entry)map).getValue().toString());
  88. overview.setAvgAwemeSaleCountStr(poMap.get("AvgAwemeSaleCountStr").toString());
  89. overview.setAvgAwemeSaleGmvStr(poMap.get("AvgAwemeSaleGmvStr").toString());
  90. overview.setAvgCommentCountStr(poMap.get("AvgCommentCountStr").toString());
  91. overview.setAvgLikeCommentRateStr(poMap.get("AvgLikeCommentRateStr").toString());
  92. overview.setAvgLikeCountStr(poMap.get("AvgLikeCountStr").toString());
  93. overview.setAwemeCountStr(poMap.get("AwemeCountStr").toString());
  94. overview.setAwemeSaleCountStr(poMap.get("AwemeSaleCountStr").toString());
  95. overview.setAwemeSaleGmvStr(poMap.get("AwemeSaleGmvStr").toString());
  96. overview.setCommerceAwemeCountStr(poMap.get("CommerceAwemeCountStr").toString());
  97. overview.setMaxCommentCountStr(poMap.get("MaxCommentCountStr").toString());
  98. overview.setMaxLikeCommentRateStr(poMap.get("MaxLikeCommentRateStr").toString());
  99. overview.setMaxLikeCountStr(poMap.get("MaxLikeCountStr").toString());
  100. }
  101. }
  102. String recommendResult = HttpUtils.sendGet("http://120.27.232.118/api/v3/blogger/overview/recommend/stat","uid="+overview.getUuid()+"&fromDateCode=20221206&toDateCode=20231130");
  103. Map recommendMaps = (Map) JSON.parse(recommendResult);
  104. for(Object map : recommendMaps.entrySet()){
  105. if(((Map.Entry)map).getKey().toString().equals("Data")){
  106. Map poMap = (Map) JSON.parse(((Map.Entry)map).getValue().toString());
  107. overview.setBloggerPriceStr(poMap.get("BloggerPriceStr").toString());
  108. overview.setBrandCountStr(poMap.get("BrandCountStr").toString());
  109. overview.setCPEStr(poMap.get("CPEStr").toString());
  110. overview.setCateCountStr(poMap.get("CateCountStr").toString());
  111. overview.setGrassVideoCountStr(poMap.get("GrassVideoCountStr").toString());
  112. overview.setMainCateNameStr(poMap.get("MainCateNameStr").toString());
  113. overview.setMainCateRatioStr(poMap.get("MainCateRatioStr").toString());
  114. }
  115. }
  116. }
  117. ExcelUtil<Overview> util = new ExcelUtil<Overview>(Overview.class);
  118. util.exportExcel(response, resultList, "数据");
  119. }
  120. /**
  121. * 获取数据
  122. * @param response
  123. */
  124. @ApiOperation(value = "导出茶90天直播销售额与视频销售额")
  125. @PostMapping("/exportSalesTrendData")
  126. @ResponseBody
  127. public void exportSalesTrendData(HttpServletResponse response) {
  128. String URL = "http://120.27.232.118/api/v1/goodsDataOverView/salesTrendData";
  129. List<SalesTrendData> resultList = new ArrayList<>();
  130. String result = HttpUtils.sendGet(URL,"periodType=90&fromDateCode=20230829&toDateCode=20231126&cateId=20004");
  131. Map maps = (Map) JSON.parse(result);
  132. for(Object map : maps.entrySet()){
  133. if(((Map.Entry)map).getKey().toString().equals("Data")){
  134. JSONArray dataJArray = JSONObject.parseArray(((Map.Entry)map).getValue().toString());
  135. List<Object> dataList = dataJArray;
  136. for (Object po:
  137. dataList) {
  138. Map poMap = (Map) JSON.parse(po.toString());
  139. poMap.get("DateCode").toString();
  140. SalesTrendData salesTrendData = new SalesTrendData();
  141. salesTrendData.setAwemeSalesCount(poMap.get("AwemeSalesCount").toString());
  142. salesTrendData.setAwemeSalesCountStr(poMap.get("AwemeSalesCountStr").toString());
  143. salesTrendData.setAwemeSaleCountRatio(poMap.get("AwemeSaleCountRatio").toString());
  144. salesTrendData.setAwemeSales(poMap.get("AwemeSales").toString());
  145. salesTrendData.setAwemeSalesStr(poMap.get("AwemeSalesStr").toString());
  146. salesTrendData.setAwemeSalesRatio(poMap.get("AwemeSalesRatio").toString());
  147. salesTrendData.setDateCode(poMap.get("DateCode").toString());
  148. salesTrendData.setLiveSalesCount(poMap.get("LiveSalesCount").toString());
  149. salesTrendData.setLiveSalesCountStr(poMap.get("LiveSalesCountStr").toString());
  150. salesTrendData.setLiveSaleCountRatio(poMap.get("LiveSaleCountRatio").toString());
  151. salesTrendData.setLiveSales(poMap.get("LiveSales").toString());
  152. salesTrendData.setLiveSalesStr(poMap.get("LiveSalesStr").toString());
  153. salesTrendData.setLiveSalesRatio(poMap.get("LiveSalesRatio").toString());
  154. salesTrendData.setOtherSalesCount(poMap.get("OtherSalesCount").toString());
  155. salesTrendData.setOtherSalesCountStr(poMap.get("OtherSalesCountStr").toString());
  156. salesTrendData.setOtherSaleCountRatio(poMap.get("OtherSaleCountRatio").toString());
  157. salesTrendData.setOtherSales(poMap.get("OtherSales").toString());
  158. salesTrendData.setOtherSalesStr(poMap.get("OtherSalesStr").toString());
  159. salesTrendData.setOtherSalesRatio(poMap.get("OtherSalesRatio").toString());
  160. salesTrendData.setPV(poMap.get("PV").toString());
  161. salesTrendData.setPVStr(poMap.get("PVStr").toString());
  162. salesTrendData.setStatDate(poMap.get("StatDate").toString());
  163. salesTrendData.setSumSalesCount(poMap.get("SumSalesCount").toString());
  164. salesTrendData.setSumSalesCountStr(poMap.get("SumSalesCountStr").toString());
  165. salesTrendData.setTotalSales(poMap.get("TotalSales").toString());
  166. salesTrendData.setTotalSalesStr(poMap.get("TotalSalesStr").toString());
  167. resultList.add(salesTrendData);
  168. }
  169. }
  170. }
  171. ExcelUtil<SalesTrendData> util = new ExcelUtil<SalesTrendData>(SalesTrendData.class);
  172. util.exportExcel(response, resultList, "茶90天直播销售额与视频销售额");
  173. }
  174. /**
  175. * 导出crm附件列表
  176. */
  177. @ApiOperation("")
  178. @Log(title = "导出中国大学专业排名", businessType = BusinessType.EXPORT)
  179. @PostMapping("/export")
  180. public void export(HttpServletResponse response, String year) throws InterruptedException {
  181. String URL = "https://www.shanghairanking.cn/api/pub/v1/bcmr/rank";
  182. List<School> resultList = new ArrayList<>();
  183. String result = HttpUtils.sendGet(URL,"year=2023&majorCode=010101");
  184. Map<String, List<Object>> map = OkHttpFGUtils.getSchoolMap(result);
  185. for (Object majors: map.get("majorsList")) {
  186. Map majorsMap = (Map) JSON.parse(majors.toString());
  187. JSONArray childrens = JSONObject.parseArray(majorsMap.get("children").toString());
  188. List<Object> childrenList = childrens;
  189. if(StringUtils.isNotEmpty(childrenList)){
  190. for (Object children: childrenList) {
  191. Map childrenMap = (Map) JSON.parse(children.toString());
  192. JSONArray childrens1 = JSONObject.parseArray(childrenMap.get("children").toString());
  193. List<Object> children1List = childrens1;
  194. if(StringUtils.isNotEmpty(children1List)) {
  195. for (Object children1 : children1List) {
  196. Map children1Map = (Map) JSON.parse(children1.toString());
  197. String rankingsResult = HttpUtils.sendGet(URL,"year=2023&majorCode="+children1Map.get("code").toString());
  198. Thread.sleep(10000); // 暂停10秒
  199. Map<String, List<Object>> univMap = OkHttpFGUtils.getSchoolMap(rankingsResult);
  200. for (Object rankings:
  201. univMap.get("rankingsList")) {
  202. Map rankingsMap = (Map) JSON.parse(rankings.toString());
  203. if(rankingsMap.get("grade").toString().equals("A+")||rankingsMap.get("grade").toString().equals("A")){
  204. School school = new School();
  205. school.setlName(majorsMap.get("name").toString());
  206. school.setlCode(majorsMap.get("code").toString());
  207. school.setpName(childrenMap.get("name").toString());
  208. school.setpCode(childrenMap.get("code").toString());
  209. school.setzName(children1Map.get("name").toString());
  210. school.setzCode(children1Map.get("code").toString());
  211. school.setGrade(rankingsMap.get("grade").toString());
  212. school.setUnivNameCn(rankingsMap.get("univNameCn").toString());
  213. school.setScore(rankingsMap.get("score").toString());
  214. school.setProvince(rankingsMap.get("province").toString());
  215. school.setCity(rankingsMap.get("city").toString());
  216. school.setUnivLikeCount(rankingsMap.get("univLikeCount").toString());
  217. school.setUnivTags(rankingsMap.get("univTags").toString());
  218. school.setRanking(rankingsMap.get("ranking").toString());
  219. Map indGradesMap = (Map) JSON.parse(rankingsMap.get("indGrades").toString());
  220. if (!indGradesMap.isEmpty()){
  221. school.setNameCn12(indGradesMap.get(12)!=null?indGradesMap.get(12).toString():"/");
  222. school.setNameCn13(indGradesMap.get(13)!=null?indGradesMap.get(13).toString():"/");
  223. school.setNameCn14(indGradesMap.get(14)!=null?indGradesMap.get(14).toString():"/");
  224. school.setNameCn15(indGradesMap.get(15)!=null?indGradesMap.get(15).toString():"/");
  225. school.setNameCn16(indGradesMap.get(16)!=null?indGradesMap.get(16).toString():"/");
  226. }
  227. resultList.add(school);
  228. }
  229. }
  230. }
  231. }
  232. }
  233. }
  234. }
  235. ExcelUtil<School> util = new ExcelUtil<School>(School.class);
  236. util.exportExcel(response, resultList, "学校附件数据统计");
  237. }
  238. }