1、百度联想第三方api调用实现

2、api检查类新增百度联想api检查
pull/254/head
xjs 4 years ago
parent c782855cec
commit 02ca4bd22a

@ -80,6 +80,8 @@ public class ApiConst {
public static final String ROLL_JOKE = "ROLL-搞笑段子"; public static final String ROLL_JOKE = "ROLL-搞笑段子";
public static final String BAIDU_ASSOCIATION = "百度联想";
//-------------------url------------------------------ //-------------------url------------------------------
@ -202,7 +204,7 @@ public class ApiConst {
/** /**
* API * API
*/ */
public static final String BAI_DU_AI_LX_URL= "http://suggestion.baidu.com/su?"; public static final String BAIDU_ASSOCIATION_URL= "http://suggestion.baidu.com/su?";
//-----------------------api请求参数常量----------------------------- //-----------------------api请求参数常量-----------------------------

@ -0,0 +1,40 @@
package com.xjs.ai.controller;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.annotation.RequiresLogin;
import com.xjs.ai.factory.AssociationFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* controller
*
* @author xiejs
* @since 2022-02-24
*/
@RestController
@RequestMapping("association")
@Api(tags = "业务模块-联想管理")
@Log4j2
public class AssociationController {
@Autowired
private AssociationFactory<List<String>> baiduAssociationFactory;
@GetMapping("getAssociation")
@ApiOperation("获取联想词汇")
@RequiresLogin
public AjaxResult getAssociation(@RequestParam("content") String content) {
List<String> data = baiduAssociationFactory.getData(content);
return AjaxResult.success(data);
}
}

@ -0,0 +1,17 @@
package com.xjs.ai.factory;
/**
*
* @author xiejs
* @since 2022-02-24
*/
public interface AssociationFactory<T> {
/**
*
* @param content
* @return T
*/
T getData(String content);
}

@ -0,0 +1,57 @@
package com.xjs.ai.factory.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.utils.StringUtils;
import com.xjs.ai.factory.AssociationFactory;
import com.xjs.common.client.api.baidu.BaiduAssociationFeignClient;
import com.xjs.exception.ApiException;
import com.xjs.exception.BusinessException;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
* @author xiejs
* @since 2022-02-24
*/
@Component
@Log4j2
public class BaiduAssociationFactory implements AssociationFactory<List<String>> {
public static final String filter= "window.baidu.sug";
@Autowired
private BaiduAssociationFeignClient baiduAssociationFeignClient;
@Override
public List<String> getData(String content) {
String data = baiduAssociationFeignClient.associationApi(content);
if (StringUtils.isEmpty(data)) {
throw new ApiException("百度联想api接口调用异常");
}
if (data.contains(filter)) {
String substring = data.substring(filter.length() + 1, data.length() - 2);
try {
JSONObject jsonObject = JSONObject.parseObject(substring);
JSONArray jsonArray = jsonObject.getJSONArray("s");
return jsonArray.toJavaList(String.class);
} catch (Exception e) {
log.error("json格式转换异常!!!");
throw new BusinessException("json格式转换异常");
}
}
return null;
}
}

@ -0,0 +1,28 @@
package com.xjs.common.client.api.baidu;
import com.xjs.annotation.ApiLog;
import com.xjs.common.client.factory.BaiduAssociationFeignFactory;
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.BAIDU_ASSOCIATION;
import static com.xjs.consts.ApiConst.BAIDU_ASSOCIATION_URL;
/**
*
* api
* @author xiejs
* @since 2022-02-24
*/
@FeignClient(name = "baiduAssociation", url = BAIDU_ASSOCIATION_URL, fallbackFactory = BaiduAssociationFeignFactory.class)
public interface BaiduAssociationFeignClient {
@GetMapping
@ApiLog(name = BAIDU_ASSOCIATION,
url = BAIDU_ASSOCIATION_URL,
method = "Get")
String associationApi(@RequestParam("wd") String wd);
}

@ -10,9 +10,9 @@ import org.springframework.web.bind.annotation.PostMapping;
import static com.xjs.consts.ApiConst.*; import static com.xjs.consts.ApiConst.*;
/** /**
* api
* @author xiejs * @author xiejs
* @desc api * @since 2021-12-25
* @create 2021-12-25
*/ */
@FeignClient(name = "baidu", url = BAIDU_FY_URL, fallbackFactory = BaiduTranslationFeignFactory.class) @FeignClient(name = "baidu", url = BAIDU_FY_URL, fallbackFactory = BaiduTranslationFeignFactory.class)
public interface BaiduTranslationFeignClient { public interface BaiduTranslationFeignClient {

@ -0,0 +1,21 @@
package com.xjs.common.client.factory;
import com.xjs.common.client.api.baidu.BaiduAssociationFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* @author xiejs
* @since 2022-02-24
*/
@Component
@Log4j2
public class BaiduAssociationFeignFactory implements FallbackFactory<BaiduAssociationFeignClient> {
@Override
public BaiduAssociationFeignClient create(Throwable cause) {
log.error("百度联想服务调用失败:{},执行降级处理", cause.getMessage());
return (wd ->"");
}
}

@ -9,6 +9,7 @@ import com.xjs.annotation.ApiLog;
import com.xjs.business.warning.RemoteWarningCRUDFeign; import com.xjs.business.warning.RemoteWarningCRUDFeign;
import com.xjs.business.warning.domain.ApiRecord; import com.xjs.business.warning.domain.ApiRecord;
import com.xjs.common.client.api.alapi.AlapiJokeAllFeignClient; import com.xjs.common.client.api.alapi.AlapiJokeAllFeignClient;
import com.xjs.common.client.api.baidu.BaiduAssociationFeignClient;
import com.xjs.common.client.api.baidu.BaiduTranslationFeignClient; import com.xjs.common.client.api.baidu.BaiduTranslationFeignClient;
import com.xjs.common.client.api.gaode.GaodeWeatherFeignClient; import com.xjs.common.client.api.gaode.GaodeWeatherFeignClient;
import com.xjs.common.client.api.lq.LqAWordFeignClient; import com.xjs.common.client.api.lq.LqAWordFeignClient;
@ -150,6 +151,8 @@ public class CheckApiStatusTask {
private TianXingWYYFeignClient tianXingWYYFeignClient; private TianXingWYYFeignClient tianXingWYYFeignClient;
@Autowired @Autowired
private YouDaoFeignClient youDaoFeignClient; private YouDaoFeignClient youDaoFeignClient;
@Autowired
private BaiduAssociationFeignClient baiduAssociationFeignClient;
/** /**
* api <br> * api <br>
@ -350,6 +353,12 @@ public class CheckApiStatusTask {
}; };
new Thread(runCheckYouDaoTranslation).start(); new Thread(runCheckYouDaoTranslation).start();
Runnable runCheckBaiduAssociation = () -> {
log.info("线程启动:" + Thread.currentThread().getName());
this.checkBaiduAssociation();
};
new Thread(runCheckBaiduAssociation).start();
//this.checkAlapiJoke(); //this.checkAlapiJoke();
//this.checkBaiduTranslation(); //this.checkBaiduTranslation();
//this.checkGaodeWeather(); //this.checkGaodeWeather();
@ -382,6 +391,7 @@ public class CheckApiStatusTask {
//this.checkTianXingWXRS(); //this.checkTianXingWXRS();
//this.checkTianXingWYY(); //this.checkTianXingWYY();
//this.checkYouDaoTranslation(); //this.checkYouDaoTranslation();
//this.checkBaiduAssociation();
} catch (Exception e) { } catch (Exception e) {
@ -393,6 +403,21 @@ public class CheckApiStatusTask {
} }
/**
* API
*/
private void checkBaiduAssociation() {
String data = baiduAssociationFeignClient.associationApi(content);
if (!StringUtils.isEmpty(data)) {
return;
}
String[] info = this.getAnnotationInfo(BaiduAssociationFeignClient.class).get(0);
this.selectAndUpdate(info);
log.error("检查发现百度平台 联想API异常");
}
/** /**
* API * API
*/ */

@ -28,9 +28,9 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
/** /**
* controller
* @author xiejs * @author xiejs
* @desc * @since 2021-12-27
* @create 2021-12-27
*/ */
@RestController @RestController
@RequestMapping("copyWriting") @RequestMapping("copyWriting")

@ -0,0 +1,30 @@
package com.xjs.ai.factory.impl;
import com.xjs.XjsOpenApiApp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author xiejs
* @since 2022-02-24
*/
@SpringBootTest(classes = XjsOpenApiApp.class)
class BaiduAssociationFactoryTest {
@Autowired
BaiduAssociationFactory baiduAssociationFactory;
@Test
void getData() {
List<String> xx = baiduAssociationFactory.getData("哈哈");
for (String s : xx) {
System.out.println(s);
}
}
}
Loading…
Cancel
Save