diff --git a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleControllerApi.java b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleControllerApi.java index 80c44bf..ce211c8 100644 --- a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleControllerApi.java +++ b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleControllerApi.java @@ -5,10 +5,12 @@ import com.realtime.protection.configuration.response.ResponseResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import org.hibernate.validator.constraints.EAN; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -28,9 +30,9 @@ public interface DynamicRuleControllerApi { content = @Content( mediaType = "application/json", schema = @Schema( - title = "ResponseResult和DynamicRule的组合模型", - description = "ResponseResult的data内DynamicRule", - anyOf = {ResponseResult.class, DynamicRuleObject.class}, +// title = "ResponseResult和DynamicRule的组合模型", +// description = "ResponseResult的data内DynamicRule", +// anyOf = {ResponseResult.class, DynamicRuleObject.class}, implementation = ResponseResult.class) ) ) @@ -66,7 +68,20 @@ public interface DynamicRuleControllerApi { description = "返回批量删除对象结果", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(implementation = ResponseResult.class), + examples = { + @ExampleObject( + name = "返回批量删除结果", + description = "success:是否修改成功", + value ="{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"success\": true\n" + + " }\n" + + "}" + ) + } ) ) }, @@ -85,10 +100,23 @@ public interface DynamicRuleControllerApi { content = @Content( mediaType = "application/json", schema = @Schema( - title = "ResponseResult和DynamicRule的组合模型", - description = "ResponseResult的data内DynamicRule", - anyOf = {ResponseResult.class, DynamicRuleObject.class}, - implementation = ResponseResult.class) + implementation = ResponseResult.class + ), + examples = { + @ExampleObject( + name = "返回修改对象结果", + description = "dynamic_rule_id:动态规则id" + + "success:是否修改成功", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"dynamic_rule_id\": 11,\n" + + " \"success\": true\n" + + " }\n" + + "}" + ), + } ) ) }, @@ -110,7 +138,46 @@ public interface DynamicRuleControllerApi { description = "返回查询到的单个动态规则", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + + schema = @Schema( + title = "ResponseResult和DynamicRule的组合模型", + description = "ResponseResult的data内DynamicRule", + anyOf = {ResponseResult.class, DynamicRuleObject.class} + ), + examples = @ExampleObject( + name = "返回查询到的单个动态规则", + description = "dynamic_rule_id:动态规则id\n" + + "dynamic_rule_name:动态规则名称\n" + + "dynamic_rule_modify_time:动态规则修改时间\n" + + "protect_objects:动态规则关联的防护对象\n" + + "dynamic_rule_source_system:动态规则来源系统\n" + + "dynamic_rule_event_type:动态规则事件类型\n" + + "template_id:动态规则关联的策略模板id\n" + + "dynamic_rule_priority:动态规则优先级\n" + + "dynamic_rule_range:动态规则范围\n" + + "dynamic_rule_frequency:动态规则频率\n" + + "success:是否查询成功", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"dynamic_rule\": {\n" + + " \"dynamic_rule_id\": 5,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_modify_time\": \"2024-01-16T16:16:05\",\n" + + " \"protect_objects\": [],\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " \"success\": true\n" + + " }\n" + + "}" + ) + ) ) }, @@ -128,7 +195,132 @@ public interface DynamicRuleControllerApi { description = "返回多个动态规则", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema( + title = "ResponseResult和DynamicRule的组合模型", + description = "ResponseResult的data内DynamicRule", + anyOf = {ResponseResult.class, DynamicRuleObject.class}), + examples ={ + @ExampleObject( + name = "返回多个动态规则", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"dynamic_rule_list\": [\n" + + " {\n" + + " \"dynamic_rule_id\": 5,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 11,\n" + + " \"dynamic_rule_name\": \"动态规则测试\",\n" + + " \"template_id\": 1,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 15,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 16,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 17,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 18,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 19,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 20,\n" + + " \"dynamic_rule_name\": \"UpdateDynamicRule2\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"反射型DDOS攻击\",\n" + + " \"template_id\": 27,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 23,\n" + + " \"dynamic_rule_name\": \"动态规则测试\",\n" + + " \"dynamic_rule_create_time\": \"2024-01-18T16:11:39\",\n" + + " \"dynamic_rule_create_username\": \"mh\",\n" + + " \"dynamic_rule_create_depart\": \"mh\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"test\",\n" + + " \"template_id\": 1237,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " },\n" + + " {\n" + + " \"dynamic_rule_id\": 31,\n" + + " \"dynamic_rule_name\": \"动态规则测试\",\n" + + " \"dynamic_rule_create_time\": \"2024-01-19T22:39:08\",\n" + + " \"dynamic_rule_create_username\": \"mh\",\n" + + " \"dynamic_rule_source_system\": \"xxxx系统\",\n" + + " \"dynamic_rule_event_type\": \"test\",\n" + + " \"template_id\": 1237,\n" + + " \"dynamic_rule_priority\": 1,\n" + + " \"dynamic_rule_range\": \"北京\",\n" + + " \"dynamic_rule_frequency\": 1\n" + + " }\n" + + " ],\n" + + " \"success\": true,\n" + + " \"dynamic_rule_total_num\": 11\n" + + " }\n" + + "}", + description = "dynamic_rule_list:动态规则列表\n" + + "dynamic_rule_total_num:动态规则总数\n" + + "success:是否查询成功" + + ) + } ) ) }, diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java index 74b9ece..a5c7bc5 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java @@ -98,11 +98,11 @@ public class StaticRuleController implements StaticRuleControllerApi { @RequestBody @Valid StaticRuleObject object) { log.info("修改静态规则: {}", object); //调用service修改 - Integer updateValid = staticRuleService.updateStaticRule(id, object); - if (updateValid == 0) { + Boolean updateValid = staticRuleService.updateStaticRule(id, object); + if (!updateValid) { return ResponseResult.invalid().setMessage("id is invalid"); } - return ResponseResult.ok(); + return ResponseResult.ok().setData("success",updateValid); } /** diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleControllerApi.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleControllerApi.java index 4a545e8..b3ed5b0 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleControllerApi.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleControllerApi.java @@ -1,10 +1,12 @@ package com.realtime.protection.server.rule.staticrule; +import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject; import com.realtime.protection.configuration.entity.rule.staticrule.StaticRuleObject; import com.realtime.protection.configuration.response.ResponseResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; @@ -30,8 +32,21 @@ public interface StaticRuleControllerApi { content = @Content( mediaType = "application/json", schema = @Schema( - implementation = ResponseResult.class) - ) + implementation = ResponseResult.class), + examples = @ExampleObject( + name = "新增静态规则", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"static_rule_id\": 1095,\n" + + " \"static_rule_name\": \"静态规则测试\"\n" + + " }\n" + + "}", + description = "static_rule_id:新增静态规则名称"+ + "static_rule_name:新增静态规则id" + ) + ) ) }, requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody( @@ -79,7 +94,23 @@ public interface StaticRuleControllerApi { description = "返回删除对象结果", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(implementation = ResponseResult.class), + examples = @ExampleObject( + name = "删除多个静态规则", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"success\": true,\n" + + " \"static_rule_id\": [\n" + + " 11\n" + + " ]\n" + + " }\n" + + "}", + description = "static_rule_id:删除静态规则id列表"+ + "success:是否成功" + ) + ) ) }, @@ -97,7 +128,16 @@ public interface StaticRuleControllerApi { description = "返回修改对象结果", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(implementation = ResponseResult.class), + examples = @ExampleObject( + name = "修改静态规则", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\"success\": true,}\n" + + "}" + + ) ) ) }, @@ -118,7 +158,8 @@ public interface StaticRuleControllerApi { description = "返回查询到的单个静态规则", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(title = "ResponseResult和StaticRule的对象属性", + anyOf = {ResponseResult.class, StaticRuleObject.class}) ) ) }, @@ -134,7 +175,24 @@ public interface StaticRuleControllerApi { description = "返回多个静态规则", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema( + title = "ResponseResult和StaticRule的对象属性", + anyOf = {ResponseResult.class, StaticRuleObject.class}), + examples = @ExampleObject( + name = "分页查询静态规则", + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"static_rule_list\": [\n" + + " ],\n" + + " \"static_rule_total_num\": 1080\n" + + " }\n" + + "}", + + description = "static_rule_list:静态规则列表"+ + "static_rule_total_num:静态规则总数" + ) ) ) }, @@ -164,7 +222,14 @@ public interface StaticRuleControllerApi { description = "返回删除对象结果", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(implementation = ResponseResult.class), + examples = @ExampleObject( + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {}\n" + + "}" + ) ) ) }, diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java index f24e9b2..6f3a597 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java @@ -19,7 +19,7 @@ public interface StaticRuleMapper { //修改静态规则 - Integer updateStaticRule(@Param("id") Integer id, @Param("object") StaticRuleObject object); + Boolean updateStaticRule(@Param("id") Integer id, @Param("object") StaticRuleObject object); //按id查询静态规则 //@Select("select * from t_static_rule where static_rule_id = #{id}") diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java index 9204550..573a161 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java @@ -73,7 +73,7 @@ public class StaticRuleService { return sqlSessionWrapper.startBatchSession(StaticRuleMapper.class, deleteStaticRulesFunction, staticRuleIds); } - public Integer updateStaticRule(Integer id, StaticRuleObject object) { + public Boolean updateStaticRule(Integer id, StaticRuleObject object) { //判断当前静态规则是否能够修改---是否存在任务选择的静态规则?? //按id查询该静态规则的used_task_id字段,如果不为空,则不能修改 object.setStaticRuleModifyTime(LocalDateTime.now()); diff --git a/src/main/java/com/realtime/protection/server/whitelist/WhiteListControllerApi.java b/src/main/java/com/realtime/protection/server/whitelist/WhiteListControllerApi.java index 12a8b10..7bb338b 100644 --- a/src/main/java/com/realtime/protection/server/whitelist/WhiteListControllerApi.java +++ b/src/main/java/com/realtime/protection/server/whitelist/WhiteListControllerApi.java @@ -1,10 +1,12 @@ package com.realtime.protection.server.whitelist; +import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject; import com.realtime.protection.configuration.entity.whitelist.WhiteListObject; import com.realtime.protection.configuration.response.ResponseResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; @@ -27,7 +29,18 @@ public interface WhiteListControllerApi { description = "返回新增对象结果", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(implementation = ResponseResult.class), + examples = {@ExampleObject( + value = "{\n" + + " \"code\": 200,\n" + + " \"message\": \"request succeed\",\n" + + " \"data\": {\n" + + " \"whiteobj_name\": \"白名单测试\",\n" + + " \"success\": true,\n" + + " \"whiteobj_id\": 7026\n" + + " }\n" + + "}" + )} ) ) }, @@ -61,7 +74,9 @@ public interface WhiteListControllerApi { description = "返回下载结果", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema( + implementation = ResponseResult.class) + ) ) } @@ -76,7 +91,8 @@ public interface WhiteListControllerApi { description = "返回查询到的所有白名单", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(title = "ResponseResult和WhiteListObject的属性", + anyOf = {ResponseResult.class, WhiteListObject.class}) ) ) }, @@ -100,7 +116,8 @@ public interface WhiteListControllerApi { description = "返回查询到的单个白名单", content = @Content( mediaType = "application/json", - schema = @Schema(implementation = ResponseResult.class) + schema = @Schema(title = "ResponseResult和WhiteListObject的属性", + anyOf = {ResponseResult.class, WhiteListObject.class}) ) ) },