韦二铭 há 5 anos atrás
pai
commit
b8a714ae5d
100 ficheiros alterados com 1851 adições e 43 exclusões
  1. 2 5
      base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/config/RibbonConfig.java
  2. 1 1
      base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/feign/FeignErrorDecoder.java
  3. 2 2
      base-springframework/base-springframework-constant/pom.xml
  4. 32 0
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/http/converter/StringTrimmerEditorInitBinder.java
  5. 1 1
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/http/converter/StringWithoutSpaceDeserializer.java
  6. 9 5
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/swagger/Swagger3ServiceModelToOpenApiMapperImpl.java
  7. 18 10
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/config/WebConfiguration.java
  8. 0 2
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/handler/BaseExceptionHandler.java
  9. 1 0
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/handler/ResponseHandler.java
  10. 3 2
      base-springframework/base-springframework-core/src/main/resources/META-INF/spring.factories
  11. 3 3
      base-springframework/base-springframework-mysql/src/main/java/com/wei/base/springframework/mysql/constants/GeneratorParam.java
  12. 6 0
      base-springframework/base-springframework-redis/README.md
  13. 1 1
      base-springframework/base-springframework-redis/src/main/java/com/wei/base/springframework/redis/config/RedisConfig.java
  14. 2 0
      base-springframework/base-springframework-redis/src/main/java/com/wei/base/springframework/redis/utils/RedisLock.java
  15. 12 0
      base-springframework/base-springframework-util/pom.xml
  16. 6 1
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/BeanUtil.java
  17. 0 1
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/SpringBeanUtil.java
  18. 125 4
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/StringUtil.java
  19. 57 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/VerifyImageUtil.java
  20. 21 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/enums/UtilExceptionEnum.java
  21. 121 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/OperatorTextCreator.java
  22. 27 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/enums/VerifyImageTypeEnum.java
  23. 25 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/CharVerifyImage.java
  24. 25 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/OperatorVerifyImage.java
  25. 35 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/SlideVerifyImage.java
  26. 31 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/TextSelectionVerifyImage.java
  27. 16 0
      base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/VerifyImageType.java
  28. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/1.jpg
  29. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/10.jpg
  30. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/11.jpg
  31. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/12.jpg
  32. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/13.jpg
  33. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/14.jpg
  34. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/15.jpg
  35. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/16.jpg
  36. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/17.jpg
  37. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/18.jpg
  38. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/19.jpg
  39. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/2.jpg
  40. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/20.jpg
  41. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/3.jpg
  42. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/4.jpg
  43. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/5.jpg
  44. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/6.jpg
  45. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/7.jpg
  46. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/8.jpg
  47. BIN
      base-springframework/base-springframework-util/src/main/resources/static/targets/9.jpg
  48. BIN
      base-springframework/base-springframework-util/src/main/resources/static/templates/border.png
  49. BIN
      base-springframework/base-springframework-util/src/main/resources/static/templates/template.png
  50. 13 1
      wei-developer-platform/wei-developer-platform-app/pom.xml
  51. 6 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/constant/RedisConstant.java
  52. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/MenuController.java
  53. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/RoleController.java
  54. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/RoleMenuController.java
  55. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/SystemController.java
  56. 77 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/UserController.java
  57. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/UserRoleController.java
  58. 61 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/Menu.java
  59. 51 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/Role.java
  60. 48 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/RoleMenu.java
  61. 56 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/System.java
  62. 76 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/User.java
  63. 48 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/UserRole.java
  64. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/enums/DeveloperPlatformExceptionEnum.java
  65. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/MenuMapper.java
  66. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/RoleMapper.java
  67. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/RoleMenuMapper.java
  68. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/SystemMapper.java
  69. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/UserMapper.java
  70. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/UserRoleMapper.java
  71. 14 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/MenuMapstruct.java
  72. 14 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/RoleMapstruct.java
  73. 14 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/RoleMenuMapstruct.java
  74. 14 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/SystemMapstruct.java
  75. 14 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/UserMapstruct.java
  76. 14 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/UserRoleMapstruct.java
  77. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/MenuService.java
  78. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/RoleMenuService.java
  79. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/RoleService.java
  80. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/SystemService.java
  81. 16 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/UserRoleService.java
  82. 32 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/UserService.java
  83. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/MenuServiceImpl.java
  84. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/RoleMenuServiceImpl.java
  85. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/RoleServiceImpl.java
  86. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/SystemServiceImpl.java
  87. 23 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/UserRoleServiceImpl.java
  88. 126 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/UserServiceImpl.java
  89. 33 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/vo/request/CheckVerifyImageRequest.java
  90. 31 0
      wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/vo/respon/VerifyImageResp.java
  91. 4 4
      wei-developer-platform/wei-developer-platform-app/src/main/resources/bootstrap.yml
  92. 19 0
      wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/MenuMapper.xml
  93. 17 0
      wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/RoleMapper.xml
  94. 17 0
      wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/RoleMenuMapper.xml
  95. 18 0
      wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/SystemMapper.xml
  96. 6 0
      wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/UserMapper.xml
  97. 17 0
      wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/UserRoleMapper.xml
  98. BIN
      wei-developer-platform/wei-developer-platform-app/src/main/resources/target/1.jpg
  99. BIN
      wei-developer-platform/wei-developer-platform-app/src/main/resources/target/10.jpg
  100. BIN
      wei-developer-platform/wei-developer-platform-app/src/main/resources/target/11.jpg

+ 2 - 5
base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/config/RibbonConfig.java

@@ -33,7 +33,7 @@ public class RibbonConfig {
     public void autoEagerLoad() {
         //判断是否需要自动加载
         EagerLoad eagerLoad = ribbonProperties.getEagerLoad();
-        if (!eagerLoad.getAutoEnabled()) {
+        if (eagerLoad == null && !eagerLoad.getAutoEnabled()) {
             return;
         }
 
@@ -42,10 +42,7 @@ public class RibbonConfig {
         List<String> clients = Lists.newArrayListWithCapacity(serviceInstances.size());
 
         List<String> excludes = Lists.newArrayList();
-        if (eagerLoad != null) {
-            excludes = eagerLoad.getExcludes();
-        }
-
+        excludes = eagerLoad.getExcludes();
         for (ServiceInstance serviceInstance : serviceInstances) {
             String serviceId = serviceInstance.getServiceId();
             if (CollectionUtils.isNotEmpty(excludes)) {

+ 1 - 1
base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/feign/FeginErrorDecoder.java → base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/feign/FeignErrorDecoder.java

@@ -18,7 +18,7 @@ import static feign.FeignException.errorStatus;
  * @date : 2020/7/24
  */
 @Slf4j
-public class FeginErrorDecoder implements ErrorDecoder {
+public class FeignErrorDecoder implements ErrorDecoder {
 
     @Override
     public Exception decode(String methodKey, Response response) {

+ 2 - 2
base-springframework/base-springframework-constant/pom.xml

@@ -25,11 +25,11 @@
     </properties>
 
     <dependencies>
-        <dependency>
+        <!--<dependency>
             <groupId>com.wei</groupId>
             <artifactId>base-springframework-util</artifactId>
             <version>${project.version}</version>
-        </dependency>
+        </dependency>-->
     </dependencies>
 
     <build>

+ 32 - 0
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/http/converter/StringTrimmerEditorInitBinder.java

@@ -0,0 +1,32 @@
+package com.wei.base.springframework.core.http.converter;
+
+
+import org.springframework.beans.propertyeditors.StringTrimmerEditor;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.InitBinder;
+
+/**
+ * 去除get入参前后空格
+ *
+ * @author : weierming
+ * @date : 2020/10/13
+ */
+@ControllerAdvice
+public class StringTrimmerEditorInitBinder {
+
+    /**
+     * 去除get方式的参数空格
+     *
+     * @param binder
+     */
+    @InitBinder
+    public void initBinder(WebDataBinder binder) {
+        // 创建 String trim 编辑器
+        // 构造方法中 boolean 参数含义为如果是空白字符串,是否转换为null
+        // 即如果为true,那么 " " 会被转换为 null,否者为 ""
+        StringTrimmerEditor propertyEditor = new StringTrimmerEditor(true);
+        // 为 String 类对象注册编辑器
+        binder.registerCustomEditor(String.class, propertyEditor);
+    }
+}

+ 1 - 1
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/http/converter/StringWithoutSpaceDeserializer.java

@@ -22,7 +22,7 @@ public class StringWithoutSpaceDeserializer extends StdDeserializer<String> {
     }
 
     @Override
-    public String deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException {
+    public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
         return StringUtil.trim(jsonParser.getText());
     }
 }

+ 9 - 5
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/swagger/Swagger3ServiceModelToOpenApiMapperImpl.java

@@ -83,7 +83,7 @@ public class Swagger3ServiceModelToOpenApiMapperImpl extends ServiceModelToOpenA
                 continue;
             }
 
-            Schema restfulSchema = getRestfulSchema(schema, restfulClass);
+            Schema restfulSchema = getRestfulSchema(schema, restfulClass, schemaName);
             newSchemas.put(restfulSchemaName, restfulSchema);
         }
 
@@ -98,7 +98,7 @@ public class Swagger3ServiceModelToOpenApiMapperImpl extends ServiceModelToOpenA
      * @param restfulClass 返回对象类
      * @return 自定义封装返回的schema对象
      */
-    private Schema getRestfulSchema(Schema schema, Class<?> restfulClass) {
+    private Schema getRestfulSchema(Schema schema, Class<?> restfulClass, String schemaName) {
         // 通过反射获取返回对象的属性
         PropertyDescriptor[] propertyDescriptors = ReflectUtils.getBeanProperties(restfulClass);
         Schema restfulSchema = new Schema();
@@ -118,8 +118,12 @@ public class Swagger3ServiceModelToOpenApiMapperImpl extends ServiceModelToOpenA
 
             restfulPropertiesSchema.setName(name);
             restfulPropertiesSchema.setTitle(name);
-            String typeName = propertyDescriptor.getPropertyType().getTypeName();
-            restfulPropertiesSchema.setType(StringUtil.lowerCase(StringUtil.getClassName(typeName)));
+            if (StringUtil.equals(name, "data") && StringUtil.isNotBlank(schemaName)) {
+                restfulPropertiesSchema.set$ref(schemaName);
+            } else {
+                String typeName = propertyDescriptor.getPropertyType().getTypeName();
+                restfulPropertiesSchema.setType(StringUtil.lowerCase(StringUtil.getClassName(typeName)));
+            }
             restfulVOProperties.put(name, restfulPropertiesSchema);
         }
 
@@ -218,7 +222,7 @@ public class Swagger3ServiceModelToOpenApiMapperImpl extends ServiceModelToOpenA
         // 方法放回viod时content会为空
         if (content.isEmpty()) {
             MediaType mediaType = new MediaType();
-            mediaType.schema(getRestfulSchema(null, restfulClass));
+            mediaType.schema(getRestfulSchema(null, restfulClass, null));
 
             // 添加返回对象
             content.addMediaType(org.springframework.http.MediaType.ALL_VALUE, mediaType);

+ 18 - 10
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/http/converter/MappingJacksonConverter.java → base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/config/WebConfiguration.java

@@ -1,4 +1,4 @@
-package com.wei.base.springframework.core.http.converter;
+package com.wei.base.springframework.core.web.config;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -6,31 +6,39 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.google.common.base.Charsets;
 import com.google.common.collect.Lists;
-import com.wei.base.springframework.core.web.config.ResponseHandlerConfigure;
+import com.wei.base.springframework.core.http.converter.StringWithoutSpaceDeserializer;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 import java.text.SimpleDateFormat;
-
+import java.util.List;
+
+/**
+ * 将MappingJackson2HttpMessageConverter消息转换器排在靠前位置
+ *
+ * @author : weierming
+ * @date : 2020/10/12
+ */
 @Configuration
-public class MappingJacksonConverter {
+public class WebConfiguration implements WebMvcConfigurer {
 
     @Autowired
     private ResponseHandlerConfigure responseHandlerConfigure;
 
-    @Bean
-    public MappingJackson2HttpMessageConverter configureMessageConverters() {
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
         MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
-        //设置日期格式
         ObjectMapper objectMapper = new ObjectMapper();
+        //设置日期格式
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(responseHandlerConfigure.getDateFormat());
         objectMapper.setDateFormat(simpleDateFormat);
 
         // null值是否返回,默认为不返回
-        if (responseHandlerConfigure.getIsWriteMapNullValue()) {
+        if (!responseHandlerConfigure.getIsWriteMapNullValue()) {
             objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
         }
 
@@ -43,6 +51,6 @@ public class MappingJacksonConverter {
         mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
         mappingJackson2HttpMessageConverter.setDefaultCharset(Charsets.UTF_8);
         mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Lists.newArrayList(MediaType.APPLICATION_JSON));
-        return mappingJackson2HttpMessageConverter;
+        converters.add(0, mappingJackson2HttpMessageConverter);
     }
 }

+ 0 - 2
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/handler/BaseExceptionHandler.java

@@ -82,7 +82,6 @@ public class BaseExceptionHandler {
     @ResponseBody
     public RestfulVO<String> missingServletRequestParameterException(MissingServletRequestParameterException e) {
         log.error(e.getMessage(), e);
-
         return new RestfulVO<>(RestfulEnum.FAIL, String.format("请求参数%s不存在!", e.getParameterName()));
     }
 
@@ -96,7 +95,6 @@ public class BaseExceptionHandler {
     @ResponseBody
     public RestfulVO<String> httpMessageNotReadableException(HttpMessageNotReadableException e) {
         log.error(e.getMessage(), e);
-
         return new RestfulVO<>(RestfulEnum.FAIL, "请求参数错误!");
     }
 

+ 1 - 0
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/handler/ResponseHandler.java

@@ -3,6 +3,7 @@ package com.wei.base.springframework.core.web.handler;
 import com.wei.base.springframework.constant.vo.RestfulVO;
 import com.wei.base.springframework.core.web.config.ResponseHandlerConfigure;
 import com.wei.base.springframework.util.RegexUtil;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.MethodParameter;

+ 3 - 2
base-springframework/base-springframework-core/src/main/resources/META-INF/spring.factories

@@ -1,10 +1,11 @@
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  com.wei.base.springframework.core.http.converter.MappingJacksonConverter,\
   com.wei.base.springframework.core.swagger.Swagger3Config,\
   com.wei.base.springframework.core.swagger.Swagger3ServiceModelToOpenApiMapperImpl,\
   com.wei.base.springframework.core.web.config.ResponseHandlerConfigure,\
   com.wei.base.springframework.core.web.handler.BaseExceptionHandler,\
-  com.wei.base.springframework.core.web.handler.ResponseHandler
+  com.wei.base.springframework.core.web.handler.ResponseHandler,\
+  com.wei.base.springframework.core.web.config.WebConfiguration,\
+  com.wei.base.springframework.core.http.converter.StringTrimmerEditorInitBinder
 
 org.springframework.boot.env.EnvironmentPostProcessor=\
   com.wei.base.springframework.core.env.InitializeCustomConfiguration

+ 3 - 3
base-springframework/base-springframework-mysql/src/main/java/com/wei/base/springframework/mysql/constants/GeneratorParam.java

@@ -18,7 +18,7 @@ public class GeneratorParam {
     /**
      * 驱动连接的URL
      */
-    private String dataSourceUrl = "jdbc:mysql://192.168.11.128:3306/wei_user?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT";
+    private String dataSourceUrl = "jdbc:mysql://192.168.11.128:3307/developer_platform?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT";
 
     /**
      * 数据库连接用户名
@@ -28,7 +28,7 @@ public class GeneratorParam {
     /**
      * 数据库连接密码
      */
-    private String dataSourcePassWord = "123456";
+    private String dataSourcePassWord = "root";
 
     /**
      * 需要生成的表
@@ -43,5 +43,5 @@ public class GeneratorParam {
     /**
      * 包名
      */
-    private String parent = "com.wei.user";
+    private String parent = "com.wei.developer.platform";
 }

+ 6 - 0
base-springframework/base-springframework-redis/README.md

@@ -0,0 +1,6 @@
+# redis配置优化
+在redis中执行以下命令开启自动清理碎片配置
+```
+config set activedefrag yes
+```
+手动清理会阻塞线程不建议手动清理

+ 1 - 1
base-springframework/base-springframework-redis/src/main/java/com/wei/base/springframework/redis/config/RedisConfig.java

@@ -12,7 +12,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 @Configuration
 public class RedisConfig {
-
+    
     @Bean
     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
         RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

+ 2 - 0
base-springframework/base-springframework-redis/src/main/java/com/wei/base/springframework/redis/utils/RedisLock.java

@@ -8,9 +8,11 @@ import org.redisson.api.RLock;
 import org.redisson.api.RReadWriteLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.stereotype.Component;
 
 @Slf4j
+@ConditionalOnBean(RedissonClient.class)
 @Component
 public class RedisLock<T> {
 

+ 12 - 0
base-springframework/base-springframework-util/pom.xml

@@ -19,9 +19,21 @@
         <java.version>1.8</java.version>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
+        <kaptcha.version>2.3.0</kaptcha.version>
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>base-springframework-constant</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code</groupId>
+            <artifactId>kaptcha</artifactId>
+            <version>${kaptcha.version}</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 6 - 1
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/BeanUtil.java

@@ -14,7 +14,12 @@ import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
-
+/**
+ * 对象拷贝工具类
+ *
+ * @author : weierming
+ * @date : 2020/9/30
+ */
 @Slf4j
 public class BeanUtil {
 

+ 0 - 1
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/SpringBeanUtil.java

@@ -43,7 +43,6 @@ public class SpringBeanUtil implements ApplicationContextAware {
      * @return 返回这个bean
      * @throws BeansException bean异常
      */
-    @SuppressWarnings("unchecked")
     public static <T> T getBean(String name) throws BeansException {
         return (T) applicationContext.getBean(name);
     }

+ 125 - 4
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/StringUtil.java

@@ -3,6 +3,7 @@ package com.wei.base.springframework.util;
 import com.google.common.collect.Lists;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -16,10 +17,12 @@ public class StringUtil extends StringUtils {
 
     /**
      * 驼峰格式字符串转换为下划线格式字符串
-     *
      * <pre>
      * camelToUnderline("userName") = "user_name";
      * </pre>
+     *
+     * @param param 需要转换的字符串
+     * @return 转换后的字符串
      */
     public static String camelToUnderline(String param) {
         if (isBlank(param)) {
@@ -41,12 +44,21 @@ public class StringUtil extends StringUtils {
         return sb.toString();
     }
 
+    /**
+     * 驼峰格式字符串转换为下划线格式字符串
+     * <pre>
+     * camelToUnderline("userName") = "user_name";
+     * </pre>
+     *
+     * @param param 需要转换的字符串
+     * @return 转换后的字符串
+     */
     public static String[] camelToUnderline(String[] param) {
         if (param == null) {
             return null;
         }
 
-        Integer length = param.length;
+        int length = param.length;
         String[] array = new String[length];
         for (int i = 0; i < length; i++) {
             array[i] = camelToUnderline(param[i]);
@@ -110,19 +122,128 @@ public class StringUtil extends StringUtils {
         return sb.toString();
     }
 
+    /**
+     * 拆分字符串为list
+     *
+     * @param str            需要拆分的字符串
+     * @param separatorChars 拆分格式
+     * @return 返回拆分的字符串集合
+     */
     public static List<String> splitList(final String str, final String separatorChars) {
         if (isBlank(str)) {
             return Lists.newArrayList();
         }
 
-        String[] split = split(str, separatorChars);
-        return Lists.newArrayList(split);
+        return splitList(str, separatorChars, -1, false);
+    }
+
+    /**
+     * 拆分字符串为list
+     *
+     * @param str               需要拆分的字符串
+     * @param separatorChars    拆分格式
+     * @param max
+     * @param preserveAllTokens
+     * @return
+     */
+    public static List<String> splitList(final String str, final String separatorChars, final int max, final boolean preserveAllTokens) {
+        if (str == null) {
+            return null;
+        }
+        final int len = str.length();
+        if (len == 0) {
+            return Lists.newArrayList();
+        }
+        final List<String> list = new ArrayList<>();
+        int sizePlus1 = 1;
+        int i = 0, start = 0;
+        boolean match = false;
+        boolean lastMatch = false;
+        if (separatorChars == null) {
+            // Null separator means use whitespace
+            while (i < len) {
+                if (Character.isWhitespace(str.charAt(i))) {
+                    if (match || preserveAllTokens) {
+                        lastMatch = true;
+                        if (sizePlus1++ == max) {
+                            i = len;
+                            lastMatch = false;
+                        }
+                        list.add(str.substring(start, i));
+                        match = false;
+                    }
+                    start = ++i;
+                    continue;
+                }
+                lastMatch = false;
+                match = true;
+                i++;
+            }
+        } else if (separatorChars.length() == 1) {
+            // Optimise 1 character case
+            final char sep = separatorChars.charAt(0);
+            while (i < len) {
+                if (str.charAt(i) == sep) {
+                    if (match || preserveAllTokens) {
+                        lastMatch = true;
+                        if (sizePlus1++ == max) {
+                            i = len;
+                            lastMatch = false;
+                        }
+                        list.add(str.substring(start, i));
+                        match = false;
+                    }
+                    start = ++i;
+                    continue;
+                }
+                lastMatch = false;
+                match = true;
+                i++;
+            }
+        } else {
+            // standard case
+            while (i < len) {
+                if (separatorChars.indexOf(str.charAt(i)) >= 0) {
+                    if (match || preserveAllTokens) {
+                        lastMatch = true;
+                        if (sizePlus1++ == max) {
+                            i = len;
+                            lastMatch = false;
+                        }
+                        list.add(str.substring(start, i));
+                        match = false;
+                    }
+                    start = ++i;
+                    continue;
+                }
+                lastMatch = false;
+                match = true;
+                i++;
+            }
+        }
+        if (match || preserveAllTokens && lastMatch) {
+            list.add(str.substring(start, i));
+        }
+
+        return list;
     }
 
+    /**
+     * 拆分字符串为list
+     *
+     * @param str 需要拆分的字符串
+     * @return 返回按照逗号分隔的字符串集合
+     */
     public static List<String> splitList(String str) {
         return splitList(str, ",");
     }
 
+    /**
+     * 获取typeName对应的class类名
+     *
+     * @param typeName typeName
+     * @return 类名
+     */
     public static String getClassName(String typeName) {
         String[] split = StringUtil.split(typeName, ".");
         if (split == null || split.length <= 0) {

Diff do ficheiro suprimidas por serem muito extensas
+ 57 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/VerifyImageUtil.java


+ 21 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/enums/UtilExceptionEnum.java

@@ -0,0 +1,21 @@
+package com.wei.base.springframework.util.enums;
+
+import com.wei.base.springframework.constant.exception.BaseException;
+import lombok.Getter;
+
+@Getter
+public enum UtilExceptionEnum implements BaseException {
+
+    COMMENT_SERVICE_EXCEPTION(1000, "%s"),
+    GENERATE_VERIFY_IMAGE_ERROR(1001, "生成验证码错误!"),
+    NO_VERIFY_IMAGE(1002, "没有验证码图片!"),
+    ;
+
+    private Integer code;
+    private String msg;
+
+    UtilExceptionEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+}

+ 121 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/OperatorTextCreator.java

@@ -0,0 +1,121 @@
+package com.wei.base.springframework.util.kaptcha;
+
+import com.google.code.kaptcha.text.impl.DefaultTextCreator;
+
+import java.util.Random;
+
+/**
+ * 运算符验证码字符生成器
+ *
+ * @author : weierming
+ * @date : 2020/10/12
+ */
+public class OperatorTextCreator extends DefaultTextCreator {
+
+    // 运算表达式及结果值
+    StringBuilder result = new StringBuilder();
+
+    /**
+     * 获取运算验证码不超过两位数
+     *
+     * @return 返回运算验证码
+     */
+    @Override
+    public String getText() {
+        Random random = new Random(System.currentTimeMillis());
+        int x = random.nextInt(10);
+        int y = random.nextInt(10);
+        int operationalRules = random.nextInt(4);
+
+        switch (operationalRules) {
+            case 0:
+                add(x, y);
+                break;
+            case 1:
+                subtract(x, y);
+                break;
+            case 2:
+                multiply(x, y);
+                break;
+            // 除法计算复杂去掉
+//            case 3 : divide(x, y); break;
+            default:
+                multiply(x, y);
+                break;
+        }
+
+        return result.toString();
+    }
+
+    /**
+     * 加法运算
+     *
+     * @param x 变量x
+     * @param y 变量y
+     */
+    private void add(int x, int y) {
+        result.append(x);
+        result.append(" + ");
+        result.append(y);
+        result.append(" = ?@");
+        result.append(x + y);
+    }
+
+    /**
+     * 减法运算
+     *
+     * @param x 变量x
+     * @param y 变量y
+     */
+    private void subtract(int x, int y) {
+        int max = Math.max(x, y);
+        int min = Math.min(x, y);
+        result.append(max);
+        result.append(" - ");
+        result.append(min);
+        result.append(" = ?@");
+        result.append(max - min);
+    }
+
+    /**
+     * 乘法运算
+     *
+     * @param x 变量x
+     * @param y 变量y
+     */
+    private void multiply(int x, int y) {
+        int value = x * y;
+        result.append(x);
+        result.append(value > 100 ? " + " : " * ");
+        result.append(y);
+        result.append(" = ?@");
+        result.append(value > 100 ? x + y : x * y);
+    }
+
+    /**
+     * 除法运算
+     *
+     * @param x 变量x
+     * @param y 变量y
+     */
+    private void divide(int x, int y) {
+        int max = Math.max(x, y);
+        int min = Math.min(x, y);
+        if (min == 0) {
+            multiply(max, min);
+        } else if (max % min == 0) {
+            result.append(max);
+            result.append(" / ");
+            result.append(min);
+            result.append(" = ?@");
+            result.append(max / min);
+        } else {
+            result.append(max);
+            result.append(" % ");
+            result.append(min);
+            result.append(" = ?@");
+            result.append(max % min);
+        }
+    }
+
+}

+ 27 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/enums/VerifyImageTypeEnum.java

@@ -0,0 +1,27 @@
+package com.wei.base.springframework.util.kaptcha.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum VerifyImageTypeEnum {
+
+    CHAR(1, "字符验证码"), OPERATION(2, "运算验证码"), SLIDE(3, "滑动验证码"),
+    TEXT_SELECTION(4, "文字点选验证码"),
+    ;
+
+    public Integer code;
+
+    public String msg;
+
+    public static VerifyImageTypeEnum getEnumByCode(Integer code) {
+        for (VerifyImageTypeEnum result : VerifyImageTypeEnum.values()) {
+            if (result.getCode().equals(code)) {
+                return result;
+            }
+        }
+
+        return null;
+    }
+}

+ 25 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/CharVerifyImage.java

@@ -0,0 +1,25 @@
+package com.wei.base.springframework.util.kaptcha.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CharVerifyImage implements Serializable {
+
+    private static final long serialVersionUID = 5296643113584217325L;
+
+    /**
+     * 字符验证码
+     */
+    private String image;
+
+    /**
+     * 验证码图片内容
+     */
+    private String value;
+}

+ 25 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/OperatorVerifyImage.java

@@ -0,0 +1,25 @@
+package com.wei.base.springframework.util.kaptcha.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class OperatorVerifyImage implements Serializable {
+
+    private static final long serialVersionUID = 5296643113584217325L;
+
+    /**
+     * 运算符验证码
+     */
+    private String image;
+
+    /**
+     * 计算结果
+     */
+    private String value;
+}

+ 35 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/SlideVerifyImage.java

@@ -0,0 +1,35 @@
+package com.wei.base.springframework.util.kaptcha.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SlideVerifyImage implements Serializable {
+
+    private static final long serialVersionUID = -6164216580154526973L;
+
+    /**
+     * 滑动验证码
+     */
+    private String image;
+
+    /**
+     * 滑动验证码,裁剪图
+     */
+    private String cutoutImage;
+
+    /**
+     * 滑动验证码,x轴
+     */
+    private Integer x;
+
+    /**
+     * 滑动验证码,Y轴
+     */
+    private Integer y;
+}

+ 31 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/TextSelectionVerifyImage.java

@@ -0,0 +1,31 @@
+package com.wei.base.springframework.util.kaptcha.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TextSelectionVerifyImage implements Serializable {
+
+    private static final long serialVersionUID = -6164216580154526973L;
+
+    /**
+     * 滑动验证码
+     */
+    private String image;
+
+    /**
+     * 点选文字提示
+     */
+    private String tips;
+
+    /**
+     * 文字坐标顺序
+     */
+    private List<String> codeAxis;
+}

+ 16 - 0
base-springframework/base-springframework-util/src/main/java/com/wei/base/springframework/util/kaptcha/vo/VerifyImageType.java

@@ -0,0 +1,16 @@
+package com.wei.base.springframework.util.kaptcha.vo;
+
+import com.wei.base.springframework.util.kaptcha.enums.VerifyImageTypeEnum;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class VerifyImageType implements Serializable {
+
+    private static final long serialVersionUID = 7281281906050861759L;
+    /**
+     * 验证码类型,0:字符串验证码,1:计算验证码,2:滑动验证码
+     */
+    private Integer type = VerifyImageTypeEnum.CHAR.code;
+}

BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/1.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/10.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/11.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/12.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/13.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/14.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/15.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/16.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/17.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/18.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/19.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/2.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/20.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/3.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/4.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/5.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/6.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/7.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/8.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/targets/9.jpg


BIN
base-springframework/base-springframework-util/src/main/resources/static/templates/border.png


BIN
base-springframework/base-springframework-util/src/main/resources/static/templates/template.png


+ 13 - 1
wei-developer-platform/wei-developer-platform-app/pom.xml

@@ -11,10 +11,22 @@
     <artifactId>wei-developer-platform-app</artifactId>
 
     <dependencies>
-        <dependency>
+        <!--<dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-jwt</artifactId>
             <version>1.1.1.RELEASE</version>
+        </dependency>-->
+
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>base-springframework-mysql</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>base-springframework-redis</artifactId>
+            <version>${project.version}</version>
         </dependency>
     </dependencies>
 

+ 6 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/constant/RedisConstant.java

@@ -0,0 +1,6 @@
+package com.wei.developer.platform.constant;
+
+public interface RedisConstant {
+
+    String VerifyImageRedisKey = "VERIFY_IMAGE:";
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/MenuController.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.wei.developer.platform.service.MenuService;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 菜单表 前端控制器
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@RestController
+@RequestMapping("/menu")
+public class MenuController {
+
+	@Autowired
+	private MenuService menuService;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/RoleController.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.wei.developer.platform.service.RoleService;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 角色表 前端控制器
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@RestController
+@RequestMapping("/role")
+public class RoleController {
+
+	@Autowired
+	private RoleService roleService;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/RoleMenuController.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.wei.developer.platform.service.RoleMenuService;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 角色菜单关系表 前端控制器
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@RestController
+@RequestMapping("/roleMenu")
+public class RoleMenuController {
+
+	@Autowired
+	private RoleMenuService roleMenuService;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/SystemController.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.wei.developer.platform.service.SystemService;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 系统表 前端控制器
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@RestController
+@RequestMapping("/system")
+public class SystemController {
+
+	@Autowired
+	private SystemService systemService;
+}

+ 77 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/UserController.java

@@ -0,0 +1,77 @@
+package com.wei.developer.platform.controller;
+
+import com.wei.base.springframework.util.VerifyImageUtil;
+import com.wei.base.springframework.util.kaptcha.vo.CharVerifyImage;
+import com.wei.base.springframework.util.kaptcha.vo.OperatorVerifyImage;
+import com.wei.base.springframework.util.kaptcha.vo.SlideVerifyImage;
+import com.wei.base.springframework.util.kaptcha.vo.TextSelectionVerifyImage;
+import com.wei.developer.platform.service.UserService;
+import com.wei.developer.platform.vo.request.CheckVerifyImageRequest;
+import com.wei.developer.platform.vo.respon.VerifyImageResp;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Parameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.io.IOException;
+
+/**
+ * <p>
+ * 用户表 前端控制器
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Api(tags = "用户表")
+@RestController
+@RequestMapping("/user")
+public class UserController {
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @ApiOperation("生成验证码图片")
+    @GetMapping("generateVerifyImage")
+    public VerifyImageResp generateVerifyImage(@Parameter(description = "验证码类型,1:字符验证码,2:运算验证码,3:滑动验证码,4:文字点选验证码,不传默认1")
+                                               @RequestParam(value = "verifyImageType", required = false, defaultValue = "1")
+                                                       Integer verifyImageType) {
+        return userService.generateVerifyImage(verifyImageType);
+    }
+
+    @ApiOperation("校验验证码")
+    @GetMapping("checkVerifyImage")
+    public void checkVerifyImage(@Valid CheckVerifyImageRequest request) {
+        userService.checkVerifyImage(request);
+    }
+
+    @ApiOperation("分页查询所有数据")
+    @PostMapping("test")
+    public CharVerifyImage getCharVerifyImage(@RequestBody CharVerifyImage verifyImage) throws IOException {
+        return VerifyImageUtil.getCharVerifyImage();
+    }
+
+    @ApiOperation("分页查询所有数据1")
+    @GetMapping("test1")
+    public OperatorVerifyImage test1() throws IOException {
+        return VerifyImageUtil.getOperatorVerifyImage();
+    }
+
+    @ApiOperation("分页查询所有数据1")
+    @GetMapping("test2")
+    public SlideVerifyImage test2() throws IOException {
+        return VerifyImageUtil.getSlideVerifyImage();
+    }
+
+    @ApiOperation("分页查询所有数据1")
+    @GetMapping("test3")
+    public TextSelectionVerifyImage test3() throws IOException {
+        return VerifyImageUtil.getTextSelectionVerifyImage();
+    }
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/controller/UserRoleController.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.wei.developer.platform.service.UserRoleService;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 用户角色关系表 前端控制器
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@RestController
+@RequestMapping("/userRole")
+public class UserRoleController {
+
+	@Autowired
+	private UserRoleService userRoleService;
+}

+ 61 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/Menu.java

@@ -0,0 +1,61 @@
+package com.wei.developer.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 菜单表
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Menu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 菜单名称
+     */
+    private String name;
+
+    /**
+     * 菜单地址
+     */
+    private String uri;
+
+    /**
+     * 系统ID
+     */
+    private Long systemId;
+
+    /**
+     * 是否启用,0:禁用,1:启用
+     */
+    private Integer isEnable;
+
+    /**
+     * 删除标识,0:未删除,1:已删除
+     */
+    private Integer isDelete;
+
+    private Long createId;
+
+    private LocalDateTime createTime;
+
+    private Long updateId;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 51 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/Role.java

@@ -0,0 +1,51 @@
+package com.wei.developer.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 角色表
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Role implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 角色名称
+     */
+    private String name;
+
+    /**
+     * 是否默认角色,0:否,1:是
+     */
+    private Integer isDefault;
+
+    /**
+     * 是否启用,0:禁用,1:启用
+     */
+    private Integer isEnable;
+
+    private Long createId;
+
+    private LocalDateTime createTime;
+
+    private Long updateId;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 48 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/RoleMenu.java

@@ -0,0 +1,48 @@
+package com.wei.developer.platform.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 角色菜单关系表
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RoleMenu implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 角色ID
+     */
+    private Long roleId;
+
+    /**
+     * 菜单ID
+     */
+    private Long menuId;
+
+    /**
+     * 删除标识,0:未删除,1:已删除
+     */
+    private Integer isDelete;
+
+    private Long createId;
+
+    private LocalDateTime createTime;
+
+    private Long updateId;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 56 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/System.java

@@ -0,0 +1,56 @@
+package com.wei.developer.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 系统表
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class System implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 系统名称
+     */
+    private String name;
+
+    /**
+     * 域名地址
+     */
+    private String domainName;
+
+    /**
+     * 是否启用,0:禁用,1:启用
+     */
+    private Integer isEnable;
+
+    /**
+     * 删除标识,0:未删除,1:已删除
+     */
+    private Integer isDelete;
+
+    private Long createId;
+
+    private LocalDateTime createTime;
+
+    private Long updateId;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 76 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/User.java

@@ -0,0 +1,76 @@
+package com.wei.developer.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class User implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 用户名称
+     */
+    private String name;
+
+    /**
+     * 用户手机号
+     */
+    private String mobilePhone;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 用户头像地址
+     */
+    private String pictureUrl;
+
+    /**
+     * 是否是管理员,0:否,1:是
+     */
+    private Integer isAdmin;
+
+    /**
+     * 是否启用,0:禁用,1:启用
+     */
+    private Integer isEnable;
+
+    /**
+     * 删除标识,0:未删除,1:已删除
+     */
+    private Integer isDelete;
+
+    private Long createId;
+
+    private LocalDateTime createTime;
+
+    private Long updateId;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 48 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/entity/UserRole.java

@@ -0,0 +1,48 @@
+package com.wei.developer.platform.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户角色关系表
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class UserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 角色ID
+     */
+    private Long roleId;
+
+    /**
+     * 删除标识,0:未删除,1:已删除
+     */
+    private Integer isDelete;
+
+    private Long createId;
+
+    private LocalDateTime createTime;
+
+    private Long updateId;
+
+    private LocalDateTime updateTime;
+
+
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/enums/DeveloperPlatformExceptionEnum.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.enums;
+
+import com.wei.base.springframework.constant.exception.BaseException;
+import lombok.Getter;
+
+@Getter
+public enum DeveloperPlatformExceptionEnum implements BaseException {
+
+    COMMENT_SERVICE_EXCEPTION(1000, "%s"),
+    VERIFY_IMAGE_TYPE_ERROR(1001, "验证码类型错误!"),
+    GENERATE_VERIFY_IMAGE_ERROR(1002, "生成验证码错误!"),
+    VERIFY_IS_INVALID(1003, "验证码已失效!"),
+    VERIFY_ERROR(1004, "验证码错误!"),
+    ;
+
+    private Integer code;
+    private String msg;
+
+    DeveloperPlatformExceptionEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/MenuMapper.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.mapper;
+
+import com.wei.developer.platform.entity.Menu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 菜单表 Mapper 接口
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface MenuMapper extends BaseMapper<Menu> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/RoleMapper.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.mapper;
+
+import com.wei.developer.platform.entity.Role;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 角色表 Mapper 接口
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface RoleMapper extends BaseMapper<Role> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/RoleMenuMapper.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.mapper;
+
+import com.wei.developer.platform.entity.RoleMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 角色菜单关系表 Mapper 接口
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/SystemMapper.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.mapper;
+
+import com.wei.developer.platform.entity.System;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 系统表 Mapper 接口
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface SystemMapper extends BaseMapper<System> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/UserMapper.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.mapper;
+
+import com.wei.developer.platform.entity.User;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 用户表 Mapper 接口
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface UserMapper extends BaseMapper<User> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapper/UserRoleMapper.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.mapper;
+
+import com.wei.developer.platform.entity.UserRole;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 用户角色关系表 Mapper 接口
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface UserRoleMapper extends BaseMapper<UserRole> {
+
+}

+ 14 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/MenuMapstruct.java

@@ -0,0 +1,14 @@
+package com.wei.developer.platform.mapstruct;
+
+import org.mapstruct.Mapper;
+
+/**
+* 菜单表 服务类型实体转换
+*
+* @author wei
+* @since 2020-10-10
+*/
+@Mapper(componentModel = "spring")
+public interface MenuMapstruct {
+
+}

+ 14 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/RoleMapstruct.java

@@ -0,0 +1,14 @@
+package com.wei.developer.platform.mapstruct;
+
+import org.mapstruct.Mapper;
+
+/**
+* 角色表 服务类型实体转换
+*
+* @author wei
+* @since 2020-10-10
+*/
+@Mapper(componentModel = "spring")
+public interface RoleMapstruct {
+
+}

+ 14 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/RoleMenuMapstruct.java

@@ -0,0 +1,14 @@
+package com.wei.developer.platform.mapstruct;
+
+import org.mapstruct.Mapper;
+
+/**
+* 角色菜单关系表 服务类型实体转换
+*
+* @author wei
+* @since 2020-10-10
+*/
+@Mapper(componentModel = "spring")
+public interface RoleMenuMapstruct {
+
+}

+ 14 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/SystemMapstruct.java

@@ -0,0 +1,14 @@
+package com.wei.developer.platform.mapstruct;
+
+import org.mapstruct.Mapper;
+
+/**
+* 系统表 服务类型实体转换
+*
+* @author wei
+* @since 2020-10-10
+*/
+@Mapper(componentModel = "spring")
+public interface SystemMapstruct {
+
+}

+ 14 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/UserMapstruct.java

@@ -0,0 +1,14 @@
+package com.wei.developer.platform.mapstruct;
+
+import org.mapstruct.Mapper;
+
+/**
+* 用户表 服务类型实体转换
+*
+* @author wei
+* @since 2020-10-10
+*/
+@Mapper(componentModel = "spring")
+public interface UserMapstruct {
+
+}

+ 14 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/mapstruct/UserRoleMapstruct.java

@@ -0,0 +1,14 @@
+package com.wei.developer.platform.mapstruct;
+
+import org.mapstruct.Mapper;
+
+/**
+* 用户角色关系表 服务类型实体转换
+*
+* @author wei
+* @since 2020-10-10
+*/
+@Mapper(componentModel = "spring")
+public interface UserRoleMapstruct {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/MenuService.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.service;
+
+import com.wei.developer.platform.entity.Menu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 菜单表 服务类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface MenuService extends IService<Menu> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/RoleMenuService.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.service;
+
+import com.wei.developer.platform.entity.RoleMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 角色菜单关系表 服务类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface RoleMenuService extends IService<RoleMenu> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/RoleService.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.service;
+
+import com.wei.developer.platform.entity.Role;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 角色表 服务类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface RoleService extends IService<Role> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/SystemService.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.service;
+
+import com.wei.developer.platform.entity.System;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 系统表 服务类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface SystemService extends IService<System> {
+
+}

+ 16 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/UserRoleService.java

@@ -0,0 +1,16 @@
+package com.wei.developer.platform.service;
+
+import com.wei.developer.platform.entity.UserRole;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 用户角色关系表 服务类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface UserRoleService extends IService<UserRole> {
+
+}

+ 32 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/UserService.java

@@ -0,0 +1,32 @@
+package com.wei.developer.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wei.developer.platform.entity.User;
+import com.wei.developer.platform.vo.request.CheckVerifyImageRequest;
+import com.wei.developer.platform.vo.respon.VerifyImageResp;
+
+/**
+ * <p>
+ * 用户表 服务类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+public interface UserService extends IService<User> {
+
+    /**
+     * 生成验证码图片
+     *
+     * @param verifyImageType 验证码类型
+     * @return 验证码
+     */
+    VerifyImageResp generateVerifyImage(Integer verifyImageType);
+
+    /**
+     * 校验验证码
+     *
+     * @param request 验证码参数
+     */
+    void checkVerifyImage(CheckVerifyImageRequest request);
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/MenuServiceImpl.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.service.impl;
+
+import com.wei.developer.platform.entity.Menu;
+import com.wei.developer.platform.mapper.MenuMapper;
+import com.wei.developer.platform.service.MenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 菜单表 服务实现类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Service
+public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
+
+	@Autowired
+	private MenuMapper menuMapper;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/RoleMenuServiceImpl.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.service.impl;
+
+import com.wei.developer.platform.entity.RoleMenu;
+import com.wei.developer.platform.mapper.RoleMenuMapper;
+import com.wei.developer.platform.service.RoleMenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 角色菜单关系表 服务实现类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Service
+public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
+
+	@Autowired
+	private RoleMenuMapper roleMenuMapper;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/RoleServiceImpl.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.service.impl;
+
+import com.wei.developer.platform.entity.Role;
+import com.wei.developer.platform.mapper.RoleMapper;
+import com.wei.developer.platform.service.RoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 角色表 服务实现类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Service
+public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
+
+	@Autowired
+	private RoleMapper roleMapper;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/SystemServiceImpl.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.service.impl;
+
+import com.wei.developer.platform.entity.System;
+import com.wei.developer.platform.mapper.SystemMapper;
+import com.wei.developer.platform.service.SystemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 系统表 服务实现类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Service
+public class SystemServiceImpl extends ServiceImpl<SystemMapper, System> implements SystemService {
+
+	@Autowired
+	private SystemMapper systemMapper;
+}

+ 23 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/UserRoleServiceImpl.java

@@ -0,0 +1,23 @@
+package com.wei.developer.platform.service.impl;
+
+import com.wei.developer.platform.entity.UserRole;
+import com.wei.developer.platform.mapper.UserRoleMapper;
+import com.wei.developer.platform.service.UserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户角色关系表 服务实现类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Service
+public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService {
+
+	@Autowired
+	private UserRoleMapper userRoleMapper;
+}

+ 126 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/service/impl/UserServiceImpl.java

@@ -0,0 +1,126 @@
+package com.wei.developer.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wei.base.springframework.constant.exception.ServiceException;
+import com.wei.base.springframework.util.StringUtil;
+import com.wei.base.springframework.util.VerifyImageUtil;
+import com.wei.base.springframework.util.kaptcha.enums.VerifyImageTypeEnum;
+import com.wei.base.springframework.util.kaptcha.vo.CharVerifyImage;
+import com.wei.base.springframework.util.kaptcha.vo.OperatorVerifyImage;
+import com.wei.base.springframework.util.kaptcha.vo.SlideVerifyImage;
+import com.wei.base.springframework.util.kaptcha.vo.TextSelectionVerifyImage;
+import com.wei.developer.platform.constant.RedisConstant;
+import com.wei.developer.platform.entity.User;
+import com.wei.developer.platform.enums.DeveloperPlatformExceptionEnum;
+import com.wei.developer.platform.mapper.UserMapper;
+import com.wei.developer.platform.service.UserService;
+import com.wei.developer.platform.vo.request.CheckVerifyImageRequest;
+import com.wei.developer.platform.vo.respon.VerifyImageResp;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * <p>
+ * 用户表 服务实现类
+ * </p>
+ *
+ * @author wei
+ * @since 2020-10-10
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+    @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    /**
+     * 生成验证码图片
+     *
+     * @param verifyImageType 验证码类型
+     * @return 验证码
+     */
+    @Override
+    public VerifyImageResp generateVerifyImage(Integer verifyImageType) {
+        VerifyImageTypeEnum enumByCode = VerifyImageTypeEnum.getEnumByCode(verifyImageType);
+        if (enumByCode == null) {
+            throw new ServiceException(DeveloperPlatformExceptionEnum.VERIFY_IMAGE_TYPE_ERROR);
+        }
+
+        Long id = IdWorker.getId();
+        VerifyImageResp verifyImageResp = new VerifyImageResp();
+        verifyImageResp.setId(id);
+        try {
+            switch (enumByCode) {
+                case CHAR:
+                    CharVerifyImage charVerifyImage = VerifyImageUtil.getCharVerifyImage();
+                    verifyImageResp.setImage(charVerifyImage.getImage());
+                    addVerifyImageCache(id, verifyImageType, charVerifyImage.getValue());
+                    break;
+
+                case OPERATION:
+                    OperatorVerifyImage operatorVerifyImage = VerifyImageUtil.getOperatorVerifyImage();
+                    verifyImageResp.setImage(operatorVerifyImage.getImage());
+                    addVerifyImageCache(id, verifyImageType, operatorVerifyImage.getValue());
+                    break;
+
+                case SLIDE:
+                    SlideVerifyImage slideVerifyImage = VerifyImageUtil.getSlideVerifyImage();
+                    verifyImageResp.setImage(slideVerifyImage.getImage());
+                    verifyImageResp.setCutoutImage(slideVerifyImage.getCutoutImage());
+                    Integer y = slideVerifyImage.getY();
+                    verifyImageResp.setY(slideVerifyImage.getY());
+                    addVerifyImageCache(id, verifyImageType, slideVerifyImage.getX() + "-" + y);
+                    break;
+
+                case TEXT_SELECTION:
+                    TextSelectionVerifyImage textSelectionVerifyImage = VerifyImageUtil.getTextSelectionVerifyImage();
+                    verifyImageResp.setImage(textSelectionVerifyImage.getImage());
+                    verifyImageResp.setTips(textSelectionVerifyImage.getTips());
+                    addVerifyImageCache(id, verifyImageType, StringUtil.join(textSelectionVerifyImage.getCodeAxis(), ","));
+                    break;
+
+                default:
+                    break;
+            }
+        } catch (Exception e) {
+            throw new ServiceException(DeveloperPlatformExceptionEnum.GENERATE_VERIFY_IMAGE_ERROR);
+        }
+
+        return verifyImageResp;
+    }
+
+    /**
+     * 添加验证码缓存
+     *
+     * @param id    id
+     * @param type  验证码类型
+     * @param value 验证码值
+     */
+    private void addVerifyImageCache(Long id, Integer type, String value) {
+        redisTemplate.opsForValue().set(RedisConstant.VerifyImageRedisKey + type + ":" + id, value, 60, TimeUnit.SECONDS);
+    }
+
+    /**
+     * 校验验证码
+     *
+     * @param request 验证码参数
+     */
+    @Override
+    public void checkVerifyImage(CheckVerifyImageRequest request) {
+        String redisKey = RedisConstant.VerifyImageRedisKey + request.getType() + ":" + request.getId();
+        if (!redisTemplate.hasKey(redisKey)) {
+            throw new ServiceException(DeveloperPlatformExceptionEnum.VERIFY_IS_INVALID);
+        }
+
+        if (!StringUtil.equals(redisTemplate.opsForValue().get(redisKey), request.getValue())) {
+            throw new ServiceException(DeveloperPlatformExceptionEnum.VERIFY_ERROR);
+        }
+    }
+}

+ 33 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/vo/request/CheckVerifyImageRequest.java

@@ -0,0 +1,33 @@
+package com.wei.developer.platform.vo.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CheckVerifyImageRequest implements Serializable {
+
+    private static final long serialVersionUID = -2617871777362224762L;
+
+    @NotNull(message = "验证码ID不能为空!")
+    @ApiModelProperty(value = "验证码ID", required = true)
+    private Long id;
+
+    @NotNull(message = "验证码类型不能为空!")
+    @ApiModelProperty(value = "验证码类型,验证码类型,1:字符验证码,2:运算验证码,3:滑动验证码", required = true)
+    private Integer type;
+
+    @NotEmpty(message = "验证码值不能为空!")
+    @ApiModelProperty(value = "验证码值", required = true)
+    private String value;
+
+    @ApiModelProperty(value = "滑动验证码,Y轴")
+    private String y;
+}

+ 31 - 0
wei-developer-platform/wei-developer-platform-app/src/main/java/com/wei/developer/platform/vo/respon/VerifyImageResp.java

@@ -0,0 +1,31 @@
+package com.wei.developer.platform.vo.respon;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class VerifyImageResp implements Serializable {
+
+    private static final long serialVersionUID = 3677284647136720202L;
+
+    @ApiModelProperty("验证码ID")
+    private Long id;
+
+    @ApiModelProperty("base64验证码图片")
+    private String image;
+
+    @ApiModelProperty("点选文字提示")
+    private String tips;
+
+    @ApiModelProperty("滑动验证码,裁剪图")
+    private String cutoutImage;
+
+    @ApiModelProperty("滑动验证码,Y轴")
+    private Integer y;
+}

+ 4 - 4
wei-developer-platform/wei-developer-platform-app/src/main/resources/bootstrap.yml

@@ -1,9 +1,9 @@
 server:
-  port: 8201
+  port: 8001
 
 spring:
   application:
-    name: wei-user
+    name: developer-platform
   cloud:
     consul:
       # consul的IP
@@ -15,9 +15,9 @@ spring:
     active: dev
 
   datasource:
-    url: jdbc:mysql://192.168.11.128:3306/wei_user?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
+    url: jdbc:mysql://192.168.11.128:3307/developer_platform?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
     username: root
-    password: 123456
+    password: root
   redis:
     host: 192.168.11.128
     port: 6379

+ 19 - 0
wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/MenuMapper.xml

@@ -0,0 +1,19 @@
+<?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.wei.developer.platform.mapper.MenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.wei.developer.platform.entity.Menu">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="uri" property="uri" />
+        <result column="system_id" property="systemId" />
+        <result column="is_enable" property="isEnable" />
+        <result column="is_delete" property="isDelete" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 17 - 0
wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/RoleMapper.xml

@@ -0,0 +1,17 @@
+<?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.wei.developer.platform.mapper.RoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.wei.developer.platform.entity.Role">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="is_default" property="isDefault" />
+        <result column="is_enable" property="isEnable" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 17 - 0
wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/RoleMenuMapper.xml

@@ -0,0 +1,17 @@
+<?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.wei.developer.platform.mapper.RoleMenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.wei.developer.platform.entity.RoleMenu">
+        <id column="id" property="id" />
+        <result column="role_id" property="roleId" />
+        <result column="menu_id" property="menuId" />
+        <result column="is_delete" property="isDelete" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 18 - 0
wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/SystemMapper.xml

@@ -0,0 +1,18 @@
+<?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.wei.developer.platform.mapper.SystemMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.wei.developer.platform.entity.System">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="domain_name" property="domainName" />
+        <result column="is_enable" property="isEnable" />
+        <result column="is_delete" property="isDelete" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 6 - 0
wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/UserMapper.xml

@@ -10,7 +10,13 @@
         <result column="email" property="email" />
         <result column="password" property="password" />
         <result column="picture_url" property="pictureUrl" />
+        <result column="is_admin" property="isAdmin" />
+        <result column="is_enable" property="isEnable" />
+        <result column="is_delete" property="isDelete" />
+        <result column="create_id" property="createId" />
         <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
     </resultMap>
 
 </mapper>

+ 17 - 0
wei-developer-platform/wei-developer-platform-app/src/main/resources/mappers/UserRoleMapper.xml

@@ -0,0 +1,17 @@
+<?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.wei.developer.platform.mapper.UserRoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.wei.developer.platform.entity.UserRole">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="role_id" property="roleId" />
+        <result column="is_delete" property="isDelete" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

BIN
wei-developer-platform/wei-developer-platform-app/src/main/resources/target/1.jpg


BIN
wei-developer-platform/wei-developer-platform-app/src/main/resources/target/10.jpg


BIN
wei-developer-platform/wei-developer-platform-app/src/main/resources/target/11.jpg


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff