说明:1、接入天行数据名人名言接口
This commit is contained in:
parent
0ec22bd4b3
commit
9adad5c1bf
|
|
@ -7,19 +7,19 @@ import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
|
||||||
import static com.xjs.common.consts.ApiConst.BAIDU_FY;
|
import static com.xjs.common.consts.ApiConst.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
* @desc 百度翻译接口api调用
|
* @desc 百度翻译接口api调用
|
||||||
* @create 2021-12-25
|
* @create 2021-12-25
|
||||||
*/
|
*/
|
||||||
@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?",fallbackFactory = BaiduFeignFactory.class)
|
@FeignClient(name = "baidu", url = BAIDU_FY_URL, fallbackFactory = BaiduFeignFactory.class)
|
||||||
public interface BaiduFeignClient {
|
public interface BaiduFeignClient {
|
||||||
|
|
||||||
@PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"})
|
@PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"})
|
||||||
@ApiLog(name = BAIDU_FY,
|
@ApiLog(name = BAIDU_FY,
|
||||||
url = "http://api.fanyi.baidu.com/api/trans/vip/translate",
|
url = BAIDU_FY_URL,
|
||||||
method = "Post")
|
method = "Post")
|
||||||
JSONObject translationApi(BaiDuTranslationQo qo);
|
JSONObject translationApi(BaiDuTranslationQo qo);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,19 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
import static com.xjs.common.consts.ApiConst.TIANXING_JDTC;
|
import static com.xjs.common.consts.ApiConst.TIANXING_JDTC;
|
||||||
|
import static com.xjs.common.consts.ApiConst.TIANXING_JDTC_URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
* @desc 天行数据经典台词接口api调用
|
* @desc 天行数据经典台词接口api调用
|
||||||
* @create 2021-12-29
|
* @create 2021-12-29
|
||||||
*/
|
*/
|
||||||
@FeignClient(name = "tianXingJDTC",url = "http://api.tianapi.com/dialogue/index?",fallbackFactory = TianXingJDTCFeignFactory.class)
|
@FeignClient(name = "tianXingJDTC",url = TIANXING_JDTC_URL,fallbackFactory = TianXingJDTCFeignFactory.class)
|
||||||
public interface TianXingJDTCFeignClient {
|
public interface TianXingJDTCFeignClient {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiLog(name = TIANXING_JDTC,
|
@ApiLog(name = TIANXING_JDTC,
|
||||||
url = "http://api.tianapi.com/dialogue/index",
|
url = TIANXING_JDTC_URL,
|
||||||
method = "Get")
|
method = "Get")
|
||||||
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.xjs.common.client;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.common.aop.ApiLog;
|
||||||
|
import com.xjs.common.client.factory.TianXingMMMYFeignFactory;
|
||||||
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
|
import static com.xjs.common.consts.ApiConst.TIANXING_MMMY;
|
||||||
|
import static com.xjs.common.consts.ApiConst.TIANXING_MMMY_URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc 天行数据名人名言接口api调用
|
||||||
|
* @create 2021-12-29
|
||||||
|
*/
|
||||||
|
@FeignClient(name = "tianXingMMMY",url = TIANXING_MMMY_URL,fallbackFactory = TianXingMMMYFeignFactory.class)
|
||||||
|
public interface TianXingMMMYFeignClient {
|
||||||
|
@GetMapping
|
||||||
|
@ApiLog(name = TIANXING_MMMY,
|
||||||
|
url = TIANXING_MMMY_URL,
|
||||||
|
method = "Get")
|
||||||
|
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
||||||
|
}
|
||||||
|
|
@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
import static com.xjs.common.consts.ApiConst.TIANXING_PYQ;
|
import static com.xjs.common.consts.ApiConst.TIANXING_PYQ;
|
||||||
|
import static com.xjs.common.consts.ApiConst.TIANXING_PYQ_URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
|
|
@ -16,12 +17,12 @@ import static com.xjs.common.consts.ApiConst.TIANXING_PYQ;
|
||||||
* @create 2021-12-27
|
* @create 2021-12-27
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
@FeignClient(name = "tianXingPYQ",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingPYQFeignFactory.class)
|
@FeignClient(name = "tianXingPYQ",url = TIANXING_PYQ_URL,fallbackFactory = TianXingPYQFeignFactory.class)
|
||||||
public interface TianXingPYQFeignClient {
|
public interface TianXingPYQFeignClient {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiLog(name = TIANXING_PYQ,
|
@ApiLog(name = TIANXING_PYQ,
|
||||||
url = "http://api.tianapi.com/pyqwenan/index",
|
url = TIANXING_PYQ_URL,
|
||||||
method = "Get")
|
method = "Get")
|
||||||
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
import static com.xjs.common.consts.ApiConst.TIANXING_WYY;
|
import static com.xjs.common.consts.ApiConst.TIANXING_WYY;
|
||||||
|
import static com.xjs.common.consts.ApiConst.TIANXING_WYY_URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
|
|
@ -16,12 +17,12 @@ import static com.xjs.common.consts.ApiConst.TIANXING_WYY;
|
||||||
* @create 2021-12-28
|
* @create 2021-12-28
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
@FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",fallbackFactory = TianXingWYYFeignFactory.class)
|
@FeignClient(name = "tianXingWYY",url = TIANXING_WYY_URL,fallbackFactory = TianXingWYYFeignFactory.class)
|
||||||
public interface TianXingWYYFeignClient {
|
public interface TianXingWYYFeignClient {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiLog(name = TIANXING_WYY,
|
@ApiLog(name = TIANXING_WYY,
|
||||||
url = "http://api.tianapi.com/hotreview/index",
|
url = TIANXING_WYY_URL,
|
||||||
method = "Get")
|
method = "Get")
|
||||||
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,19 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
import static com.xjs.common.consts.ApiConst.YOUDAO_FY;
|
import static com.xjs.common.consts.ApiConst.YOUDAO_FY;
|
||||||
|
import static com.xjs.common.consts.ApiConst.YOUDAO_FY_URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
* @desc 有道翻译接口api调用
|
* @desc 有道翻译接口api调用
|
||||||
* @create 2021-12-25
|
* @create 2021-12-25
|
||||||
*/
|
*/
|
||||||
@FeignClient(name = "youdao",url = "http://fanyi.youdao.com/translate?",fallbackFactory = YouDaoFeignFactory.class)
|
@FeignClient(name = "youdao",url = YOUDAO_FY_URL,fallbackFactory = YouDaoFeignFactory.class)
|
||||||
public interface YouDaoFeignClient {
|
public interface YouDaoFeignClient {
|
||||||
|
|
||||||
@GetMapping( headers ={ "Accept-Encoding=''"})
|
@GetMapping( headers ={ "Accept-Encoding=''"})
|
||||||
@ApiLog(name = YOUDAO_FY,
|
@ApiLog(name = YOUDAO_FY,
|
||||||
url = "http://fanyi.youdao.com/translate",
|
url = YOUDAO_FY_URL,
|
||||||
method = "Get")
|
method = "Get")
|
||||||
JSONObject translationApi(@SpringQueryMap YouDaoTranslationQo qo);
|
JSONObject translationApi(@SpringQueryMap YouDaoTranslationQo qo);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package com.xjs.common.client.factory;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.common.client.TianXingMMMYFeignClient;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc
|
||||||
|
* @create 2021-12-29
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Log4j2
|
||||||
|
public class TianXingMMMYFeignFactory implements FallbackFactory<TianXingMMMYFeignClient> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TianXingMMMYFeignClient create(Throwable cause) {
|
||||||
|
log.error("api模块名人名言服务调用失败:{},执行降级处理", cause.getMessage());
|
||||||
|
return requestBody -> {
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
//构建一个异常json给下层接口处理
|
||||||
|
jsonObject.put("error", 500);
|
||||||
|
return jsonObject;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,9 @@ package com.xjs.common.consts;
|
||||||
* @create 2021-12-28
|
* @create 2021-12-28
|
||||||
*/
|
*/
|
||||||
public class ApiConst {
|
public class ApiConst {
|
||||||
|
|
||||||
|
//--------------------name------------------------------
|
||||||
|
|
||||||
public static final String YOUDAO_FY= "有道翻译";
|
public static final String YOUDAO_FY= "有道翻译";
|
||||||
|
|
||||||
public static final String BAIDU_FY= "百度翻译";
|
public static final String BAIDU_FY= "百度翻译";
|
||||||
|
|
@ -15,4 +18,22 @@ public class ApiConst {
|
||||||
public static final String TIANXING_WYY= "天行-网易云";
|
public static final String TIANXING_WYY= "天行-网易云";
|
||||||
|
|
||||||
public static final String TIANXING_JDTC= "天行-经典台词";
|
public static final String TIANXING_JDTC= "天行-经典台词";
|
||||||
|
|
||||||
|
public static final String TIANXING_MMMY= "天行-名人名言";
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------url------------------------------
|
||||||
|
|
||||||
|
public static final String BAIDU_FY_URL= "http://api.fanyi.baidu.com/api/trans/vip/translate";
|
||||||
|
|
||||||
|
public static final String YOUDAO_FY_URL= "http://fanyi.youdao.com/translate";
|
||||||
|
|
||||||
|
public static final String TIANXING_PYQ_URL= "http://api.tianapi.com/pyqwenan/index";
|
||||||
|
|
||||||
|
public static final String TIANXING_WYY_URL= "http://api.tianapi.com/hotreview/index";
|
||||||
|
|
||||||
|
public static final String TIANXING_JDTC_URL= "http://api.tianapi.com/dialogue/index";
|
||||||
|
|
||||||
|
public static final String TIANXING_MMMY_URL= "http://api.tianapi.com/mingyan/index";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,6 @@ public class TianXingConst {
|
||||||
public static final Integer WYY= 2;
|
public static final Integer WYY= 2;
|
||||||
//经典台词
|
//经典台词
|
||||||
public static final Integer JDTC= 3;
|
public static final Integer JDTC= 3;
|
||||||
|
//名人名言
|
||||||
|
public static final Integer MMMY= 4;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ public class CopyWritingController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private CopyWritingFactory tianXingJDTCCopyWritingFactory;
|
private CopyWritingFactory tianXingJDTCCopyWritingFactory;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private CopyWritingFactory tianXingMMMYCopyWritingFactory;
|
||||||
|
@Autowired
|
||||||
private CopyWritingService copyWritingService;
|
private CopyWritingService copyWritingService;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -76,6 +78,7 @@ public class CopyWritingController extends BaseController {
|
||||||
factories.add(tianXingPYQCopyWritingFactory);
|
factories.add(tianXingPYQCopyWritingFactory);
|
||||||
factories.add(tianXingWYYCopyWritingFactory);
|
factories.add(tianXingWYYCopyWritingFactory);
|
||||||
factories.add(tianXingJDTCCopyWritingFactory);
|
factories.add(tianXingJDTCCopyWritingFactory);
|
||||||
|
factories.add(tianXingMMMYCopyWritingFactory);
|
||||||
//--------add----------------------------;-
|
//--------add----------------------------;-
|
||||||
//随机调用集合中的接口
|
//随机调用集合中的接口
|
||||||
return RandomUtil.randomEle(factories);
|
return RandomUtil.randomEle(factories);
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,6 @@ public class CopyWriting implements Serializable {
|
||||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
private Date endCreateTime;
|
private Date endCreateTime;
|
||||||
|
|
||||||
@Excel(name = "文案类型" ,readConverterExp = "1=、朋友圈文案2、网易云热评")
|
@Excel(name = "文案类型" ,readConverterExp = "1=朋友圈文案,2=网易云热评,3=经典语句,4=名人名言")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public class TianXingJDTCCopyWritingFactory implements CopyWritingFactory {
|
||||||
JSONObject jsonObject = tianXingJDTCFeignClient.copyWritingApi(requestBody);
|
JSONObject jsonObject = tianXingJDTCFeignClient.copyWritingApi(requestBody);
|
||||||
if(jsonObject.containsKey("code")){
|
if(jsonObject.containsKey("code")){
|
||||||
if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) {
|
if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) {
|
||||||
throw new ApiException("天行数据朋友圈文案接口调用异常");
|
throw new ApiException("天行数据经典台词接口调用异常");
|
||||||
}
|
}
|
||||||
JSONArray newslist = jsonObject.getJSONArray("newslist");
|
JSONArray newslist = jsonObject.getJSONArray("newslist");
|
||||||
String dialogue = newslist.getJSONObject(0).getString("dialogue");
|
String dialogue = newslist.getJSONObject(0).getString("dialogue");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
package com.xjs.copywriting.factory.impl;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpStatus;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.common.client.TianXingMMMYFeignClient;
|
||||||
|
import com.xjs.common.config.TianXingProperties;
|
||||||
|
import com.xjs.common.consts.TianXingConst;
|
||||||
|
import com.xjs.common.exception.ApiException;
|
||||||
|
import com.xjs.copywriting.domain.CopyWriting;
|
||||||
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
|
import com.xjs.copywriting.factory.CopyWritingFactory;
|
||||||
|
import com.xjs.copywriting.mapper.CopyWritingMapper;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc
|
||||||
|
* @create 2021-12-29
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class TianXingMMMYCopyWritingFactory implements CopyWritingFactory {
|
||||||
|
@Autowired
|
||||||
|
private TianXingProperties tianXingProperties;
|
||||||
|
@Autowired
|
||||||
|
private TianXingMMMYFeignClient tianXingMMMYeignClient;
|
||||||
|
@Resource
|
||||||
|
private CopyWritingMapper copyWritingMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CopyWriting productCopyWriting(RequestBody requestBody) {
|
||||||
|
requestBody.setKey(tianXingProperties.getKey());
|
||||||
|
JSONObject jsonObject = tianXingMMMYeignClient.copyWritingApi(requestBody);
|
||||||
|
if(jsonObject.containsKey("code")){
|
||||||
|
if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) {
|
||||||
|
throw new ApiException("天行数据名人名言接口调用异常");
|
||||||
|
}
|
||||||
|
JSONArray newslist = jsonObject.getJSONArray("newslist");
|
||||||
|
String content = newslist.getJSONObject(0).getString("content");
|
||||||
|
String author = newslist.getJSONObject(0).getString("author");
|
||||||
|
CopyWriting copyWriting = new CopyWriting();
|
||||||
|
copyWriting.setContent(content);
|
||||||
|
copyWriting.setSource(author);
|
||||||
|
copyWriting.setType(TianXingConst.MMMY);
|
||||||
|
copyWritingMapper.insert(copyWriting);
|
||||||
|
return copyWriting;
|
||||||
|
}else {
|
||||||
|
//调用服务失败的降级之后的处理
|
||||||
|
if (jsonObject.containsKey("error")) {
|
||||||
|
return copyWritingMapper.getOneToNew();
|
||||||
|
}
|
||||||
|
return new CopyWriting();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue