package com.ruoyi.web.controller.fg; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.fg.FgUrlConstant; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.common.utils.http.OkHttpFGUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.fg.Overview; import com.ruoyi.system.domain.fg.SalesTrendData; import com.ruoyi.system.domain.fg.School; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Api(value = "fgController", tags = "飞瓜数据抓取接口") @Controller @RequestMapping(value = "/fg") public class FgController { /** * 获取数据 * @param response */ @ApiOperation(value = "导出数据") @PostMapping("/exportOverviewData") @ResponseBody public void exportOverviewData(HttpServletResponse response) { List resultList = new ArrayList<>(); /** * 8074429374 小陈茶事 * 99666314082 学茶研习社 * 50792923107 茶小曼 * 69965719530 小茶婆婆 * 4367697845697440 晨曦语茶 * 2862722089489764 伍刻茶馆 * 2383382425373133 茶姐Molly * 3034272730720768 茶诵君 * 3109849681105640 八马茶叶官方旗舰店 * 44432286818743 柒月茶坊 */ String[] strings = {"8074429374","99666314082","50792923107","69965719530","4367697845697440", "2862722089489764","2383382425373133","3034272730720768","3109849681105640","44432286818743","109581763451","2444960999676388"}; String[] names = {"小陈茶事","学茶研习社","茶小曼","小茶婆婆","晨曦语茶", "伍刻茶馆","茶姐Molly","茶诵君","八马茶叶官方旗舰店","柒月茶坊","茶二代","茶三姐"}; for (int i = 0; i < strings.length; i++) { Overview po = new Overview(); po.setUuid(strings[i]); po.setName(names[i]); resultList.add(po); } // todo 直播数据 for (Overview overview: resultList) { String liveResult = HttpUtils.sendGet("http://120.27.232.118/api/v3/blogger/overview/live/stat","uid="+overview.getUuid()+"&fromDateCode=20221206&toDateCode=20231130"); Map liveMaps = (Map) JSON.parse(liveResult); for(Object map : liveMaps.entrySet()){ if(((Map.Entry)map).getKey().toString().equals("Data")){ Map poMap = (Map) JSON.parse(((Map.Entry)map).getValue().toString()); overview.setAvgDurationStr(poMap.get("AvgDurationStr").toString()); overview.setAvgLiveSaleCountStr(poMap.get("AvgLiveSaleCountStr").toString()); overview.setAvgLiveSaleGmvStr(poMap.get("AvgLiveSaleGmvStr").toString()); overview.setAvgLiveTotalUserCountStr(poMap.get("AvgLiveTotalUserCountStr").toString()); overview.setAvgLiveUserCountStr(poMap.get("AvgLiveUserCountStr").toString()); overview.setAvgUserPriceStr(poMap.get("AvgUserPriceStr").toString()); overview.setCommerceLiveCountStr(poMap.get("CommerceLiveCountStr").toString()); overview.setLiveCountStr(poMap.get("LiveCountStr").toString()); overview.setLiveSaleCountStr(poMap.get("LiveSaleCountStr").toString()); overview.setLiveSaleGmvStr(poMap.get("LiveSaleGmvStr").toString()); overview.setMaxLiveTotalUserCountStr(poMap.get("MaxLiveTotalUserCountStr").toString()); overview.setUVStr(poMap.get("UVStr").toString()); } } String awemeResult = HttpUtils.sendGet("http://120.27.232.118/api/v3/blogger/overview/aweme/stat","uid="+overview.getUuid()+"&fromDateCode=20221206&toDateCode=20231130"); Map awemeMaps = (Map) JSON.parse(awemeResult); for(Object map : awemeMaps.entrySet()){ if(((Map.Entry)map).getKey().toString().equals("Data")){ Map poMap = (Map) JSON.parse(((Map.Entry)map).getValue().toString()); overview.setAvgAwemeSaleCountStr(poMap.get("AvgAwemeSaleCountStr").toString()); overview.setAvgAwemeSaleGmvStr(poMap.get("AvgAwemeSaleGmvStr").toString()); overview.setAvgCommentCountStr(poMap.get("AvgCommentCountStr").toString()); overview.setAvgLikeCommentRateStr(poMap.get("AvgLikeCommentRateStr").toString()); overview.setAvgLikeCountStr(poMap.get("AvgLikeCountStr").toString()); overview.setAwemeCountStr(poMap.get("AwemeCountStr").toString()); overview.setAwemeSaleCountStr(poMap.get("AwemeSaleCountStr").toString()); overview.setAwemeSaleGmvStr(poMap.get("AwemeSaleGmvStr").toString()); overview.setCommerceAwemeCountStr(poMap.get("CommerceAwemeCountStr").toString()); overview.setMaxCommentCountStr(poMap.get("MaxCommentCountStr").toString()); overview.setMaxLikeCommentRateStr(poMap.get("MaxLikeCommentRateStr").toString()); overview.setMaxLikeCountStr(poMap.get("MaxLikeCountStr").toString()); } } String recommendResult = HttpUtils.sendGet("http://120.27.232.118/api/v3/blogger/overview/recommend/stat","uid="+overview.getUuid()+"&fromDateCode=20221206&toDateCode=20231130"); Map recommendMaps = (Map) JSON.parse(recommendResult); for(Object map : recommendMaps.entrySet()){ if(((Map.Entry)map).getKey().toString().equals("Data")){ Map poMap = (Map) JSON.parse(((Map.Entry)map).getValue().toString()); overview.setBloggerPriceStr(poMap.get("BloggerPriceStr").toString()); overview.setBrandCountStr(poMap.get("BrandCountStr").toString()); overview.setCPEStr(poMap.get("CPEStr").toString()); overview.setCateCountStr(poMap.get("CateCountStr").toString()); overview.setGrassVideoCountStr(poMap.get("GrassVideoCountStr").toString()); overview.setMainCateNameStr(poMap.get("MainCateNameStr").toString()); overview.setMainCateRatioStr(poMap.get("MainCateRatioStr").toString()); } } } ExcelUtil util = new ExcelUtil(Overview.class); util.exportExcel(response, resultList, "数据"); } /** * 获取数据 * @param response */ @ApiOperation(value = "导出茶90天直播销售额与视频销售额") @PostMapping("/exportSalesTrendData") @ResponseBody public void exportSalesTrendData(HttpServletResponse response) { String URL = "http://120.27.232.118/api/v1/goodsDataOverView/salesTrendData"; List resultList = new ArrayList<>(); String result = HttpUtils.sendGet(URL,"periodType=90&fromDateCode=20230829&toDateCode=20231126&cateId=20004"); Map maps = (Map) JSON.parse(result); for(Object map : maps.entrySet()){ if(((Map.Entry)map).getKey().toString().equals("Data")){ JSONArray dataJArray = JSONObject.parseArray(((Map.Entry)map).getValue().toString()); List dataList = dataJArray; for (Object po: dataList) { Map poMap = (Map) JSON.parse(po.toString()); poMap.get("DateCode").toString(); SalesTrendData salesTrendData = new SalesTrendData(); salesTrendData.setAwemeSalesCount(poMap.get("AwemeSalesCount").toString()); salesTrendData.setAwemeSalesCountStr(poMap.get("AwemeSalesCountStr").toString()); salesTrendData.setAwemeSaleCountRatio(poMap.get("AwemeSaleCountRatio").toString()); salesTrendData.setAwemeSales(poMap.get("AwemeSales").toString()); salesTrendData.setAwemeSalesStr(poMap.get("AwemeSalesStr").toString()); salesTrendData.setAwemeSalesRatio(poMap.get("AwemeSalesRatio").toString()); salesTrendData.setDateCode(poMap.get("DateCode").toString()); salesTrendData.setLiveSalesCount(poMap.get("LiveSalesCount").toString()); salesTrendData.setLiveSalesCountStr(poMap.get("LiveSalesCountStr").toString()); salesTrendData.setLiveSaleCountRatio(poMap.get("LiveSaleCountRatio").toString()); salesTrendData.setLiveSales(poMap.get("LiveSales").toString()); salesTrendData.setLiveSalesStr(poMap.get("LiveSalesStr").toString()); salesTrendData.setLiveSalesRatio(poMap.get("LiveSalesRatio").toString()); salesTrendData.setOtherSalesCount(poMap.get("OtherSalesCount").toString()); salesTrendData.setOtherSalesCountStr(poMap.get("OtherSalesCountStr").toString()); salesTrendData.setOtherSaleCountRatio(poMap.get("OtherSaleCountRatio").toString()); salesTrendData.setOtherSales(poMap.get("OtherSales").toString()); salesTrendData.setOtherSalesStr(poMap.get("OtherSalesStr").toString()); salesTrendData.setOtherSalesRatio(poMap.get("OtherSalesRatio").toString()); salesTrendData.setPV(poMap.get("PV").toString()); salesTrendData.setPVStr(poMap.get("PVStr").toString()); salesTrendData.setStatDate(poMap.get("StatDate").toString()); salesTrendData.setSumSalesCount(poMap.get("SumSalesCount").toString()); salesTrendData.setSumSalesCountStr(poMap.get("SumSalesCountStr").toString()); salesTrendData.setTotalSales(poMap.get("TotalSales").toString()); salesTrendData.setTotalSalesStr(poMap.get("TotalSalesStr").toString()); resultList.add(salesTrendData); } } } ExcelUtil util = new ExcelUtil(SalesTrendData.class); util.exportExcel(response, resultList, "茶90天直播销售额与视频销售额"); } /** * 导出crm附件列表 */ @ApiOperation("") @Log(title = "导出中国大学专业排名", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, String year) throws InterruptedException { String URL = "https://www.shanghairanking.cn/api/pub/v1/bcmr/rank"; List resultList = new ArrayList<>(); String result = HttpUtils.sendGet(URL,"year=2023&majorCode=010101"); Map> map = OkHttpFGUtils.getSchoolMap(result); for (Object majors: map.get("majorsList")) { Map majorsMap = (Map) JSON.parse(majors.toString()); JSONArray childrens = JSONObject.parseArray(majorsMap.get("children").toString()); List childrenList = childrens; if(StringUtils.isNotEmpty(childrenList)){ for (Object children: childrenList) { Map childrenMap = (Map) JSON.parse(children.toString()); JSONArray childrens1 = JSONObject.parseArray(childrenMap.get("children").toString()); List children1List = childrens1; if(StringUtils.isNotEmpty(children1List)) { for (Object children1 : children1List) { Map children1Map = (Map) JSON.parse(children1.toString()); String rankingsResult = HttpUtils.sendGet(URL,"year=2023&majorCode="+children1Map.get("code").toString()); Thread.sleep(10000); // 暂停10秒 Map> univMap = OkHttpFGUtils.getSchoolMap(rankingsResult); for (Object rankings: univMap.get("rankingsList")) { Map rankingsMap = (Map) JSON.parse(rankings.toString()); if(rankingsMap.get("grade").toString().equals("A+")||rankingsMap.get("grade").toString().equals("A")){ School school = new School(); school.setlName(majorsMap.get("name").toString()); school.setlCode(majorsMap.get("code").toString()); school.setpName(childrenMap.get("name").toString()); school.setpCode(childrenMap.get("code").toString()); school.setzName(children1Map.get("name").toString()); school.setzCode(children1Map.get("code").toString()); school.setGrade(rankingsMap.get("grade").toString()); school.setUnivNameCn(rankingsMap.get("univNameCn").toString()); school.setScore(rankingsMap.get("score").toString()); school.setProvince(rankingsMap.get("province").toString()); school.setCity(rankingsMap.get("city").toString()); school.setUnivLikeCount(rankingsMap.get("univLikeCount").toString()); school.setUnivTags(rankingsMap.get("univTags").toString()); school.setRanking(rankingsMap.get("ranking").toString()); Map indGradesMap = (Map) JSON.parse(rankingsMap.get("indGrades").toString()); if (!indGradesMap.isEmpty()){ school.setNameCn12(indGradesMap.get(12)!=null?indGradesMap.get(12).toString():"/"); school.setNameCn13(indGradesMap.get(13)!=null?indGradesMap.get(13).toString():"/"); school.setNameCn14(indGradesMap.get(14)!=null?indGradesMap.get(14).toString():"/"); school.setNameCn15(indGradesMap.get(15)!=null?indGradesMap.get(15).toString():"/"); school.setNameCn16(indGradesMap.get(16)!=null?indGradesMap.get(16).toString():"/"); } resultList.add(school); } } } } } } } ExcelUtil util = new ExcelUtil(School.class); util.exportExcel(response, resultList, "学校附件数据统计"); } }