1、后端百度热搜接口实现

pull/254/head
xjs 4 years ago
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.*;
/**
* feignapi
* @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…
Cancel
Save