parent
50fec9a891
commit
b6be46b880
@ -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);
|
||||
}
|
@ -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,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> {
|
||||
}
|
@ -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…
Reference in new issue