说明:1、优化业务模块相关代码位置

2、天行英语一言对外接口实现
pull/254/head
xjs 4 years ago
parent 31c4ecd5c0
commit 08db46f3ca

@ -23,6 +23,8 @@ public class ApiConst {
public static final String TIANXING_TRAN_DICT= "天行-翻译字典";
public static final String TIANXING_ONE_ENGLISH= "天行-英语一言";
public static final String TEN_YY= "Ten-一言";
@ -44,6 +46,8 @@ public class ApiConst {
public static final String TIANXING_TRAN_DICT_URL= "http://api.tianapi.com/enwords/index";
public static final String TIANXING_ONE_ENGLISH_URL= "http://api.tianapi.com/ensentence/index";
public static final String TEN_YY_URL= "https://tenapi.cn/yiyan/";

@ -1,4 +1,4 @@
package com.xjs.aop;
package com.xjs.common.aop;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;

@ -1,7 +1,7 @@
package com.xjs.aop;
package com.xjs.common.aop;
import cn.hutool.core.date.DateUtil;
import com.xjs.common.enums.StatusEnum;
import com.xjs.enums.StatusEnum;
import com.xjs.log.mapper.ApiLogMapper;
import lombok.extern.log4j.Log4j2;
import org.aspectj.lang.JoinPoint;
@ -30,7 +30,7 @@ public class ApiLogAspect {
/**
* AOP
*/
@Pointcut("@annotation(com.xjs.aop.ApiLog)")
@Pointcut("@annotation(com.xjs.common.aop.ApiLog)")
public void pointcut() {
}

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.BaiduFeignFactory;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.BaiduFeignFactory;
import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.TianXingJDTCFeignFactory;
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;

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.TianXingMMMYFeignFactory;
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;

@ -0,0 +1,27 @@
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.TianXingOneEnglishFeignFactory;
import com.xjs.oneenglish.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.consts.ApiConst.TIANXING_ONE_ENGLISH;
import static com.xjs.consts.ApiConst.TIANXING_ONE_ENGLISH_URL;
/**
* @author xiejs
* @desc api
* @create 2021-12-31
*/
@FeignClient(name = "tianXingOneEnglish",url = TIANXING_ONE_ENGLISH_URL,fallbackFactory = TianXingOneEnglishFeignFactory.class)
public interface TianXingOneEnglishFeignClient {
@GetMapping
@ApiLog(name = TIANXING_ONE_ENGLISH,
url = TIANXING_ONE_ENGLISH_URL,
method = "Get")
JSONObject oneEnglishApi(@SpringQueryMap RequestBody requestBody);
}

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.TianXingPYQFeignFactory;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.TianXingPYQFeignFactory;
import com.xjs.copywriting.domain.RequestBody;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.TianXingTranDictFeignFactory;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.TianXingTranDictFeignFactory;
import com.xjs.copywriting.domain.RequestBody;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.TianXingWYYFeignFactory;
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;

@ -1,8 +1,8 @@
package com.xjs.client;
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.aop.ApiLog;
import com.xjs.client.factory.YouDaoFeignFactory;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.YouDaoFeignFactory;
import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;

@ -1,7 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.BaiduFeignClient;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.BaiduFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@ -19,8 +20,7 @@ public class BaiduFeignFactory implements FallbackFactory<BaiduFeignClient> {
log.error("api模块百度翻译服务调用失败:{},执行降级处理", cause.getMessage());
return qo -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}

@ -1,7 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingJDTCFeignClient;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.TianXingJDTCFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@ -21,7 +22,7 @@ public class TianXingJDTCFeignFactory implements FallbackFactory<TianXingJDTCFei
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}

@ -1,7 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingMMMYFeignClient;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.TianXingMMMYFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@ -21,7 +22,7 @@ public class TianXingMMMYFeignFactory implements FallbackFactory<TianXingMMMYFei
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}

@ -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.TianXingOneEnglishFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* @author xiejs
* @desc
* @create 2021-12-31
*/
@Component
@Log4j2
public class TianXingOneEnglishFeignFactory implements FallbackFactory<TianXingOneEnglishFeignClient> {
@Override
public TianXingOneEnglishFeignClient create(Throwable cause) {
log.error("api模块英语一言服务调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> {
JSONObject jsonObject = new JSONObject();
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}
}

@ -1,7 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingPYQFeignClient;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.TianXingPYQFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@ -20,7 +21,7 @@ public class TianXingPYQFeignFactory implements FallbackFactory<TianXingPYQFeign
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}

@ -1,8 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.R;
import com.xjs.client.TianXingTranDictClient;
import com.xjs.common.client.TianXingTranDictClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

@ -1,7 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingWYYFeignClient;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.TianXingWYYFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@ -20,7 +21,7 @@ public class TianXingWYYFeignFactory implements FallbackFactory<TianXingWYYFeign
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
jsonObject.put("error", R.FAIL);
return jsonObject;
};
}

@ -1,8 +1,8 @@
package com.xjs.client.factory;
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.R;
import com.xjs.client.YouDaoFeignClient;
import com.xjs.common.client.YouDaoFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

@ -3,7 +3,7 @@ package com.xjs.copywriting.factory.impl;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingJDTCFeignClient;
import com.xjs.common.client.TianXingJDTCFeignClient;
import com.xjs.config.TianXingProperties;
import com.xjs.consts.TianXingConst;
import com.xjs.exception.ApiException;

@ -3,7 +3,7 @@ package com.xjs.copywriting.factory.impl;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingMMMYFeignClient;
import com.xjs.common.client.TianXingMMMYFeignClient;
import com.xjs.config.TianXingProperties;
import com.xjs.consts.TianXingConst;
import com.xjs.exception.ApiException;

@ -3,7 +3,7 @@ package com.xjs.copywriting.factory.impl;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingPYQFeignClient;
import com.xjs.common.client.TianXingPYQFeignClient;
import com.xjs.config.TianXingProperties;
import com.xjs.consts.TianXingConst;
import com.xjs.exception.ApiException;

@ -3,7 +3,7 @@ package com.xjs.copywriting.factory.impl;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingWYYFeignClient;
import com.xjs.common.client.TianXingWYYFeignClient;
import com.xjs.config.TianXingProperties;
import com.xjs.consts.TianXingConst;
import com.xjs.exception.ApiException;

@ -8,6 +8,8 @@ import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.xjs.oneenglish.domain.ApiEnglish;
import com.xjs.oneenglish.domain.RequestBody;
import com.xjs.oneenglish.factory.OneEnglishFactory;
import com.xjs.oneenglish.service.IApiEnglishService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -26,6 +28,15 @@ import java.util.List;
public class ApiEnglishController extends BaseController {
@Autowired
private IApiEnglishService apiEnglishService;
@Autowired
private OneEnglishFactory tianXingOneEnglishFactory;
@RequiresPermissions("openapi:oneenglish:list")
@GetMapping("/getOneEnglish")
public AjaxResult getOneEnglish() {
ApiEnglish oneEnglish = tianXingOneEnglishFactory.getOneEnglish(new RequestBody());
return AjaxResult.success(oneEnglish);
}
//------------------------代码自动生成-----------------------------------

@ -1,19 +1,52 @@
package com.xjs.oneenglish.factory;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.client.TianXingOneEnglishFeignClient;
import com.xjs.config.TianXingProperties;
import com.xjs.exception.ApiException;
import com.xjs.oneenglish.domain.ApiEnglish;
import com.xjs.oneenglish.domain.RequestBody;
import com.xjs.oneenglish.mapper.ApiEnglishMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @author xiejs
* @desc
* @create 2021-12-31
*/
@Component
public class TianXingOneEnglishFactory implements OneEnglishFactory{
public class TianXingOneEnglishFactory implements OneEnglishFactory {
@Resource
private ApiEnglishMapper apiEnglishMapper;
@Autowired
private TianXingProperties tianXingProperties;
@Autowired
private TianXingOneEnglishFeignClient tianXingOneEnglishFeignClient;
@Override
public ApiEnglish getOneEnglish(RequestBody requestBody) {
return null;
requestBody.setKey(tianXingProperties.getKey());
JSONObject jsonObject = tianXingOneEnglishFeignClient.oneEnglishApi(requestBody);
ApiEnglish apiEnglish = new ApiEnglish();
if (!jsonObject.containsKey("error")) {
if (jsonObject.getInteger("code") == HttpStatus.HTTP_OK) {
JSONArray newslist = jsonObject.getJSONArray("newslist");
JSONObject content = newslist.getJSONObject(0);
apiEnglish.setEn(content.getString("en"));
apiEnglish.setZh(content.getString("zh"));
apiEnglishMapper.insert(apiEnglish);
}else {
throw new ApiException("英语一言接口调用成功,但内部错误");
}
} else {
throw new ApiException("英语一言接口降级!!!");
}
return apiEnglish;
}
}

@ -1,5 +1,6 @@
package com.xjs.oneenglish.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjs.oneenglish.domain.ApiEnglish;
import java.util.List;
@ -10,7 +11,7 @@ import java.util.List;
* @author xjs
* @date 2021-12-31
*/
public interface ApiEnglishMapper {
public interface ApiEnglishMapper extends BaseMapper<ApiEnglish> {
//------------------------代码自动生成-----------------------------------

@ -3,7 +3,7 @@ package com.xjs.translation.factory.impl;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.BaiduFeignClient;
import com.xjs.common.client.BaiduFeignClient;
import com.xjs.config.BaiduProperties;
import com.xjs.exception.ApiException;
import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;

@ -3,7 +3,7 @@ package com.xjs.translation.factory.impl;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.TianXingTranDictClient;
import com.xjs.common.client.TianXingTranDictClient;
import com.xjs.config.TianXingProperties;
import com.xjs.copywriting.domain.RequestBody;
import com.xjs.exception.ApiException;

@ -2,7 +2,7 @@ package com.xjs.translation.factory.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.client.YouDaoFeignClient;
import com.xjs.common.client.YouDaoFeignClient;
import com.xjs.exception.ApiException;
import com.xjs.translation.domain.qo.translation.TranslationQo;
import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo;

@ -0,0 +1,34 @@
package com.xjs.oneenglish.factory;
import com.xjs.XjsOpenApiApp;
import com.xjs.config.TianXingProperties;
import com.xjs.oneenglish.domain.ApiEnglish;
import com.xjs.oneenglish.domain.RequestBody;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author xiejs
* @desc
* @create 2021-12-31
*/
@SpringBootTest(classes = XjsOpenApiApp.class)
class TianXingOneEnglishFactoryTest {
@Autowired
TianXingOneEnglishFactory tianXingOneEnglishFactory;
@Autowired
TianXingProperties tianXingProperties;
@Test
void getOneEnglish() {
RequestBody requestBody = new RequestBody();
requestBody.setKey(tianXingProperties.getKey());
ApiEnglish oneEnglish = tianXingOneEnglishFactory.getOneEnglish(requestBody);
System.out.println(oneEnglish);
}
}
Loading…
Cancel
Save