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