parent
e2c9304441
commit
5d643953ec
@ -0,0 +1,17 @@
|
||||
package com.xjs.aword.controller;
|
||||
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* api每日一句控制器
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
@RequestMapping("aword")
|
||||
@RestController
|
||||
@Api(tags = "业务模块-每日一句")
|
||||
public class ApiAWordController extends BaseController {
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package com.xjs.aword.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 lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* api天行每日一句实体类
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
@Data
|
||||
@TableName("api_a_word")
|
||||
@Accessors(chain = true)
|
||||
public class ApiAWord implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/** 数据id */
|
||||
@Excel(name = "数据id")
|
||||
private Long dataId;
|
||||
|
||||
/** 句子内容 */
|
||||
@Excel(name = "句子内容")
|
||||
private String content;
|
||||
|
||||
/** 来源 */
|
||||
@Excel(name = "来源")
|
||||
private String source;
|
||||
|
||||
/** 释义 */
|
||||
@Excel(name = "释义")
|
||||
private String note;
|
||||
|
||||
/** 音频地址 */
|
||||
@Excel(name = "音频地址")
|
||||
private String tts;
|
||||
|
||||
/** 分享图片地址 */
|
||||
@Excel(name = "分享图片地址")
|
||||
private String imgurl;
|
||||
|
||||
/** 该句子产生时间 */
|
||||
@Excel(name = "该句子产生时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date date;
|
||||
|
||||
/** 创建时间 */
|
||||
@Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.xjs.aword.factory;
|
||||
|
||||
import com.xjs.aword.domain.ApiAWord;
|
||||
import com.xjs.aword.domain.RequestBody;
|
||||
|
||||
/**
|
||||
* 每日一句工厂接口类
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
public interface AWordFactory {
|
||||
|
||||
/**
|
||||
* 调用每日一句接口生产数据
|
||||
* @param requestBody 请求参数
|
||||
* @return ApiAWord
|
||||
*/
|
||||
ApiAWord productApiAWord(RequestBody requestBody);
|
||||
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.xjs.aword.factory.impl;
|
||||
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xjs.aword.domain.ApiAWord;
|
||||
import com.xjs.aword.domain.RequestBody;
|
||||
import com.xjs.aword.factory.AWordFactory;
|
||||
import com.xjs.aword.mapper.ApiAWordMapper;
|
||||
import com.xjs.common.client.TianXingMMYJFeignClient;
|
||||
import com.xjs.config.TianXingProperties;
|
||||
import com.xjs.exception.ApiException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 天行数据平台每日一句工厂实现
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
@Component
|
||||
public class TianXingAWordFactory implements AWordFactory {
|
||||
@Autowired
|
||||
private TianXingProperties tianXingProperties;
|
||||
@Autowired
|
||||
private TianXingMMYJFeignClient tianXingMMYJFeignClient;
|
||||
@Resource
|
||||
private ApiAWordMapper apiAWordMapper;
|
||||
|
||||
@Override
|
||||
public ApiAWord productApiAWord(RequestBody requestBody) {
|
||||
requestBody.setRand(1);
|
||||
requestBody.setKey(tianXingProperties.getKey());
|
||||
JSONObject jsonObject = tianXingMMYJFeignClient.aWordApi(requestBody);
|
||||
if (jsonObject.containsKey("error")) {
|
||||
throw new ApiException("天行每日一句接口调用异常");
|
||||
}
|
||||
if (HttpStatus.HTTP_OK == jsonObject.getInteger("code")) {
|
||||
JSONArray newslist = jsonObject.getJSONArray("newslist");
|
||||
JSONObject newslistJSONObject = newslist.getJSONObject(0);
|
||||
ApiAWord apiAWord = new ApiAWord();
|
||||
apiAWord.setContent(newslistJSONObject.getString("content"))
|
||||
.setDataId(newslistJSONObject.getLong("id"))
|
||||
.setSource(newslistJSONObject.getString("source"))
|
||||
.setDate(newslistJSONObject.getDate("date"))
|
||||
.setImgurl(newslistJSONObject.getString("imgurl"))
|
||||
.setNote(newslistJSONObject.getString("note"))
|
||||
.setTts(newslistJSONObject.getString("tts"));
|
||||
apiAWordMapper.insert(apiAWord);
|
||||
return apiAWord;
|
||||
}else {
|
||||
return new ApiAWord();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.xjs.aword.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xjs.aword.domain.ApiAWord;
|
||||
|
||||
/**
|
||||
* mapper
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
public interface ApiAWordMapper extends BaseMapper<ApiAWord> {
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.xjs.common.client;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xjs.aword.domain.RequestBody;
|
||||
import com.xjs.common.aop.ApiLog;
|
||||
import com.xjs.common.client.factory.TianXingMMYJFeignFactory;
|
||||
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_A_WORD;
|
||||
import static com.xjs.consts.ApiConst.TIANXING_A_WORD_URL;
|
||||
|
||||
/**
|
||||
* 天行每日一句feign远程api调用
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
@FeignClient(name = "tianXingMMYJ", url = TIANXING_A_WORD_URL, fallbackFactory = TianXingMMYJFeignFactory.class)
|
||||
public interface TianXingMMYJFeignClient {
|
||||
|
||||
|
||||
@GetMapping
|
||||
@ApiLog(name = TIANXING_A_WORD,
|
||||
url = TIANXING_A_WORD_URL,
|
||||
method = "Get")
|
||||
JSONObject aWordApi(@SpringQueryMap RequestBody requestBody);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.xjs.common.client.factory;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.xjs.common.client.TianXingMMYJFeignClient;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-01-08
|
||||
*/
|
||||
@Component
|
||||
@Log4j2
|
||||
public class TianXingMMYJFeignFactory implements FallbackFactory<TianXingMMYJFeignClient> {
|
||||
|
||||
@Override
|
||||
public TianXingMMYJFeignClient create(Throwable cause) {
|
||||
log.error("api模块天行每日一句服务调用失败:{},执行降级处理", cause.getMessage());
|
||||
return requestBody -> {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("error", R.FAIL);
|
||||
return jsonObject;
|
||||
};
|
||||
}
|
||||
}
|
Loading…
Reference in new issue