parent
8e00b924a9
commit
de097be0e9
|
|
@ -2,7 +2,7 @@ package com.xjs.common.client;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.aop.ApiLog;
|
import com.xjs.common.aop.ApiLog;
|
||||||
import com.xjs.common.client.factory.TianXingFeignFactory;
|
import com.xjs.common.client.factory.TianXingPYQFeignFactory;
|
||||||
import com.xjs.copywriting.domain.RequestBody;
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.cloud.openfeign.SpringQueryMap;
|
import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||||
|
|
@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
* @create 2021-12-27
|
* @create 2021-12-27
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingFeignFactory.class)
|
@FeignClient(name = "tianXingPYQ",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingPYQFeignFactory.class)
|
||||||
public interface TianXingFeignClient {
|
public interface TianXingPYQFeignClient {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiLog(name = "tianXing",
|
@ApiLog(name = "tianXing",
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.xjs.common.client;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.common.aop.ApiLog;
|
||||||
|
import com.xjs.common.client.factory.TianXingWYYFeignFactory;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc 天行数据网易云热评接口api调用
|
||||||
|
* @create 2021-12-28
|
||||||
|
*/
|
||||||
|
@FunctionalInterface
|
||||||
|
@FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",fallbackFactory = TianXingWYYFeignFactory.class)
|
||||||
|
public interface TianXingWYYFeignClient {
|
||||||
|
@GetMapping
|
||||||
|
@ApiLog(name = "tianXing",
|
||||||
|
url = "http://api.tianapi.com/hotreview/index",
|
||||||
|
method = "Get")
|
||||||
|
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
|
||||||
|
}
|
||||||
|
|
@ -1,23 +1,22 @@
|
||||||
package com.xjs.common.client.factory;
|
package com.xjs.common.client.factory;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.TianXingFeignClient;
|
import com.xjs.common.client.TianXingPYQFeignClient;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
* @desc 天行数据平台接口降级处理
|
* @desc 天行数据平台朋友圈文案接口降级处理
|
||||||
* @create 2021-12-28
|
* @create 2021-12-28
|
||||||
*/
|
*/
|
||||||
@Log4j2
|
@Log4j2
|
||||||
@Component
|
@Component
|
||||||
public class TianXingFeignFactory implements FallbackFactory<TianXingFeignClient> {
|
public class TianXingPYQFeignFactory implements FallbackFactory<TianXingPYQFeignClient> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TianXingFeignClient create(Throwable cause) {
|
public TianXingPYQFeignClient create(Throwable cause) {
|
||||||
log.error("英语模块文案服务调用失败:{},执行降级处理", cause.getMessage());
|
log.error("英语模块网易云热评服务调用失败:{},执行降级处理", cause.getMessage());
|
||||||
return requestBody -> {
|
return requestBody -> {
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
//构建一个异常json给下层接口处理
|
//构建一个异常json给下层接口处理
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.xjs.common.client.factory;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.common.client.TianXingWYYFeignClient;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc 天行数据平台网易云热评接口降级处理
|
||||||
|
* @create 2021-12-28
|
||||||
|
*/
|
||||||
|
@Log4j2
|
||||||
|
@Component
|
||||||
|
public class TianXingWYYFeignFactory implements FallbackFactory<TianXingWYYFeignClient> {
|
||||||
|
@Override
|
||||||
|
public TianXingWYYFeignClient create(Throwable cause) {
|
||||||
|
log.error("英语模块朋友圈文案服务调用失败:{},执行降级处理", cause.getMessage());
|
||||||
|
return requestBody -> {
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
//构建一个异常json给下层接口处理
|
||||||
|
jsonObject.put("error", 500);
|
||||||
|
return jsonObject;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,9 @@ import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
public enum StatusEnum {
|
public enum StatusEnum {
|
||||||
|
|
||||||
SUCCESS(1,"成功"),
|
SUCCESS(1,"成功"),
|
||||||
ERROR(2,"失败");
|
ERROR(2,"失败"),
|
||||||
|
PYQ(1,"朋友圈文案"),
|
||||||
|
WYY(2,"网易云热评");
|
||||||
|
|
||||||
|
|
||||||
private String desc;
|
private String desc;
|
||||||
|
|
@ -25,6 +27,7 @@ public enum StatusEnum {
|
||||||
this.desc = desc;
|
this.desc = desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return desc;
|
return desc;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,9 @@ import java.util.Optional;
|
||||||
public class CopyWritingController {
|
public class CopyWritingController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private CopyWritingFactory tianXingcopyWritingFactory;
|
private CopyWritingFactory tianXingPYQCopyWritingFactory;
|
||||||
|
@Autowired
|
||||||
|
private CopyWritingFactory tianXingWYYCopyWritingFactory;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CopyWritingService copyWritingService;
|
private CopyWritingService copyWritingService;
|
||||||
|
|
||||||
|
|
@ -70,7 +72,8 @@ public class CopyWritingController {
|
||||||
private CopyWritingFactory randomApi() {
|
private CopyWritingFactory randomApi() {
|
||||||
ArrayList<CopyWritingFactory> factories = new ArrayList<>();
|
ArrayList<CopyWritingFactory> factories = new ArrayList<>();
|
||||||
//添加了新接口只需要在这add接口进去
|
//添加了新接口只需要在这add接口进去
|
||||||
factories.add(tianXingcopyWritingFactory);
|
factories.add(tianXingPYQCopyWritingFactory);
|
||||||
|
factories.add(tianXingWYYCopyWritingFactory);
|
||||||
//--------add----------------------------;-
|
//--------add----------------------------;-
|
||||||
//随机调用集合中的接口
|
//随机调用集合中的接口
|
||||||
return RandomUtil.randomEle(factories);
|
return RandomUtil.randomEle(factories);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.ruoyi.common.core.annotation.Excel;
|
import com.ruoyi.common.core.annotation.Excel;
|
||||||
|
import com.xjs.common.enums.StatusEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -35,4 +36,7 @@ public class CopyWriting implements Serializable {
|
||||||
@Excel(name = "创建时间")
|
@Excel(name = "创建时间")
|
||||||
@TableField(fill = FieldFill.INSERT)
|
@TableField(fill = FieldFill.INSERT)
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
@Excel(name = "文案类型")
|
||||||
|
private StatusEnum type;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,9 @@ package com.xjs.copywriting.factory.impl;
|
||||||
import cn.hutool.http.HttpStatus;
|
import cn.hutool.http.HttpStatus;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.TianXingFeignClient;
|
import com.xjs.common.client.TianXingPYQFeignClient;
|
||||||
import com.xjs.common.config.TianXingProperties;
|
import com.xjs.common.config.TianXingProperties;
|
||||||
|
import com.xjs.common.enums.StatusEnum;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.common.exception.ApiException;
|
||||||
import com.xjs.copywriting.domain.CopyWriting;
|
import com.xjs.copywriting.domain.CopyWriting;
|
||||||
import com.xjs.copywriting.domain.RequestBody;
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
|
|
@ -17,23 +18,23 @@ import javax.annotation.Resource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
* @desc 天行数据平台工厂实现
|
* @desc 天行数据朋友圈文案平台工厂实现
|
||||||
* @create 2021-12-27
|
* @create 2021-12-27
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class TianXingCopyWritingFactory implements CopyWritingFactory {
|
public class TianXingPYQCopyWritingFactory implements CopyWritingFactory {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TianXingProperties tianXingProperties;
|
private TianXingProperties tianXingProperties;
|
||||||
@Autowired
|
@Autowired
|
||||||
private TianXingFeignClient tianXingFeignClient;
|
private TianXingPYQFeignClient tianXingPYQFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
private CopyWritingMapper copyWritingMapper;
|
private CopyWritingMapper copyWritingMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CopyWriting productCopyWriting(RequestBody requestBody) {
|
public CopyWriting productCopyWriting(RequestBody requestBody) {
|
||||||
requestBody.setKey(tianXingProperties.getKey());
|
requestBody.setKey(tianXingProperties.getKey());
|
||||||
JSONObject jsonObject = tianXingFeignClient.copyWritingApi(requestBody);
|
JSONObject jsonObject = tianXingPYQFeignClient.copyWritingApi(requestBody);
|
||||||
//调用服务正常
|
//调用服务正常
|
||||||
if(jsonObject.containsKey("code")){
|
if(jsonObject.containsKey("code")){
|
||||||
if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) {
|
if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) {
|
||||||
|
|
@ -45,6 +46,7 @@ public class TianXingCopyWritingFactory implements CopyWritingFactory {
|
||||||
CopyWriting copyWriting = new CopyWriting();
|
CopyWriting copyWriting = new CopyWriting();
|
||||||
copyWriting.setContent(content);
|
copyWriting.setContent(content);
|
||||||
copyWriting.setSource(source);
|
copyWriting.setSource(source);
|
||||||
|
copyWriting.setType(StatusEnum.PYQ);
|
||||||
copyWritingMapper.insert(copyWriting);
|
copyWritingMapper.insert(copyWriting);
|
||||||
return copyWriting;
|
return copyWriting;
|
||||||
}else {
|
}else {
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
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.TianXingWYYFeignClient;
|
||||||
|
import com.xjs.common.config.TianXingProperties;
|
||||||
|
import com.xjs.common.enums.StatusEnum;
|
||||||
|
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-28
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class TianXingWYYCopyWritingFactory implements CopyWritingFactory {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TianXingProperties tianXingProperties;
|
||||||
|
@Autowired
|
||||||
|
private TianXingWYYFeignClient tianXingWYYFeignClient;
|
||||||
|
@Resource
|
||||||
|
private CopyWritingMapper copyWritingMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CopyWriting productCopyWriting(RequestBody requestBody) {
|
||||||
|
requestBody.setKey(tianXingProperties.getKey());
|
||||||
|
JSONObject jsonObject = tianXingWYYFeignClient.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 source = newslist.getJSONObject(0).getString("source");
|
||||||
|
CopyWriting copyWriting = new CopyWriting();
|
||||||
|
copyWriting.setContent(content);
|
||||||
|
copyWriting.setSource(source);
|
||||||
|
copyWriting.setType(StatusEnum.WYY);
|
||||||
|
copyWritingMapper.insert(copyWriting);
|
||||||
|
return copyWriting;
|
||||||
|
}else {
|
||||||
|
//调用服务失败的降级之后的处理
|
||||||
|
if (jsonObject.containsKey("error")) {
|
||||||
|
return copyWritingMapper.getOneToNew();
|
||||||
|
}
|
||||||
|
return new CopyWriting();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,7 +17,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||||
* @create 2021-12-27
|
* @create 2021-12-27
|
||||||
*/
|
*/
|
||||||
@SpringBootTest(classes = XjsEnglishApp.class)
|
@SpringBootTest(classes = XjsEnglishApp.class)
|
||||||
class TianXingCopyWritingFactoryTestJob {
|
class TianXingPYQCopyWritingFactoryTestJob {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
CopyWritingFactory tianXingCopyWritingFactory;
|
CopyWritingFactory tianXingCopyWritingFactory;
|
||||||
Loading…
Reference in New Issue