说明:1、预警服务实现对外远程调用添加修改接口

2、实现预警服务消费者接口
     3、预警服务引入业务公共依赖
pull/254/head
xjs 4 years ago
parent 70c373401e
commit f53394410b

@ -0,0 +1,30 @@
package com.xjs.business.warning;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.xjs.business.warning.domain.ApiRecord;
import com.xjs.business.warning.factory.RemoteWarningCRUDFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author xiejs
* @desc rpccrud
* @create 2021-12-31
*/
@FeignClient(contextId = "remoteWarningCRUDFeign",
value = ServiceNameConstants.BUSINESS_WARNING_SERVICE,
fallbackFactory = RemoteWarningCRUDFactory.class)
public interface RemoteWarningCRUDFeign {
@PostMapping
public R<ApiRecord> saveApiRecord(@RequestBody ApiRecord apiRecord);
@PutMapping
public R<ApiRecord> updateApiRecord(@RequestBody ApiRecord apiRecord);
}

@ -0,0 +1,89 @@
package com.xjs.business.warning.domain;
import java.io.Serializable;
import java.util.Date;
/**
* @author xiejs
* @desc api
* @create 2021-12-31
*/
public class ApiRecord implements Serializable {
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** api名称 */
private String apiName;
/** api地址 */
private String apiUrl;
/** api总请求次数 */
private Long totalCount;
/** api限制请求次数每天 */
private Long limitCount;
private Date createTime;
private Date updateTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getApiName() {
return apiName;
}
public void setApiName(String apiName) {
this.apiName = apiName;
}
public String getApiUrl() {
return apiUrl;
}
public void setApiUrl(String apiUrl) {
this.apiUrl = apiUrl;
}
public Long getTotalCount() {
return totalCount;
}
public void setTotalCount(Long totalCount) {
this.totalCount = totalCount;
}
public Long getLimitCount() {
return limitCount;
}
public void setLimitCount(Long limitCount) {
this.limitCount = limitCount;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

@ -0,0 +1,37 @@
package com.xjs.business.warning.factory;
import com.ruoyi.common.core.domain.R;
import com.xjs.business.warning.RemoteWarningCRUDFeign;
import com.xjs.business.warning.domain.ApiRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* @author xiejs
* @desc
* @create 2021-12-31
*/
@Component
public class RemoteWarningCRUDFactory implements FallbackFactory<RemoteWarningCRUDFeign> {
private static final Logger log = LoggerFactory.getLogger(RemoteWarningCRUDFactory.class);
@Override
public RemoteWarningCRUDFeign create(Throwable cause) {
return new RemoteWarningCRUDFeign() {
@Override
public R<ApiRecord> saveApiRecord(ApiRecord apiRecord) {
log.error("调用预警服务添加接口失败----"+apiRecord.getApiName());
return R.fail();
}
@Override
public R<ApiRecord> updateApiRecord(ApiRecord apiRecord) {
log.error("调用预警服务修改接口失败----"+apiRecord.getApiName());
return R.fail();
}
};
}
}

@ -26,4 +26,13 @@ public class ServiceNameConstants
* apiserviceid
*/
public static final String BUSINESS_OPENAPI_SERVICE= "xjs-openapi" ;
/**
* serviceid
*/
public static final String BUSINESS_WARNING_SERVICE= "xjs-warning" ;
}

@ -1,12 +1,14 @@
package com.xjs.common.aop;
import cn.hutool.core.date.DateUtil;
import com.xjs.business.warning.RemoteWarningCRUDFeign;
import com.xjs.enums.StatusEnum;
import com.xjs.log.mapper.ApiLogMapper;
import lombok.extern.log4j.Log4j2;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -27,6 +29,10 @@ public class ApiLogAspect {
@Resource
private ApiLogMapper apiLogMapper;
//用来调用预警,记录预警信息
@Autowired
private RemoteWarningCRUDFeign remoteWarningCRUDFeign;
/**
* AOP
*/
@ -45,6 +51,17 @@ public class ApiLogAspect {
LocalDateTime localDateTime2 = DateUtil.date().toLocalDateTime();
long between = ChronoUnit.MILLIS.between(localDateTime1, localDateTime2);
log.info("调用接口耗费时间:{}ms", between);
//执行预警切入逻辑
return obj;
} catch (Throwable e) {
e.printStackTrace();

@ -17,4 +17,12 @@
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.xjs</groupId>
<artifactId>xjs-business-common</artifactId>
<version>3.3.0</version>
</dependency>
</dependencies>
</project>

@ -0,0 +1,37 @@
package com.xjs.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.xjs.domain.ApiRecord;
import com.xjs.service.ApiWarningService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author xiejs
* @desc api
* @create 2021-12-31
*/
@RestController
@RequestMapping("apiwarning")
public class ApiWarningController extends BaseController {
@Autowired
private ApiWarningService apiWarningService;
/**
* apiRecord
* @param apiRecord api
* @return apiRecord
*/
@PostMapping
public R<ApiRecord> saveApiRecord(@RequestBody ApiRecord apiRecord) {
return apiWarningService.saveApiRecord(apiRecord) ? R.ok() : R.fail();
}
@PutMapping
public R<ApiRecord> updateApiRecord(@RequestBody ApiRecord apiRecord) {
return apiWarningService.updateApiRecord(apiRecord)? R.ok() : R.fail();
}
}

@ -11,7 +11,7 @@ import java.util.Date;
/**
* @author xiejs
* @desc api
* @desc api
* @create 2021-12-31
*/
@TableName("api_record")
@ -20,30 +20,46 @@ public class ApiRecord implements Serializable {
private static final long serialVersionUID = 1L;
/** 主键id */
/**
* id
*/
private Long id;
/** api名称 */
/**
* api
*/
@Excel(name = "api名称")
private String apiName;
/** api地址 */
/**
* api
*/
@Excel(name = "api地址")
private String apiUrl;
/** api总请求次数 */
/**
*
*/
@Excel(name = "请求耗费时间")
private Integer requestTime;
/**
* api
*/
@Excel(name = "api总请求次数")
private Long totalCount;
/** api限制请求次数每天 */
/**
* api
*/
@Excel(name = "api限制请求次数每天")
private Long limitCount;
@Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@Excel(name = "修改时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "修改时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

@ -0,0 +1,26 @@
package com.xjs.service;
import com.xjs.domain.ApiRecord;
/**
* @author xiejs
* @desc
* @create 2021-12-31
*/
public interface ApiWarningService {
/**
* apirecord api
* @param apiRecord apiRecord
* @return apiRecord
*/
Boolean saveApiRecord(ApiRecord apiRecord);
/**
* urlapi
* @param apiRecord apiRecord
* @return apiRecord
*/
boolean updateApiRecord(ApiRecord apiRecord);
}

@ -0,0 +1,45 @@
package com.xjs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xjs.domain.ApiRecord;
import com.xjs.exception.BusinessException;
import com.xjs.mapper.ApiRecordMapper;
import com.xjs.service.ApiWarningService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
* @author xiejs
* @desc apiservice
* @create 2021-12-31
*/
@Service
public class ApiWarningServiceImpl implements ApiWarningService {
@Resource
private ApiRecordMapper apiRecordMapper;
@Override
public Boolean saveApiRecord(ApiRecord apiRecord) {
ApiRecord apiName = apiRecordMapper
.selectOne(new QueryWrapper<ApiRecord>()
.eq("api_name", apiRecord.getApiName()));
if (Objects.nonNull(apiName)) {
throw new BusinessException("数据库存在相同url名称保存失败---" + apiRecord.getApiUrl());
} else {
apiRecordMapper.insert(apiRecord);
return true;
}
}
@Override
public boolean updateApiRecord(ApiRecord apiRecord) {
int name = apiRecordMapper.update(apiRecord, new QueryWrapper<ApiRecord>()
.eq("api_name", apiRecord.getApiName()));
return name == 1;
}
}
Loading…
Cancel
Save