1、后端百度热搜接口实现
This commit is contained in:
parent
a34423fca8
commit
278f83277f
|
|
@ -35,6 +35,8 @@ public class ApiConst {
|
|||
|
||||
public static final String TIANXING_TOPSEARCHWECHAT= "天行-微信热搜榜";
|
||||
|
||||
public static final String TIANXING_TOPSEARCHBAIDU= "天行-百度热搜榜";
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -66,7 +68,9 @@ public class ApiConst {
|
|||
|
||||
public static final String TIANXING_TOPSEARCHALLNETWORK_URL= "http://api.tianapi.com/networkhot/index";
|
||||
|
||||
public static final String TIANXING_TOPSEARCHALLWECHAT_URL= "http://api.tianapi.com/wxhottopic/index";
|
||||
public static final String TIANXING_TOPSEARCHWECHAT_URL= "http://api.tianapi.com/wxhottopic/index";
|
||||
|
||||
public static final String TIANXING_TOPSEARCHBAIDU_URL= "http://api.tianapi.com/nethot/index";
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.xjs.common.client.api.tianxing;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xjs.common.aop.ApiLog;
|
||||
import com.xjs.common.client.factory.TianXingBDRSFeignFactory;
|
||||
import com.xjs.common.client.factory.TianXingQWRSFeignFactory;
|
||||
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远程调用api
|
||||
* @author xiejs
|
||||
* @since 2022-01-11
|
||||
*/
|
||||
@FunctionalInterface
|
||||
@FeignClient(name = "tianXingBDRS",url = TIANXING_TOPSEARCHBAIDU_URL,fallbackFactory = TianXingBDRSFeignFactory.class)
|
||||
public interface TianXingBDRSFeignClient {
|
||||
@GetMapping
|
||||
@ApiLog(name = TIANXING_TOPSEARCHBAIDU,
|
||||
url = TIANXING_TOPSEARCHBAIDU_URL,
|
||||
method = "Get")
|
||||
JSONObject topSearchApi(@RequestParam("key") String key);
|
||||
}
|
||||
|
|
@ -17,12 +17,12 @@ import static com.xjs.consts.ApiConst.*;
|
|||
*/
|
||||
|
||||
@FunctionalInterface
|
||||
@FeignClient(name = "tianXingWXRS",url = TIANXING_TOPSEARCHALLWECHAT_URL,fallbackFactory = TianXingWXRSFeignFactory.class)
|
||||
@FeignClient(name = "tianXingWXRS",url = TIANXING_TOPSEARCHWECHAT_URL,fallbackFactory = TianXingWXRSFeignFactory.class)
|
||||
public interface TianXingWXRSFeignClient {
|
||||
|
||||
@GetMapping
|
||||
@ApiLog(name = TIANXING_TOPSEARCHWECHAT,
|
||||
url = TIANXING_TOPSEARCHALLWECHAT_URL,
|
||||
url = TIANXING_TOPSEARCHWECHAT_URL,
|
||||
method = "Get")
|
||||
JSONObject topSearchApi(@RequestParam("key") String key);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
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.TianXingBDRSFeignClient;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-01-11
|
||||
*/
|
||||
@Component
|
||||
@Log4j2
|
||||
public class TianXingBDRSFeignFactory implements FallbackFactory<TianXingBDRSFeignClient> {
|
||||
@Override
|
||||
public TianXingBDRSFeignClient create(Throwable cause) {
|
||||
log.error("api模块天行百度热搜榜服务调用失败:{},执行降级处理", cause.getMessage());
|
||||
return key -> {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
//构建一个异常json给下层接口处理
|
||||
jsonObject.put("error", R.FAIL);
|
||||
return jsonObject;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ 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.factory.TopserachFactory;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -34,6 +35,8 @@ public class ApiTopSearchController {
|
|||
private TopserachFactory<ApiTopsearchAllnetwork> tianXingTopsearchAllnetworkFactory;
|
||||
@Autowired
|
||||
private TopserachFactory<ApiTopsearchWechat> tianXingTopsearchWechatFactory;
|
||||
@Autowired
|
||||
private TopserachFactory<ApiTopsearchBaidu> tianXingTopsearchBaiduFactory;
|
||||
|
||||
|
||||
@GetMapping
|
||||
|
|
@ -44,17 +47,18 @@ public class ApiTopSearchController {
|
|||
//获取全网热搜
|
||||
List<ApiTopsearchAllnetwork> allnetworkList = tianXingTopsearchAllnetworkFactory.topSearchApi();
|
||||
//获取微博热搜
|
||||
List<ApiTopsearchWechat> wechatList = tianXingTopsearchWechatFactory.topSearchApi();
|
||||
|
||||
//获取抖音热搜
|
||||
|
||||
//获取微信热搜
|
||||
|
||||
List<ApiTopsearchWechat> wechatList = tianXingTopsearchWechatFactory.topSearchApi();
|
||||
//获取百度热搜
|
||||
|
||||
List<ApiTopsearchBaidu> baiduList = tianXingTopsearchBaiduFactory.topSearchApi();
|
||||
|
||||
Map<String, List> listHashMap = new HashMap<>();
|
||||
listHashMap.put("allnetworkList", allnetworkList);
|
||||
listHashMap.put("wechatList", wechatList);
|
||||
listHashMap.put("baiduList", baiduList);
|
||||
|
||||
return AjaxResult.success(listHashMap);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 天行api百度热搜榜
|
||||
* @author xiejs
|
||||
* @since 2022-01-11
|
||||
*/
|
||||
@Data
|
||||
public class ApiTopsearchBaidu implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
private Long id;
|
||||
|
||||
/** 热搜话题 */
|
||||
@Excel(name = "热搜话题")
|
||||
private String title;
|
||||
|
||||
/** 简介描述 */
|
||||
@Excel(name = "简介描述")
|
||||
private String digest;
|
||||
|
||||
/** 热搜指数 */
|
||||
@Excel(name = "热搜指数")
|
||||
private Long hotnum;
|
||||
|
||||
/** 发展趋势 */
|
||||
@Excel(name = "发展趋势")
|
||||
private String trend;
|
||||
|
||||
@Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
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.TianXingBDRSFeignClient;
|
||||
import com.xjs.config.TianXingProperties;
|
||||
import com.xjs.topsearch.domain.ApiTopsearchBaidu;
|
||||
import com.xjs.topsearch.domain.ApiTopsearchWechat;
|
||||
import com.xjs.topsearch.factory.TopserachFactory;
|
||||
import com.xjs.topsearch.service.ApiTopsearchBaiduService;
|
||||
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-11
|
||||
*/
|
||||
@Component
|
||||
@Log4j2
|
||||
public class TianXingTopsearchBaiduFactory implements TopserachFactory<ApiTopsearchBaidu> {
|
||||
@Autowired
|
||||
private TianXingProperties tianXingProperties;
|
||||
@Autowired
|
||||
private ApiTopsearchBaiduService apiTopsearchBaiduService;
|
||||
@Autowired
|
||||
private TianXingBDRSFeignClient tianXingBDRSFeignClient;
|
||||
|
||||
|
||||
@Override
|
||||
public List<ApiTopsearchBaidu> topSearchApi() {
|
||||
JSONObject jsonObject = tianXingBDRSFeignClient.topSearchApi(tianXingProperties.getKey());
|
||||
if (!jsonObject.containsKey("error")) {
|
||||
if (jsonObject.getInteger("code") == HttpStatus.SUCCESS) {
|
||||
JSONArray newslist = jsonObject.getJSONArray("newslist");
|
||||
List<ApiTopsearchBaidu> collect = newslist.stream().map(arrayJson -> {
|
||||
ApiTopsearchBaidu apiTopsearchBaidu = new ApiTopsearchBaidu();
|
||||
JSONObject json = (JSONObject) arrayJson;
|
||||
apiTopsearchBaidu.setTitle(json.getString("keyword"));
|
||||
apiTopsearchBaidu.setDigest(json.getString("brief"));
|
||||
apiTopsearchBaidu.setHotnum(json.getLong("index"));
|
||||
apiTopsearchBaidu.setTrend(json.getString("trend"));
|
||||
return apiTopsearchBaidu;
|
||||
}).collect(Collectors.toList());
|
||||
log.info("百度热搜批量插入成功了嘛---" + apiTopsearchBaiduService.saveBatch(collect));
|
||||
return collect;
|
||||
} else {
|
||||
log.error("天行微信热搜服务调用成功,但返回异常");
|
||||
return new ArrayList<>();
|
||||
}
|
||||
} else {
|
||||
log.error("天行微信热搜服务调用失败,被降级!!");
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.xjs.topsearch.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xjs.topsearch.domain.ApiTopsearchBaidu;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-01-11
|
||||
*/
|
||||
public interface ApiTopsearchBaiduMapper extends BaseMapper<ApiTopsearchBaidu> {
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.xjs.topsearch.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.topsearch.domain.ApiTopsearchBaidu;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-01-11
|
||||
*/
|
||||
public interface ApiTopsearchBaiduService extends IService<ApiTopsearchBaidu> {
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.xjs.topsearch.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjs.topsearch.domain.ApiTopsearchBaidu;
|
||||
import com.xjs.topsearch.mapper.ApiTopsearchBaiduMapper;
|
||||
import com.xjs.topsearch.service.ApiTopsearchBaiduService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-01-11
|
||||
*/
|
||||
@Service
|
||||
public class ApiTopsearchBaiduServiceImpl extends ServiceImpl<ApiTopsearchBaiduMapper, ApiTopsearchBaidu> implements ApiTopsearchBaiduService {
|
||||
}
|
||||
Loading…
Reference in New Issue