说明:1、接入天行数据经典台词接口

pull/254/head
xjs 4 years ago
parent db95cba280
commit 0ec22bd4b3

@ -20,7 +20,7 @@ public class RemoteCopyWritingFactory implements FallbackFactory<RemoteCopyWriti
@Override @Override
public RemoteCopyWritingFeign create(Throwable cause) { public RemoteCopyWritingFeign create(Throwable cause) {
log.error("英语模块文案服务调用失败:{}", cause.getMessage()); log.error("api模块文案服务调用失败:{}", cause.getMessage());
return () -> R.fail("文案服务调用失败" + cause.getMessage()); return () -> R.fail("文案服务调用失败" + cause.getMessage());
} }
} }

@ -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.TianXingJDTCFeignFactory;
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_JDTC;
/**
* @author xiejs
* @desc api
* @create 2021-12-29
*/
@FeignClient(name = "tianXingJDTC",url = "http://api.tianapi.com/dialogue/index?",fallbackFactory = TianXingJDTCFeignFactory.class)
public interface TianXingJDTCFeignClient {
@GetMapping
@ApiLog(name = TIANXING_JDTC,
url = "http://api.tianapi.com/dialogue/index",
method = "Get")
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
}

@ -18,6 +18,7 @@ import static com.xjs.common.consts.ApiConst.TIANXING_WYY;
@FunctionalInterface @FunctionalInterface
@FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",fallbackFactory = TianXingWYYFeignFactory.class) @FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",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 = "http://api.tianapi.com/hotreview/index",

@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
public class BaiduFeignFactory implements FallbackFactory<BaiduFeignClient> { public class BaiduFeignFactory implements FallbackFactory<BaiduFeignClient> {
@Override @Override
public BaiduFeignClient create(Throwable cause) { public BaiduFeignClient create(Throwable cause) {
log.error("英语模块百度翻译服务调用失败:{},执行降级处理", cause.getMessage()); log.error("api模块百度翻译服务调用失败:{},执行降级处理", cause.getMessage());
return qo -> { return qo -> {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理 //构建一个异常json给下层接口处理

@ -0,0 +1,28 @@
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.client.TianXingJDTCFeignClient;
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 TianXingJDTCFeignFactory implements FallbackFactory<TianXingJDTCFeignClient> {
@Override
public TianXingJDTCFeignClient create(Throwable cause) {
log.error("api模块经典台词服务调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
return jsonObject;
};
}
}

@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
public class TianXingPYQFeignFactory implements FallbackFactory<TianXingPYQFeignClient> { public class TianXingPYQFeignFactory implements FallbackFactory<TianXingPYQFeignClient> {
@Override @Override
public TianXingPYQFeignClient create(Throwable cause) { public TianXingPYQFeignClient create(Throwable cause) {
log.error("英语模块网易云热评服务调用失败:{},执行降级处理", cause.getMessage()); log.error("api模块网易云热评服务调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> { return requestBody -> {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理 //构建一个异常json给下层接口处理

@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
public class TianXingWYYFeignFactory implements FallbackFactory<TianXingWYYFeignClient> { public class TianXingWYYFeignFactory implements FallbackFactory<TianXingWYYFeignClient> {
@Override @Override
public TianXingWYYFeignClient create(Throwable cause) { public TianXingWYYFeignClient create(Throwable cause) {
log.error("英语模块朋友圈文案服务调用失败:{},执行降级处理", cause.getMessage()); log.error("api模块朋友圈文案服务调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> { return requestBody -> {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理 //构建一个异常json给下层接口处理

@ -17,7 +17,7 @@ public class YouDaoFeignFactory implements FallbackFactory<YouDaoFeignClient> {
@Override @Override
public YouDaoFeignClient create(Throwable cause) { public YouDaoFeignClient create(Throwable cause) {
log.error("英语模块有道翻译服务调用失败:{},执行降级处理", cause.getMessage()); log.error("api模块有道翻译服务调用失败:{},执行降级处理", cause.getMessage());
return qo -> { return qo -> {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理 //构建一个异常json给下层接口处理

@ -13,4 +13,6 @@ public class ApiConst {
public static final String TIANXING_PYQ= "天行-朋友圈"; public static final String TIANXING_PYQ= "天行-朋友圈";
public static final String TIANXING_WYY= "天行-网易云"; public static final String TIANXING_WYY= "天行-网易云";
public static final String TIANXING_JDTC= "天行-经典台词";
} }

@ -7,6 +7,10 @@ package com.xjs.common.consts;
*/ */
public class TianXingConst { public class TianXingConst {
//朋友圈
public static final Integer PYQ= 1; public static final Integer PYQ= 1;
//网易云
public static final Integer WYY= 2; public static final Integer WYY= 2;
//经典台词
public static final Integer JDTC= 3;
} }

@ -40,6 +40,8 @@ public class CopyWritingController extends BaseController {
@Autowired @Autowired
private CopyWritingFactory tianXingWYYCopyWritingFactory; private CopyWritingFactory tianXingWYYCopyWritingFactory;
@Autowired @Autowired
private CopyWritingFactory tianXingJDTCCopyWritingFactory;
@Autowired
private CopyWritingService copyWritingService; private CopyWritingService copyWritingService;
@ -73,6 +75,7 @@ public class CopyWritingController extends BaseController {
//添加了新接口只需要在这add接口进去 //添加了新接口只需要在这add接口进去
factories.add(tianXingPYQCopyWritingFactory); factories.add(tianXingPYQCopyWritingFactory);
factories.add(tianXingWYYCopyWritingFactory); factories.add(tianXingWYYCopyWritingFactory);
factories.add(tianXingJDTCCopyWritingFactory);
//--------add----------------------------;- //--------add----------------------------;-
//随机调用集合中的接口 //随机调用集合中的接口
return RandomUtil.randomEle(factories); return RandomUtil.randomEle(factories);

@ -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.TianXingJDTCFeignClient;
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 TianXingJDTCCopyWritingFactory implements CopyWritingFactory {
@Autowired
private TianXingProperties tianXingProperties;
@Autowired
private TianXingJDTCFeignClient tianXingJDTCFeignClient;
@Resource
private CopyWritingMapper copyWritingMapper;
@Override
public CopyWriting productCopyWriting(RequestBody requestBody) {
requestBody.setKey(tianXingProperties.getKey());
JSONObject jsonObject = tianXingJDTCFeignClient.copyWritingApi(requestBody);
if(jsonObject.containsKey("code")){
if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) {
throw new ApiException("天行数据朋友圈文案接口调用异常");
}
JSONArray newslist = jsonObject.getJSONArray("newslist");
String dialogue = newslist.getJSONObject(0).getString("dialogue");
String source = newslist.getJSONObject(0).getString("source");
CopyWriting copyWriting = new CopyWriting();
copyWriting.setContent(dialogue);
copyWriting.setSource(source);
copyWriting.setType(TianXingConst.JDTC);
copyWritingMapper.insert(copyWriting);
return copyWriting;
}else {
//调用服务失败的降级之后的处理
if (jsonObject.containsKey("error")) {
return copyWritingMapper.getOneToNew();
}
return new CopyWriting();
}
}
}
Loading…
Cancel
Save