소스 검색

安全检查模块添加

linfutong 2 년 전
부모
커밋
7833928fc6
29개의 변경된 파일1197개의 추가작업 그리고 4개의 파일을 삭제
  1. 5 0
      pom.xml
  2. 18 0
      zd-api/zd-check-api/pom.xml
  3. 33 0
      zd-api/zd-check-api/src/main/java/com/zd/check/api/bo/CheckTestBo.java
  4. 17 0
      zd-api/zd-check-api/src/main/java/com/zd/check/api/feign/RemoteCheckTestService.java
  5. 15 0
      zd-api/zd-check-api/src/main/java/com/zd/check/api/feign/factory/RemoteCheckTestFallback.java
  6. 43 0
      zd-api/zd-check-api/src/main/java/com/zd/check/api/vo/CheckTestVo.java
  7. 35 0
      zd-common/common-core/src/main/java/com/zd/common/core/exception/ParamException.java
  8. 0 1
      zd-common/common-core/src/main/java/com/zd/common/core/mybatisplus/MybatisPlusGenerator.java
  9. 388 0
      zd-common/common-core/src/main/java/com/zd/common/core/utils/ParamCheckUtils.java
  10. 70 0
      zd-common/common-core/src/main/java/com/zd/common/core/web/controller/AbstractController.java
  11. 3 0
      zd-common/common-core/src/main/java/com/zd/common/core/web/controller/BaseController.java
  12. 1 1
      zd-common/common-core/src/main/resources/code-generator.properties
  13. 2 2
      zd-model/src/main/java/com/zd/model/constant/ApplicationConstants.java
  14. 30 0
      zd-model/src/main/java/com/zd/model/page/PageQuery.java
  15. 1 0
      zd-model/src/main/resources/application.yml
  16. 1 0
      zd-modules/pom.xml
  17. 88 0
      zd-modules/zd-check/pom.xml
  18. 26 0
      zd-modules/zd-check/src/main/java/com/zd/check/CodeGenerator.java
  19. 23 0
      zd-modules/zd-check/src/main/java/com/zd/check/ZdCheckApplication.java
  20. 45 0
      zd-modules/zd-check/src/main/java/com/zd/check/config/AutoFillHandler.java
  21. 30 0
      zd-modules/zd-check/src/main/java/com/zd/check/config/MybatisPlusConfig.java
  22. 115 0
      zd-modules/zd-check/src/main/java/com/zd/check/controller/TestController.java
  23. 73 0
      zd-modules/zd-check/src/main/java/com/zd/check/entity/CheckTest.java
  24. 18 0
      zd-modules/zd-check/src/main/java/com/zd/check/mapper/CheckTestMapper.java
  25. 16 0
      zd-modules/zd-check/src/main/java/com/zd/check/service/CheckTestService.java
  26. 20 0
      zd-modules/zd-check/src/main/java/com/zd/check/service/impl/CheckTestServiceImpl.java
  27. 49 0
      zd-modules/zd-check/src/main/java/com/zd/check/util/PageUtil.java
  28. 8 0
      zd-modules/zd-check/src/main/resources/bootstrap.yml
  29. 24 0
      zd-modules/zd-check/src/main/resources/mapper/CheckTestMapper.xml

+ 5 - 0
pom.xml

@@ -308,6 +308,11 @@
                 <artifactId>zd-airbottle-api</artifactId>
                 <artifactId>zd-airbottle-api</artifactId>
                 <version>${zd.version}</version>
                 <version>${zd.version}</version>
             </dependency>
             </dependency>
+            <dependency>
+                <groupId>com.zd.check</groupId>
+                <artifactId>zd-check-api</artifactId>
+                <version>${zd.version}</version>
+            </dependency>
         </dependencies>
         </dependencies>
     </dependencyManagement>
     </dependencyManagement>
 
 

+ 18 - 0
zd-api/zd-check-api/pom.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>zd-api</artifactId>
+        <groupId>com.zd</groupId>
+        <version>3.1.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.zd.check</groupId>
+    <artifactId>zd-check-api</artifactId>
+    <packaging>jar</packaging>
+    <description>安全检查api</description>
+
+
+</project>

+ 33 - 0
zd-api/zd-check-api/src/main/java/com/zd/check/api/bo/CheckTestBo.java

@@ -0,0 +1,33 @@
+package com.zd.check.api.bo;
+
+import com.zd.model.page.PageQuery;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>检查测试类</p>
+ *
+ * @author linft
+ * @version 1.0
+ * @date 04/14/2023
+ */
+@Data
+public class CheckTestBo extends PageQuery implements Serializable {
+    private static final long serialVersionUID = -5528470228203101771L;
+
+    private Long testId;
+
+    @ApiModelProperty("测试名称")
+    private String testName;
+
+    @ApiModelProperty("描述")
+    private String testDesc;
+
+    @ApiModelProperty("类型:0-默认,1-检查1,2-检查2,3-检查3")
+    private Integer testType;
+
+    @ApiModelProperty("状态:0-不可用,1-可用")
+    private Boolean state;
+}

+ 17 - 0
zd-api/zd-check-api/src/main/java/com/zd/check/api/feign/RemoteCheckTestService.java

@@ -0,0 +1,17 @@
+package com.zd.check.api.feign;
+
+import com.zd.check.api.feign.factory.RemoteCheckTestFallback;
+import com.zd.model.constant.ApplicationConstants;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>检查测试类</p>
+ *
+ * @author linft
+ * @version 1.0
+ * @date 04/14/2023
+ */
+@FeignClient(contextId = "remoteCheckTestService", value = ApplicationConstants.CHECK_SERVICE, fallbackFactory = RemoteCheckTestFallback.class)
+public interface RemoteCheckTestService {
+
+}

+ 15 - 0
zd-api/zd-check-api/src/main/java/com/zd/check/api/feign/factory/RemoteCheckTestFallback.java

@@ -0,0 +1,15 @@
+package com.zd.check.api.feign.factory;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>检查测试类</p>
+ *
+ * @author linft
+ * @version 1.0
+ * @date 04/14/2023
+ */
+@Component
+public class RemoteCheckTestFallback {
+
+}

+ 43 - 0
zd-api/zd-check-api/src/main/java/com/zd/check/api/vo/CheckTestVo.java

@@ -0,0 +1,43 @@
+package com.zd.check.api.vo;
+
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>检查测试类</p>
+ *
+ * @author linft
+ * @version 1.0
+ * @date 04/14/2023
+ */
+@Data
+public class CheckTestVo implements Serializable {
+    private static final long serialVersionUID = -401144841793356194L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long testId;
+
+    @ApiModelProperty("测试名称")
+    private String testName;
+
+    @ApiModelProperty("描述")
+    private String testDesc;
+
+    @ApiModelProperty("类型:0-默认,1-检查1,2-检查2,3-检查3")
+    private Integer testType;
+
+    @ApiModelProperty("状态:0-不可用,1-可用")
+    private Boolean state;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 35 - 0
zd-common/common-core/src/main/java/com/zd/common/core/exception/ParamException.java

@@ -0,0 +1,35 @@
+package com.zd.common.core.exception;
+
+import com.zd.model.constant.HttpStatus;
+
+/**
+ * <p>参数异常类</p>
+ *
+ * @author: linft
+ * @date: 2020/11/2
+ * @since:
+ */
+public class ParamException extends RuntimeException {
+
+	private static final long serialVersionUID = 1L;
+
+	private Integer code;
+
+	public ParamException() {
+		super("参数异常");
+		this.code = HttpStatus.ERROR;
+	}
+
+	public ParamException(String message) {
+		super(message);
+		this.code = HttpStatus.ERROR;
+	}
+
+	public Integer getCode() {
+		return code;
+	}
+
+	public void setCode(Integer code) {
+		this.code = code;
+	}
+}

+ 0 - 1
zd-common/common-core/src/main/java/com/zd/common/core/mybatisplus/MybatisPlusGenerator.java

@@ -89,7 +89,6 @@ public class MybatisPlusGenerator {
                         .disable(disableTemplateType)
                         .disable(disableTemplateType)
                         .build()
                         .build()
                 )
                 )
-
                 // 策略配置
                 // 策略配置
                 .strategyConfig(builder -> builder
                 .strategyConfig(builder -> builder
                         .addInclude(tables)
                         .addInclude(tables)

+ 388 - 0
zd-common/common-core/src/main/java/com/zd/common/core/utils/ParamCheckUtils.java

@@ -0,0 +1,388 @@
+package com.zd.common.core.utils;
+
+import com.zd.common.core.exception.ParamException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Collection;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * 
+ * @author Quiet
+ *
+ * @CreateTime 2019年10月29日 下午4:56:48
+ *
+ * @Description 这个是参数校验的类
+ *
+ */
+public class ParamCheckUtils {
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(ParamCheckUtils.class);
+	
+	private static class LoadParamCheck{
+		private static final ParamCheckUtils PARAM_CHECK_UTILS = new ParamCheckUtils();
+	}
+	
+	private ParamCheckUtils() {}
+	
+	public static ParamCheck build() {
+		return LoadParamCheck.PARAM_CHECK_UTILS.new ParamCheck();
+	}
+	
+	public static ParamCheck build(String msg) {
+		return LoadParamCheck.PARAM_CHECK_UTILS.new ParamCheck(msg);
+	}
+	
+	private static void throwParamException(String message) {
+		throw new ParamException(message);
+	}
+	
+	/**
+	 * # null == obj throw ParamException(1001,message); 
+	 */
+	public static void notNull(Object obj, String message) {
+		if(null == obj)
+			throwParamException(message);
+	}
+	
+	public class ParamCheck{
+		
+		private String msg;
+		
+		public ParamCheck() {}
+		
+		public ParamCheck(String msg) {
+			this.msg = msg;
+		}
+		
+		public void throwException(String message) {
+			throwParamException(message);
+		}
+		
+		/**
+		 * 
+		 * @Description null == obj throw ParamException
+		 *
+		 */
+		public ParamCheck notNull(Object obj, String message) {
+			if(null == obj)
+				throwParamException(message);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description null == obj throw ParamException
+		 *
+		 */
+		public ParamCheck notNull(Object obj) {
+			return notNull(obj,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description null==str || "".equals(str) throw ParamException
+		 *
+		 */
+		public ParamCheck strNotEmpty(String str, String message) {
+			if(null == str || "".equals(str))
+				throwParamException(message);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description null==str || "".equals(str) throw ParamException
+		 *
+		 */
+		public ParamCheck strNotEmpty(String str) {
+			return strNotEmpty(str,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description param == null || param <= 0 throw ParamException
+		 *
+		 */
+		public ParamCheck greaterThanZero(Integer param, String message) {
+			notNull(param, message);
+			if(param <= 0) {
+				throwParamException(message);
+			}
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description param == null || param <= 0 throw ParamException
+		 *
+		 */
+		public ParamCheck greaterThanZero(Integer param) {
+			return greaterThanZero(param,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description param == null || param <= 0 throw ParamException
+		 *
+		 */
+		public ParamCheck greaterThanZero(Byte param, String message) {
+			notNull(param, message);
+			if(param <= 0) {
+				throwParamException(message);
+			}
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description param == null || param <= 0 throw ParamException
+		 *
+		 */
+		public ParamCheck greaterThanZero(Byte param) {
+			return greaterThanZero(param,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description param == null || param <= 0 throw ParamException
+		 *
+		 */
+		public ParamCheck greaterThanZero(Short param, String message) {
+			notNull(param, message);
+			if(param <= 0) {
+				throwParamException(message);
+			}
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description param == null || param <= 0 throw ParamException
+		 *
+		 */
+		public ParamCheck greaterThanZero(Short param) {
+			return greaterThanZero(param,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description 0 == zero throw ParamException
+		 *
+		 */
+		public ParamCheck notZero(Number number, String message) {
+			notNull(number, message);
+			if(number instanceof Byte) {
+				Byte bt = (Byte) number;
+				if(bt == 0)
+					throwParamException(message);
+			} else if(number instanceof Short) {
+				Short st = (Short) number;
+				if(st == 0)
+					throwParamException(message);
+			} else if(number instanceof Integer) {
+				Integer it = (Integer) number;
+				if(it == 0)
+					throwParamException(message);
+			} else if(number instanceof Long) {
+				Long lg = (Long) number;
+				if(lg == 0)
+					throwParamException(message);
+			} else if(number instanceof Double) {
+				Double de = (Double) number;
+				if(de == 0)
+					throwParamException(message);
+			} else if(number instanceof Float) {
+				Float ft = (Float) number;
+				if(ft == 0)
+					throwParamException(message);
+			} else {
+				LOGGER.error("该数据不在: Byte,Short,Integer,Long,Fload,Double中");
+				throwParamException("该数据不在: Byte,Short,Integer,Long,Fload,Double中");
+			}
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description 0 == zero throw ParamException
+		 *
+		 */
+		public ParamCheck notZero(Number number) {
+			return notZero(number,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description null == arr || arr.length == 0 throw ParamException
+		 *
+		 */
+		public ParamCheck arrNotEmpty(Object[] arr, String message) {
+			if(null == arr || arr.length == 0)
+				throwParamException(message);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description null == arr || arr.length == 0 throw ParamException
+		 *
+		 */
+		public ParamCheck arrNotEmpty(Object[] arr) {
+			return arrNotEmpty(arr,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description null == collections || collections.size() == 0 throw ParamException
+		 *
+		 */
+		public ParamCheck collectionNotEmpty(Collection<?> collections, String message) {
+			if(null == collections || collections.size() == 0)
+				throwParamException(message);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description null == collections || collections.size() == 0 throw ParamException
+		 *
+		 */
+		public ParamCheck collectionNotEmpty(Collection<?> collections) {
+			return collectionNotEmpty(collections,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description null == map || map.size() == 0 throw ParamException
+		 *
+		 */
+		public ParamCheck mapNotEmpty(Map<?, ?> map, String message) {
+			if(null == map || map.size() == 0)
+				throwParamException(message);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description null == map || map.size() == 0 throw ParamException
+		 *
+		 */
+		public ParamCheck mapNotEmpty(Map<?, ?> map) {
+			return mapNotEmpty(map,msg);
+		}
+		
+		/**
+		 * 
+		 * @Description !Pattern.matches(regex, str) throw ParamException
+		 *
+		 */
+		public ParamCheck strNotRegex(String regex, String str, String message) {
+			if(!Pattern.matches(regex, str))
+				throwParamException(message);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description !Pattern.matches(regex, str) throw ParamException
+		 *
+		 */
+		public ParamCheck strNotRegex(String regex, String str) {
+			return strNotRegex(regex,str,msg);
+		}
+
+		/**
+		 *
+		 * @Description !Pattern.matches(email, msg) throw ParamException
+		 *
+		 */
+		public ParamCheck isNotMail(String email) {
+			return isNotMail(email, this.msg);
+		}
+
+		/**
+		 *
+		 * @Description !Pattern.matches(email, msg) throw ParamException
+		 *
+		 */
+		public ParamCheck isNotMail(String email, String msg) {
+			Pattern p = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
+			if(!p.matcher(email).matches())
+				throwParamException(msg);
+			return this;
+		}
+
+		/**
+		 *
+		 * @Description !Pattern.matches(mobile, msg) throw ParamException
+		 *
+		 */
+		public ParamCheck isNotMobile(String mobile) {
+			return isNotMobile(mobile, this.msg);
+		}
+
+		/**
+		 *
+		 * @Description !Pattern.matches(mobile, msg) throw ParamException
+		 *
+		 */
+		public ParamCheck isNotMobile(String mobile,String msg) {
+			Pattern p = Pattern.compile("^1[3|4|5|6|7|8|9][0-9]\\d{8}$");
+			if(!p.matcher(mobile).matches())
+				throwParamException(msg);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description !condition throw ParamException
+		 *
+		 */
+		public ParamCheck isTrue(boolean condition, String msg) {
+			if(!condition) 
+				throwParamException(msg);
+			return this;
+		}
+		
+		/**
+		 * 
+		 * @Description !condition throw ParamException
+		 *
+		 */
+		public ParamCheck isTrue(boolean condition) {
+			return isTrue(condition, this.msg);
+		}
+		
+		/**
+		 *
+		 * @Description !Pattern.matches(number, msg) throw ParamException
+		 *
+		 */
+		public ParamCheck isNotNumber(String number) {
+			return isNotNumber(number, this.msg);
+		}
+		
+		/**
+		 *
+		 * @Description !Pattern.matches(number, msg) throw ParamException
+		 *
+		 */
+		public ParamCheck isNotNumber(String number,String msg) {
+			Pattern p = Pattern.compile("^-?\\d+(\\.\\d+)?$");
+			if(!p.matcher(number).matches())
+				throwParamException(msg);
+			return this;
+		}
+
+		public ParamCheck isNotSpecialChar(String str) {
+			Pattern p = Pattern.compile("[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t");
+			if(p.matcher(str).find())
+				throwParamException(msg);
+			return this;
+		}
+		
+	}
+	
+}

+ 70 - 0
zd-common/common-core/src/main/java/com/zd/common/core/web/controller/AbstractController.java

@@ -0,0 +1,70 @@
+package com.zd.common.core.web.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.zd.common.core.utils.ParamCheckUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>抽象控制类</p>
+ *
+ * @author: linft
+ * @date: 2020/11/3
+ * @since:
+ */
+public abstract class AbstractController {
+
+    protected final Logger log = LoggerFactory.getLogger(this.getClass());
+
+    protected ParamCheckUtils.ParamCheck paramCheck = ParamCheckUtils.build("参数异常!");
+
+    /**
+     * 获得request对象
+     * @return
+     */
+    public HttpServletRequest getRequest() {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        return request;
+    }
+
+    /**
+     * 获得response对象
+     *
+     * @return
+     */
+    public HttpServletResponse getResponse() {
+        HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
+        return response;
+
+    }
+
+    /**
+     * 获取用户登录信息
+     * @return
+     */
+    /*protected LoginModel getUserLoginModel() {
+        String modelStr = getRequest().getHeader(BaseConstant.LOGIN_MODEL);
+        if(!StringUtils.isEmpty(modelStr)) {
+            return JSONObject.parseObject(modelStr, LoginModel.class);
+        }
+        return null;
+    }*/
+
+    /**
+     * 	获取当前登录用户的用户id
+     */
+    /*protected Long getCurrentUserId() {
+        String idStr = getRequest().getHeader(BaseConstant.USER_ID);
+        if(StringUtils.isEmpty(idStr)) {
+            return null;
+        }
+        return Long.parseLong(idStr);
+    }*/
+
+}

+ 3 - 0
zd-common/common-core/src/main/java/com/zd/common/core/web/controller/BaseController.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.Page;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.page.PageMethod;
 import com.github.pagehelper.page.PageMethod;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.DateUtils;
+import com.zd.common.core.utils.ParamCheckUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.utils.sql.SqlUtil;
 import com.zd.common.core.utils.sql.SqlUtil;
 import com.zd.common.core.web.page.TableSupport;
 import com.zd.common.core.web.page.TableSupport;
@@ -27,6 +28,8 @@ import java.util.List;
 public class BaseController<T> {
 public class BaseController<T> {
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 
+    protected ParamCheckUtils.ParamCheck paramCheck = ParamCheckUtils.build("参数异常!");
+
     /**
     /**
      * 将前台传递过来的日期格式的字符串,自动转化为Date类型
      * 将前台传递过来的日期格式的字符串,自动转化为Date类型
      */
      */

+ 1 - 1
zd-common/common-core/src/main/resources/code-generator.properties

@@ -3,4 +3,4 @@ mysql-url=jdbc:mysql://192.168.1.43:13306/cloud_data_v2?useUnicode=true&characte
 mysql-user=root
 mysql-user=root
 mysql-pwd=root123456
 mysql-pwd=root123456
 #作者
 #作者
-author=
+author=linft

+ 2 - 2
zd-model/src/main/java/com/zd/model/constant/ApplicationConstants.java

@@ -58,8 +58,8 @@ public interface ApplicationConstants {
 
 
 
 
     /**
     /**
-     * 气瓶服务
+     * 安全检查服务
      */
      */
-    String XXP_SERVICE = "zd-xxp";
+    String CHECK_SERVICE = "zd-check";
 
 
 }
 }

+ 30 - 0
zd-model/src/main/java/com/zd/model/page/PageQuery.java

@@ -0,0 +1,30 @@
+package com.zd.model.page;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>MybatisPlus分页参数</p>
+ *
+ * @author: linft
+ * @date: 2023-04-14
+ */
+@Data
+@ApiModel("分页参数")
+public class PageQuery implements Serializable {
+    private static final long serialVersionUID = 367106536089714734L;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("页码")
+    private Integer page = 1;
+    /**
+     * 页显示数量
+     */
+    @ApiModelProperty("页大小")
+    private Integer pageSize = 10;
+}

+ 1 - 0
zd-model/src/main/resources/application.yml

@@ -11,5 +11,6 @@ service:
     exam: 9014
     exam: 9014
     algorithm: 9015
     algorithm: 9015
     bottle: 9016
     bottle: 9016
+    check: 9017
     app: 9021
     app: 9021
 
 

+ 1 - 0
zd-modules/pom.xml

@@ -20,6 +20,7 @@
         <module>zd-bottle-parent</module>
         <module>zd-bottle-parent</module>
         <module>zd-algorithm</module>
         <module>zd-algorithm</module>
         <module>zd-base</module>
         <module>zd-base</module>
+        <module>zd-check</module>
     </modules>
     </modules>
 
 
     <dependencies>
     <dependencies>

+ 88 - 0
zd-modules/zd-check/pom.xml

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>zd-modules</artifactId>
+        <groupId>com.zd</groupId>
+        <version>3.1.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.zd.check</groupId>
+    <artifactId>zd-check</artifactId>
+    <packaging>jar</packaging>
+    <description>安全检查服务</description>
+
+    <dependencies>
+        <!-- SpringCloud Alibaba Nacos -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <!-- SpringCloud Alibaba Nacos Config -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+        <!-- Mysql Connector -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.zd.core</groupId>
+            <artifactId>common-core</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-codec</artifactId>
+                    <groupId>commons-codec</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- mybatis plus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>com.zd.check</groupId>
+            <artifactId>zd-check-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 26 - 0
zd-modules/zd-check/src/main/java/com/zd/check/CodeGenerator.java

@@ -0,0 +1,26 @@
+package com.zd.check;
+
+
+import com.zd.common.core.mybatisplus.MybatisPlusGenerator;
+
+import java.net.URL;
+
+/**
+ * <p>代码生成</p>
+ *
+ * @author: linft
+ * @date: 2020/11/4
+ * @since:
+ */
+public class CodeGenerator {
+
+    public static void main(String[] args) {
+        //要生成的表名
+        String[] tables = {"chk_check_test"};
+        //表前缀,若不想生成在实体里,添加前缀,如:sys_user, 前缀为:sys_
+        String tablePrefix = "chk_";
+        URL url = CodeGenerator.class.getResource("");
+        MybatisPlusGenerator.generator(tables,tablePrefix, url);
+    }
+
+}

+ 23 - 0
zd-modules/zd-check/src/main/java/com/zd/check/ZdCheckApplication.java

@@ -0,0 +1,23 @@
+package com.zd.check;
+
+
+import com.zd.common.core.annotation.EnableCustomConfig;
+import com.zd.common.core.annotation.EnableZdFeignClients;
+import com.zd.common.core.launch.ZdStartApplication;
+import com.zd.model.constant.ApplicationConstants;
+import com.zd.model.constant.BaseConstants;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@EnableCustomConfig
+@EnableZdFeignClients
+@SpringBootApplication
+@EnableScheduling
+@ComponentScan(basePackages = BaseConstants.BASE_PACKAGE)
+public class ZdCheckApplication {
+
+    public static void main(String[] args) {
+        ZdStartApplication.run(ApplicationConstants.CHECK_SERVICE, ZdCheckApplication.class, args);
+    }
+}

+ 45 - 0
zd-modules/zd-check/src/main/java/com/zd/check/config/AutoFillHandler.java

@@ -0,0 +1,45 @@
+package com.zd.check.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * MyBatis自动填充
+ */
+public class AutoFillHandler implements MetaObjectHandler {
+
+    /**
+     * 插入时填充字段
+     *
+     * @param metaObject 元数据
+     */
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        List<String> strings = Arrays.asList(metaObject.getGetterNames());
+        if (strings.contains("createBy")) {
+            this.setFieldValByName("createBy", 0L, metaObject);
+        }
+        if (strings.contains("createTime")) {
+            this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        }
+    }
+
+    /**
+     * 更新时填充字段
+     *
+     * @param metaObject 元数据
+     */
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        List<String> strings = Arrays.asList(metaObject.getGetterNames());
+        if (strings.contains("updateBy")) {
+            this.setFieldValByName("updateBy", 0L, metaObject);
+        }
+        if (strings.contains("updateTime")) {
+            this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+        }
+    }
+}

+ 30 - 0
zd-modules/zd-check/src/main/java/com/zd/check/config/MybatisPlusConfig.java

@@ -0,0 +1,30 @@
+package com.zd.check.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * <p>MybatisPlus配置</p>
+ *
+ * @author: linft
+ * @date: 2023/4/14
+ * @since:
+ */
+@Configuration
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+
+    @Bean
+    public AutoFillHandler autoFillHandler() {
+        return new AutoFillHandler();
+    }
+}

+ 115 - 0
zd-modules/zd-check/src/main/java/com/zd/check/controller/TestController.java

@@ -0,0 +1,115 @@
+package com.zd.check.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zd.check.api.bo.CheckTestBo;
+import com.zd.check.entity.CheckTest;
+import com.zd.check.service.CheckTestService;
+import com.zd.check.util.PageUtil;
+import com.zd.common.core.utils.StringUtils;
+import com.zd.common.core.web.controller.AbstractController;
+import com.zd.model.domain.ResultData;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping(value = "/test")
+public class TestController extends AbstractController {
+
+    @Autowired
+    private CheckTestService checkTestService;
+
+    /**
+     * 添加数据
+     * @param testBo
+     * @return
+     */
+    @PostMapping(value = "/add")
+    public ResultData add(@RequestBody CheckTestBo testBo) {
+        //参数检查
+        paramCheck.notNull(testBo)
+                .strNotEmpty(testBo.getTestName())
+                .strNotEmpty(testBo.getTestDesc());
+        CheckTest checkTest = new CheckTest();
+        BeanUtils.copyProperties(testBo,checkTest);
+        checkTest.setTestType(testBo.getTestType()!=null?testBo.getTestType():0);
+        checkTest.setState(testBo.getState()!=null?testBo.getState():Boolean.FALSE);
+        checkTest.setIsDeleted(Boolean.FALSE);
+        if(checkTestService.save(checkTest)) {
+            return ResultData.success("操作成功");
+        }
+        return ResultData.fail("操作失败");
+    }
+
+    @PostMapping(value = "/update")
+    public ResultData update(@RequestBody CheckTestBo testBo) {
+        //参数检查
+        paramCheck.notNull(testBo).notNull(testBo.getTestId());
+        CheckTest checkTest = new CheckTest();
+        BeanUtils.copyProperties(testBo,checkTest);
+        if(checkTestService.saveOrUpdate(checkTest)) {
+            return ResultData.success("操作成功");
+        }
+        return ResultData.fail("操作失败");
+    }
+
+    /**
+     * 通过ID获取
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "/findById")
+    public ResultData find(Long id) {
+        CheckTest checkTest = checkTestService.getById(id);
+        return ResultData.success(checkTest);
+    }
+
+    /**
+     * 获取数据列表list
+     * @param testBo
+     * @return
+     */
+    @PostMapping(value = "/list")
+    public ResultData list(@RequestBody CheckTestBo testBo) {
+        //查询条件
+        QueryWrapper<CheckTest> wrapper = new QueryWrapper<>();
+        //type条件
+        if (testBo.getTestType() != null) {
+            wrapper.lambda().eq(CheckTest::getTestType,testBo.getTestType());
+        }
+        //state条件
+        if (testBo.getState() != null) {
+            wrapper.lambda().eq(CheckTest::getState, testBo.getState());
+        }
+        //name模糊查询
+        if (StringUtils.isNotEmpty(testBo.getTestName())) {
+            wrapper.lambda().like(CheckTest::getTestName, testBo.getTestName());
+        }
+        //倒叙
+        wrapper.lambda().orderByDesc(CheckTest::getTestId);
+        IPage<CheckTest> result = checkTestService.page(PageUtil.getQuery(testBo.getPage(), testBo.getPageSize()), wrapper);
+        return ResultData.success(result);
+    }
+
+    /**
+     * 通过ID获取
+     * @param testBo
+     * @return
+     */
+    @GetMapping(value = "/delete")
+    public ResultData delete(CheckTestBo testBo) {
+        paramCheck.notNull(testBo)
+                .notNull(testBo.getTestId());
+        //物理删除
+        //boolean bool = checkTestService.removeById(testBo.getTestId());
+        //逻辑删除
+        QueryWrapper<CheckTest> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(CheckTest::getTestId, testBo.getTestId()).eq(CheckTest::getIsDeleted, Boolean.TRUE);
+        boolean bool = checkTestService.update(wrapper);
+        if(bool) {
+            return ResultData.success("操作成功");
+        }
+        return ResultData.fail("操作失败");
+    }
+}

+ 73 - 0
zd-modules/zd-check/src/main/java/com/zd/check/entity/CheckTest.java

@@ -0,0 +1,73 @@
+package com.zd.check.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 安全检查项目测试表
+ * </p>
+ *
+ * @author linft
+ * @since 2023-04-14
+ */
+@Getter
+@Setter
+@TableName("chk_check_test")
+@ApiModel(value = "CheckTest对象", description = "安全检查项目测试表")
+public class CheckTest extends Model<CheckTest> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId(value = "test_id", type = IdType.ASSIGN_ID)
+    private Long testId;
+
+    @ApiModelProperty("测试名称")
+    private String testName;
+
+    @ApiModelProperty("描述")
+    private String testDesc;
+
+    @ApiModelProperty("类型:0-默认,1-检查1,2-检查2,3-检查3")
+    private Integer testType;
+
+    @ApiModelProperty("状态:0-不可用,1-可用")
+    private Boolean state;
+
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long updateBy;
+
+    @ApiModelProperty("是否删除:0-否,1-是")
+    private Boolean isDeleted;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.testId;
+    }
+
+}

+ 18 - 0
zd-modules/zd-check/src/main/java/com/zd/check/mapper/CheckTestMapper.java

@@ -0,0 +1,18 @@
+package com.zd.check.mapper;
+
+import com.zd.check.entity.CheckTest;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 安全检查项目测试表 Mapper 接口
+ * </p>
+ *
+ * @author linft
+ * @since 2023-04-14
+ */
+@Mapper
+public interface CheckTestMapper extends BaseMapper<CheckTest> {
+
+}

+ 16 - 0
zd-modules/zd-check/src/main/java/com/zd/check/service/CheckTestService.java

@@ -0,0 +1,16 @@
+package com.zd.check.service;
+
+import com.zd.check.entity.CheckTest;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 安全检查项目测试表 服务类
+ * </p>
+ *
+ * @author linft
+ * @since 2023-04-14
+ */
+public interface CheckTestService extends IService<CheckTest> {
+
+}

+ 20 - 0
zd-modules/zd-check/src/main/java/com/zd/check/service/impl/CheckTestServiceImpl.java

@@ -0,0 +1,20 @@
+package com.zd.check.service.impl;
+
+import com.zd.check.entity.CheckTest;
+import com.zd.check.mapper.CheckTestMapper;
+import com.zd.check.service.CheckTestService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 安全检查项目测试表 服务实现类
+ * </p>
+ *
+ * @author linft
+ * @since 2023-04-14
+ */
+@Service
+public class CheckTestServiceImpl extends ServiceImpl<CheckTestMapper, CheckTest> implements CheckTestService {
+
+}

+ 49 - 0
zd-modules/zd-check/src/main/java/com/zd/check/util/PageUtil.java

@@ -0,0 +1,49 @@
+package com.zd.check.util;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+ * MybatisPlus分页工具
+ *
+ * @author linft
+ * @since 2023/04/14
+ **/
+public class PageUtil {
+
+    /**
+     * 获取分页对象
+     *
+     * @param <T> 泛型
+     * @return 分页对象
+     */
+    public static <T> IPage<T> getQuery(int page, int pageSize) {
+        return new Page<>(page, pageSize);
+    }
+
+    /**
+     * 获取查询对象
+     *
+     * @param entity 实体
+     * @param <T> 泛型
+     * @return 查询对象
+     */
+    public static <T> Wrapper<T> getWrapper(T entity) {
+        return new QueryWrapper<>(entity);
+    }
+
+    /**
+     * 分页对象转换
+     *
+     * @param page 分页
+     * @return 新分页对象
+     */
+    public static <B, A> IPage<B> toPage(IPage<A> page) {
+        IPage<B> newPage = new Page<>();
+        BeanUtil.copyProperties(page, newPage);
+        return newPage;
+    }
+}

+ 8 - 0
zd-modules/zd-check/src/main/resources/bootstrap.yml

@@ -0,0 +1,8 @@
+server:
+  port: ${service.port.check}
+
+# mybatis配置
+mybatis-plus:
+  configuration:
+    cache-enabled: false
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 24 - 0
zd-modules/zd-check/src/main/resources/mapper/CheckTestMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zd.check.mapper.CheckTestMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.zd.check.entity.CheckTest">
+        <id column="test_id" property="testId" />
+        <result column="test_name" property="testName" />
+        <result column="test_desc" property="testDesc" />
+        <result column="test_type" property="testType" />
+        <result column="state" property="state" />
+        <result column="create_time" property="createTime" />
+        <result column="create_by" property="createBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        test_id, test_name, test_desc, test_type, state, create_time, create_by, update_time, update_by, is_deleted
+    </sql>
+
+</mapper>