diff --git a/ruoyi-ui/src/api/business/warning/apiwarning.js b/ruoyi-ui/src/api/business/warning/apiwarning.js
index 42c2d7f6..063e87ea 100644
--- a/ruoyi-ui/src/api/business/warning/apiwarning.js
+++ b/ruoyi-ui/src/api/business/warning/apiwarning.js
@@ -1,7 +1,7 @@
import request from '@/utils/request'
-// 查询API预警列表
-export function listApiwarning(query) {
+// 查询API预警信息列表
+export function listApiwarningInfo(query) {
return request({
url: '/warning/apiwarning/list',
method: 'get',
@@ -9,16 +9,16 @@ export function listApiwarning(query) {
})
}
-// 查询API预警详细
-export function getApiwarning(id) {
+// 查询API预警详细信息
+export function getApiwarningInfo(id) {
return request({
url: '/warning/apiwarning/' + id,
method: 'get'
})
}
-// 修改API预警
-export function updateApiwarning(data) {
+// 修改API预警信息
+export function updateApiwarningInfo(data) {
return request({
url: '/warning/apiwarning/edit',
method: 'put',
@@ -26,3 +26,12 @@ export function updateApiwarning(data) {
})
}
+
+// 查询API预警列表
+export function listApiwarning(query) {
+ return request({
+ url: '/warning/apiwarning/apiwarnlist',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/ruoyi-ui/src/views/business/warning/apiwarning/index.vue b/ruoyi-ui/src/views/business/warning/apiwarning/index.vue
index dc403f99..a310966c 100644
--- a/ruoyi-ui/src/views/business/warning/apiwarning/index.vue
+++ b/ruoyi-ui/src/views/business/warning/apiwarning/index.vue
@@ -17,18 +17,6 @@
-
- 修改
-
-
导出
-
+
-
-
-
-
-
- {{scope.row.requestTime+"ms"}}
-
-
-
-
-
-
-
+
+
+
- {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}
+
+ {{ scope.row.warningLevel }}
+
+
+ {{ scope.row.warningLevel }}
+
+
+ {{ scope.row.warningLevel }}
+
-
+
+
+
+
-
+
+ {{ scope.row.handle === 1 ? '是' : '否' }}
+
@@ -82,26 +68,14 @@
@pagination="getList"
/>
-
-
-
-
-
-
-
-
-
diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/enums/StatusEnum.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/enums/StatusEnum.java
index c0ff18ab..7a6f33b6 100644
--- a/xjs-business/xjs-business-common/src/main/java/com/xjs/enums/StatusEnum.java
+++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/enums/StatusEnum.java
@@ -11,7 +11,10 @@ import com.fasterxml.jackson.annotation.JsonValue;
public enum StatusEnum {
SUCCESS(1,"成功"),
- ERROR(2,"失败");
+ ERROR(2,"失败"),
+
+ YES(1,"是"),
+ NO(2,"否");
private String desc;
diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java
index e6b851b4..e0671551 100644
--- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java
+++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java
@@ -178,7 +178,8 @@ public class ApiLogAspect {
apiWarning.setApiName(haveApiRecord.getApiName());
apiWarning.setHandle(NO);
apiWarning.setWarningLevel(WarnLevelEnum.NOEMAL.getMessage());
- if(haveApiRecord.getDayCount()>haveApiRecord.getLimitCount()*2){
+ if(haveApiRecord.getDayCount()>haveApiRecord.getLimitCount()*2 &&
+ haveApiRecord.getDayCount() < haveApiRecord.getLimitCount() * 3){
apiWarning.setWarningLevel(WarnLevelEnum.WARNING.getMessage());
} else if (haveApiRecord.getDayCount() > haveApiRecord.getLimitCount() * 3) {
apiWarning.setWarningLevel(WarnLevelEnum.DANGER.getMessage());
@@ -188,6 +189,8 @@ public class ApiLogAspect {
haveApiRecord.getLimitCount(), haveApiRecord.getDayCount());
apiWarning.setWarningMessage(message);
remoteWarningCRUDFeign.saveApiWarningForRPC(apiWarning);
+
+ // todo websocket实现即时推送到客户端
}
}
diff --git a/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/CopyWritingMapper.xml b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/CopyWritingMapper.xml
index f61212d6..6049ce20 100644
--- a/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/CopyWritingMapper.xml
+++ b/xjs-business/xjs-business-openapi/src/main/resources/mapper/openapi/CopyWritingMapper.xml
@@ -72,7 +72,7 @@
api_copywriting
WHERE
content IN ( SELECT t.content FROM ( SELECT content FROM api_copywriting GROUP BY content HAVING count( content ) > 1 ) t )
- AND id NOT IN ( SELECT c.id FROM ( SELECT max( id ) id FROM api_copywriting GROUP BY content HAVING count( content )> 1 ) c )
+ AND id NOT IN ( SELECT c.id FROM ( SELECT min( id ) id FROM api_copywriting GROUP BY content HAVING count( content )> 1 ) c )
diff --git a/xjs-business/xjs-business-openapi/src/test/java/com/xjs/oneenglish/factory/TianXingOneEnglishFactoryTest.java b/xjs-business/xjs-business-openapi/src/test/java/com/xjs/oneenglish/factory/TianXingOneEnglishFactoryTest.java
index 7a845a82..9e85f181 100644
--- a/xjs-business/xjs-business-openapi/src/test/java/com/xjs/oneenglish/factory/TianXingOneEnglishFactoryTest.java
+++ b/xjs-business/xjs-business-openapi/src/test/java/com/xjs/oneenglish/factory/TianXingOneEnglishFactoryTest.java
@@ -2,14 +2,18 @@ package com.xjs.oneenglish.factory;
import com.xjs.XjsOpenApiApp;
import com.xjs.config.TianXingProperties;
+import com.xjs.copywriting.domain.CopyWriting;
+import com.xjs.copywriting.mapper.CopyWritingMapper;
+import com.xjs.copywriting.service.CopyWritingService;
import com.xjs.oneenglish.domain.ApiEnglish;
import com.xjs.oneenglish.domain.RequestBody;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
-import static org.junit.jupiter.api.Assertions.*;
-
/**
* @author xiejs
* @desc
@@ -24,6 +28,11 @@ class TianXingOneEnglishFactoryTest {
@Autowired
TianXingProperties tianXingProperties;
+ @Autowired
+ private CopyWritingService copyWritingService;
+ @Autowired
+ private SqlSessionFactory sqlSessionFactory;
+
@Test
void getOneEnglish() {
RequestBody requestBody = new RequestBody();
@@ -31,4 +40,46 @@ class TianXingOneEnglishFactoryTest {
ApiEnglish oneEnglish = tianXingOneEnglishFactory.getOneEnglish(requestBody);
System.out.println(oneEnglish);
}
+
+
+ @Test
+ void insert() {
+ /*CopyWriting copyWriting = new CopyWriting();
+ copyWriting.setSource("xx");
+ copyWriting.setContent("既然看不到早上的夕阳,那就追求傍晚到日落。");
+ copyWriting.setType(1);
+ for (int i = 0; i < 100000; i++) {
+ copyWritingService.save(copyWriting);
+ }*/
+
+ /*ArrayList copyWritings = new ArrayList<>();
+ for (int i = 0; i < 100000; i++) {
+ CopyWriting copyWriting = new CopyWriting();
+ copyWriting.setSource("xx");
+ copyWriting.setContent("既然看不到早上的夕阳,那就追求傍晚到日落。");
+ copyWriting.setType(1);
+ copyWritings.add(copyWriting);
+ }
+ copyWritingService.saveBatch(copyWritings,30000);*/
+ SqlSession sqlSession=null;
+ try {
+ sqlSession= sqlSessionFactory.openSession(ExecutorType.BATCH);
+
+ CopyWritingMapper mapper = sqlSession.getMapper(CopyWritingMapper.class);
+
+ CopyWriting copyWriting = new CopyWriting();
+ copyWriting.setSource("xx");
+ copyWriting.setContent("既然看不到早上的夕阳,那就追求傍晚到日落。");
+ copyWriting.setType(1);
+
+ for (int i = 0; i < 100000; i++) {
+ mapper.insert(copyWriting);
+ }
+
+ sqlSession.commit();
+ } finally {
+ sqlSession.close();
+ }
+
+ }
}
\ No newline at end of file
diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/ApiWarningController.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/ApiWarningController.java
index eb618c18..68765155 100644
--- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/ApiWarningController.java
+++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/controller/ApiWarningController.java
@@ -1,5 +1,6 @@
package com.xjs.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
+import java.util.Objects;
/**
* @author xiejs
@@ -30,7 +32,7 @@ public class ApiWarningController extends BaseController {
private ApiWarningService apiWarningService;
/**
- * 保存 apiRecord
+ * 远程保存 apiRecord
*
* @param apiRecord api记录
* @return apiRecord
@@ -41,7 +43,7 @@ public class ApiWarningController extends BaseController {
}
/**
- * 修改
+ * 远程修改
*
* @param apiRecord api记录
* @return ApiRecord
@@ -53,8 +55,9 @@ public class ApiWarningController extends BaseController {
/**
* 远程查询api记录信息
+ *
* @param apiRecord
- * @return R>
+ * @return R>
*/
@GetMapping
public R> selectApiRecordListForRPC(ApiRecord apiRecord) {
@@ -64,60 +67,85 @@ public class ApiWarningController extends BaseController {
/**
* 远程保存api预警信息
+ *
* @param apiWarning 预警实体类
- * @return R
+ * @return R
*/
@PostMapping("saveApiwarningForRPC")
public R saveApiWarningForRPC(@RequestBody ApiWarning apiWarning) {
boolean save = apiWarningService.save(apiWarning);
- return save? R.ok():R.fail();
+ return save ? R.ok() : R.fail();
+ }
+
+
+ /**
+ * 查询api预警列表
+ */
+ @RequiresPermissions("warning:warning:list")
+ @GetMapping("/apiwarnlist")
+ public TableDataInfo list(ApiWarning apiWarning) {
+ startPage();
+ List list = apiWarningService.list(new QueryWrapper()
+ .like(Objects.nonNull(apiWarning.getApiName()),"api_name", apiWarning.getApiName()));
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出api预警列表
+ */
+ @RequiresPermissions("warning:warning:export")
+ @Log(title = "api预警", businessType = BusinessType.EXPORT)
+ @PostMapping("/apiwarnexport")
+ public void export(HttpServletResponse response, ApiWarning apiWarning) {
+ List list = apiWarningService.list(new QueryWrapper()
+ .like(Objects.nonNull(apiWarning.getApiName()),"api_name", apiWarning.getApiName()));
+ ExcelUtil util = new ExcelUtil(ApiWarning.class);
+ util.exportExcel(response, list, "api预警数据");
}
//-------------------------代码生成------------------------------------
+
+
/**
- * 查询API预警列表
+ * 查询API预警信息列表
*/
@RequiresPermissions("warning:apiwarning:list")
@GetMapping("/list")
- public TableDataInfo list(ApiRecord apiRecord)
- {
+ public TableDataInfo list(ApiRecord apiRecord) {
startPage();
List list = apiWarningService.selectApiRecordList(apiRecord);
return getDataTable(list);
}
/**
- * 导出API预警列表
+ * 导出API预警信息列表
*/
@RequiresPermissions("warning:apiwarning:export")
@Log(title = "API预警", businessType = BusinessType.EXPORT)
@PostMapping("/export")
- public void export(HttpServletResponse response, ApiRecord apiRecord)
- {
+ public void export(HttpServletResponse response, ApiRecord apiRecord) {
List list = apiWarningService.selectApiRecordList(apiRecord);
ExcelUtil util = new ExcelUtil(ApiRecord.class);
util.exportExcel(response, list, "API预警数据");
}
/**
- * 获取API预警详细信息
+ * 获取API预警详细信息信息
*/
@RequiresPermissions("warning:apiwarning:query")
@GetMapping(value = "/{id}")
- public AjaxResult getInfo(@PathVariable("id") Long id)
- {
+ public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(apiWarningService.selectApiRecordById(id));
}
/**
- * 修改API预警
+ * 修改API预警信息
*/
@RequiresPermissions("warning:apiwarning:edit")
@Log(title = "API预警", businessType = BusinessType.UPDATE)
@PutMapping("edit")
- public AjaxResult edit(@RequestBody ApiRecord apiRecord)
- {
+ public AjaxResult edit(@RequestBody ApiRecord apiRecord) {
return toAjax(apiWarningService.updateApiRecord(apiRecord));
}
diff --git a/xjs-sql/2022-01/nacos_config_export_20220107171639.zip b/xjs-sql/2022-01/nacos_config_export_20220107171639.zip
new file mode 100644
index 00000000..840866a9
Binary files /dev/null and b/xjs-sql/2022-01/nacos_config_export_20220107171639.zip differ