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 @@ - - 修改 - - 导出 - + - - - - - - - - - - - + + + - + + + + @@ -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