1、实现天行数据朋友圈文案接口
2、待实现前端
3、待实现文案数据定时任务存入数据库
pull/254/head
xjs 4 years ago
parent 50fec9a891
commit b6be46b880

@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping;
/**
* @author xiejs
* @desc
* @desc api
* @create 2021-12-25
*/
@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?")

@ -0,0 +1,23 @@
package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.aop.ApiLog;
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-27
*/
@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index")
public interface TianXingFeignClient {
@GetMapping
@ApiLog(name = "tianXing",
url = "http://api.tianapi.com/pyqwenan/index",
method = "Get")
JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody);
}

@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping;
/**
* @author xiejs
* @desc
* @desc api
* @create 2021-12-25
*/
@FeignClient(name = "youdao",url = "http://fanyi.youdao.com/translate?")

@ -0,0 +1,24 @@
package com.xjs.common.exception;
import lombok.extern.log4j.Log4j2;
/**
* @author xiejs
* @desc
* @create 2021-12-27
*/
@Log4j2
public class ApiException extends RuntimeException{
public ApiException() {
super();
}
public ApiException(String message) {
super(message);
log.error("调用第三方API异常----{}",message);
}
public ApiException(String message, Throwable cause) {
super(message, cause);
}
}

@ -0,0 +1,17 @@
package com.xjs.common.job;
import com.xjs.copywriting.factory.CopyWritingFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author xiejs
* @desc
* @create 2021-12-27
*/
@Component
public class CopyWritingJob {
@Autowired
private CopyWritingFactory tianXingcopyWritingFactory;
}

@ -0,0 +1,51 @@
package com.xjs.copywriting;
import cn.hutool.core.util.RandomUtil;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.security.annotation.RequiresLogin;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.xjs.copywriting.domain.CopyWriting;
import com.xjs.copywriting.domain.RequestBody;
import com.xjs.copywriting.factory.CopyWritingFactory;
import com.xjs.translation.domain.qo.translation.TranslationQo;
import com.xjs.translation.domain.vo.translation.TranslationVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Optional;
/**
* @author xiejs
* @desc
* @create 2021-12-27
*/
@RestController
@RequestMapping("copyWriting")
@Api(tags = "业务模块-文案管理")
public class CopyWritingController {
@Autowired
private CopyWritingFactory tianXingcopyWritingFactory;
@GetMapping
@ApiOperation("文案接口")
@Log(title = "文案管理")
@RequiresLogin
@RequiresPermissions("english:translation:api")
public AjaxResult translation(@Validated RequestBody requestBody) {
requestBody = Optional.ofNullable(requestBody).orElseGet(RequestBody::new);
ArrayList<CopyWritingFactory> factories = new ArrayList<>();
//添加了新接口只需要在这add接口进去
factories.add(tianXingcopyWritingFactory);
//随机调用集合中的接口
CopyWritingFactory copyWritingFactory = RandomUtil.randomEle(factories);
CopyWriting copyWriting = copyWritingFactory.productCopyWriting(requestBody);
return AjaxResult.success(copyWriting);
}
}

@ -0,0 +1,38 @@
package com.xjs.copywriting.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @author xiejs
* @desc
* @create 2021-12-27
*/
@TableName("api_copywriting")
@Data
public class CopyWriting implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long id;
/** 文案内容 */
@Excel(name = "文案内容")
private String content;
/** 文案来源 */
@Excel(name = "文案来源")
private String source;
@Excel(name = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
}

@ -0,0 +1,16 @@
package com.xjs.copywriting.domain;
import lombok.Data;
/**
* @author xiejs
* @desc api
* @create 2021-12-27
*/
@Data
public class RequestBody {
/**
* key
*/
private String key;
}

@ -0,0 +1,21 @@
package com.xjs.copywriting.factory;
import com.xjs.copywriting.domain.CopyWriting;
import com.xjs.copywriting.domain.RequestBody;
/**
* @author xiejs
* @desc factory
* @create 2021-12-27
*/
public interface CopyWritingFactory {
/**
* api
*
* @param requestBody
* @return
*/
CopyWriting productCopyWriting(RequestBody requestBody);
}

@ -0,0 +1,49 @@
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.TianXingFeignClient;
import com.xjs.common.config.TianXingProperties;
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-27
*/
@Service
public class TianXingCopyWritingFactory implements CopyWritingFactory {
@Autowired
private TianXingProperties tianXingProperties;
@Autowired
private TianXingFeignClient tianXingFeignClient;
@Resource
private CopyWritingMapper copyWritingMapper;
@Override
public CopyWriting productCopyWriting(RequestBody requestBody) {
requestBody.setKey(tianXingProperties.getKey());
JSONObject jsonObject = tianXingFeignClient.copyWritingApi(requestBody);
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);
copyWritingMapper.insert(copyWriting);
return copyWriting;
}
}

@ -0,0 +1,12 @@
package com.xjs.copywriting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xjs.copywriting.domain.CopyWriting;
/**
* @author xiejs
* @desc
* @create 2021-12-27
*/
public interface CopyWritingMapper extends BaseMapper<CopyWriting> {
}

@ -1,9 +0,0 @@
package com.xjs.copywriting.service;
/**
* @author xiejs
* @desc factory
* @create 2021-12-27
*/
public interface CopyWritingFactory {
}

@ -5,10 +5,10 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.client.BaiduFeignClient;
import com.xjs.common.config.BaiduProperties;
import com.xjs.common.exception.ApiException;
import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;
import com.xjs.translation.domain.qo.translation.TranslationQo;
import com.xjs.translation.domain.vo.translation.TranslationVo;
import com.xjs.common.exception.BusinessException;
import com.xjs.translation.factory.TranslationFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -42,7 +42,7 @@ public class BaiDuTranslationFactory implements TranslationFactory {
baiDuTranslationQo.setQ(translationQo.getQ());
JSONObject jsonObject = baiduFeignClient.translationApi(baiDuTranslationQo);
if(Objects.nonNull(jsonObject.getString("error_code"))){
throw new BusinessException("百度翻译接口调用异常");
throw new ApiException("百度翻译接口调用异常");
}
TranslationVo translationVo = new TranslationVo();
String from = jsonObject.getString("from");

@ -3,10 +3,10 @@ package com.xjs.translation.factory.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.client.YouDaoFeignClient;
import com.xjs.common.exception.ApiException;
import com.xjs.translation.domain.qo.translation.TranslationQo;
import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo;
import com.xjs.translation.domain.vo.translation.TranslationVo;
import com.xjs.common.exception.BusinessException;
import com.xjs.translation.factory.TranslationFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -32,7 +32,7 @@ public class YouDaoTranslationFactory implements TranslationFactory {
youDaoTranslationQo.setI(translationQo.getQ());
JSONObject translationApi = youDaoFeignClient.translationApi(youDaoTranslationQo);
if(!"0".equals(translationApi.getString("errorCode"))){
throw new BusinessException("有道翻译接口调用异常");
throw new ApiException("有道翻译接口调用异常");
}
String type = translationApi.getString("type");
TranslationVo translationVo = new TranslationVo();

@ -0,0 +1,29 @@
package com.xjs.copywriting.factory.impl;
import com.xjs.XjsEnglishApp;
import com.xjs.copywriting.domain.RequestBody;
import com.xjs.copywriting.factory.CopyWritingFactory;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author xiejs
* @desc
* @create 2021-12-27
*/
@SpringBootTest(classes = XjsEnglishApp.class)
class TianXingCopyWritingFactoryTestJob {
@Autowired
CopyWritingFactory tianXingCopyWritingFactory;
@Test
void productCopyWriting() {
tianXingCopyWritingFactory.productCopyWriting(new RequestBody());
}
}
Loading…
Cancel
Save