From d9a7b8b0b34944840e31a43817d2a3a20ab21da9 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Wed, 12 Jan 2022 14:50:11 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=90=8E=E7=AB=AF=E6=8A=96=E9=9F=B3?= =?UTF-8?q?=E3=80=81=E5=BE=AE=E5=8D=9A=E7=83=AD=E6=90=9C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xjs/consts/ApiConst.java | 8 ++ .../api/tianxing/TianXingDYRSFeignClient.java | 25 ++++++ .../api/tianxing/TianXingWBRSFeignClient.java | 27 +++++++ .../factory/TianXingDYRSFeignFactory.java | 26 ++++++ .../factory/TianXingWBRSFeignFactory.java | 28 +++++++ .../com/xjs/common/task/DeleteRepeatTask.java | 15 +++- .../controller/ApiTopSearchController.java | 15 ++-- .../topsearch/domain/ApiTopsearchDouyin.java | 39 +++++++++ .../topsearch/domain/ApiTopsearchWeibo.java | 38 +++++++++ .../impl/TianXingTopsearchDouyinFactory.java | 80 +++++++++++++++++++ .../impl/TianXingTopsearchWeiboFactory.java | 73 +++++++++++++++++ .../mapper/ApiTopsearchBaiduMapper.java | 5 ++ .../mapper/ApiTopsearchDouyinMapper.java | 16 ++++ .../mapper/ApiTopsearchWechatMapper.java | 2 +- .../mapper/ApiTopsearchWeiboMapper.java | 16 ++++ .../service/ApiTopsearchBaiduService.java | 5 ++ .../service/ApiTopsearchDouyinService.java | 17 ++++ .../service/ApiTopsearchWechatService.java | 2 +- .../service/ApiTopsearchWeiboService.java | 16 ++++ .../impl/ApiTopsearchBaiduServiceImpl.java | 10 +++ .../impl/ApiTopsearchDouyinServiceImpl.java | 24 ++++++ .../impl/ApiTopsearchWeiboServiceImpl.java | 24 ++++++ .../openapi/ApiTopsearchBaiduMapper.xml | 21 +++++ .../openapi/ApiTopsearchDouyinMapper.xml | 21 +++++ .../openapi/ApiTopsearchWeiboMapper.xml | 21 +++++ 25 files changed, 564 insertions(+), 10 deletions(-) create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingDYRSFeignClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingWBRSFeignClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingDYRSFeignFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWBRSFeignFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchDouyin.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchWeibo.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchDouyinFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchWeiboFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchDouyinMapper.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWeiboMapper.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchDouyinService.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWeiboService.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchDouyinServiceImpl.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchWeiboServiceImpl.java create mode 100644 xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchBaiduMapper.xml create mode 100644 xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchDouyinMapper.xml create mode 100644 xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchWeiboMapper.xml diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java index 7fe4f8b4..5e9dcbeb 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java @@ -37,6 +37,10 @@ public class ApiConst { public static final String TIANXING_TOPSEARCHBAIDU= "天行-百度热搜榜"; + public static final String TIANXING_TOPSEARCHWEIBO= "天行-微博热搜榜"; + + public static final String TIANXING_TOPSEARCHDOUYIN= "天行-抖音热搜榜"; + @@ -72,6 +76,10 @@ public class ApiConst { public static final String TIANXING_TOPSEARCHBAIDU_URL= "http://api.tianapi.com/nethot/index"; + public static final String TIANXING_TOPSEARCHWEIBO_URL= "http://api.tianapi.com/weibohot/index"; + + public static final String TIANXING_TOPSEARCHDOUYIN_URL= "http://api.tianapi.com/douyinhot/index"; + diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingDYRSFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingDYRSFeignClient.java new file mode 100644 index 00000000..ebf77a60 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingDYRSFeignClient.java @@ -0,0 +1,25 @@ +package com.xjs.common.client.api.tianxing; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.aop.ApiLog; +import com.xjs.common.client.factory.TianXingDYRSFeignFactory; +import com.xjs.common.client.factory.TianXingWXRSFeignFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import static com.xjs.consts.ApiConst.*; + +/** + * @author xiejs + * @since 2022-01-12 + */ +@FunctionalInterface +@FeignClient(name = "tianXingDYRS",url = TIANXING_TOPSEARCHDOUYIN_URL,fallbackFactory = TianXingDYRSFeignFactory.class) +public interface TianXingDYRSFeignClient { + @GetMapping + @ApiLog(name = TIANXING_TOPSEARCHDOUYIN, + url = TIANXING_TOPSEARCHDOUYIN_URL, + method = "Get") + JSONObject topSearchApi(@RequestParam("key") String key); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingWBRSFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingWBRSFeignClient.java new file mode 100644 index 00000000..38d603ca --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/tianxing/TianXingWBRSFeignClient.java @@ -0,0 +1,27 @@ +package com.xjs.common.client.api.tianxing; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.aop.ApiLog; +import com.xjs.common.client.factory.TianXingWBRSFeignFactory; +import com.xjs.common.client.factory.TianXingWXRSFeignFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import static com.xjs.consts.ApiConst.*; + +/** + * 天行微博热搜feign + * @author xiejs + * @since 2022-01-12 + */ +@FunctionalInterface +@FeignClient(name = "tianXingWBRSF",url = TIANXING_TOPSEARCHWEIBO_URL,fallbackFactory = TianXingWBRSFeignFactory.class) +public interface TianXingWBRSFeignClient { + + @GetMapping + @ApiLog(name = TIANXING_TOPSEARCHWEIBO, + url = TIANXING_TOPSEARCHWEIBO_URL, + method = "Get") + JSONObject topSearchApi(@RequestParam("key") String key); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingDYRSFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingDYRSFeignFactory.java new file mode 100644 index 00000000..a08314b6 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingDYRSFeignFactory.java @@ -0,0 +1,26 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.R; +import com.xjs.common.client.api.tianxing.TianXingDYRSFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @since 2022-01-12 + */ +@Component +@Log4j2 +public class TianXingDYRSFeignFactory implements FallbackFactory { + @Override + public TianXingDYRSFeignClient create(Throwable cause) { + log.error("api模块天行抖音热搜榜服务调用失败:{},执行降级处理", cause.getMessage()); + return key -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("error", R.FAIL); + return jsonObject; + }; + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWBRSFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWBRSFeignFactory.java new file mode 100644 index 00000000..214b04e4 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWBRSFeignFactory.java @@ -0,0 +1,28 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.R; +import com.xjs.common.client.api.tianxing.TianXingWBRSFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 天行微博热搜feign降级 + * @author xiejs + * @since 2022-01-12 + */ +@Log4j2 +@Component +public class TianXingWBRSFeignFactory implements FallbackFactory { + @Override + public TianXingWBRSFeignClient create(Throwable cause) { + log.error("api模块天行微博热搜榜服务调用失败:{},执行降级处理", cause.getMessage()); + return key -> { + JSONObject jsonObject = new JSONObject(); + //构建一个异常json给下层接口处理 + jsonObject.put("error", R.FAIL); + return jsonObject; + }; + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java index 65a2dffc..26cb0910 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java @@ -1,8 +1,7 @@ package com.xjs.common.task; import com.xjs.copywriting.service.CopyWritingService; -import com.xjs.topsearch.service.ApiTopsearchAllnetworkService; -import com.xjs.topsearch.service.ApiTopsearchWechatService; +import com.xjs.topsearch.service.*; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -24,6 +23,12 @@ public class DeleteRepeatTask { private ApiTopsearchAllnetworkService apiTopsearchAllnetworkService; @Autowired private ApiTopsearchWechatService apiTopsearchWechatService; + @Autowired + private ApiTopsearchBaiduService apiTopsearchBaiduService; + @Autowired + private ApiTopsearchDouyinService apiTopsearchDouyinService; + @Autowired + private ApiTopsearchWeiboService apiTopsearchWeiboService; /** @@ -40,5 +45,11 @@ public class DeleteRepeatTask { log.info("thread id:{},定时清除全网热搜榜重复数据,重复数:{}", Thread.currentThread().getId(),allNetworkCount); Integer wechatCount = apiTopsearchWechatService.deleteRepeatData(); log.info("thread id:{},定时清除微信热搜榜重复数据,重复数:{}", Thread.currentThread().getId(),wechatCount); + Integer baiduCount = apiTopsearchBaiduService.deleteRepeatData(); + log.info("thread id:{},定时清除百度热搜榜重复数据,重复数:{}", Thread.currentThread().getId(),baiduCount); + Integer douyinCount = apiTopsearchDouyinService.deleteRepeatData(); + log.info("thread id:{},定时清除抖音热搜榜重复数据,重复数:{}", Thread.currentThread().getId(),douyinCount); + Integer weiboCount = apiTopsearchWeiboService.deleteRepeatData(); + log.info("thread id:{},定时清除微博热搜榜重复数据,重复数:{}", Thread.currentThread().getId(),weiboCount); } } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java index 8fa4ca80..7f40d6f9 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java @@ -3,9 +3,7 @@ package com.xjs.topsearch.controller; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.security.annotation.RequiresLogin; -import com.xjs.topsearch.domain.ApiTopsearchAllnetwork; -import com.xjs.topsearch.domain.ApiTopsearchBaidu; -import com.xjs.topsearch.domain.ApiTopsearchWechat; +import com.xjs.topsearch.domain.*; import com.xjs.topsearch.factory.TopserachFactory; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -37,6 +35,10 @@ public class ApiTopSearchController { private TopserachFactory tianXingTopsearchWechatFactory; @Autowired private TopserachFactory tianXingTopsearchBaiduFactory; + @Autowired + private TopserachFactory tianXingTopsearchWeiboFactory; + @Autowired + private TopserachFactory tianXingTopsearchDouyinFactory; @GetMapping @@ -47,9 +49,9 @@ public class ApiTopSearchController { //获取全网热搜 List allnetworkList = tianXingTopsearchAllnetworkFactory.topSearchApi(); //获取微博热搜 - + List weiboList = tianXingTopsearchWeiboFactory.topSearchApi(); //获取抖音热搜 - + List douyinList = tianXingTopsearchDouyinFactory.topSearchApi(); //获取微信热搜 List wechatList = tianXingTopsearchWechatFactory.topSearchApi(); //获取百度热搜 @@ -59,7 +61,8 @@ public class ApiTopSearchController { listHashMap.put("allnetworkList", allnetworkList); listHashMap.put("wechatList", wechatList); listHashMap.put("baiduList", baiduList); - + listHashMap.put("weiboList", weiboList); + listHashMap.put("douyinList", douyinList); return AjaxResult.success(listHashMap); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchDouyin.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchDouyin.java new file mode 100644 index 00000000..70fb769b --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchDouyin.java @@ -0,0 +1,39 @@ +package com.xjs.topsearch.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.common.core.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 抖音热搜榜实体 + * @author xiejs + * @since 2022-01-12 + */ +@Data +public class ApiTopsearchDouyin implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 热搜话题 */ + @Excel(name = "热搜话题") + private String word; + + /** 热搜标签 */ + @Excel(name = "热搜标签") + private String label; + + /** 热搜指数 */ + @Excel(name = "热搜指数") + private Long hotindex; + + @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss") + @TableField(fill = FieldFill.INSERT) + private Date createTime; +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchWeibo.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchWeibo.java new file mode 100644 index 00000000..46de980a --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/domain/ApiTopsearchWeibo.java @@ -0,0 +1,38 @@ +package com.xjs.topsearch.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.common.core.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 微博热搜实体 + * @author xiejs + * @since 2022-01-12 + */ +@Data +public class ApiTopsearchWeibo implements Serializable { + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 热搜话题 */ + @Excel(name = "热搜话题") + private String hotword; + + /** 热搜指数 */ + @Excel(name = "热搜指数") + private String hotnum; + + /** 热搜标签 */ + @Excel(name = "热搜标签") + private String hottag; + + @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss") + @TableField(fill = FieldFill.INSERT) + private Date createTime; +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchDouyinFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchDouyinFactory.java new file mode 100644 index 00000000..d90136f4 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchDouyinFactory.java @@ -0,0 +1,80 @@ +package com.xjs.topsearch.factory.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.constant.HttpStatus; +import com.xjs.common.client.api.tianxing.TianXingDYRSFeignClient; +import com.xjs.common.client.api.tianxing.TianXingWBRSFeignClient; +import com.xjs.config.TianXingProperties; +import com.xjs.topsearch.domain.ApiTopsearchDouyin; +import com.xjs.topsearch.domain.ApiTopsearchWeibo; +import com.xjs.topsearch.factory.TopserachFactory; +import com.xjs.topsearch.service.ApiTopsearchDouyinService; +import com.xjs.topsearch.service.ApiTopsearchWeiboService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 天行抖音热搜工厂实现 + * + * @author xiejs + * @since 2022-01-12 + */ +@Component +@Log4j2 +public class TianXingTopsearchDouyinFactory implements TopserachFactory { + + + @Autowired + private TianXingProperties tianXingProperties; + + @Autowired + private TianXingDYRSFeignClient tianXingDYRSFeignClient; + + @Autowired + private ApiTopsearchDouyinService apiTopsearchDouyinService; + + @Override + public List topSearchApi() { + JSONObject jsonObject = tianXingDYRSFeignClient.topSearchApi(tianXingProperties.getKey()); + if (!jsonObject.containsKey("error")) { + if (jsonObject.getInteger("code") == HttpStatus.SUCCESS) { + JSONArray newslist = jsonObject.getJSONArray("newslist"); + List collect = newslist.stream().map(arrayJson -> { + ApiTopsearchDouyin apiTopsearchDouyin = new ApiTopsearchDouyin(); + JSONObject json = (JSONObject) arrayJson; + apiTopsearchDouyin.setHotindex(json.getLong("hotindex")); + Integer hotwordnum = json.getInteger("label"); + switch (hotwordnum) { + case 1: + apiTopsearchDouyin.setLabel("新"); + break; + case 2: + apiTopsearchDouyin.setLabel("荐"); + break; + case 3: + apiTopsearchDouyin.setLabel("热"); + break; + default: + apiTopsearchDouyin.setLabel("-"); + } + apiTopsearchDouyin.setWord(json.getString("hotindex")); + return apiTopsearchDouyin; + }).collect(Collectors.toList()); + log.info("抖音热搜批量插入成功了嘛---" + apiTopsearchDouyinService.saveBatch(collect)); + return collect; + } else { + log.error("天行抖音热搜服务调用成功,但返回异常"); + return new ArrayList<>(); + } + } else { + log.error("天行抖音热搜服务调用失败,被降级!!"); + return new ArrayList<>(); + } + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchWeiboFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchWeiboFactory.java new file mode 100644 index 00000000..49c9584c --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/factory/impl/TianXingTopsearchWeiboFactory.java @@ -0,0 +1,73 @@ +package com.xjs.topsearch.factory.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.constant.HttpStatus; +import com.xjs.common.client.api.tianxing.TianXingWBRSFeignClient; +import com.xjs.config.TianXingProperties; +import com.xjs.topsearch.domain.ApiTopsearchWechat; +import com.xjs.topsearch.domain.ApiTopsearchWeibo; +import com.xjs.topsearch.factory.TopserachFactory; +import com.xjs.topsearch.service.ApiTopsearchWeiboService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 微博热搜api工厂实现 + * + * @author xiejs + * @since 2022-01-12 + */ +@Component +@Log4j2 +public class TianXingTopsearchWeiboFactory implements TopserachFactory { + + @Autowired + private TianXingProperties tianXingProperties; + + @Autowired + private TianXingWBRSFeignClient tianXingWBRSFeignClient; + + @Autowired + private ApiTopsearchWeiboService apiTopsearchWeiboService; + + + @Override + @Transactional + public List topSearchApi() { + JSONObject jsonObject = tianXingWBRSFeignClient.topSearchApi(tianXingProperties.getKey()); + if (!jsonObject.containsKey("error")) { + if (jsonObject.getInteger("code") == HttpStatus.SUCCESS) { + JSONArray newslist = jsonObject.getJSONArray("newslist"); + List collect = newslist.stream().map(arrayJson -> { + ApiTopsearchWeibo apiTopsearchWeibo = new ApiTopsearchWeibo(); + JSONObject json = (JSONObject) arrayJson; + apiTopsearchWeibo.setHotword(json.getString("hotword")); + apiTopsearchWeibo.setHotnum(json.getString("hotwordnum")); + apiTopsearchWeibo.setHottag(json.getString("hottag")); + return apiTopsearchWeibo; + }).collect(Collectors.toList()); + log.info("微博热搜批量插入成功了嘛---" + apiTopsearchWeiboService.saveBatch(collect)); + return collect; + } else { + log.error("天行微博热搜服务调用成功,但返回异常"); + return new ArrayList<>(); + } + } else { + log.error("天行微博热搜服务调用失败,被降级!!"); + return new ArrayList<>(); + } + } + + + + + + +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchBaiduMapper.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchBaiduMapper.java index 710c4e53..7454caf1 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchBaiduMapper.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchBaiduMapper.java @@ -8,4 +8,9 @@ import com.xjs.topsearch.domain.ApiTopsearchBaidu; * @since 2022-01-11 */ public interface ApiTopsearchBaiduMapper extends BaseMapper { + /** + * 删除百度热搜重复数据 + * @return Integer + */ + Integer deleteRepeatData(); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchDouyinMapper.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchDouyinMapper.java new file mode 100644 index 00000000..79321023 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchDouyinMapper.java @@ -0,0 +1,16 @@ +package com.xjs.topsearch.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjs.topsearch.domain.ApiTopsearchDouyin; + +/** + * @author xiejs + * @since 2022-01-12 + */ +public interface ApiTopsearchDouyinMapper extends BaseMapper { + /** + * 删除抖音热搜重复数据 + * @return Integer + */ + Integer deleteRepeatData(); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWechatMapper.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWechatMapper.java index 2dae40d7..262334a0 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWechatMapper.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWechatMapper.java @@ -9,7 +9,7 @@ import com.xjs.topsearch.domain.ApiTopsearchWechat; */ public interface ApiTopsearchWechatMapper extends BaseMapper { /** - * 删除全网热搜重复数据 + * 删除微信热搜重复数据 * @return Integer */ Integer deleteRepeatData(); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWeiboMapper.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWeiboMapper.java new file mode 100644 index 00000000..bb71d8d5 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/mapper/ApiTopsearchWeiboMapper.java @@ -0,0 +1,16 @@ +package com.xjs.topsearch.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjs.topsearch.domain.ApiTopsearchWeibo; + +/** + * @author xiejs + * @since 2022-01-12 + */ +public interface ApiTopsearchWeiboMapper extends BaseMapper { + /** + * 删除微博热搜重复数据 + * @return Integer + */ + Integer deleteRepeatData(); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchBaiduService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchBaiduService.java index 7578a055..91a76fcb 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchBaiduService.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchBaiduService.java @@ -8,4 +8,9 @@ import com.xjs.topsearch.domain.ApiTopsearchBaidu; * @since 2022-01-11 */ public interface ApiTopsearchBaiduService extends IService { + /** + * 删除百度热搜重复数据 + * @return Integer + */ + Integer deleteRepeatData(); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchDouyinService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchDouyinService.java new file mode 100644 index 00000000..747f821c --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchDouyinService.java @@ -0,0 +1,17 @@ +package com.xjs.topsearch.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjs.topsearch.domain.ApiTopsearchDouyin; + +/** + * @author xiejs + * @since 2022-01-12 + */ +public interface ApiTopsearchDouyinService extends IService { + + /** + * 删除抖音热搜重复数据 + * @return Integer + */ + Integer deleteRepeatData(); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWechatService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWechatService.java index bcfa5aec..d7dcace9 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWechatService.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWechatService.java @@ -9,7 +9,7 @@ import com.xjs.topsearch.domain.ApiTopsearchWechat; */ public interface ApiTopsearchWechatService extends IService { /** - * 删除全网热搜重复数据 + * 删除微信热搜重复数据 * @return Integer */ Integer deleteRepeatData(); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWeiboService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWeiboService.java new file mode 100644 index 00000000..020ec1ab --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/ApiTopsearchWeiboService.java @@ -0,0 +1,16 @@ +package com.xjs.topsearch.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjs.topsearch.domain.ApiTopsearchWeibo; + +/** + * @author xiejs + * @since 2022-01-12 + */ +public interface ApiTopsearchWeiboService extends IService { + /** + * 删除微博热搜重复数据 + * @return Integer + */ + Integer deleteRepeatData(); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchBaiduServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchBaiduServiceImpl.java index 862b2c0b..b0eb5a37 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchBaiduServiceImpl.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchBaiduServiceImpl.java @@ -6,10 +6,20 @@ import com.xjs.topsearch.mapper.ApiTopsearchBaiduMapper; import com.xjs.topsearch.service.ApiTopsearchBaiduService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + /** * @author xiejs * @since 2022-01-11 */ @Service public class ApiTopsearchBaiduServiceImpl extends ServiceImpl implements ApiTopsearchBaiduService { + + @Resource + private ApiTopsearchBaiduMapper apiTopsearchBaiduMapper; + + @Override + public Integer deleteRepeatData() { + return apiTopsearchBaiduMapper.deleteRepeatData(); + } } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchDouyinServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchDouyinServiceImpl.java new file mode 100644 index 00000000..43427602 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchDouyinServiceImpl.java @@ -0,0 +1,24 @@ +package com.xjs.topsearch.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjs.topsearch.domain.ApiTopsearchDouyin; +import com.xjs.topsearch.mapper.ApiTopsearchDouyinMapper; +import com.xjs.topsearch.service.ApiTopsearchDouyinService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author xiejs + * @since 2022-01-12 + */ +@Service +public class ApiTopsearchDouyinServiceImpl extends ServiceImpl implements ApiTopsearchDouyinService { + @Resource + private ApiTopsearchDouyinMapper apiTopsearchDouyinMapper; + + @Override + public Integer deleteRepeatData() { + return apiTopsearchDouyinMapper.deleteRepeatData(); + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchWeiboServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchWeiboServiceImpl.java new file mode 100644 index 00000000..9d5bdb89 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/ApiTopsearchWeiboServiceImpl.java @@ -0,0 +1,24 @@ +package com.xjs.topsearch.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjs.topsearch.domain.ApiTopsearchWeibo; +import com.xjs.topsearch.mapper.ApiTopsearchWeiboMapper; +import com.xjs.topsearch.service.ApiTopsearchWeiboService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author xiejs + * @since 2022-01-12 + */ +@Service +public class ApiTopsearchWeiboServiceImpl extends ServiceImpl implements ApiTopsearchWeiboService { + @Resource + private ApiTopsearchWeiboMapper apiTopsearchWeiboMapper; + + @Override + public Integer deleteRepeatData() { + return apiTopsearchWeiboMapper.deleteRepeatData(); + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchBaiduMapper.xml b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchBaiduMapper.xml new file mode 100644 index 00000000..b3af21ac --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchBaiduMapper.xml @@ -0,0 +1,21 @@ + + + + + + DELETE + FROM + api_topsearch_baidu + WHERE + title IN ( SELECT t.title FROM ( SELECT title FROM api_topsearch_baidu GROUP BY title HAVING count( title ) > 1 ) t ) + AND id NOT IN ( + SELECT + c.id + FROM + ( SELECT min( id ) id FROM api_topsearch_baidu GROUP BY title HAVING count( title )> 1 ) c + ) + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchDouyinMapper.xml b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchDouyinMapper.xml new file mode 100644 index 00000000..852d02cd --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchDouyinMapper.xml @@ -0,0 +1,21 @@ + + + + + + DELETE + FROM + api_topsearch_douyin + WHERE + word IN ( SELECT t.word FROM ( SELECT word FROM api_topsearch_douyin GROUP BY word HAVING count( word ) > 1 ) t ) + AND id NOT IN ( + SELECT + c.id + FROM + ( SELECT min( id ) id FROM api_topsearch_douyin GROUP BY word HAVING count( word )> 1 ) c + ) + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchWeiboMapper.xml b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchWeiboMapper.xml new file mode 100644 index 00000000..49827bb6 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/ApiTopsearchWeiboMapper.xml @@ -0,0 +1,21 @@ + + + + + + DELETE + FROM + api_topsearch_weibo + WHERE + hotword IN ( SELECT t.hotword FROM ( SELECT hotword FROM api_topsearch_weibo GROUP BY hotword HAVING count( hotword ) > 1 ) t ) + AND id NOT IN ( + SELECT + c.id + FROM + ( SELECT min( id ) id FROM api_topsearch_weibo GROUP BY hotword HAVING count( hotword )> 1 ) c + ) + + + \ No newline at end of file