From 1ae208b8e10abf15fe35789db9b3af4233c32ad6 Mon Sep 17 00:00:00 2001
From: xjs <1294405880@qq.com>
Date: Fri, 7 Jan 2022 17:17:59 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A1=E3=80=81=E5=AE=9E?=
=?UTF-8?q?=E7=8E=B0api=E9=A2=84=E8=AD=A6=E5=89=8D=E7=AB=AF=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/api/business/warning/apiwarning.js | 21 +-
.../business/warning/apiwarning/index.vue | 123 +++-------
.../business/warning/apiwarninginfo/index.vue | 219 ++++++++++++++++++
.../main/java/com/xjs/enums/StatusEnum.java | 5 +-
.../java/com/xjs/common/aop/ApiLogAspect.java | 5 +-
.../mapper/openapi/CopyWritingMapper.xml | 2 +-
.../TianXingOneEnglishFactoryTest.java | 55 ++++-
.../xjs/controller/ApiWarningController.java | 62 +++--
.../nacos_config_export_20220107171639.zip | Bin 0 -> 3630 bytes
9 files changed, 378 insertions(+), 114 deletions(-)
create mode 100644 ruoyi-ui/src/views/business/warning/apiwarninginfo/index.vue
create mode 100644 xjs-sql/2022-01/nacos_config_export_20220107171639.zip
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 0000000000000000000000000000000000000000..840866a9d7032324f88f552728f6a02c77b0a91d
GIT binary patch
literal 3630
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
literal 0
HcmV?d00001