1、后端实现调用天行数据全网热搜接口

2、前端主页每日一句模块图片显示调整
pull/254/head
xjs 4 years ago
parent cffa71e6de
commit a7d2e4dff2

@ -7,7 +7,11 @@
<!--每日一句-->
<div class="box-card">
<div class="aWordImage">
<img :src=apiAWord.imgurl class="aWordImage">
<el-image
class="aWordImage"
:src=apiAWord.imgurl
:preview-src-list=[apiAWord.imgurl]>
</el-image>
</div>
<div class="aWordAudio">
<audio :src=apiAWord.tts controls="controls">

@ -31,6 +31,8 @@ public class ApiConst {
public static final String TIANXING_A_WORD= "天行-每日一句";
public static final String TIANXING_TOPSEARCHALLNETWORK= "天行-全网热搜榜";
@ -60,6 +62,8 @@ public class ApiConst {
public static final String TIANXING_A_WORD_URL= "http://api.tianapi.com/everyday/index";
public static final String TIANXING_TOPSEARCHALLNETWORK_URL= "http://api.tianapi.com/networkhot/index";

@ -0,0 +1,29 @@
package com.xjs.common.client.api.tianxing;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.TianXingQWRSFeignFactory;
import com.xjs.copywriting.domain.RequestBody;
import feign.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import static com.xjs.consts.ApiConst.*;
/**
* feignapi
* @author xiejs
* @since 2022-01-10
*/
@FunctionalInterface
@FeignClient(name = "tianXingQWRS",url = TIANXING_TOPSEARCHALLNETWORK_URL,fallbackFactory = TianXingQWRSFeignFactory.class)
public interface TianXingQWRSFeignClient {
@GetMapping
@ApiLog(name = TIANXING_TOPSEARCHALLNETWORK_URL,
url = TIANXING_PYQ_URL,
method = "Get")
JSONObject topSearchApi(@Param("key") String key);
}

@ -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.TianXingQWRSFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* @author xiejs
* @since 2022-01-10
*/
@Component
@Log4j2
public class TianXingQWRSFeignFactory implements FallbackFactory<TianXingQWRSFeignClient> {
@Override
public TianXingQWRSFeignClient create(Throwable cause) {
log.error("api模块天行全网热搜榜服务调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}
}

@ -94,6 +94,11 @@ public class CopyWritingController extends BaseController {
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
factories.add(rollMMYJCopyWritingFactory);
//--------add----------------------------;-
//随机调用集合中的接口
return RandomUtil.randomEle(factories);

@ -0,0 +1,20 @@
package com.xjs.topsearch.controller;
import io.swagger.annotations.Api;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author xiejs
* @since 2022-01-10
*/
@RestController
@RequestMapping("topsearch")
@Api(tags = "业务模块-热搜管理")
@Log4j2
public class ApiTopSearchController {
}

@ -0,0 +1,51 @@
package com.xjs.topsearch.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* api
* @author xiejs
* @since 2022-01-10
*/
@Data
@TableName("api_topsearch_allnetwork")
public class ApiTopsearchAllnetwork {
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 = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
}

@ -0,0 +1,19 @@
package com.xjs.topsearch.factory;
import java.util.List;
/**
* api 使tianxing
* @author xiejs
* @since 2022-01-10
*/
public interface TopserachFactory<T> {
/**
* api
* @return Object
*/
List<T> topSearchApi();
}

@ -0,0 +1,61 @@
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.TianXingQWRSFeignClient;
import com.xjs.config.TianXingProperties;
import com.xjs.exception.ApiException;
import com.xjs.topsearch.domain.ApiTopsearchAllnetwork;
import com.xjs.topsearch.factory.TopserachFactory;
import com.xjs.topsearch.service.ApiTopsearchAllnetworkService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*
* @author xiejs
* @since 2022-01-10
*/
@Component
@Log4j2
public class TianXingTopsearchAllnetworkFactory implements TopserachFactory<ApiTopsearchAllnetwork> {
@Autowired
private TianXingProperties tianXingProperties;
@Autowired
private TianXingQWRSFeignClient tianXingQWRSFeignClient;
@Autowired
private ApiTopsearchAllnetworkService apiTopsearchAllnetworkService;
@Override
public List<ApiTopsearchAllnetwork> topSearchApi() {
JSONObject jsonObject = tianXingQWRSFeignClient.topSearchApi(tianXingProperties.getKey());
if (!jsonObject.containsKey("error")) {
if (jsonObject.getInteger("code") == HttpStatus.SUCCESS) {
JSONArray newslist = jsonObject.getJSONArray("newslist");
List<ApiTopsearchAllnetwork> collect = newslist.stream().map(arrayJson -> {
ApiTopsearchAllnetwork apiTopsearchAllnetwork = new ApiTopsearchAllnetwork();
JSONObject json = (JSONObject) arrayJson;
apiTopsearchAllnetwork.setDigest(json.getString("digest"));
apiTopsearchAllnetwork.setHotnum(json.getLong("hotnum"));
apiTopsearchAllnetwork.setTitle(json.getString("title"));
return apiTopsearchAllnetwork;
}).collect(Collectors.toList());
log.info("全网热搜批量插入成功了嘛---" + apiTopsearchAllnetworkService.saveBatch(collect));
return collect;
} else {
throw new ApiException("天行全网热搜服务调用成功,但返回异常");
}
} else {
throw new ApiException("天行全网热搜服务调用失败,被降级!!");
}
}
}

@ -0,0 +1,13 @@
package com.xjs.topsearch.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjs.topsearch.domain.ApiTopsearchAllnetwork;
/**
* @author xiejs
* @since 2022-01-10
*/
public interface ApiTopsearchAllnetworkMapper extends BaseMapper<ApiTopsearchAllnetwork> {
}

@ -0,0 +1,12 @@
package com.xjs.topsearch.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xjs.topsearch.domain.ApiTopsearchAllnetwork;
/**
* service
* @author xiejs
* @since 2022-01-10
*/
public interface ApiTopsearchAllnetworkService extends IService<ApiTopsearchAllnetwork> {
}

@ -0,0 +1,15 @@
package com.xjs.topsearch.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xjs.topsearch.domain.ApiTopsearchAllnetwork;
import com.xjs.topsearch.mapper.ApiTopsearchAllnetworkMapper;
import com.xjs.topsearch.service.ApiTopsearchAllnetworkService;
import org.springframework.stereotype.Service;
/**
* @author xiejs
* @since 2022-01-10
*/
@Service
public class ApiTopsearchAllnetworkServiceImpl extends ServiceImpl<ApiTopsearchAllnetworkMapper, ApiTopsearchAllnetwork> implements ApiTopsearchAllnetworkService {
}
Loading…
Cancel
Save