Browse Source

初次提交

qxp 5 years ago
commit
d07a111e43
100 changed files with 13054 additions and 0 deletions
  1. 15 0
      .idea/compiler.xml
  2. 8 0
      .idea/encodings.xml
  3. 17 0
      .idea/misc.xml
  4. 6 0
      .idea/vcs.xml
  5. 3 0
      dorm-manager-admin-api/.gitignore
  6. 125 0
      dorm-manager-admin-api/pom.xml
  7. 16 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/AdminApplication.java
  8. 13 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/annotation/LoginAdmin.java
  9. 31 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/annotation/support/LoginAdminHandlerMethodArgumentResolver.java
  10. 16 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/AdminConfig.java
  11. 25 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/CorsConfig.java
  12. 27 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/GlobalExceptionHandler.java
  13. 36 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/JacksonConfig.java
  14. 57 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/WeixinConfig.java
  15. 42 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/dao/AdminToken.java
  16. 57 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/service/AdminTokenManager.java
  17. 675 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/util/bcrypt/BCrypt.java
  18. 95 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/util/bcrypt/BCryptPasswordEncoder.java
  19. 291 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/AdminController.java
  20. 466 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/AdministrativeItemsController.java
  21. 97 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/AuthController.java
  22. 141 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/BannerController.java
  23. 174 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/ConsultantController.java
  24. 90 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/DashbordController.java
  25. 45 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/DeptInfoController.java
  26. 89 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/NewCommentController.java
  27. 298 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/NewsController.java
  28. 172 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/OauthCtl.java
  29. 243 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/OrganizeController.java
  30. 121 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/OrganizeUserController.java
  31. 119 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/QuestionsAnwsersController.java
  32. 214 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/RoleController.java
  33. 282 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/StorageController.java
  34. 235 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/UserController.java
  35. 34 0
      dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/UserMessageController.java
  36. 48 0
      dorm-manager-admin-api/src/main/resources/application-dev.properties
  37. 53 0
      dorm-manager-admin-api/src/main/resources/application-prod.properties
  38. 6 0
      dorm-manager-admin-api/src/main/resources/application.properties
  39. 12 0
      dorm-manager-admin-api/src/main/resources/banner.txt
  40. 89 0
      dorm-manager-admin-api/src/main/resources/logback-spring-dev.xml
  41. 89 0
      dorm-manager-admin-api/src/main/resources/logback-spring-prod.xml
  42. 22 0
      dorm-manager-admin-api/src/test/java/com/dgtis/dorm/manager/admin/BcryptTest.java
  43. 2 0
      dorm-manager-db/.gitignore
  44. 159 0
      dorm-manager-db/pom.xml
  45. 15 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/DbApplication.java
  46. 69 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdminMapper.java
  47. 24 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdminRoleMapper.java
  48. 49 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdministrativeItemsDocMapper.java
  49. 83 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdministrativeItemsMapper.java
  50. 27 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniFriUserMapper.java
  51. 23 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeCustomMapper.java
  52. 32 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeMapper.java
  53. 16 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeUserCustomMapper.java
  54. 31 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeUserMapper.java
  55. 22 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniRegionMapper.java
  56. 68 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniUserMapper.java
  57. 49 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniUserMessageMapper.java
  58. 20 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ApproveHistoryMapper.java
  59. 38 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/BannerMapper.java
  60. 25 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/DemandSensitiveWordMapper.java
  61. 20 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/DeptInfoMapper.java
  62. 61 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsCommentMapper.java
  63. 101 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsMapper.java
  64. 45 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsOrganizeMapper.java
  65. 40 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsZanMapper.java
  66. 26 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/QuestionsAnswersMapper.java
  67. 48 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ReservationRecordMapper.java
  68. 36 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/RoleMapper.java
  69. 24 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/RoleMenuMapper.java
  70. 53 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/StorageMapper.java
  71. 56 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ZhllCollectMapper.java
  72. 62 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ZhllConsultingComplaintsMapper.java
  73. 55 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ZhllUserMaterialMapper.java
  74. 554 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Admin.java
  75. 237 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AdminRole.java
  76. 353 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AdministrativeItems.java
  77. 122 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AdministrativeItemsDoc.java
  78. 59 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniFriUser.java
  79. 177 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganize.java
  80. 296 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeCustom.java
  81. 951 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeExample.java
  82. 165 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeUser.java
  83. 225 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeUserCustom.java
  84. 1211 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeUserExample.java
  85. 68 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniRegion.java
  86. 467 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniUser.java
  87. 86 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniUserMessage.java
  88. 63 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/ApproveHistory.java
  89. 115 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Banner.java
  90. 40 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/DemandSensitiveWord.java
  91. 393 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/News.java
  92. 116 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsComment.java
  93. 248 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsCriterion.java
  94. 80 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsOrganize.java
  95. 60 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsZan.java
  96. 79 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/QuestionsAnswers.java
  97. 227 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/ReservationRecord.java
  98. 352 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Role.java
  99. 237 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/RoleMenu.java
  100. 0 0
      dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Storage.java

+ 15 - 0
.idea/compiler.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="dorm-manager-admin-api" />
+        <module name="dorm-manager-db" />
+        <module name="dorm-manager-wx-api" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>

+ 8 - 0
.idea/encodings.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" native2AsciiForPropertiesFiles="true">
+    <file url="file://$PROJECT_DIR$/dorm-manager-admin-api" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/dorm-manager-db" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/dorm-manager-wx-api" charset="UTF-8" />
+  </component>
+</project>

+ 17 - 0
.idea/misc.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 3 - 0
dorm-manager-admin-api/.gitignore

@@ -0,0 +1,3 @@
+
+/target/
+/administrative-service-admin-api.iml

+ 125 - 0
dorm-manager-admin-api/pom.xml

@@ -0,0 +1,125 @@
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.dgtis</groupId>
+    <artifactId>dorm-manager-admin-api</artifactId>
+    <version>0.1.0</version>
+    <packaging>jar</packaging>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>1.5.10.RELEASE</version>
+        <relativePath></relativePath>
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <maven.test.skip>true</maven.test.skip>
+    </properties>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.dgtis</groupId>
+            <artifactId>dorm-manager-db</artifactId>
+            <version>0.1.0</version>
+        </dependency>
+
+        <!--Oauth 单点登录 依赖-->
+        <dependency>
+            <groupId>org.apache.oltu.oauth2</groupId>
+            <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
+            <version>0.31</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.oltu.oauth2</groupId>
+            <artifactId>org.apache.oltu.oauth2.client</artifactId>
+            <version>0.31</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.oltu.oauth2</groupId>
+            <artifactId>org.apache.oltu.oauth2.common</artifactId>
+            <version>0.31</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.oltu.oauth2</groupId>
+            <artifactId>org.apache.oltu.oauth2.resourceserver</artifactId>
+            <version>0.31</version>
+        </dependency>
+
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>1.3.0</version>
+        </dependency>
+
+        <!-- Spring Boot Web 依赖 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.8.10</version>
+        </dependency>
+
+        <!-- Spring Boot Shiro 依赖 -->
+        <!--<dependency>-->
+            <!--<groupId>org.apache.shiro</groupId>-->
+            <!--<artifactId>shiro-spring-boot-web-starter</artifactId>-->
+            <!--<version>1.4.0</version>-->
+        <!--</dependency>-->
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- 热部署模块 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+        </dependency>
+        
+       	<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-lang3</artifactId>
+			<version>3.3.2</version>
+		</dependency>
+
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-miniapp</artifactId>
+            <version>2.9.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-pay</artifactId>
+            <version>2.9.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <executable>true</executable>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+</project>

+ 16 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/AdminApplication.java

@@ -0,0 +1,16 @@
+package com.dgtis.dorm.manager.admin;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication(scanBasePackages={"com.dgtis.dorm.manager.admin","com.dgtis.dorm.manager.db"})
+@MapperScan("com.dgtis.dorm.manager.db.dao")
+public class AdminApplication {
+
+    //启动5555
+    public static void main(String[] args) {
+        SpringApplication.run(AdminApplication.class, args);
+    }
+
+}

+ 13 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/annotation/LoginAdmin.java

@@ -0,0 +1,13 @@
+package com.dgtis.dorm.manager.admin.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Target(ElementType.PARAMETER)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LoginAdmin {
+
+}

+ 31 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/annotation/support/LoginAdminHandlerMethodArgumentResolver.java

@@ -0,0 +1,31 @@
+package com.dgtis.dorm.manager.admin.annotation.support;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.admin.service.AdminTokenManager;
+import org.springframework.core.MethodParameter;
+import org.springframework.web.bind.support.WebDataBinderFactory;
+import org.springframework.web.context.request.NativeWebRequest;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.method.support.ModelAndViewContainer;
+
+
+public class LoginAdminHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
+    public static final String LOGIN_TOKEN_KEY = "X-Token";
+    @Override
+    public boolean supportsParameter(MethodParameter parameter) {
+        return parameter.getParameterType().isAssignableFrom(Integer.class)&&parameter.hasParameterAnnotation(LoginAdmin.class);
+    }
+
+    @Override
+    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,
+                                  NativeWebRequest request, WebDataBinderFactory factory) throws Exception {
+
+//        return new Integer(1);
+        String token = request.getHeader(LOGIN_TOKEN_KEY);
+        if(token == null || token.isEmpty()){
+            return null;
+        }
+
+        return AdminTokenManager.getUserId(token);
+    }
+}

+ 16 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/AdminConfig.java

@@ -0,0 +1,16 @@
+package com.dgtis.dorm.manager.admin.config;
+
+import com.dgtis.dorm.manager.admin.annotation.support.LoginAdminHandlerMethodArgumentResolver;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import java.util.List;
+
+@Configuration
+public class AdminConfig extends WebMvcConfigurerAdapter {
+    @Override
+    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
+        argumentResolvers.add(new LoginAdminHandlerMethodArgumentResolver());
+    }
+}

+ 25 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/CorsConfig.java

@@ -0,0 +1,25 @@
+package com.dgtis.dorm.manager.admin.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+@Configuration
+public class CorsConfig {
+    private CorsConfiguration buildConfig() {
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+        corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
+        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
+        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
+        return corsConfiguration;
+    }
+
+    @Bean
+    public CorsFilter corsFilter() {
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/**", buildConfig()); // 4 对接口配置跨域设置
+        return new CorsFilter(source);
+    }
+}

+ 27 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/GlobalExceptionHandler.java

@@ -0,0 +1,27 @@
+package com.dgtis.dorm.manager.admin.config;
+
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+
+@ControllerAdvice
+public class GlobalExceptionHandler {
+
+
+    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
+    @ResponseBody
+    public Object argumentHandler(MethodArgumentTypeMismatchException e){
+        e.printStackTrace();
+        return ResponseUtil.badArgumentValue();
+    }
+
+    @ExceptionHandler(Exception.class)
+    @ResponseBody
+    public Object exceptionHandler(Exception e){
+        e.printStackTrace();
+        return ResponseUtil.serious();
+    }
+
+}

+ 36 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/JacksonConfig.java

@@ -0,0 +1,36 @@
+package com.dgtis.dorm.manager.admin.config;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+@Configuration
+public class JacksonConfig {
+    @Bean
+    @Primary
+    public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
+        JavaTimeModule javaTimeModule = new JavaTimeModule();
+        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
+
+        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
+        objectMapper.registerModule(javaTimeModule);
+        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        return objectMapper;
+    }
+}

+ 57 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/config/WeixinConfig.java

@@ -0,0 +1,57 @@
+package com.dgtis.dorm.manager.admin.config;
+
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
+import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WeixinConfig {
+    //DGT
+    public static final String WX_AppId = "wxf762c9db16aa1b7b";
+    public static final String WX_Secret = "a56216b48cc06114a2d67022e423efa3";
+
+    //tsinghua
+//  public static final String WX_AppId = "wxccab0416de0c7d90";
+//  public static final String WX_Secret = "398b9e7fe7aa0c24e2d541967240e5d2";
+
+    //通誉家园
+//    public static final String WX_AppId = "wxfc36145c8032a28e";
+//    public static final String WX_Secret = "d8f63fba1de0b6323cc109daaa3b6d51";
+
+    public static final String WX_Token = "";
+    public static final String WX_AesKey = "";
+    public static final String WX_MsgDataFormat = "JSON";
+
+
+    public static final String WX_MchId = "1408172302";
+    public static final String WX_MchKey = "r4re3redsw3e5tg9oi87hy65tbvgt5ws";
+    public static final String WX_KeyPath = "";
+
+    @Bean
+    public WxMaConfig wxMaConfig() {
+        WxMaInMemoryConfig config = new WxMaInMemoryConfig();
+        config.setAppid(WX_AppId);
+        config.setSecret(WX_Secret);
+        config.setToken(WX_Token);
+        config.setAesKey(WX_AesKey);
+        config.setMsgDataFormat(WX_MsgDataFormat);
+
+        return config;
+    }
+
+
+    @Bean
+    public WxPayConfig wxPayConfig() {
+        WxPayConfig payConfig = new WxPayConfig();
+        payConfig.setAppId(WX_AppId);
+        payConfig.setMchId(WX_MchId);
+        payConfig.setMchKey(WX_MchKey);
+        payConfig.setSubAppId(null);
+        payConfig.setSubMchId(null);
+        payConfig.setKeyPath(WX_KeyPath);
+
+        return payConfig;
+    }
+}

+ 42 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/dao/AdminToken.java

@@ -0,0 +1,42 @@
+package com.dgtis.dorm.manager.admin.dao;
+
+import java.time.LocalDateTime;
+
+public class AdminToken {
+    private Integer userId;
+    private String token;
+    private LocalDateTime expireTime;
+    private LocalDateTime updateTime;
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public void setExpireTime(LocalDateTime expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public void setUpdateTime(LocalDateTime updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public LocalDateTime getExpireTime() {
+        return expireTime;
+    }
+
+    public LocalDateTime getUpdateTime() {
+        return updateTime;
+    }
+}

+ 57 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/service/AdminTokenManager.java

@@ -0,0 +1,57 @@
+package com.dgtis.dorm.manager.admin.service;
+
+import com.dgtis.dorm.manager.admin.dao.AdminToken;
+import com.dgtis.dorm.manager.db.util.CharUtil;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+public class AdminTokenManager {
+    private static Map<String, AdminToken> tokenMap = new HashMap<>();
+    private static Map<Integer, AdminToken> idMap = new HashMap<>();
+
+    public static Integer getUserId(String token) {
+
+        AdminToken userToken = tokenMap.get(token);
+        if(userToken == null){
+            return null;
+        }
+
+        if(userToken.getExpireTime().isBefore(LocalDateTime.now())){
+            tokenMap.remove(token);
+            idMap.remove(userToken.getUserId());
+            return null;
+        }
+
+        return userToken.getUserId();
+    }
+
+
+    public static AdminToken generateToken(Integer id){
+    	AdminToken userToken=null;
+//        AdminToken userToken = idMap.get(id);
+//        if(userToken != null) {
+//            tokenMap.remove(userToken.getToken());
+//            idMap.remove(id);
+//        }
+
+        String token = CharUtil.getRandomString(32);
+        while (tokenMap.containsKey(token)) {
+            token = CharUtil.getRandomString(32);
+        }
+
+        LocalDateTime update = LocalDateTime.now();
+        LocalDateTime expire = update.plusDays(1);
+
+        userToken = new AdminToken();
+        userToken.setToken(token);
+        userToken.setUpdateTime(update);
+        userToken.setExpireTime(expire);
+        userToken.setUserId(id);
+        tokenMap.put(token, userToken);
+        idMap.put(id, userToken);
+
+        return userToken;
+    }
+}

+ 675 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/util/bcrypt/BCrypt.java

@@ -0,0 +1,675 @@
+package com.dgtis.dorm.manager.admin.util.bcrypt;
+// Copyright (c) 2006 Damien Miller <djm@mindrot.org>
+//
+// Permission to use, copy, modify, and distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import java.io.ByteArrayOutputStream;
+import java.io.UnsupportedEncodingException;
+import java.security.SecureRandom;
+
+/**
+ * BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
+ * "A Future-Adaptable Password Scheme" by Niels Provos and David Mazieres.
+ * <p>
+ * This password hashing system tries to thwart off-line password cracking using a
+ * computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
+ * The work factor of the algorithm is parameterised, so it can be increased as computers
+ * get faster.
+ * <p>
+ * Usage is really simple. To hash a password for the first time, call the hashpw method
+ * with a random salt, like this:
+ * <p>
+ * <code>
+ * String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); <br>
+ * </code>
+ * <p>
+ * To check whether a plaintext password matches one that has been hashed previously, use
+ * the checkpw method:
+ * <p>
+ * <code>
+ * if (BCrypt.checkpw(candidate_password, stored_hash))<br>
+ * &nbsp;&nbsp;&nbsp;&nbsp;System.out.println("It matches");<br>
+ * else<br>
+ * &nbsp;&nbsp;&nbsp;&nbsp;System.out.println("It does not match");<br>
+ * </code>
+ * <p>
+ * The gensalt() method takes an optional parameter (log_rounds) that determines the
+ * computational complexity of the hashing:
+ * <p>
+ * <code>
+ * String strong_salt = BCrypt.gensalt(10)<br>
+ * String stronger_salt = BCrypt.gensalt(12)<br>
+ * </code>
+ * <p>
+ * The amount of work increases exponentially (2**log_rounds), so each increment is twice
+ * as much work. The default log_rounds is 10, and the valid range is 4 to 31.
+ *
+ * @author Damien Miller
+ */
+public class BCrypt {
+    // BCrypt parameters
+
+    private static final int GENSALT_DEFAULT_LOG2_ROUNDS = 10;
+    private static final int BCRYPT_SALT_LEN = 16;
+    // Blowfish parameters
+    private static final int BLOWFISH_NUM_ROUNDS = 16;
+    // Initial contents of key schedule
+    private static final int P_orig[] = { 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
+            0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,
+            0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
+            0x9216d5d9, 0x8979fb1b };
+    private static final int S_orig[] = { 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
+            0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
+            0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
+            0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5,
+            0x9c30d539, 0x2af26013, 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
+            0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27,
+            0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
+            0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993,
+            0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
+            0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af,
+            0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
+            0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,
+            0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
+            0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68,
+            0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
+            0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4,
+            0x7d84a5c3, 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
+            0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248,
+            0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
+            0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4,
+            0x5e5c9ec2, 0x196a2463, 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
+            0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,
+            0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
+            0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc,
+            0x8ea5e9f8, 0xdb3222f8, 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
+            0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0,
+            0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
+            0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8,
+            0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
+            0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01,
+            0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
+            0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,
+            0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
+            0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8,
+            0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
+            0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86,
+            0xc75442f5, 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
+            0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e,
+            0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
+            0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a,
+            0x1b510052, 0x9a532915, 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
+            0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,
+            0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a,
+            0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,
+            0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
+            0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,
+            0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
+            0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,
+            0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
+            0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,
+            0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
+            0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
+            0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
+            0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,
+            0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
+            0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,
+            0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
+            0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,
+            0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
+            0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,
+            0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
+            0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
+            0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
+            0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,
+            0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
+            0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,
+            0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
+            0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,
+            0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
+            0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,
+            0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
+            0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
+            0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
+            0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,
+            0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
+            0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,
+            0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
+            0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,
+            0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
+            0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,
+            0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
+            0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
+            0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
+            0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,
+            0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
+            0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7,
+            0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
+            0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546,
+            0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
+            0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941,
+            0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
+            0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,
+            0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
+            0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856,
+            0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
+            0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87,
+            0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
+            0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70,
+            0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
+            0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1,
+            0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
+            0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,
+            0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
+            0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa,
+            0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
+            0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37,
+            0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
+            0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24,
+            0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
+            0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7,
+            0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
+            0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,
+            0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
+            0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71,
+            0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
+            0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74,
+            0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
+            0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0,
+            0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
+            0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df,
+            0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
+            0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,
+            0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
+            0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de,
+            0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
+            0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5,
+            0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
+            0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212,
+            0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
+            0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315,
+            0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
+            0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,
+            0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
+            0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6,
+            0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
+            0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da,
+            0x3f046f69, 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
+            0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d,
+            0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
+            0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc,
+            0xf8d56629, 0x79132e28, 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
+            0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,
+            0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
+            0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8,
+            0xabcc5167, 0xccad925f, 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
+            0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46,
+            0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
+            0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40,
+            0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
+            0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e,
+            0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
+            0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,
+            0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
+            0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b,
+            0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
+            0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667,
+            0x8df9317c, 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
+            0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb,
+            0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
+            0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df,
+            0xd3a0342b, 0x8971f21e, 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
+            0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,
+            0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
+            0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5,
+            0x6e163697, 0x88d273cc, 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
+            0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00,
+            0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
+            0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76,
+            0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
+            0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0,
+            0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 };
+    // bcrypt IV: "OrpheanBeholderScryDoubt"
+    static private final int bf_crypt_ciphertext[] = { 0x4f727068, 0x65616e42,
+            0x65686f6c, 0x64657253, 0x63727944, 0x6f756274 };
+    // Table for Base64 encoding
+    static private final char base64_code[] = { '.', '/', 'A', 'B', 'C', 'D', 'E', 'F',
+            'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+            'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
+            'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
+            'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
+    // Table for Base64 decoding
+    static private final byte index_64[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55,
+            56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7,
+            8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+            -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+            41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1 };
+    static final int MIN_LOG_ROUNDS = 4;
+    static final int MAX_LOG_ROUNDS = 31;
+    // Expanded Blowfish key
+    private int P[];
+    private int S[];
+
+    /**
+     * Encode a byte array using bcrypt's slightly-modified base64 encoding scheme. Note
+     * that this is <strong>not</strong> compatible with the standard MIME-base64
+     * encoding.
+     *
+     * @param d the byte array to encode
+     * @param len the number of bytes to encode
+     * @param rs the destination buffer for the base64-encoded string
+     * @exception IllegalArgumentException if the length is invalid
+     */
+    static void encode_base64(byte d[], int len, StringBuilder rs)
+            throws IllegalArgumentException {
+        int off = 0;
+        int c1, c2;
+
+        if (len <= 0 || len > d.length) {
+            throw new IllegalArgumentException("Invalid len");
+        }
+
+        while (off < len) {
+            c1 = d[off++] & 0xff;
+            rs.append(base64_code[(c1 >> 2) & 0x3f]);
+            c1 = (c1 & 0x03) << 4;
+            if (off >= len) {
+                rs.append(base64_code[c1 & 0x3f]);
+                break;
+            }
+            c2 = d[off++] & 0xff;
+            c1 |= (c2 >> 4) & 0x0f;
+            rs.append(base64_code[c1 & 0x3f]);
+            c1 = (c2 & 0x0f) << 2;
+            if (off >= len) {
+                rs.append(base64_code[c1 & 0x3f]);
+                break;
+            }
+            c2 = d[off++] & 0xff;
+            c1 |= (c2 >> 6) & 0x03;
+            rs.append(base64_code[c1 & 0x3f]);
+            rs.append(base64_code[c2 & 0x3f]);
+        }
+    }
+
+    /**
+     * Look up the 3 bits base64-encoded by the specified character, range-checking
+     * against conversion table
+     * @param x the base64-encoded value
+     * @return the decoded value of x
+     */
+    private static byte char64(char x) {
+        if (x > index_64.length) {
+            return -1;
+        }
+        return index_64[x];
+    }
+
+    /**
+     * Decode a string encoded using bcrypt's base64 scheme to a byte array. Note that
+     * this is *not* compatible with the standard MIME-base64 encoding.
+     * @param s the string to decode
+     * @param maxolen the maximum number of bytes to decode
+     * @return an array containing the decoded bytes
+     * @throws IllegalArgumentException if maxolen is invalid
+     */
+    static byte[] decode_base64(String s, int maxolen) throws IllegalArgumentException {
+        ByteArrayOutputStream out = new ByteArrayOutputStream(maxolen);
+        int off = 0, slen = s.length(), olen = 0;
+        byte c1, c2, c3, c4, o;
+
+        if (maxolen <= 0) {
+            throw new IllegalArgumentException("Invalid maxolen");
+        }
+
+        while (off < slen - 1 && olen < maxolen) {
+            c1 = char64(s.charAt(off++));
+            c2 = char64(s.charAt(off++));
+            if (c1 == -1 || c2 == -1) {
+                break;
+            }
+            o = (byte) (c1 << 2);
+            o |= (c2 & 0x30) >> 4;
+            out.write(o);
+            if (++olen >= maxolen || off >= slen) {
+                break;
+            }
+            c3 = char64(s.charAt(off++));
+            if (c3 == -1) {
+                break;
+            }
+            o = (byte) ((c2 & 0x0f) << 4);
+            o |= (c3 & 0x3c) >> 2;
+            out.write(o);
+            if (++olen >= maxolen || off >= slen) {
+                break;
+            }
+            c4 = char64(s.charAt(off++));
+            o = (byte) ((c3 & 0x03) << 6);
+            o |= c4;
+            out.write(o);
+            ++olen;
+        }
+
+        return out.toByteArray();
+    }
+
+    /**
+     * Blowfish encipher a single 64-bit block encoded as two 32-bit halves
+     * @param lr an array containing the two 32-bit half blocks
+     * @param off the position in the array of the blocks
+     */
+    private final void encipher(int lr[], int off) {
+        int i, n, l = lr[off], r = lr[off + 1];
+
+        l ^= P[0];
+        for (i = 0; i <= BLOWFISH_NUM_ROUNDS - 2;) {
+            // Feistel substitution on left word
+            n = S[(l >> 24) & 0xff];
+            n += S[0x100 | ((l >> 16) & 0xff)];
+            n ^= S[0x200 | ((l >> 8) & 0xff)];
+            n += S[0x300 | (l & 0xff)];
+            r ^= n ^ P[++i];
+
+            // Feistel substitution on right word
+            n = S[(r >> 24) & 0xff];
+            n += S[0x100 | ((r >> 16) & 0xff)];
+            n ^= S[0x200 | ((r >> 8) & 0xff)];
+            n += S[0x300 | (r & 0xff)];
+            l ^= n ^ P[++i];
+        }
+        lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];
+        lr[off + 1] = l;
+    }
+
+    /**
+     * Cycically extract a word of key material
+     * @param data the string to extract the data from
+     * @param offp a "pointer" (as a one-entry array) to the current offset into data
+     * @return the next word of material from data
+     */
+    private static int streamtoword(byte data[], int offp[]) {
+        int i;
+        int word = 0;
+        int off = offp[0];
+
+        for (i = 0; i < 4; i++) {
+            word = (word << 8) | (data[off] & 0xff);
+            off = (off + 1) % data.length;
+        }
+
+        offp[0] = off;
+        return word;
+    }
+
+    /**
+     * Initialise the Blowfish key schedule
+     */
+    private void init_key() {
+        P = (int[]) P_orig.clone();
+        S = (int[]) S_orig.clone();
+    }
+
+    /**
+     * Key the Blowfish cipher
+     * @param key an array containing the key
+     */
+    private void key(byte key[]) {
+        int i;
+        int koffp[] = { 0 };
+        int lr[] = { 0, 0 };
+        int plen = P.length, slen = S.length;
+
+        for (i = 0; i < plen; i++) {
+            P[i] = P[i] ^ streamtoword(key, koffp);
+        }
+
+        for (i = 0; i < plen; i += 2) {
+            encipher(lr, 0);
+            P[i] = lr[0];
+            P[i + 1] = lr[1];
+        }
+
+        for (i = 0; i < slen; i += 2) {
+            encipher(lr, 0);
+            S[i] = lr[0];
+            S[i + 1] = lr[1];
+        }
+    }
+
+    /**
+     * Perform the "enhanced key schedule" step described by Provos and Mazieres in
+     * "A Future-Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps
+     * @param data salt information
+     * @param key password information
+     */
+    private void ekskey(byte data[], byte key[]) {
+        int i;
+        int koffp[] = { 0 }, doffp[] = { 0 };
+        int lr[] = { 0, 0 };
+        int plen = P.length, slen = S.length;
+
+        for (i = 0; i < plen; i++) {
+            P[i] = P[i] ^ streamtoword(key, koffp);
+        }
+
+        for (i = 0; i < plen; i += 2) {
+            lr[0] ^= streamtoword(data, doffp);
+            lr[1] ^= streamtoword(data, doffp);
+            encipher(lr, 0);
+            P[i] = lr[0];
+            P[i + 1] = lr[1];
+        }
+
+        for (i = 0; i < slen; i += 2) {
+            lr[0] ^= streamtoword(data, doffp);
+            lr[1] ^= streamtoword(data, doffp);
+            encipher(lr, 0);
+            S[i] = lr[0];
+            S[i + 1] = lr[1];
+        }
+    }
+
+    static long roundsForLogRounds(int log_rounds) {
+        if (log_rounds < 4 || log_rounds > 31) {
+            throw new IllegalArgumentException("Bad number of rounds");
+        }
+        return 1L << log_rounds;
+    }
+
+    /**
+     * Perform the central password hashing step in the bcrypt scheme
+     * @param password the password to hash
+     * @param salt the binary salt to hash with the password
+     * @param log_rounds the binary logarithm of the number of rounds of hashing to apply
+     * @return an array containing the binary hashed password
+     */
+    private byte[] crypt_raw(byte password[], byte salt[], int log_rounds) {
+        int cdata[] = (int[]) bf_crypt_ciphertext.clone();
+        int clen = cdata.length;
+        byte ret[];
+
+        long rounds = roundsForLogRounds(log_rounds);
+
+        init_key();
+        ekskey(salt, password);
+        for (long i = 0; i < rounds; i++) {
+            key(password);
+            key(salt);
+        }
+
+        for (int i = 0; i < 64; i++) {
+            for (int j = 0; j < (clen >> 1); j++) {
+                encipher(cdata, j << 1);
+            }
+        }
+
+        ret = new byte[clen * 4];
+        for (int i = 0, j = 0; i < clen; i++) {
+            ret[j++] = (byte) ((cdata[i] >> 24) & 0xff);
+            ret[j++] = (byte) ((cdata[i] >> 16) & 0xff);
+            ret[j++] = (byte) ((cdata[i] >> 8) & 0xff);
+            ret[j++] = (byte) (cdata[i] & 0xff);
+        }
+        return ret;
+    }
+
+    /**
+     * Hash a password using the OpenBSD bcrypt scheme
+     * @param password the password to hash
+     * @param salt the salt to hash with (perhaps generated using BCrypt.gensalt)
+     * @return the hashed password
+     * @throws IllegalArgumentException if invalid salt is passed
+     */
+    public static String hashpw(String password, String salt) throws IllegalArgumentException {
+        BCrypt B;
+        String real_salt;
+        byte passwordb[], saltb[], hashed[];
+        char minor = (char) 0;
+        int rounds, off = 0;
+        StringBuilder rs = new StringBuilder();
+
+        if (salt == null) {
+            throw new IllegalArgumentException("salt cannot be null");
+        }
+
+        int saltLength = salt.length();
+
+        if (saltLength < 28) {
+            throw new IllegalArgumentException("Invalid salt");
+        }
+
+        if (salt.charAt(0) != '$' || salt.charAt(1) != '2') {
+            throw new IllegalArgumentException("Invalid salt version");
+        }
+        if (salt.charAt(2) == '$') {
+            off = 3;
+        }
+        else {
+            minor = salt.charAt(2);
+            if (minor != 'a' || salt.charAt(3) != '$') {
+                throw new IllegalArgumentException("Invalid salt revision");
+            }
+            off = 4;
+        }
+
+        if (saltLength - off < 25) {
+            throw new IllegalArgumentException("Invalid salt");
+        }
+
+        // Extract number of rounds
+        if (salt.charAt(off + 2) > '$') {
+            throw new IllegalArgumentException("Missing salt rounds");
+        }
+        rounds = Integer.parseInt(salt.substring(off, off + 2));
+
+        real_salt = salt.substring(off + 3, off + 25);
+        try {
+            passwordb = (password + (minor >= 'a' ? "\000" : "")).getBytes("UTF-8");
+        }
+        catch (UnsupportedEncodingException uee) {
+            throw new AssertionError("UTF-8 is not supported");
+        }
+
+        saltb = decode_base64(real_salt, BCRYPT_SALT_LEN);
+
+        B = new BCrypt();
+        hashed = B.crypt_raw(passwordb, saltb, rounds);
+
+        rs.append("$2");
+        if (minor >= 'a') {
+            rs.append(minor);
+        }
+        rs.append("$");
+        if (rounds < 10) {
+            rs.append("0");
+        }
+        rs.append(rounds);
+        rs.append("$");
+        encode_base64(saltb, saltb.length, rs);
+        encode_base64(hashed, bf_crypt_ciphertext.length * 4 - 1, rs);
+        return rs.toString();
+    }
+
+    /**
+     * Generate a salt for use with the BCrypt.hashpw() method
+     * @param log_rounds the log2 of the number of rounds of hashing to apply - the work
+     * factor therefore increases as 2**log_rounds. Minimum 4, maximum 31.
+     * @param random an instance of SecureRandom to use
+     * @return an encoded salt value
+     */
+    public static String gensalt(int log_rounds, SecureRandom random) {
+        if (log_rounds < MIN_LOG_ROUNDS || log_rounds > MAX_LOG_ROUNDS) {
+            throw new IllegalArgumentException("Bad number of rounds");
+        }
+        StringBuilder rs = new StringBuilder();
+        byte rnd[] = new byte[BCRYPT_SALT_LEN];
+
+        random.nextBytes(rnd);
+
+        rs.append("$2a$");
+        if (log_rounds < 10) {
+            rs.append("0");
+        }
+        rs.append(log_rounds);
+        rs.append("$");
+        encode_base64(rnd, rnd.length, rs);
+        return rs.toString();
+    }
+
+    /**
+     * Generate a salt for use with the BCrypt.hashpw() method
+     * @param log_rounds the log2 of the number of rounds of hashing to apply - the work
+     * factor therefore increases as 2**log_rounds. Minimum 4, maximum 31.
+     * @return an encoded salt value
+     */
+    public static String gensalt(int log_rounds) {
+        return gensalt(log_rounds, new SecureRandom());
+    }
+
+    /**
+     * Generate a salt for use with the BCrypt.hashpw() method, selecting a reasonable
+     * default for the number of hashing rounds to apply
+     * @return an encoded salt value
+     */
+    public static String gensalt() {
+        return gensalt(GENSALT_DEFAULT_LOG2_ROUNDS);
+    }
+
+    /**
+     * Check that a plaintext password matches a previously hashed one
+     * @param plaintext the plaintext password to verify
+     * @param hashed the previously-hashed password
+     * @return true if the passwords match, false otherwise
+     */
+    public static boolean checkpw(String plaintext, String hashed) {
+        return equalsNoEarlyReturn(hashed, hashpw(plaintext, hashed));
+    }
+
+    static boolean equalsNoEarlyReturn(String a, String b) {
+        char[] caa = a.toCharArray();
+        char[] cab = b.toCharArray();
+
+        if (caa.length != cab.length) {
+            return false;
+        }
+
+        byte ret = 0;
+        for (int i = 0; i < caa.length; i++) {
+            ret |= caa[i] ^ cab[i];
+        }
+        return ret == 0;
+    }
+}

+ 95 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/util/bcrypt/BCryptPasswordEncoder.java

@@ -0,0 +1,95 @@
+package com.dgtis.dorm.manager.admin.util.bcrypt;
+/*
+ * Copyright 2002-2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.security.SecureRandom;
+import java.util.regex.Pattern;
+
+/**
+ * Implementation of PasswordEncoder that uses the BCrypt strong hashing function. Clients
+ * can optionally supply a "strength" (a.k.a. log rounds in BCrypt) and a SecureRandom
+ * instance. The larger the strength parameter the more work will have to be done
+ * (exponentially) to hash the passwords. The default value is 10.
+ *
+ * @author Dave Syer
+ *
+ */
+public class BCryptPasswordEncoder {
+    private Pattern BCRYPT_PATTERN = Pattern
+            .compile("\\A\\$2a?\\$\\d\\d\\$[./0-9A-Za-z]{53}");
+    private final Log logger = LogFactory.getLog(getClass());
+
+    private final int strength;
+
+    private final SecureRandom random;
+
+    public BCryptPasswordEncoder() {
+        this(-1);
+    }
+
+    /**
+     * @param strength the log rounds to use, between 4 and 31
+     */
+    public BCryptPasswordEncoder(int strength) {
+        this(strength, null);
+    }
+
+    /**
+     * @param strength the log rounds to use, between 4 and 31
+     * @param random the secure random instance to use
+     *
+     */
+    public BCryptPasswordEncoder(int strength, SecureRandom random) {
+        if (strength != -1 && (strength < BCrypt.MIN_LOG_ROUNDS || strength > BCrypt.MAX_LOG_ROUNDS)) {
+            throw new IllegalArgumentException("Bad strength");
+        }
+        this.strength = strength;
+        this.random = random;
+    }
+
+    public String encode(CharSequence rawPassword) {
+        String salt;
+        if (strength > 0) {
+            if (random != null) {
+                salt = BCrypt.gensalt(strength, random);
+            }
+            else {
+                salt = BCrypt.gensalt(strength);
+            }
+        }
+        else {
+            salt = BCrypt.gensalt();
+        }
+        return BCrypt.hashpw(rawPassword.toString(), salt);
+    }
+
+    public boolean matches(CharSequence rawPassword, String encodedPassword) {
+        if (encodedPassword == null || encodedPassword.length() == 0) {
+            logger.warn("Empty encoded password");
+            return false;
+        }
+
+        if (!BCRYPT_PATTERN.matcher(encodedPassword).matches()) {
+            logger.warn("Encoded password does not look like BCrypt");
+            return false;
+        }
+
+        return BCrypt.checkpw(rawPassword.toString(), encodedPassword);
+    }
+}

+ 291 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/AdminController.java

@@ -0,0 +1,291 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.github.pagehelper.PageInfo;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.admin.service.AdminTokenManager;
+import com.dgtis.dorm.manager.admin.util.bcrypt.BCryptPasswordEncoder;
+import com.dgtis.dorm.manager.db.domain.Admin;
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import com.dgtis.dorm.manager.db.service.AdminService;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/admin")
+public class AdminController {
+    @Autowired
+    private AdminService adminService;
+    @Autowired
+    private UserService userService;
+
+    @GetMapping("/info")
+    public Object info(String token){
+        Integer adminId = AdminTokenManager.getUserId(token);
+        if(adminId == null){
+            return ResponseUtil.badArgumentValue();
+        }
+        Admin admin = adminService.findById(adminId);
+        if(admin == null){
+            return ResponseUtil.badArgumentValue();
+        }
+
+        Map<String, Object> data = new HashMap<>();
+        data.put("name", admin.getUsername());
+        data.put("avatar", admin.getAvatar());
+
+        // 目前roles不支持,这里简单设置admin
+        List<String> roles = new ArrayList<>();
+        roles.add("admin");
+        data.put("roles", roles);
+        data.put("introduction", "admin introduction");
+        return ResponseUtil.ok(data);
+    }
+
+    @GetMapping("/list")
+    public Object list(@LoginAdmin Integer adminId,
+                       String username,
+                       @RequestParam(value = "page", defaultValue = "1") Integer page,
+                       @RequestParam(value = "limit", defaultValue = "10") Integer limit,
+                       String sort, String order){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        List<Admin> adminList = adminService.querySelective(username, page, limit, sort, order);
+        int total = adminService.countSelective(username, page, limit, sort, order);
+        Map<String, Object> data = new HashMap<>();
+        data.put("total", total);
+        data.put("items", adminList);
+
+        return ResponseUtil.ok(data);
+    }
+
+    @PostMapping("/create")
+    public Object create(@LoginAdmin Integer adminId, @RequestBody Admin admin){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        //String rawPassword = admin.getPassword();
+        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+        //String encodedPassword = encoder.encode(rawPassword);
+        //admin.setPassword(encodedPassword);
+        admin.setPassword(encoder.encode(admin.getPassword()));
+
+        adminService.add(admin);
+        return ResponseUtil.ok(admin);
+    }
+
+    @GetMapping("/read")
+    public Object read(@LoginAdmin Integer adminId, Integer id){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        if(id == null){
+            return ResponseUtil.badArgument();
+        }
+
+        Admin admin = adminService.findById(id);
+        return ResponseUtil.ok(admin);
+    }
+
+    @PostMapping("/update")
+    public Object update(@LoginAdmin Integer adminId, @RequestBody Admin admin){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        Integer anotherAdminId = admin.getId();
+        if(anotherAdminId.intValue() == 1 && adminId.intValue() != 1){//只有超管本人能修改
+            return ResponseUtil.fail(403, "超级管理员不能修改");
+        }
+        
+        //String rawPassword = admin.getPassword();
+        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+        //String encodedPassword = encoder.encode(rawPassword);
+        //admin.setPassword(encodedPassword);
+        admin.setPassword(encoder.encode(admin.getPassword()));
+        
+        adminService.updateById(admin);
+
+        return ResponseUtil.ok(admin);
+    }
+
+    @PostMapping("/delete")
+    public Object delete(@LoginAdmin Integer adminId, @RequestBody Admin admin){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        Integer anotherAdminId = admin.getId();
+        if(anotherAdminId.intValue() == 1){
+            return ResponseUtil.fail(403, "超级管理员不能删除");
+        }
+        adminService.deleteById(anotherAdminId);
+        return ResponseUtil.ok();
+    }
+
+    @GetMapping("/getWxUserId")
+    public Object getWxUserId(@LoginAdmin Integer adminId, String phone) {
+
+        int userId = 0;
+
+        if(StringUtils.isNotBlank(phone)) {
+            AlumniUser alumniUser = new AlumniUser();
+            alumniUser.setPhone(phone);
+            PageInfo<AlumniUser> pageInfo = userService.querySelective(alumniUser, 1, 10, null, null);
+
+            if (pageInfo.getList().size() == 1) {
+                userId = pageInfo.getList().get(0).getId();
+            }
+        }
+
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("userId", userId);
+        return ResponseUtil.ok(data);
+    }
+
+
+    public Object uploadAvatar(@RequestParam("file") MultipartFile file){
+
+        return ResponseUtil.ok();
+    }
+
+
+    /**
+     * @descption: 子系统同步添加用户方法
+     * @param: [data]
+     * @return: java.lang.Object
+     * @auther: koucx
+     * @date: 2019/6/4 13:24
+     */
+    @PostMapping("/syncCreate")
+    public Object syncCreate(String data){
+
+        if(StringUtils.isNotBlank(data)){
+            //获取同步信息字符串,解析后封装成当前系统管理实体存储
+            JSONArray array = JSONArray.fromObject(data);
+            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+            for (Object obj:array) {
+                JSONObject jsonObject = JSONObject.fromObject(obj);
+                String id = jsonObject.get("id").toString();//用户主键
+                Admin admin = adminService.selectByUserId(Integer.parseInt(id));
+               /* String loginId = jsonObject.get("loginId").toString();//登录名
+                admin.setUsername(loginId);
+                String loginPwd = jsonObject.get("loginPwd").toString();//密码
+                admin.setPassword(encoder.encode(loginPwd));*/
+               if(admin==null){
+                   admin = new Admin();
+                   String userName = jsonObject.get("userName").toString();//用户名
+                   admin.setNickname(userName);//用户主键
+                   admin.setUserId(Integer.parseInt(id));
+                   String employeNo = jsonObject.get("employeNo").toString();
+                   admin.setEmployeNo(employeNo);
+                   Object phone = jsonObject.get("userPhone");//手机
+                   if(phone!=null){
+                       admin.setPhone(phone.toString());
+                   }
+                   Object userEmail = jsonObject.get("userEmail");//邮箱
+                   if(userEmail!=null){
+                       admin.setUserEmail(userEmail.toString());
+                   }
+                   Object post = jsonObject.get("post");//岗位
+                   if(post!=null){
+                       admin.setPost(post.toString());
+                   }
+                   admin.setDeleted(false);
+                   adminService.add(admin);
+               }
+            }
+            return ResponseUtil.ok();
+        }
+
+        return ResponseUtil.fail();
+    }
+
+    /**
+     * @descption: 子系统同步修改用户方法
+     * @param: [data]
+     * @return: java.lang.Object
+     * @auther: koucx
+     * @date: 2019/6/4 13:24
+     */
+    @PostMapping("/syncUpdate")
+    public Object syncUpdate(String data){
+
+        if(StringUtils.isNotBlank(data)){
+            //获取同步信息字符串,解析后封装成当前系统管理实体存储
+            JSONArray array = JSONArray.fromObject(data);
+            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+            for (Object obj:array) {
+                JSONObject jsonObject = JSONObject.fromObject(obj);
+                String userId = jsonObject.get("id").toString();//用户主键
+                Admin admin = adminService.selectByUserId(Integer.parseInt(userId));
+                if(admin!=null){
+                   /* String loginId = jsonObject.get("loginId").toString();//登录名
+                    admin.setUsername(loginId);
+                    Object loginPwd = jsonObject.get("loginPwd");
+                   if(loginPwd!=null){
+                       admin.setPassword(encoder.encode(loginPwd.toString()));
+                   }*/
+                    String userName = jsonObject.get("userName").toString();//用户名
+                    admin.setNickname(userName);
+                    Object phone = jsonObject.get("userPhone");//手机
+                    if(phone!=null){
+                        admin.setPhone(phone.toString());
+                    }
+                    Object userEmail = jsonObject.get("userEmail");//邮箱
+                    if(userEmail!=null){
+                        admin.setUserEmail(userEmail.toString());
+                    }
+                    Object post = jsonObject.get("post");//岗位
+                    if(post!=null){
+                        admin.setPost(post.toString());
+                    }
+                    adminService.updateById(admin);
+                }
+            }
+            return ResponseUtil.ok();
+        }
+
+        return ResponseUtil.fail();
+    }
+
+    /**
+     * @descption: 子系统同步删除用户方法
+     * @param: [data]
+     * @return: java.lang.Object
+     * @auther: koucx
+     * @date: 2019/6/4 13:24
+     */
+    @PostMapping("/syncDelete")
+    public Object syncDelete(String data){
+
+        if(StringUtils.isNotBlank(data)){
+            //获取同步信息字符串
+            JSONArray array = JSONArray.fromObject(data);
+            for (Object obj:array) {
+                String userId = obj.toString();//用户主键
+                Admin admin = adminService.selectByUserId(Integer.parseInt(userId));
+                if(admin!=null){
+                    adminService.deleteById(admin.getId());
+                }
+            }
+            return ResponseUtil.ok();
+        }
+
+        return ResponseUtil.fail();
+    }
+}

+ 466 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/AdministrativeItemsController.java

@@ -0,0 +1,466 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
+import com.google.gson.Gson;
+import net.sf.json.JSONObject;
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.AdministrativeItems;
+import com.dgtis.dorm.manager.db.domain.Storage;
+import com.dgtis.dorm.manager.db.param.ItemsQueryParam;
+import com.dgtis.dorm.manager.db.service.AdministrativeItemsService;
+import com.dgtis.dorm.manager.db.service.FileSystemStorageService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import com.dgtis.dorm.manager.db.util.TreeNode;
+import com.dgtis.dorm.manager.db.util.wx.QrCodeUtil;
+import org.apache.catalina.Store;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HTTP;
+import org.apache.http.util.EntityUtils;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * 行政办理事项
+ *
+ * @author huanghaoqi
+ * @version 1.0
+ * @date 2018年12月03日 14:52:44
+ * @since JDK1.8
+ */
+@RestController
+@RequestMapping("/admin/items")
+public class AdministrativeItemsController {
+    @Resource
+    private AdministrativeItemsService administrativeItemsService;
+    @Resource
+    private WxMaConfig wxMaConfig;
+    @Resource
+    private FileSystemStorageService fileSystemStorageService;
+    /**
+     * 方法描述  查询列表
+     *
+     * @param queryParam 查询参数
+     * @return Object
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:42:29
+     */
+    @PostMapping("/list")
+    public Object list(@LoginAdmin Integer adminId,
+                       @RequestBody ItemsQueryParam queryParam
+    ) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        Map<String, Object> data = new HashMap<>();
+        // 查询总数
+        Long total = administrativeItemsService.count(queryParam);
+        if (total == null || total == 0) {
+            data.put("total", 0);
+            data.put("items", new ArrayList<>(0));
+            return ResponseUtil.ok(data);
+        }
+        // 查询列表
+        List<AdministrativeItems> administrativeItemsList = administrativeItemsService.list(queryParam);
+        data.put("total", total);
+        data.put("items", administrativeItemsList);
+
+        return ResponseUtil.ok(data);
+    }
+
+    /**
+     * 方法描述  添加
+     *
+     * @param administrativeItems 添加对象
+     * @return Object
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:42:57
+     */
+    @PostMapping("/create")
+    public Object create(@LoginAdmin Integer adminId, @RequestBody AdministrativeItems administrativeItems) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        administrativeItems.setCreateDate(new Date());
+        administrativeItems.setCreateUser(adminId);
+        administrativeItems.setDeflag(0);
+
+        Integer id = administrativeItemsService.insert(administrativeItems);
+        return ResponseUtil.ok(id);
+    }
+
+    /**
+     * 方法描述  查询详情
+     *
+     * @param id id
+     * @return Object
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:43:20
+     */
+    @GetMapping("/detail")
+    public Object detail(@LoginAdmin Integer adminId, Integer id) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        if (id == null) {
+            return ResponseUtil.badArgument();
+        }
+
+        AdministrativeItems administrativeItems = administrativeItemsService.findById(id);
+        return ResponseUtil.ok(administrativeItems);
+    }
+
+    /**
+     * 方法描述  更新
+     *
+     * @param administrativeItems 更新对象
+     * @return Object
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:45:09
+     */
+    @PostMapping("/update")
+    public Object update(@LoginAdmin Integer adminId, @RequestBody AdministrativeItems administrativeItems) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        administrativeItems.setUpdateDate(new Date());
+        administrativeItems.setUpdateUser(adminId);
+        Integer id = administrativeItemsService.update(administrativeItems);
+
+        return ResponseUtil.ok(id);
+    }
+
+    /**
+     * 方法描述  批量删除
+     *
+     * @param ids id集合
+     * @return Object
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:50:46
+     */
+    @PostMapping("/delete")
+    public Object delete(@LoginAdmin Integer adminId, Integer[] ids) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        administrativeItemsService.batchDelete(Arrays.asList(ids));
+        return ResponseUtil.ok(ids);
+    }
+
+    /**
+     * 方法描述  获取所属事项父级结构
+     *
+     * @return Object
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:45:09
+     */
+    @PostMapping("/parentTree")
+    public Object parentTree(@LoginAdmin Integer adminId) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        List<TreeNode> result = administrativeItemsService.getParentTree();
+
+        return ResponseUtil.ok(result);
+    }
+
+
+    /**
+     * @description 描述:生成事项二维码方法
+     * @author      koucx
+     * @return      Object
+     * @date        2019/5/10
+     * @param       id
+     */
+    @GetMapping("/createItemQrCode")
+    public Object createItemQrCode(@RequestParam("id") Integer id) {
+
+        if(id!=null){
+            AdministrativeItems administrativeItems = administrativeItemsService.findById(id);
+            Integer parentId = administrativeItems.getParentId();
+            String parentName = administrativeItems.getParentName();
+            String responseFileName = administrativeItems.getName() + ".jpg";
+            InputStreamResource resource = null;
+            try {
+                if (parentId == null) {
+                    // 生成一级事项二维码
+                    String scene = "parentId" + id;
+                    resource = createQrCode(scene);
+                } else {
+                    responseFileName = parentName + "_" + responseFileName;
+                    // 生成二级事项二维码
+                    String scene = "parentId" + parentId + "childrenId" + id;
+                    resource = createQrCode(scene);
+                }
+
+                responseFileName = new String(responseFileName.getBytes(), StandardCharsets.UTF_8);
+
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+            try {
+                resource = QrCodeUtil.changeImage(resource.getInputStream(), administrativeItems.getName());
+                //生成二维码相关信息存储到数据库
+                Storage storage = fileSystemStorageService.storeQrCode(resource.getInputStream(), responseFileName);
+                AdministrativeItems updateItem = new AdministrativeItems();
+                updateItem.setId(id);
+                updateItem.setQrcodeStorageId(storage.getKey());
+                //更新新生成的二维码key到事项表
+                administrativeItemsService.update(updateItem);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }else{
+            ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok();
+    }
+
+   /* *
+    * @descption:
+    * @param: [absolutePath]
+    * @return: org.springframework.http.ResponseEntity<java.lang.Object>
+    * @auther: koucx
+    * @date: 2019/5/13 0013 11:42
+    */
+    @GetMapping("/downloadItemQrCode")
+    public ResponseEntity<Object> downloadItemQrCode(String qrcodeStorageId) {
+        Storage storage = new Storage();
+        storage.setKey(qrcodeStorageId);
+        //根据key查询响应Storage
+        Storage dbStorage = fileSystemStorageService.selectByKey(storage);
+        String filePath = FileSystemStorageService.rootLocation.toString()+dbStorage.getFilePath();
+        FileSystemResource file = new FileSystemResource(filePath);
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
+
+        // 设置下载时的文件名,中文文件名需要进行转码,否则是乱码
+        try {
+            headers.add("Content-Disposition",
+                    "attachment; filename=" +
+                            new String(file.getFilename().getBytes("UTF-8"), "iso-8859-1"));
+            headers.add("Pragma", "no-cache");
+            headers.add("Expires", "0");
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return ResponseEntity.ok().headers(headers)
+                .contentType(MediaType.IMAGE_JPEG)
+                .body(file);
+    }
+
+
+    /**
+     * 方法描述 二维码下载
+     *
+     * @param id 事项ID
+     * @author huanghaoqi
+     * @date 2017年09月01日 13:02:22
+     */
+    @GetMapping("/downloadQrCode")
+    public ResponseEntity<Object> downloadQrCode(@RequestParam("id") Integer id) {
+        AdministrativeItems administrativeItems = administrativeItemsService.findById(id);
+
+        Integer parentId = administrativeItems.getParentId();
+        String parentName = administrativeItems.getParentName();
+        String responseFileName = administrativeItems.getName() + ".jpg";
+        InputStreamResource resource = null;
+        try {
+            if (parentId == null) {
+                // 生成一级事项二维码
+                String scene = "parentId" + id;
+                resource = createQrCode(scene);
+            } else {
+                responseFileName = parentName + "_" + responseFileName;
+                // 生成二级事项二维码
+                String scene = "parentId" + parentId + "childrenId" + id;
+                resource = createQrCode(scene);
+            }
+            responseFileName = new String(responseFileName.getBytes(), StandardCharsets.ISO_8859_1);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        try {
+            resource = QrCodeUtil.changeImage(resource.getInputStream(), administrativeItems.getName());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + responseFileName +
+                "\"").contentType(MediaType.IMAGE_JPEG)
+                .body(resource);
+    }
+
+    /**
+     * 方法描述 二维码打包下载
+     *
+     * @param ids 事项ID
+     * @author huanghaoqi
+     * @date 2017年09月01日 13:02:22
+     */
+    @GetMapping("/downloadZipQrCode")
+    public ResponseEntity<Object> downloadZipQrCode(@RequestParam("ids") Integer[] ids) {
+
+        List<AdministrativeItems> administrativeItemsList = administrativeItemsService.selectByIds(Arrays.asList(ids));
+        if (CollectionUtils.isNotEmpty(administrativeItemsList)) {
+
+            final InputStream[] bis = {null};
+
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            ZipOutputStream zipfile = new ZipOutputStream(bos);
+            administrativeItemsList.forEach(administrativeItems -> {
+                Integer id = administrativeItems.getId();
+                Integer parentId = administrativeItems.getParentId();
+                String parentName = administrativeItems.getParentName();
+                String responseFileName = administrativeItems.getName() + ".jpg";
+                InputStreamResource resource;
+                try {
+                    if (parentId == null) {
+                        // 生成一级事项二维码
+                        String scene = "parentId" + id;
+                        resource = createQrCode(scene);
+                    } else {
+                        responseFileName = parentName + "_" + responseFileName;
+                        // 生成二级事项二维码
+                        String scene = "parentId" + parentId + "childrenId" + id;
+                        resource = createQrCode(scene);
+                    }
+                    if (resource != null) {
+                        resource = QrCodeUtil.changeImage(resource.getInputStream(), administrativeItems.getName());
+                        ZipEntry zipEntry = new ZipEntry(responseFileName);
+                        if (resource != null) {
+                            zipfile.putNextEntry(zipEntry);
+                            bis[0] = resource.getInputStream();
+                            int read;
+                            while ((read = bis[0].read()) != -1) {
+                                zipfile.write(read);
+                            }
+                        }
+                    }
+
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            });
+            try {
+                zipfile.close();
+                bis[0].close();
+                bos.close();
+            } catch (IOException e) {
+                throw new RuntimeException("Failed to store file ", e);
+            }
+            InputStream is = new ByteArrayInputStream(bos.toByteArray());
+            String responseFileName = "二维码.zip";
+            responseFileName = new String(responseFileName.getBytes(), StandardCharsets.ISO_8859_1);
+            return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + responseFileName +
+                    "\"").contentType(MediaType.APPLICATION_OCTET_STREAM)
+                    .body(new InputStreamResource(is));
+        }
+
+        return null;
+    }
+
+
+    /**
+     * 方法描述  创建二维码
+     *
+     * @author huanghaoqi
+     * @date 2018年12月06日 11:38:18
+     */
+    private InputStreamResource createQrCode(String scene) throws UnsupportedEncodingException {
+        String page = "pages/handle/details/index";
+        String token = getToken();   // 得到token
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("scene", scene);  //参数
+        params.put("page", page); //位置
+        params.put("width", 400);
+
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+
+        HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token + "&scene=" + scene);  // 接口
+        httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
+
+        String body = new Gson().toJson(params);           //必须是json模式的 post
+        StringEntity entity = new StringEntity(body);
+        entity.setContentType("image/png");
+        httpPost.setEntity(entity);
+        HttpResponse response;
+        try {
+            response = httpClient.execute(httpPost);
+            InputStream inputStream = response.getEntity().getContent();
+            return new InputStreamResource(inputStream);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    /**
+     * 方法描述  获取access_token
+     *
+     * @author huanghaoqi
+     * @date 2018年12月06日 11:34:48
+     */
+    private String getToken() {
+        // 小程序唯一标识 (在微信小程序管理后台获取)
+        String wxspAppid = wxMaConfig.getAppid();
+        // 小程序的 app secret (在微信小程序管理后台获取)
+        String wxspSecret = wxMaConfig.getSecret();
+        //这里直接写死就可以,不用改,用法可以去看api
+        String grant_type = "client_credential";
+        //封装请求数据
+        String params = "grant_type=" + grant_type + "&secret=" + wxspSecret + "&appid=" + wxspAppid;
+        //发送GET请求
+        CloseableHttpClient httpCilent = HttpClients.createDefault();//Creates CloseableHttpClient instance with default configuration.
+        HttpGet httpGet = new HttpGet("https://api.weixin.qq.com/cgi-bin/token?" + params);
+        try {
+            HttpResponse httpResponse = httpCilent.execute(httpGet);
+            if (httpResponse.getStatusLine().getStatusCode() == 200) {
+                String srtResult = EntityUtils.toString(httpResponse.getEntity());//获得返回的结果
+                //解析相应内容(转换成json对象)
+                JSONObject json = JSONObject.fromObject(srtResult);
+                //拿到accesstoken
+                return (String) json.get("access_token");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                httpCilent.close();//释放资源
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+}

+ 97 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/AuthController.java

@@ -0,0 +1,97 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.admin.dao.AdminToken;
+import com.dgtis.dorm.manager.admin.service.AdminTokenManager;
+import com.dgtis.dorm.manager.admin.util.bcrypt.BCryptPasswordEncoder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import com.dgtis.dorm.manager.db.domain.Admin;
+import com.dgtis.dorm.manager.db.service.AdminService;
+import com.dgtis.dorm.manager.db.util.JacksonUtil;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/admin/login")
+public class AuthController {
+    private final Log logger = LogFactory.getLog(AuthController.class);
+
+    @Autowired
+    private AdminService adminService;
+
+    /*
+     *  { username : value, password : value }
+     */
+    @PostMapping("/login")
+    public Object login(@RequestBody String body) {
+        String username = JacksonUtil.parseString(body, "username");
+        //String password = JacksonUtil.parseString(body, "password");
+
+        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(JacksonUtil.parseString(body, "password"))) {
+            return ResponseUtil.badArgument();
+        }
+
+        List<Admin> adminList = adminService.findAdmin(username);
+        Assert.state(adminList.size() < 2, "同一个用户名存在两个账户");
+        if (adminList.size() == 0) {
+            return ResponseUtil.badArgumentValue();
+        }
+        Admin admin = adminList.get(0);
+
+        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+        if (!encoder.matches(JacksonUtil.parseString(body, "password"), admin.getPassword())) {
+            return ResponseUtil.fail(403, "账号密码不对");
+        }
+
+        Integer adminId = admin.getId();
+        // token
+        AdminToken adminToken = AdminTokenManager.generateToken(adminId);
+
+        return ResponseUtil.ok(adminToken.getToken());
+    }
+
+    /**
+     * @descption: 根据工号查询用户信息
+     * @param: [body]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/6/5 17:21
+     */
+    @PostMapping("/loginByEno")
+    public Object loginByEno(@RequestBody String body) {
+        String eno = JacksonUtil.parseString(body, "employeNo");
+
+        List<Admin> adminList = adminService.findByEno(eno);
+        Admin admin = null;
+        if (adminList.size() > 0) {
+            admin = adminList.get(0);
+        }
+
+        Integer adminId = admin.getId();
+        // token
+        AdminToken adminToken = AdminTokenManager.generateToken(adminId);
+
+        return ResponseUtil.ok(adminToken.getToken());
+    }
+
+    /*
+     *
+     */
+    @PostMapping("/logout")
+    public Object login(@LoginAdmin Integer adminId) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        return ResponseUtil.ok();
+    }
+}

+ 141 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/BannerController.java

@@ -0,0 +1,141 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.Banner;
+import com.dgtis.dorm.manager.db.service.BannerService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/banner")
+public class BannerController {
+
+    @Autowired
+    private BannerService bannerService;
+
+
+    /**
+     * @description 描述:获取banner信息列表
+     * @author      koucx
+     * @return      Object
+     * @date        2019/4/24 0024 16:49
+     * @param
+     */
+    @GetMapping("list")
+    public Object list(@LoginAdmin Integer adminId, String title,
+                       @RequestParam(value = "page", defaultValue = "1")Integer page,
+                       @RequestParam(value = "limit", defaultValue = "10")Integer limit,
+                       String sort) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        Banner banner = new Banner();
+        banner.setTitle(title);
+        List<Banner> lstBanner = bannerService.querySelective(banner, page, limit, sort);
+
+        int total = bannerService.countSelective(banner);
+
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("items", lstBanner);
+        data.put("total", total);
+
+        return ResponseUtil.ok(data);
+    }
+
+
+    /**
+     * @description 描述:获取指定id的banner详情
+     * @author      koucx
+     * @return      Object
+     * @date        2019/4/24 0024 16:50
+     * @param
+     */
+    @GetMapping("read")
+    public Object read(@LoginAdmin Integer adminId, Integer id) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(id == null) {
+            return  ResponseUtil.badArgumentValue();
+        }
+
+        Banner banner = bannerService.findById(id);
+
+        return ResponseUtil.ok(banner);
+    }
+
+
+    /**
+     * @description 描述:创建banner信息
+     * @author      koucx
+     * @return      Object
+     * @date        2019/4/24 0024 16:51
+     * @param
+     */
+    @PostMapping("create")
+    public Object create(@LoginAdmin Integer adminId, @RequestBody Banner banner) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        banner.setCreatorId(adminId);
+        banner.setCreateDate(LocalDateTime.now());
+        bannerService.add(banner);
+
+        return ResponseUtil.ok(banner);
+    }
+
+
+    /**
+     * @description 描述:更新banner信息
+     * @author      koucx
+     * @return      Object
+     * @date        2019/4/24 0024 16:51
+     * @param
+     */
+    @PostMapping("update")
+    public Object update(@LoginAdmin Integer adminId, @RequestBody Banner banner) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        bannerService.update(banner);
+
+        return ResponseUtil.ok(banner);
+    }
+
+
+    /**
+     * @description 描述:删除banner信息
+     * @author      koucx
+     * @return      Object
+     * @date        2019/4/24 16:52
+     * @param
+     */
+    @PostMapping("delete")
+    public Object delete(@LoginAdmin Integer adminId, @RequestBody Banner banner) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(banner == null) {
+            return ResponseUtil.badArgumentValue();
+        }
+
+        bannerService.delete(banner.getId());
+
+        return ResponseUtil.ok();
+    }
+}

+ 174 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/ConsultantController.java

@@ -0,0 +1,174 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.github.pagehelper.PageInfo;
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.Admin;
+import com.dgtis.dorm.manager.db.domain.QuestionsAnswers;
+import com.dgtis.dorm.manager.db.domain.ZhllConsultingComplaints;
+import com.dgtis.dorm.manager.db.service.AdminService;
+import com.dgtis.dorm.manager.db.service.DeptInfoService;
+import com.dgtis.dorm.manager.db.service.ZhllConsultingComplaintsService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author qxp
+ * @version 1.0
+ * @descption: TODO
+ * @company 神州数码通用软件(洛阳)有限公司
+ * @copyright (c) 2019 LuoYang DGT Co'Ltd Inc. All rights reserved.
+ * @date 19-8-5 14:57
+ * @since JDK1.8
+ */
+@RestController
+@RequestMapping("/admin/consultant")
+public class ConsultantController {
+    private final Log logger = LogFactory.getLog(ConsultantController.class);
+
+    @Autowired
+    private ZhllConsultingComplaintsService zhllConsultingComplaintsService;
+
+    @Autowired
+    private AdminService adminService;
+
+    /**
+     * @descption: 根据用户信息和条件查询咨询记录列表
+     * @param: [adminId, isAnswer, content, deptUnid, page, limit]
+     * @return: java.lang.Object
+     * @auther: qxp
+     * @date:19-8-6 17:48
+     */
+    @GetMapping("/list")
+    public Object list(@LoginAdmin Integer adminId,
+                       String isAnswer,
+                       String content,
+                       String deptUnid,
+                       String type,
+                       Integer page,
+                       Integer limit,
+                       String startDate,
+                       String endDate){
+        if(adminId==null){
+            return ResponseUtil.unlogin();
+        }
+        Map<String, Object> result = new HashMap<String, Object>();
+        //查找adminId所属的部门Unid
+        Admin admin = adminService.selectByPrimaryKey(adminId);
+        Map<String,Object> userInfo = new HashMap<>() ;
+        if(admin.getUserId()!=null){
+            userInfo=adminService.getUserInfoByUserId(admin.getUserId().toString());
+        }
+        boolean canGetALl = false;
+        if(userInfo.containsKey("postCode")){
+            if(userInfo.get("postCode").equals("10001")){//等于中心领导
+                result.put("canGetAll",true);
+                canGetALl = true;
+            }else{
+                result.put("canGetAll",false);
+            }
+
+        }
+
+        if(deptUnid==null){
+            //如果用户不是管理员,又没有传递部门id,本身又不属于任何部门则不查询数据
+            if(userInfo.get("deptUnid")!=null){
+                deptUnid =userInfo.get("deptUnid").toString();
+            }else{
+                if(!canGetALl){
+                    result.put("items", null);
+                    result.put("total", 0);
+                    result.put("deptUnid","None");
+                    return ResponseUtil.ok(result);
+                }
+            }
+        }
+
+        ZhllConsultingComplaints zhllConsultingComplaints = new ZhllConsultingComplaints();
+        if(deptUnid!=null){
+            zhllConsultingComplaints.setDeptUnid(deptUnid);
+        }
+        if(isAnswer!=null){
+            zhllConsultingComplaints.setIsAnswer(isAnswer);
+        }
+        if(content!=null){
+            zhllConsultingComplaints.setContent(content);
+        }
+        if(type!=null){
+            zhllConsultingComplaints.setType(type);
+        }
+
+        PageInfo<ZhllConsultingComplaints> pageInfo =zhllConsultingComplaintsService.queryByTimeListPage(zhllConsultingComplaints,startDate,endDate,page,limit);
+
+        result.put("items", pageInfo.getList());
+        result.put("total", pageInfo.getTotal());
+        result.put("deptUnid",deptUnid);
+
+        return ResponseUtil.ok(result);
+    }
+
+    /**
+     * 获取指定id的咨询详情
+     */
+    @GetMapping("read")
+    public Object read(@LoginAdmin Integer adminId, String id) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(id == null) {
+            return  ResponseUtil.badArgumentValue();
+        }
+
+        ZhllConsultingComplaints zhllConsultingComplaints = zhllConsultingComplaintsService.selectZhllConsultingComplaintsById(id);
+
+        return ResponseUtil.ok(zhllConsultingComplaints);
+    }
+
+    /**
+     * 更新问题
+     */
+    @PostMapping("answer")
+    public Object answer(@LoginAdmin Integer adminId, @RequestBody ZhllConsultingComplaints zhllConsultingComplaints) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        zhllConsultingComplaints.setIsAnswer("1");
+        zhllConsultingComplaintsService.updateZhllConsultingComplaints(zhllConsultingComplaints);
+
+        return ResponseUtil.ok();
+    }
+
+    /**
+     * 删除问题
+     */
+    @GetMapping("delete")
+    public Object delete(@LoginAdmin Integer adminId, String id) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(id == null) {
+            return ResponseUtil.badArgumentValue();
+        }
+
+        ZhllConsultingComplaints zh =new ZhllConsultingComplaints();
+        zh.setId(id);
+        zh.setDelFlag("1");
+        zhllConsultingComplaintsService.updateZhllConsultingComplaints(zh);
+        return ResponseUtil.ok();
+    }
+
+}
+
+

+ 90 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/DashbordController.java

@@ -0,0 +1,90 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import com.dgtis.dorm.manager.db.domain.NewsComment;
+import com.dgtis.dorm.manager.db.domain.QuestionsAnswers;
+import com.dgtis.dorm.manager.db.service.NewsCommentService;
+import com.dgtis.dorm.manager.db.service.QuestionsAnswersService;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/dashboard")
+public class DashbordController {
+    private final Log logger = LogFactory.getLog(DashbordController.class);
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private NewsCommentService newsCommentService;
+
+    @Autowired
+    private QuestionsAnswersService questionsAnswersService;
+
+
+    @GetMapping("")
+    public Object info(@LoginAdmin Integer adminId){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        AlumniUser user = null;
+        //校友录数量
+        int userTotal = userService.selectCountNotYK();
+        //游客数量
+        user = new AlumniUser();
+        user.setRoleType("游客");
+        int visitorsTotal = userService.count(user);
+        //待审核数量
+        user = new AlumniUser();
+        user.setAuditStatus(1);
+        int awaitAuditTotal = userService.count(user);
+        //昨日浏览人数
+        Calendar cal=Calendar.getInstance();
+        cal.add(Calendar.DATE,-1);
+        Date time=cal.getTime();
+        String lastLoginDate = new SimpleDateFormat("yyyy-MM-dd").format(time);
+        user = new AlumniUser();
+        user.setLastLoginTimeStr(lastLoginDate);
+        int yesterdayTotal = userService.count(user);
+
+        //今日评论数量
+        NewsComment comment = new NewsComment();
+        comment.setCreateDate(new SimpleDateFormat("yyyy-MM-dd").format( new Date()));
+        int todayTotal = newsCommentService.countSelective(comment);
+
+        //提问待回答数量
+        QuestionsAnswers questionsAnswers = new QuestionsAnswers();
+        questionsAnswers.setIsAnswer(false);
+        int questionTotal = questionsAnswersService.countSelective(questionsAnswers);
+//        int goodsTotal = goodsService.count();
+//        int productTotal = productService.count();
+//        int orderTotal = orderService.count();
+        Map<String, Integer> data = new HashMap<>();
+        data.put("userTotal", userTotal);
+        data.put("visitorsTotal", visitorsTotal);
+        data.put("awaitAuditTotal", awaitAuditTotal);
+        data.put("yesterdayTotal", yesterdayTotal);
+        data.put("todayTotal",todayTotal);
+        data.put("questionTotal",questionTotal);
+//        data.put("goodsTotal", goodsTotal);
+//        data.put("productTotal", productTotal);
+//        data.put("orderTotal", orderTotal);
+
+        return ResponseUtil.ok(data);
+    }
+
+}

+ 45 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/DeptInfoController.java

@@ -0,0 +1,45 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import com.dgtis.dorm.manager.db.domain.NewsComment;
+import com.dgtis.dorm.manager.db.domain.QuestionsAnswers;
+import com.dgtis.dorm.manager.db.service.DeptInfoService;
+import com.dgtis.dorm.manager.db.service.NewsCommentService;
+import com.dgtis.dorm.manager.db.service.QuestionsAnswersService;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@RestController
+@RequestMapping("/admin/deptinfo")
+public class DeptInfoController {
+    private final Log logger = LogFactory.getLog(DeptInfoController.class);
+
+    @Autowired
+    private DeptInfoService deptInfoService;
+
+
+    /**
+     * @descption: 查询所有等级为2的部门列表只有部门Unid 和名称
+     * @param:
+     * @return: java.lang.Object
+     * @auther: qxp
+     * @date:19-8-6 15:20
+     */
+    @GetMapping("/list")
+    public Object list(){
+       List<Map<String,Object>> resultList = deptInfoService.getLeve2DeptList();
+
+       return ResponseUtil.ok(resultList);
+    }
+
+}

+ 89 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/NewCommentController.java

@@ -0,0 +1,89 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.NewsComment;
+import com.dgtis.dorm.manager.db.service.NewsCommentService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+
+/**
+ * @ClassName NewCommentController
+ * @Description 评论管理Controller
+ * @Author yangjh
+ * @Date 2018/9/28 17:57
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/admin/newsComment")
+public class NewCommentController {
+
+    @Autowired
+    private NewsCommentService newsCommentService;
+
+    /**
+     * 获取评论列表
+     * @param adminId
+     * @param newsComment
+     * @param page
+     * @param limit
+     * @param sort
+     * @return
+     */
+    @GetMapping("listCommon")
+    public Object list (@LoginAdmin Integer adminId,
+                                            NewsComment newsComment,
+                                            @RequestParam(value = "page", defaultValue = "1")Integer page,
+                                            @RequestParam(value = "limit", defaultValue = "10")Integer limit,
+                                            String sort){
+        if(adminId == null){
+            return ResponseUtil.fail401();
+        }
+        List<NewsComment> lstCommont = newsCommentService.selectCommonList(newsComment, page, limit, sort);
+        int total = newsCommentService.countByComList(newsComment);
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("items", lstCommont);
+        data.put("total", total);
+        return ResponseUtil.ok(data);
+    }
+
+    /**
+     * 删除评论
+     * @param adminId
+     * @param newsComment
+     * @return
+     */
+    @PostMapping("deleteCommon")
+    public Object deleteCommon(@LoginAdmin Integer adminId, @RequestBody NewsComment newsComment) {
+         if(adminId == null) {
+          return ResponseUtil.unlogin();
+         }
+
+        if(newsComment.getId() == 0) {
+            return ResponseUtil.badArgument();
+        }
+
+        newsCommentService.delete(newsComment.getId());
+
+        return ResponseUtil.ok();
+    }
+
+    /**
+     * 批量删除评论
+     * @return
+     */
+    @PostMapping("deleteQuantity")
+    public Object deleteQuantity(@LoginAdmin Integer adminId, String id) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        if(id == null) {
+            return ResponseUtil.badArgument();
+        }
+        newsCommentService.deleteQuantity(Arrays.asList(id.split(",")));
+        return ResponseUtil.ok();
+    }
+}

+ 298 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/NewsController.java

@@ -0,0 +1,298 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.github.pagehelper.PageInfo;
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.*;
+import com.dgtis.dorm.manager.db.service.AdminService;
+import com.dgtis.dorm.manager.db.service.NewsOrganizeService;
+import com.dgtis.dorm.manager.db.service.NewsService;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.*;
+
+/**
+ * @descption: 内容与互动管理
+ * @auther: qxm
+ * @date: 2019/4/22 17:03
+ */
+@RestController
+@RequestMapping("/admin/news")
+public class NewsController {
+
+    @Autowired
+    private NewsService newsService;
+    @Autowired
+    private AdminService adminService;
+    @Autowired
+    private NewsOrganizeService newsOrganizeService;
+    @Autowired
+    private UserService userService;
+
+    /**
+     * @descption: 获取 交互内容列表
+     * @param: [adminId, newsCriterion]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:04
+     */
+    @PostMapping("list")
+    public Object list(@LoginAdmin Integer adminId, @RequestBody NewsCriterion newsCriterion) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        News news = new News();
+        news.setNewsCriterion(newsCriterion);
+
+        List<News> lstNews = newsService.querySelective(news);
+        int total = newsService.countSelective(news);
+
+        if(StringUtils.isBlank(newsCriterion.getType())) {
+            List<News> lstRemove = new ArrayList<News>();
+            for(News newsTemp : lstNews) {
+
+                if(newsTemp.getType().equals("administrationInfo")) {
+                    newsTemp.setTitle("[行政动态]-" + newsTemp.getTitle());
+                } else if(newsTemp.getType().equals("servicePacesetter")) {
+                    newsTemp.setTitle("[服务标兵]-" + newsTemp.getTitle());
+                } else if(newsTemp.getType().equals("centraActivities")) {
+                    newsTemp.setTitle("[中心活动]-" + newsTemp.getTitle());
+                } else if(newsTemp.getType().equals("reading")) {
+                    newsTemp.setTitle("[悦读]-" + newsTemp.getTitle());
+                } else if(newsTemp.getType().equals("notice")) {
+                    newsTemp.setTitle("[公告管理]-" + newsTemp.getTitle());
+                }
+            }
+
+            if(lstRemove.size() > 0) {
+                lstNews.removeAll(lstRemove);
+                total = total - lstRemove.size();
+            }
+        } /*else if(newsCriterion.getType().equals("activity")) {
+            LocalDateTime localDate = LocalDateTime.now();
+
+            for(News newsItem : lstNews) {
+                // 当前时间小于报名开始时间:报名未开始
+                if(newsItem.getRegistStartDate() != null && localDate.compareTo(newsItem.getRegistStartDate()) < 0) {
+                    newsItem.setActivityState("报名待开始");
+                } else if(newsItem.getRegistEndDate() != null && localDate.compareTo(newsItem.getRegistEndDate()) < 0) {
+                    // 当前时间小于报名截止时间:报名进行中
+                    newsItem.setActivityState("报名进行中");
+                } else if(newsItem.getRegistEndDate() != null && localDate.compareTo(newsItem.getRegistEndDate()) > 0
+                        && newsItem.getActivityStartDate() != null && localDate.compareTo(newsItem.getActivityStartDate()) < 0) {
+                    // 当前时间大于报名截止时间且小于活动开始时间:报名已截止
+                    newsItem.setActivityState("报名已截止");
+                } else if(newsItem.getActivityStartDate() != null && localDate.compareTo(newsItem.getActivityStartDate()) > 0
+                        && newsItem.getActivityEndDate() != null && localDate.compareTo(newsItem.getActivityEndDate()) < 0) {
+                    // 当前时间在活动开始时间和活动结束时间之间:活动进行中
+                    newsItem.setActivityState("活动进行中");
+                } else if(newsItem.getActivityEndDate() != null && localDate.compareTo(newsItem.getActivityEndDate()) > 0) {
+                    // 当前时间大于活动结束时间:活动已结束
+                    newsItem.setActivityState("活动已结束");
+                }
+            }
+        }*/
+
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("total", total);
+        data.put("items", lstNews);
+
+        return ResponseUtil.ok(data);
+    }
+
+    /**
+     * @descption: 获取交互内容 详情
+     * @param: [adminId, id]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:38
+     */
+    @GetMapping("read")
+    public Object read(@LoginAdmin Integer adminId, Integer id) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(id == null){
+            return ResponseUtil.badArgument();
+        }
+
+        News news = newsService.findById(id);
+
+        return ResponseUtil.ok(news);
+    }
+
+    /**
+     * @descption: 创建交互内容
+     * @param: [adminId, news]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:57
+     */
+    @PostMapping("create")
+    public Object create(@LoginAdmin Integer adminId, @RequestBody News news) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        Admin admin = adminService.findById(adminId);
+        if(admin != null) {
+            news.setCreator(admin.getNickname());
+            news.setIsAdmin("1");//标识为管理员创建(用于另外提取以关联名字头像)
+
+            // 根据手机号查询用户关联的微信用户id
+            if(StringUtils.isNotBlank(admin.getPhone())) {
+                AlumniUser alumniUser = new AlumniUser();
+                alumniUser.setPhone(admin.getPhone());
+
+                PageInfo<AlumniUser> pageInfoUser = userService.querySelective(alumniUser, 1, 10, null, null);
+                List<AlumniUser> lstUser = pageInfoUser.getList();
+                if(lstUser != null && lstUser.size() == 1) {
+                    news.setCreatorId(lstUser.get(0).getId().toString());
+                }
+            }
+        }
+
+        //news.setCreatorId(String.valueOf(adminId));
+        news.setCreateDate(LocalDateTime.now());
+        newsService.add(news);
+
+        if(news.getOrganizeId() != null) {
+            for(int organizeId : news.getOrganizeId()) {
+                NewsOrganize newsOrganize = new NewsOrganize();
+                newsOrganize.setNewsId(news.getId());
+                newsOrganize.setOrganizeId(organizeId);
+                newsOrganize.setUserId(adminId);
+                newsOrganize.setFromType("0");
+
+                newsOrganizeService.add(newsOrganize);
+            }
+        }
+
+        return ResponseUtil.ok(news);
+    }
+
+    /**
+     * @descption: 更新交互内容
+     * @param: [adminId, news]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:57
+     */
+    @PostMapping("update")
+    public Object update(@LoginAdmin Integer adminId, @RequestBody News news) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        newsService.updateById(news);
+
+        newsOrganizeService.deleteByActivityId(news.getId());
+        if(news.getOrganizeId() != null) {
+            for(int organizeId : news.getOrganizeId()) {
+                NewsOrganize newsOrganize = new NewsOrganize();
+                newsOrganize.setNewsId(news.getId());
+                newsOrganize.setOrganizeId(organizeId);
+                newsOrganize.setFromType("1");
+
+                newsOrganizeService.add(newsOrganize);
+            }
+        }
+
+        return ResponseUtil.ok(news);
+    }
+    
+    
+    /**
+     * @descption: 更新审核状态
+     * @param: [adminId, news]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:56
+     */
+    @PostMapping("updateNewsAuth")
+    public Object updateNewsAuth(@LoginAdmin Integer adminId, @RequestBody News news) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        newsService.updateById(news);
+
+        return ResponseUtil.ok(news);
+    }
+    
+    
+    /**
+     * @descption: 删除交互内容
+     * @param: [adminId, news]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:56
+     */
+    @PostMapping("delete")
+    public Object delete(@LoginAdmin Integer adminId, @RequestBody News news) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        Integer id = news.getId();
+        if(id == null) {
+            return ResponseUtil.badArgument();
+        }
+
+        newsService.deleteById(id);
+
+        return ResponseUtil.ok();
+    }
+    /**
+     * @descption: 批量删除交互内容
+     * @param: [adminId, newsId]
+     * @return: java.lang.Object
+     * @auther: qxm
+     * @date: 2019/4/22 17:55
+     */
+    @PostMapping("deleteQuantity")
+    public Object deleteQuantity(@LoginAdmin Integer adminId, String newsId) {
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        if(newsId == null) {
+            return ResponseUtil.badArgument();
+        }
+        newsService.deleteQuantity(Arrays.asList(newsId.split(",")));
+        return ResponseUtil.ok();
+    }
+    /**
+     * 获取 活动关联的圈子信息
+     * @param adminId
+     * @param newsId
+     * @return
+     */
+    @GetMapping("listActivityOrg")
+    public Object listActivityOrg(@LoginAdmin Integer adminId, int newsId) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        NewsOrganize newsOrganize = new NewsOrganize();
+        newsOrganize.setNewsId(newsId);
+        List<NewsOrganize> lstNewsOrganize = newsOrganizeService.findNewsOrganize(newsOrganize);
+
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("items", lstNewsOrganize);
+
+        return ResponseUtil.ok(data);
+    }
+}

+ 172 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/OauthCtl.java

@@ -0,0 +1,172 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.dao.AdminToken;
+import com.dgtis.dorm.manager.admin.service.AdminTokenManager;
+import com.dgtis.dorm.manager.db.domain.Admin;
+import com.dgtis.dorm.manager.db.service.AdminService;
+import com.dgtis.dorm.manager.db.util.JacksonUtil;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.oltu.oauth2.client.OAuthClient;
+import org.apache.oltu.oauth2.client.URLConnectionClient;
+import org.apache.oltu.oauth2.client.request.OAuthBearerClientRequest;
+import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
+import org.apache.oltu.oauth2.client.response.OAuthAccessTokenResponse;
+import org.apache.oltu.oauth2.client.response.OAuthResourceResponse;
+import org.apache.oltu.oauth2.common.OAuth;
+import org.apache.oltu.oauth2.common.message.types.GrantType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.Assert;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @descption:客户端Oauth登录
+ * @auther: qxm
+ * @date: 2019/6/3 11:28
+ */
+@Controller
+@RequestMapping("/admin/oauthCtl")
+public class OauthCtl {
+
+    @Autowired
+    private AdminService adminService;
+
+    @Value("${SERVER_URL}")
+    public String SERVER_URL ;
+    //授权验证成功跳转路径
+    @Value("${LOGIN_SUCCESS}")
+    private String LOGIN_SUCCESS;
+    //失败跳转路径
+    @Value("${LOGIN_FAIL}")
+    private String LOGIN_FAIL ;
+
+    @Value("${client_id}")
+    private String client_id;
+
+    @Value("${client_secret}")
+    private String client_secret ;
+
+    @Value("${http_server_url}")
+    private String http_server_url;
+
+    @Value("${redirect_uri}")
+    private String redirect_uri;
+
+    @Value("${urlLoginByCode}")
+    private String urlLoginByCode;//小程序后台的地址(要拼接code)
+
+    /**
+     * 重定向到服务端获取授权码
+     *
+     * @param request
+     * @param response
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("pcOauth2toServer")
+    public String oauth2toServer(HttpServletRequest request, HttpServletResponse response, RedirectAttributes attr) throws Exception {
+        System.out.println("pcOauth2toServer==================");
+        attr.addAttribute("client_id", client_id);
+        attr.addAttribute("response_type", "code");
+        attr.addAttribute("redirect_uri",redirect_uri);
+        return "redirect:" + http_server_url +"/authorize.if"; //重定向
+    }
+
+    /**
+     * 服务端回调服务,获取授权码,授权登录成功,跳转到主页面
+     *
+     * @param code 服务端回调获取的授权码
+     */
+    @RequestMapping("pcCallback")
+    public String callback(HttpServletRequest request, @ModelAttribute("code") String code) throws Exception {
+        System.out.println("pcCallback=====client authCode:" + code);
+        return "redirect:" + urlLoginByCode +"?code="+code+"&loginstatus=true"; //带上code重定向到vue首页
+    }
+
+    /**
+     * vue首页首页检测到code,直接根据code验证登录
+     *
+     * @param body 服务端回调获取的授权码
+     */
+    @RequestMapping("loginByCode")
+    @ResponseBody
+    public Object loginByCode(@RequestBody String body) throws Exception {
+        String code = JacksonUtil.parseString(body, "code");
+        System.out.println("client code:" + code);
+        String employeNo = getAccreditByServer(code, redirect_uri);
+        System.out.println("client employeNo:" + employeNo);
+        if(StringUtils.isEmpty(employeNo)){
+            return ResponseUtil.badArgument();
+        }
+        List<Admin> adminList = adminService.findByEno(employeNo);
+        Assert.state(adminList.size() < 2, "同一个用户名存在两个账户");
+        if(adminList.size() == 0){
+            return ResponseUtil.badArgumentValue();
+        }
+        Admin admin = adminList.get(0);
+
+        Integer adminId = admin.getId();
+        // token
+        AdminToken adminToken = AdminTokenManager.generateToken(adminId);
+
+        return ResponseUtil.ok(adminToken.getToken());
+    }
+
+    public String getAccreditByServer(String authCode,String redirect_url) {
+        //http://localhost:8080/web-oauth2-server/accessToken?client_id=c1ebe466-1cdc-4bd3-ab69-77c3561b9dee&client_secret=d8346ea2-6017-43ed-ad68-19c0f971738b&grant_type=authorization_code&code=12545716af0a62d4918d5a245d62b030&redirect_uri=http://test.dgtis.com:8080/web-base/system/MainCtr/initMain
+        String accessTokenUrl = http_server_url+"/accessToken.if";
+        OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
+        OAuthResourceResponse resourceResponse = null;
+
+        try {
+            //使用授权码获取accessToken
+            OAuthClientRequest accessTokenRequest = OAuthClientRequest
+                    .tokenLocation(accessTokenUrl)
+                    .setGrantType(GrantType.AUTHORIZATION_CODE)
+                    .setClientId(client_id)
+                    .setClientSecret(client_secret)
+                    .setCode(authCode)
+                    .setRedirectURI(redirect_url)
+                    .buildBodyMessage();
+            OAuthAccessTokenResponse oAuthResponse = oAuthClient.accessToken(accessTokenRequest, OAuth.HttpMethod.POST);
+            //获取到的token  scc
+            String accessToken = oAuthResponse.getAccessToken();
+            Long expiresIn = oAuthResponse.getExpiresIn();
+
+            System.out.println("AccessToken Client : "+accessToken);
+
+            //使用accessToken获取用户信息
+            //http://test.dgtis.com:8080/web-base/userInfo?access_token=7921a463132b857e8d929061fb7b6902
+            String userInfoUrl = http_server_url +"/userInfo.if";
+            OAuthClientRequest userInfoRequest = new OAuthBearerClientRequest(userInfoUrl).setAccessToken(accessToken).buildQueryMessage();
+
+            resourceResponse = oAuthClient.resource(userInfoRequest, OAuth.HttpMethod.GET, OAuthResourceResponse.class);
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        String userInfoRes = resourceResponse.getBody();
+        System.out.println("UserInfo Client : "+userInfoRes);
+
+        //Gson gson = new Gson();
+        //Map<String,String> userInfo  = gson.fromJson(userInfoRes, Map.class);
+        Map<String,String> userInfo  = JacksonUtil.parseObject(userInfoRes, Map.class);
+
+        return userInfo.get("employeNo");
+    }
+
+
+}

+ 243 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/OrganizeController.java

@@ -0,0 +1,243 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganize;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeCustom;
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import com.dgtis.dorm.manager.db.service.AlumniOrganizeService;
+import com.dgtis.dorm.manager.db.service.AlumniOrganizeUserService;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import com.dgtis.dorm.manager.db.util.wx.entity.MessageData;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/organize")
+public class OrganizeController {
+
+    private static final Log logger = LogFactory.getLog(OrganizeController.class);
+
+
+    @Autowired
+    private AlumniOrganizeService alumniOrganizeService;
+
+    @Autowired
+    private AlumniOrganizeUserService alumniOrganizeUserService;
+
+    @Autowired
+    private UserService userService;
+
+
+    /********************************************************* 通用 *********************************************************/
+
+
+    /**
+     * 根据类型查询组织
+     *
+     * @param orgType 组织类型
+     * @return
+     */
+    @PostMapping("/selectOrganize")
+    public Object selectOrganize(String orgType,String orgName,@RequestParam(value = "page", defaultValue = "1") Integer page,
+                                 @RequestParam(value = "limit", defaultValue = "10") Integer limit){
+
+        Map<String,Object> map = alumniOrganizeService.selectOrganizeByTypeAndName(orgType,orgName,page,limit);
+
+        return ResponseUtil.ok(map);
+    }
+
+    /**
+     * 创建组织
+     *
+     * @param adminId
+     * @param alumniOrganize
+     * @return
+     */
+    @PostMapping("createOrganize")
+    public Object createOrganize(@LoginAdmin Integer adminId, @RequestBody AlumniOrganize alumniOrganize){
+
+        alumniOrganize.setCreateDate(LocalDateTime.now());
+        alumniOrganize.setOrganizeUserId(adminId);
+        //后台创建默认审核通过
+        alumniOrganize.setAuthStatus(1);
+        alumniOrganize.setAuthUserId(adminId);
+        Integer f = alumniOrganizeService.insertSelective(alumniOrganize);
+
+
+        try {
+            // 设置群主
+//            Integer ownerUserId = Integer.parseInt(alumniOrganizeCustom.getAdminUserId());
+//            alumniOrganizeService.OrganizeAdminUser(alumniOrganizeCustom.getId(),ownerUserId);
+        } catch (Exception e) {
+
+        }
+
+        return ResponseUtil.ok(f);
+    }
+
+    /**
+     * 更新组织
+     *
+     * @param adminId
+     * @param alumniOrganize
+     * @return
+     */
+    @PostMapping("updateOrganize")
+    public Object updateOrganize(@LoginAdmin Integer adminId,@RequestBody AlumniOrganize alumniOrganize){
+
+        alumniOrganize.setModifyUserId(adminId);
+        alumniOrganize.setModifyDate(LocalDateTime.now());
+
+        Integer f = alumniOrganizeService.updateByPrimaryKeySelective(alumniOrganize);
+
+
+        // 设置群主
+        // alumniOrganizeService.updateOrganizeAdminUser(alumniOrganizeCustom.getId(),Integer.parseInt(alumniOrganizeCustom.getAdminUserId()));
+
+//        try {
+//            Integer ownerUserId = Integer.parseInt(alumniOrganizeCustom.getAdminUserId());
+//            alumniOrganizeService.OrganizeAdminUser(alumniOrganizeCustom.getId(),ownerUserId);
+//        } catch (Exception e) {
+//        }
+
+
+        return ResponseUtil.ok(f);
+    }
+
+
+
+    /**
+     * 更新组织
+     *
+     * @param adminId
+     * @param alumniOrganizeCustom
+     * @return
+     */
+    @PostMapping("auditOrganizeInterest")
+    public Object auditOrganizeInterest(@LoginAdmin Integer adminId,AlumniOrganizeCustom alumniOrganizeCustom){
+
+        alumniOrganizeCustom.setModifyUserId(adminId);
+        alumniOrganizeCustom.setModifyDate(LocalDateTime.now());
+        alumniOrganizeCustom.setAuthDate(LocalDateTime.now());
+        alumniOrganizeCustom.setAuthUserId(adminId);
+
+        Integer f = alumniOrganizeService.updateByPrimaryKeySelective(alumniOrganizeCustom);
+
+
+        return ResponseUtil.ok(f);
+    }
+
+    /**
+     * 删除组织
+     * @param adminId
+     * @param alumniOrganizeCustom
+     * @return
+     */
+    @PostMapping("deleteOrgById")
+    public Object deleteOrgById(@LoginAdmin Integer adminId, @RequestBody AlumniOrganizeCustom alumniOrganizeCustom){
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        alumniOrganizeService.deleteOrgById(alumniOrganizeCustom.getId());
+        return ResponseUtil.ok();
+    }
+
+    /**
+     * 更新组织审核状态
+     * @param adminId
+     * @param alumniOrganize
+     * @return
+     */
+    @RequestMapping(value = "updateOrgAuth")
+    public Object updateOrgAuth(@LoginAdmin Integer adminId, @RequestBody AlumniOrganize alumniOrganize){
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        alumniOrganizeService.updateByPrimaryKeySelective(alumniOrganize);
+
+        return ResponseUtil.ok();
+    }
+
+    @PostMapping("sendWXMsg")
+    public Object sendWXMsg(Integer id){
+        AlumniOrganize alumniOrganize = alumniOrganizeService.selectByPrimaryKey(id);
+
+        // 发送微信消息
+        AlumniUser u  = userService.findById(alumniOrganize.getOrganizeUserId());
+        MessageData msgData = new MessageData();
+        msgData.setKeyword1(u.getUserName());
+        msgData.setKeyword2(alumniOrganize.getOrganizeName()+"兴趣小组申请");
+        if ("1".equals(alumniOrganize.getAuthStatus().toString())){
+            msgData.setKeyword3("通过");
+            msgData.setKeyword4("您的兴趣小组"+ alumniOrganize.getOrganizeName()+"创建申请审核通过!");
+        } else if ("2".equals(alumniOrganize.getAuthStatus().toString())){
+            msgData.setKeyword3("驳回");
+            msgData.setKeyword4("您的兴趣小组"+ alumniOrganize.getOrganizeName()+"创建申请被驳回!");
+        }
+        userService.sendWXMSG(alumniOrganize.getOrganizeUserId(),msgData);
+
+        return ResponseUtil.ok();
+    }
+
+    /**
+     * 批量删除圈子
+     * @param adminId
+     * @param orgIds
+     * @return
+     */
+    @PostMapping("deleteOrgQuantity")
+    public Object deleteOrgQuantity(@LoginAdmin Integer adminId,String orgIds){
+        if (adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        if (orgIds == null) {
+            return ResponseUtil.badArgument();
+        }
+        alumniOrganizeService.deleteOrgQuantity(Arrays.asList(orgIds.split(",")));
+        return ResponseUtil.ok();
+    }
+
+
+    @PostMapping("selectUserByUserName")
+    public Object selectUserByUserName(@LoginAdmin Integer adminId,String userName){
+
+        List<AlumniUser> list = userService.selectUserByUserName(userName);
+
+        return ResponseUtil.ok(list);
+    }
+
+    /**
+     * 方法描述  查询详情
+     * @param id  组织ID
+     * @return Object
+     *
+     * @author huanghaoqi
+     * @date 2019年01月07日 14:27:59
+     */
+    @PostMapping("detail")
+    public Object detail(@LoginAdmin Integer adminId,Integer id){
+        AlumniOrganizeCustom alumniOrganizeCustom = alumniOrganizeService.selectById(id);
+        return ResponseUtil.ok(alumniOrganizeCustom);
+    }
+
+
+
+
+
+
+    /********************************************************* 地方专委会 *********************************************************/
+
+
+    /********************************************************* 行业专委会 *********************************************************/
+
+
+    /********************************************************* 兴趣小组 *********************************************************/
+}

+ 121 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/OrganizeUserController.java

@@ -0,0 +1,121 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganize;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeUser;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeUserCustom;
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import com.dgtis.dorm.manager.db.service.AlumniOrganizeService;
+import com.dgtis.dorm.manager.db.service.AlumniOrganizeUserService;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import com.dgtis.dorm.manager.db.util.wx.entity.MessageData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/organizeuser")
+public class OrganizeUserController {
+
+    @Autowired
+    private AlumniOrganizeUserService alumniOrganizeUserService;
+
+    @Autowired
+    private AlumniOrganizeService alumniOrganizeService;
+
+    @Autowired
+    private UserService userService;
+
+    /**
+     * 根据orgId查询组织用户
+     *
+     * @param fkOrganizeId 组织id
+     * @param page
+     * @param limit
+     * @return
+     */
+    @PostMapping("selectOrganizeUserByOrgId")
+    public Object selectOrganizeUserByOrgId(@LoginAdmin Integer adminId, Integer fkOrganizeId, @RequestParam(value = "page", defaultValue = "1") Integer page,
+                                            @RequestParam(value = "limit", defaultValue = "10") Integer limit){
+
+        Map<String,Object> map = alumniOrganizeUserService.selectByOrgId(fkOrganizeId,page,limit);
+
+        return ResponseUtil.ok(map);
+    }
+
+
+    /**
+     * 根据orgId查询组织正常用户
+     *
+     * @param fkOrganizeId 组织id
+     * @param page
+     * @param limit
+     * @return
+     */
+    @PostMapping("selectOrganizeUserByOrgIdNoDel")
+    public Object selectOrganizeUserByOrgIdNoDel(@LoginAdmin Integer adminId, Integer fkOrganizeId, @RequestParam(value = "page", defaultValue = "1") Integer page,
+                                            @RequestParam(value = "limit", defaultValue = "10") Integer limit){
+
+        Map<String,Object> map = alumniOrganizeUserService.selectByOrgIdNoDel(fkOrganizeId,page,limit);
+
+        List<AlumniOrganizeUserCustom> list = (List<AlumniOrganizeUserCustom>) map.get("items");
+
+        for (AlumniOrganizeUserCustom alumniOrganizeUserCustom : list){
+            if (alumniOrganizeUserCustom.getPriType().equals("1")){
+                map.put("adminUser", alumniOrganizeUserCustom != null?alumniOrganizeUserCustom.getId():"");
+                break;
+            }
+        }
+
+        return ResponseUtil.ok(map);
+    }
+
+    @PostMapping("updateOrganizeUserById")
+    public Object updateOrganizeUserById(@LoginAdmin Integer adminId,AlumniOrganizeUserCustom alumniOrganizeUserCustom){
+
+        alumniOrganizeUserCustom.setModifyDate(LocalDateTime.now());
+        alumniOrganizeUserCustom.setModifyUserId(adminId);
+
+        // isDelete为false时添加删除时间
+        if (alumniOrganizeUserCustom.getIsDelete() != null && !alumniOrganizeUserCustom.getIsDelete()){
+            alumniOrganizeUserCustom.setDeleteDate(LocalDateTime.now());
+        }
+
+        Integer f = alumniOrganizeUserService.updateByPrimaryKeySelective(alumniOrganizeUserCustom);
+
+        return ResponseUtil.ok(f);
+    }
+
+    @PostMapping("sendWXMsg")
+    public Object sendWXMsg(Integer orgUserId){
+
+        AlumniOrganizeUser alumniOrganizeUser = alumniOrganizeUserService.selectByPrimaryKey(orgUserId);
+
+        AlumniOrganize alumniOrganize = alumniOrganizeService.selectByPrimaryKey(alumniOrganizeUser.getFkOrganizeId());
+
+        // 发送微信消息
+        AlumniUser u  = userService.findById(alumniOrganizeUser.getFkUserId());
+        MessageData msgData = new MessageData();
+        msgData.setKeyword1(u.getUserName());
+        msgData.setKeyword2(alumniOrganize.getOrganizeName()+"专委会申请");
+        if ("1".equals(alumniOrganizeUser.getIsNormal())){
+            msgData.setKeyword3("通过");
+            msgData.setKeyword4("您申请的"+ alumniOrganize.getOrganizeName()+"审核通过!");
+        } else if ("2".equals(alumniOrganizeUser.getIsNormal())){
+            msgData.setKeyword3("驳回");
+            msgData.setKeyword4("您申请的"+ alumniOrganize.getOrganizeName()+"审核不通过!");
+        }
+
+        userService.sendWXMSG(alumniOrganizeUser.getFkUserId(),msgData);
+
+        return ResponseUtil.ok();
+
+    }
+}

+ 119 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/QuestionsAnwsersController.java

@@ -0,0 +1,119 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.QuestionsAnswers;
+import com.dgtis.dorm.manager.db.service.QuestionsAnswersService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/questions")
+public class QuestionsAnwsersController {
+
+    @Autowired
+    private QuestionsAnswersService questionsAnswersService;
+
+    /**
+     * 获取banner信息列表
+     */
+    @GetMapping("list")
+    public Object list(@LoginAdmin Integer adminId, String questions, Boolean isAnswer,
+                       @RequestParam(value = "page", defaultValue = "1")Integer page,
+                       @RequestParam(value = "limit", defaultValue = "10")Integer limit,
+                       String sort) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        QuestionsAnswers questionsAnswers = new QuestionsAnswers();
+        if(questions != null)
+        	questionsAnswers.setQuestions(questions);
+    	if(isAnswer != null)
+        	questionsAnswers.setIsAnswer(isAnswer);
+        List<QuestionsAnswers> lstQuestionsAnswers = questionsAnswersService.querySelective(questionsAnswers, page, limit, sort);
+
+        int total = questionsAnswersService.countSelective(questionsAnswers);
+
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("items", lstQuestionsAnswers);
+        data.put("total", total);
+
+        return ResponseUtil.ok(data);
+    }
+
+    /**
+     * 获取指定id的banner详情
+     */
+    @GetMapping("read")
+    public Object read(@LoginAdmin Integer adminId, Integer id) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(id == null) {
+            return  ResponseUtil.badArgumentValue();
+        }
+
+        QuestionsAnswers questionsAnswers = questionsAnswersService.findById(id);
+
+        return ResponseUtil.ok(questionsAnswers);
+    }
+
+    /**
+     * 创建问题
+     */
+    @PostMapping("create")
+    public Object create(@LoginAdmin Integer adminId, @RequestBody QuestionsAnswers questionsAnswers) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+        questionsAnswers.setCreatorId(adminId);
+        questionsAnswers.setCreateDate(new Date());
+        questionsAnswersService.add(questionsAnswers);
+
+        return ResponseUtil.ok(questionsAnswers);
+    }
+
+    /**
+     * 更新问题
+     */
+    @PostMapping("update")
+    public Object update(@LoginAdmin Integer adminId, @RequestBody QuestionsAnswers questionsAnswers) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        questionsAnswersService.update(questionsAnswers);
+
+        return ResponseUtil.ok(questionsAnswers);
+    }
+
+    /**
+     * 删除问题
+     */
+    @PostMapping("delete")
+    public Object delete(@LoginAdmin Integer adminId, @RequestBody QuestionsAnswers questionsAnswers) {
+
+        if(adminId == null) {
+            return ResponseUtil.unlogin();
+        }
+
+        if(questionsAnswers == null) {
+            return ResponseUtil.badArgumentValue();
+        }
+
+        questionsAnswersService.delete(questionsAnswers.getId());
+
+        return ResponseUtil.ok();
+    }
+}

+ 214 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/RoleController.java

@@ -0,0 +1,214 @@
+package com.dgtis.dorm.manager.admin.web;
+
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.domain.Role;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import com.dgtis.dorm.manager.db.service.RoleService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/role")
+public class RoleController {
+    private final Log logger = LogFactory.getLog(RoleController.class);
+
+
+    @Autowired
+    private RoleService roleService;
+
+
+
+    /**
+     * 根据角色名称查询角色
+     *
+     * @param roleName
+     * @param page
+     * @param limit
+     * @return
+     */
+    @PostMapping("/selectByRoleName")
+    public Object selectByRoleName(@LoginAdmin Integer adminId, String roleName, @RequestParam(value = "page", defaultValue = "1") Integer page,
+                                   @RequestParam(value = "limit", defaultValue = "10") Integer limit) {
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        Map<String,Object> map = null;
+
+        try {
+            map = roleService.selectByRoleName(roleName, page, limit);
+        } catch (Exception e){
+            e.printStackTrace();
+            ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok(map);
+
+    }
+
+    /**
+     * 添加角色
+     *
+     * @param role
+     * @return
+     */
+    @PostMapping("/insertSelective")
+    public Object insertSelective(@LoginAdmin Integer adminId, Role role){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        Integer res = null;
+        try {
+            role.setCreateTime(LocalDateTime.now());
+            role.setCreateUserId(adminId+"");
+            role.setModifyTime(LocalDateTime.now());
+            role.setModifyUserId(adminId+"");
+            res = roleService.insertSelective(role);
+        } catch (Exception e){
+            e.printStackTrace();
+            return ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok(res);
+    }
+
+    /**
+     * 跟新角色
+     *
+     * @param role
+     * @return
+     */
+    @PostMapping("/updateByPrimaryKeySelective")
+    public Object updateByPrimaryKeySelective(@LoginAdmin Integer adminId,Role role){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        Integer res = null;
+        try {
+            role.setModifyTime(LocalDateTime.now());
+            role.setModifyUserId(adminId+"");
+            res = roleService.updateByPrimaryKeySelective(role);
+        } catch (Exception e){
+            e.printStackTrace();
+            return ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok(res);
+    }
+
+    /**
+     * 添加角色和菜单关联
+     * @param roleId
+     * @param menuList
+     */
+    @PostMapping("/insertRoleMenu")
+    public Object insertRoleMenu(@LoginAdmin Integer adminId,String roleId,String menuList){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        try {
+            roleService.insertRoleMenu(Integer.parseInt(roleId),Arrays.asList(menuList.split(",")));
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok();
+
+    }
+
+
+    /**
+     *
+     * 根据角色id查询菜单
+     *
+     * @param roleId
+     * @return
+     */
+    @PostMapping("/selectMenuByRoleId")
+    public Object selectMenuByRoleId(@LoginAdmin Integer adminId,Integer roleId){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        List<String> list = roleService.selectMenuByRoleId(roleId);
+        return ResponseUtil.ok(list);
+    }
+
+
+
+    /**
+     * 添加admin用户和角色关联
+     * @param adminId
+     * @param roleList
+     */
+    @PostMapping("/insertAdminRole")
+    public Object insertAdminRole(@LoginAdmin Integer adminId,String userId,String roleList){
+
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+
+        try {
+            roleService.insertAdminRole(Integer.parseInt(userId),Arrays.asList(roleList.split(",")));
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok();
+    }
+
+    /**
+     *
+     * 查询当前用户所拥有的菜单
+     *
+     * @param adminId
+     */
+    @PostMapping("selectAdminMenu")
+    public Object selectAdminMenu(@LoginAdmin Integer adminId){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        List<String> list = null;
+        try {
+            list = roleService.selectAdminUserMenuByAdminId(adminId);
+        } catch (Exception e){
+            e.printStackTrace();
+            ResponseUtil.fail();
+        }
+
+        return ResponseUtil.ok(list);
+    }
+
+
+    /**
+     * 查询用户拥有的角色
+     * @param adminId
+     * @return
+     */
+    @PostMapping("selectAdminRole")
+    public Object selectAdminRole(@LoginAdmin Integer adminId,String userId){
+        if(adminId == null){
+            return ResponseUtil.unlogin();
+        }
+        List<String> list =null;
+        try {
+            list = roleService.selectAdminUserRoleByAdminId(Integer.parseInt(userId));
+        } catch (Exception e){
+            e.printStackTrace();
+            ResponseUtil.fail();
+        }
+
+
+        return ResponseUtil.ok(list);
+    }
+
+}

+ 282 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/StorageController.java

@@ -0,0 +1,282 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.dgtis.dorm.manager.db.domain.Storage;
+import com.dgtis.dorm.manager.db.service.AlumniRecordStorageService;
+import com.dgtis.dorm.manager.db.service.FileSystemStorageService;
+import com.dgtis.dorm.manager.db.service.StorageService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+@RestController
+@RequestMapping("/admin/storage")
+public class StorageController {
+    @Autowired
+    private StorageService storageService;
+    @Autowired
+    private AlumniRecordStorageService alumniRecordStorageService;
+
+    /**
+     *
+     * 获取文件list
+     *
+     * @param key
+     * @param oldName
+     * @param startTime
+     * @param endTime
+     * @param page
+     * @param limit
+     *
+     * @return
+     */
+    @GetMapping("/list")
+    public Object list(String key,String oldName,String startTime,String endTime,
+                       @RequestParam(value = "page", defaultValue = "1") Integer page,
+                       @RequestParam(value = "limit", defaultValue = "10") Integer limit,
+                       String sort, String order){
+
+        Map<String,Object> storageList = alumniRecordStorageService.selectStorage(key,oldName,startTime,endTime,page,limit);
+
+        return ResponseUtil.ok(storageList);
+    }
+
+    /**
+     * 添加文件
+     *
+     * @param file
+     * @return
+     */
+    @PostMapping("/create")
+    public Object create(@RequestParam("file") MultipartFile file,HttpServletRequest request) {
+    	
+    	String imgBelongs = request.getParameter("imgBelongs");
+        Storage storageInfo = storageService.store(file , imgBelongs);
+
+        return ResponseUtil.ok(storageInfo);
+    }
+
+    @PostMapping("/uploadPic")
+    public Object uploadPic(@RequestParam("file") MultipartFile file) {
+        Storage storageInfo = storageService.store(file);
+
+        return ResponseUtil.ok(storageInfo);
+    }
+
+
+    /**
+     * 删除文件
+     *
+     * @param id 文件id
+     * @return
+     */
+    @PostMapping("/delete")
+    public Object delete(String id) {
+        storageService.deleteById(Integer.parseInt(id));
+        return ResponseUtil.ok();
+    }
+
+
+    /**
+     * 方法描述 文件下载
+     *
+     * @param fileId 文件ID
+     * @author huanghaoqi
+     * @date 2017年09月01日 13:02:22
+     */
+    @GetMapping("/download")
+    public ResponseEntity<Resource> download(@RequestParam("fileId") String fileId) {
+         Storage storage = alumniRecordStorageService.findByKey(fileId);
+        String fileName = storage.getFilePath();
+        Resource file = storageService.loadAsResource(fileName);
+        String responseFileName=storage.getOldName();
+        try {
+            responseFileName = new String(responseFileName .getBytes(), "ISO-8859-1");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + responseFileName +
+                "\"").contentType(MediaType.parseMediaType(storage.getType()))
+                .body(file);
+    }
+
+    /**
+     * 方法描述 压缩包文件下载
+     *
+     * @author huanghaoqi
+     * @date 2017年09月01日 13:02:22
+     */
+    @GetMapping("/downloadZip")
+    public ResponseEntity<Resource> downloadZip(String[] fileIds) {
+        String responseFileName="二维码.zip";
+        Resource file=storageService.downloadZip(Arrays.asList(fileIds),responseFileName);
+        try {
+            responseFileName = new String(responseFileName .getBytes(), "ISO-8859-1");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + responseFileName +
+                "\"").contentType(MediaType.APPLICATION_OCTET_STREAM)
+                .body(file);
+    }
+
+    /**
+     *  压缩并导出文件
+     * @param zipPath 压缩文件临时路径  路径最后不要有 /
+     * @param zipName 压缩为文件名 **.zip
+     * @param createFilesPath 需要压缩的文件列表
+     * @param request
+     * @param response
+     * @return
+     * @throws IOException
+     */
+    public boolean downloadZip(String zipPath, String zipName, List<String> createFilesPath, HttpServletRequest request, HttpServletResponse response) {
+
+
+
+        //String tmpFileName = "report.zip";
+        byte[] buffer = new byte[1024];
+        // String strZipPath = COM_REPORT_PATH+"/"+user.getOid()+"/"+report.getOid()+"/"+tmpFileName;
+
+        String strZipPath=zipPath+"/"+zipName;
+        try {
+            File tmpZip=new File(zipPath);
+            if (!tmpZip.exists())
+                tmpZip.mkdirs();
+            File tmpZipFile = new File(strZipPath);
+            if (!tmpZipFile.exists())
+                tmpZipFile.createNewFile();
+
+            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
+            // 需要同时下载的两个文件result.txt ,source.txt
+
+            File[] file1 =new File[createFilesPath.size()] ;
+
+            for(int i=0;i<createFilesPath.size();i++){
+                file1[i]=new File(createFilesPath.get(i));
+            }
+            for (int i = 0; i < file1.length; i++) {
+                FileInputStream fis = new FileInputStream(file1[i]);
+                out.putNextEntry(new ZipEntry(file1[i].getName()));
+                //设置压缩文件内的字符编码,不然会变成乱码
+                int len;
+                // 读入需要下载的文件的内容,打包到zip文件
+                while ((len = fis.read(buffer)) > 0) {
+                    out.write(buffer, 0, len);
+                }
+                out.closeEntry();
+                fis.close();
+            }
+            out.close();
+            this.downloadFile(zipPath,zipName,response);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+
+    /**
+     * 以压缩文件导出
+     * @param fileName
+     * @param filePath
+     * @param response
+     */
+    public void downloadFile(String filePath, String fileName, HttpServletResponse response){
+        response.setCharacterEncoding("utf-8");
+        // response.setContentType("application/octet-stream");
+
+        try {
+            File file=new File(filePath,fileName);
+            // 以流的形式下载文件。
+            BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));
+            byte[] buffer = new byte[fis.available()];
+            fis.read(buffer);
+            fis.close();
+            // 清空response
+            response.reset();
+            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+            toClient.write(buffer);
+            toClient.flush();
+            toClient.close();
+
+        }
+        catch (IOException ex) {
+            ex.printStackTrace();
+        }
+    }
+
+
+    /**
+     * 方法描述  创建Zip
+     *
+     * @author huanghaoqi
+     * @date 2018年12月10日 11:04:29
+     */
+    public void generateZip(List<File> files,String zipFileName) {
+        FileOutputStream fos = null;
+        ZipOutputStream zos = null;
+        FileInputStream fis = null;
+        BufferedInputStream bis = null;
+        try {
+
+            fos = new FileOutputStream(zipFileName);
+            zos = new ZipOutputStream(new BufferedOutputStream(fos));
+            byte[] bufs = new byte[1024 * 10];
+            for (int i = 0; i < files.size(); i++) {
+                ZipEntry zipEntry = new ZipEntry(files.get(i).getName());
+                zos.putNextEntry(zipEntry);
+                fis = new FileInputStream(files.get(i));
+                bis = new BufferedInputStream(fis, 1024 * 10);
+                int read = 0;
+                while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
+                    zos.write(bufs, 0, read);
+                }
+            }
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        finally {
+            try {
+                if (null != bis)
+                {
+                    bis.close();
+                }
+                if (null != zos)
+                {
+                    zos.close();
+                }
+                if (null != fis)
+                {
+                    fis.close();
+                }
+                if (null != fos)
+                {
+                    fos.close();
+                }
+
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+}

+ 235 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/UserController.java

@@ -0,0 +1,235 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import com.github.pagehelper.PageInfo;
+
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.service.UserService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/admin/user")
+public class UserController {
+	private final Log logger = LogFactory.getLog(UserController.class);
+
+	@Autowired
+	private UserService userService;
+
+	/**
+	 * 查询非审核中的用户列表
+	 * @param adminId
+	 * @param alumniUser
+	 * @param page
+	 * @param limit
+	 * @param sort
+	 * @param order
+	 * @return
+	 */
+	@GetMapping("/list")
+	public Object list(@LoginAdmin Integer adminId,
+			AlumniUser alumniUser,
+			@RequestParam(value = "page", defaultValue = "1") Integer page,
+			@RequestParam(value = "limit", defaultValue = "10") Integer limit,
+			String sort, String order){
+		if(adminId == null){
+			return ResponseUtil.fail401();
+		}
+
+		PageInfo<AlumniUser> pageInfo = userService.queryAlumniUser(alumniUser, page, limit, sort, order);
+		Map<String, Object> data = new HashMap<>();
+		data.put("total", pageInfo.getTotal());
+		data.put("items", pageInfo.getList());
+
+		return ResponseUtil.ok(data);
+	}
+
+	/**
+	 * 筛选导出全部用户
+	 * @param adminId
+	 * @param alumniUser
+	 * @return
+	 */
+	@GetMapping("/exportAllUser")
+	public Object exportAllUser(@LoginAdmin Integer adminId,
+					   AlumniUser alumniUser){
+		if(adminId == null){
+			return ResponseUtil.fail401();
+		}
+
+		List<AlumniUser> pageInfo = userService.allAlumniUser(alumniUser);
+		Map<String, Object> data = new HashMap<>();
+		data.put("items", pageInfo);
+
+		return ResponseUtil.ok(data);
+	}
+
+	/**
+	 *查询游客角色的用户列表
+	 * @param adminId
+	 * @param page
+	 * @param limit
+	 * @param sort
+	 * @param order
+	 * @return
+	 */
+	@GetMapping("/findYKList")
+	public Object findYKList(@LoginAdmin Integer adminId,
+							 @RequestParam(value = "page", defaultValue = "1") Integer page,
+							 @RequestParam(value = "limit", defaultValue = "10") Integer limit,
+							 String sort, String order){
+		if(adminId == null){
+			return ResponseUtil.fail401();
+		}
+		PageInfo<AlumniUser> pageInfo = userService.queryAlumniUserNotYK(page, limit, sort, order);
+		Map<String, Object> data = new HashMap<>();
+		data.put("total", pageInfo.getTotal());
+		data.put("items", pageInfo.getList());
+		return ResponseUtil.ok(data);
+	}
+
+	/**
+	 * 查询待审核的用户列表
+	 * @param adminId
+	 * @param page
+	 * @param limit
+	 * @param sort
+	 * @param order
+	 * @return
+	 */
+	@RequestMapping(value = "searchAwaitAuditUserList")
+	public Object searchAwaitAuditUserList(@LoginAdmin Integer adminId,
+			String userName, String phone, String temRoleType,
+			@RequestParam(value = "page", defaultValue = "1") Integer page,
+			@RequestParam(value = "limit", defaultValue = "10") Integer limit,
+			String sort, String order) {
+		if(adminId == null){
+			return ResponseUtil.fail401();
+		}
+		AlumniUser example = new AlumniUser();
+
+        if(!StringUtils.isEmpty(userName)){
+            example.setUserName(userName);
+        }
+        if(!StringUtils.isEmpty(phone)){
+			example.setPhone(phone);
+		}
+
+        example.setAuditStatus(1);
+		PageInfo<AlumniUser> pageInfo = userService.querySelective(example, page, limit, sort, order);
+		Map<String, Object> data = new HashMap<>();
+		data.put("total", pageInfo.getTotal());
+		data.put("items", pageInfo.getList());
+		return ResponseUtil.ok(data);
+	}
+
+	/**
+	 * 批量认证审核
+	 * @param adminId
+	 * @param auditStatus
+	 * @param reason
+	 * @param selectedIDs
+	 * @return
+	 */
+	@RequestMapping("/passAudit")
+    public Object passAudit(@LoginAdmin Integer adminId,
+    		Integer auditStatus,
+    		String reason,
+    		String selectedIDs ) {
+		if(adminId == null){
+			return ResponseUtil.fail401();
+		}
+    	if(selectedIDs == null || auditStatus == null) {
+    		return ResponseUtil.fail402();
+    	}
+    	String[] ids = selectedIDs.split(",");
+    	 Map<String, Object> data = userService.passAudit(auditStatus, reason, ids);
+
+		return ResponseUtil.ok(data);
+	}
+
+	/**
+	 * @description 描述:单个认证审核
+	 * @author      koucx
+	 * @return
+	 * @date        2019/4/24 0024 14:22
+	 * @param       * @param null
+	 */
+	@RequestMapping(value = "auditUser")
+	public Object auditUser(@LoginAdmin Integer adminId, @RequestBody AlumniUser user) {
+		if(adminId == null){
+			return ResponseUtil.fail401();
+		}
+    	if(user == null) {
+    		return ResponseUtil.fail402();
+    	}
+		logger.debug(user);
+		Map<String, Object> data = userService.auditUser(user);
+        return ResponseUtil.ok(data);
+	}
+
+	/**
+	 * @description 描述:用户详情
+	 * @author      koucx
+	 * @return
+	 * @date        2019/4/24 0024 14:22
+	 * @param       * @param null
+	 */
+	@RequestMapping("/detail")
+	public Object detail(@RequestParam(value = "id")Integer id) {
+		if(id == null){
+			return ResponseUtil.fail402();
+		}
+		Map user = userService.findAlumniUserByUserId(id);
+		Map<String, Object> data = new HashMap<>();
+		data.put("items", user);
+
+		return ResponseUtil.ok(data);
+	}
+
+
+	/**
+	 * @description 描述:查询我关注的用户
+	 * @author      koucx
+	 * @return
+	 * @date        2019/4/24 0024 14:26
+	 * @param
+	 */
+	@RequestMapping("/findUserConcerned")
+	public Object findUserConcerned(@RequestBody AlumniUser user,
+			@RequestParam(value = "page", defaultValue = "1") Integer page,
+			@RequestParam(value = "limit", defaultValue = "10") Integer size) {
+		if(user == null){
+			return ResponseUtil.fail402();
+		}
+		Map<String, Object> data = userService.selectUserConcernedByUserId(user.getId(), page, size);
+		return ResponseUtil.ok(data);
+	}
+
+	/**
+	 * 查询我加入的圈子
+	 * @param id
+	 * @param page
+	 * @param size
+	 * @return
+	 */
+	@RequestMapping("findMyOrganize")
+	public Object findMyOrganize(@RequestParam Integer id,
+			@RequestParam(value = "page", defaultValue = "1") Integer page,
+			@RequestParam(value = "limit", defaultValue = "10") Integer size) {
+		if(id == null) {
+			return ResponseUtil.fail402();
+		}
+		Map<String, Object> data = userService.findMyOrganize(id, page, size);
+		return ResponseUtil.ok(data);
+	}
+
+}

+ 34 - 0
dorm-manager-admin-api/src/main/java/com/dgtis/dorm/manager/admin/web/UserMessageController.java

@@ -0,0 +1,34 @@
+package com.dgtis.dorm.manager.admin.web;
+
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import com.dgtis.dorm.manager.admin.annotation.LoginAdmin;
+import com.dgtis.dorm.manager.db.service.UserMessageService;
+import com.dgtis.dorm.manager.db.util.ResponseUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/admin/message")
+public class UserMessageController {
+	private final Log logger = LogFactory.getLog(UserMessageController.class);
+
+	@Resource UserMessageService messageService;
+	
+	@RequestMapping("list")
+	public Object list (@LoginAdmin Integer adminId,
+			String id,
+			@RequestParam(value = "page", defaultValue = "1") Integer page,
+			@RequestParam(value = "limit", defaultValue = "10") Integer limit,
+			String sort, String order){
+		if(adminId == null || id == null)
+			return ResponseUtil.fail401();
+		Map<String, Object> data = messageService.findUserMessageList(id, page, limit, sort, order);
+		return ResponseUtil.ok(data);
+	}
+}

+ 48 - 0
dorm-manager-admin-api/src/main/resources/application-dev.properties

@@ -0,0 +1,48 @@
+pagehelper.helperDialect=mysql
+pagehelper.reasonable=true
+pagehelper.supportMethodsArguments=true
+pagehelper.params=count=countSql
+
+spring.datasource.druid.url=jdbc:mysql://192.168.100.254:3306/zhll-oneportal-test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false
+spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
+spring.datasource.druid.username=oneportal_test
+spring.datasource.druid.password=123456
+spring.datasource.druid.initial-size=50
+spring.datasource.druid.max-active=100
+spring.datasource.druid.min-idle=20
+spring.datasource.druid.max-wait=60000
+spring.datasource.druid.pool-prepared-statements=true
+spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
+spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.http.multipart.maxFileSize=10Mb
+spring.http.multipart.maxRequestSize=10Mb
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+spring.datasource.druid.filters=stat,wall,log4j
+
+
+file.http.path=http://img.ngrok.xiaomiqiu.cn/home/administrative/file/
+file.absolute.path=/apache-tomcat-8.5.32/webapps/ROOT/home/administrative/file
+
+logging.config=classpath:logback-spring-dev.xml
+
+#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\u7528\u4E8E\u4ECEoneportal\u767B\u5F55\u5C0F\u7A0B\u5E8F\u540E\u53F0\u65F6 \u9274\u6743\u7684\u7684\u63A5\u53E3\u8DEF\u5F84start>>>>>>>>>>>>>>>>>>>>>>>>
+SERVER_URL=localhost
+#\u6388\u6743\u9A8C\u8BC1\u6210\u529F\u8DF3\u8F6C\u8DEF\u5F84
+LOGIN_SUCCESS=redirect:http://${SERVER_URL}:9527/#/index
+#\u5931\u8D25\u8DF3\u8F6C\u8DEF\u5F84
+LOGIN_FAIL=redirect:http://${SERVER_URL}:9527/#/fail
+
+http_server_url=http://${SERVER_URL}:8080/oneportal/oauth2api
+
+redirect_uri=http://${SERVER_URL}:9083/admin/oauthCtl/pcCallback
+
+urlLoginByCode = http://${SERVER_URL}:9527/#login
+
+client_id=c1ebe466-1cdc-4bd3-ab69-77c3561b9dee
+
+client_secret=d8346ea2-6017-43ed-ad68-19c0f971738b
+
+#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<end<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

+ 53 - 0
dorm-manager-admin-api/src/main/resources/application-prod.properties

@@ -0,0 +1,53 @@
+pagehelper.helperDialect=mysql
+pagehelper.reasonable=true
+pagehelper.supportMethodsArguments=true
+pagehelper.params=count=countSql
+
+spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
+#\u751F\u4EA7\u73AF\u5883
+#spring.datasource.druid.url=jdbc:mysql://10.32.2.208:3306/zhll-oneportal-prod?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false
+#spring.datasource.druid.username=root
+#spring.datasource.druid.password=root
+#\u6D4B\u8BD5\u73AF\u5883
+spring.datasource.druid.url=jdbc:mysql://192.168.100.254:3306/zhll-oneportal-test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false
+spring.datasource.druid.username=oneportal_test
+spring.datasource.druid.password=123456
+spring.datasource.druid.initial-size=50
+spring.datasource.druid.max-active=100
+spring.datasource.druid.min-idle=20
+spring.datasource.druid.max-wait=60000
+spring.datasource.druid.pool-prepared-statements=true
+spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
+spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.http.multipart.maxFileSize=10Mb
+spring.http.multipart.maxRequestSize=10Mb
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+spring.datasource.druid.filters=stat,wall,log4j
+
+#\u751F\u4EA7\u73AF\u5883
+#file.http.path=https://zhll.dgtis.com/home/administrative/file/
+#file.absolute.path=/home/steve/luoyang_dev/zhll/tomcat/apache-tomcat-8050/webapps/ROOT/home/administrative/file
+#\u6D4B\u8BD5\u73AF\u5883
+file.http.path=http://192.168.100.254:9500/home/administrative/file/
+#file.absolute.path=/usr/local/tomcat/webapps/ROOT/home/administrative/file
+file.absolute.path=/home/docker/dockerd/overlay2/38f6c2daec1aeaf6c0255f9b0fcda2d647e4f66246ee58a61eba0cadbb148f08/merged/usr/local/tomcat/webapps/ROOT/home/administrative/file
+
+logging.config=classpath:logback-spring-prod.xml
+
+#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\u7528\u4E8E\u4ECEoneportal\u767B\u5F55\u5C0F\u7A0B\u5E8F\u540E\u53F0\u65F6 \u9274\u6743\u7684\u7684\u63A5\u53E3\u8DEF\u5F84start>>>>>>>>>>>>>>>>>>>>>>>>
+SERVER_URL=192.168.100.254
+#\u6388\u6743\u9A8C\u8BC1\u6210\u529F\u8DF3\u8F6C\u8DEF\u5F84
+LOGIN_SUCCESS=redirect:http://${SERVER_URL}:9500/#/index
+#\u5931\u8D25\u8DF3\u8F6C\u8DEF\u5F84
+LOGIN_FAIL=redirect:http://${SERVER_URL}:9500/#/fail
+http_server_url=http://${SERVER_URL}:9300/oneportal/oauth2api
+redirect_uri=http://${SERVER_URL}:9083/admin/oauthCtl/pcCallback.if
+urlLoginByCode = http://${SERVER_URL}:9500/#login
+
+client_id=c1ebe466-1cdc-4bd3-ab69-77c3561b9dee
+client_secret=d8346ea2-6017-43ed-ad68-19c0f971738b
+
+#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<end<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

+ 6 - 0
dorm-manager-admin-api/src/main/resources/application.properties

@@ -0,0 +1,6 @@
+spring.profiles.active=prod
+server.port=9083
+
+# mybatis配置
+mybatis.configuration.map-underscore-to-camel-case=true
+mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

+ 12 - 0
dorm-manager-admin-api/src/main/resources/banner.txt

@@ -0,0 +1,12 @@
+${AnsiColor.BRIGHT_MAGENTA}
+ ________   __    __   __   __    __   __    __   __   __       __    __    ______    __        ______   .__   __.   _______
+|       /  |  |  |  | |  | |  |  |  | |  |  |  | |  | |  |     |  |  |  |  /  __  \  |  |      /  __  \  |  \ |  |  /  _____|
+`---/  /   |  |__|  | |  | |  |__|  | |  |  |  | |  | |  |     |  |  |  | |  |  |  | |  |     |  |  |  | |   \|  | |  |  __
+   /  /    |   __   | |  | |   __   | |  |  |  | |  | |  |     |  |  |  | |  |  |  | |  |     |  |  |  | |  . `  | |  | |_ |
+  /  /----.|  |  |  | |  | |  |  |  | |  `--'  | |  | |  `----.|  `--'  | |  `--'  | |  `----.|  `--'  | |  |\   | |  |__| |
+ /________||__|  |__| |__| |__|  |__|  \______/  |__| |_______| \______/   \______/  |_______| \______/  |__| \__|  \______|
+
+::: Project (智慧洛龙) ::: O(∩_∩)O~   :::技术框架:::  Spring-Boot ${spring-boot.version}
+
+
+

+ 89 - 0
dorm-manager-admin-api/src/main/resources/logback-spring-dev.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <property name="app_name" value="admin"/>
+    <property name="LOG_HOME" value="/logs/ll-administrative-service"/>
+    <timestamp key="byMilSecond" datePattern="yyyy-MM-dd'T'HH:mm:ss.SSS"/>
+    <contextName>${app_name}</contextName>
+    <!--<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+        <resetJUL>true</resetJUL>
+    </contextListener>-->
+    <!-- <jmxConfigurator/>-->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/${app_name}/info/info.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/${app_name}/info/info.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+            <maxHistory>5</maxHistory>
+            <!-- 日志总保存量为10GB -->
+            <totalSizeCap>10GB</totalSizeCap>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!--文件达到 最大128MB时会被压缩和切割 -->
+                <maxFileSize>200MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <MaxFileSize>1000MB</MaxFileSize>
+        </triggeringPolicy>-->
+    </appender>
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+        <file>${LOG_HOME}/${app_name}/error/error.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/${app_name}/error/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>200MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
+        </encoder>
+        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <MaxFileSize>1000MB</MaxFileSize>
+        </triggeringPolicy>-->
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+    <!-- 将org.springframework.web包下的类的日志级别设置为DEBUG,
+            我们开发Spring MVC经常出现和参数类型相关的4XX错误,设置此项我们可以看到更相信的信息 -->
+    <logger name="org.springframework.web" level="DEBUG"/>
+    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
+    <!--<log name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+    <log name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG"/>
+    <log name="org.hibernate.SQL" level="DEBUG"/>
+    <log name="org.hibernate.engine.QueryParameters" level="DEBUG"/>
+    <log name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/>-->
+
+    <!--myibatis log configure -->
+    <logger name="com.apache.ibatis" level="TRACE"/>
+    <logger name="java.sql.Connection" level="DEBUG"/>
+    <logger name="java.sql.Statement" level="DEBUG"/>
+    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
+    <logger name="java.sql.ResultSet" level="DEBUG"/>
+    <logger name="java.sql" level="DEBUG"/>
+    <logger name="druid.sql" level="INFO"/>
+    <logger name="com.ibatis" level="DEBUG"/>
+    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="INFO"/>
+    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="INFO"/>
+    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="INFO"/>
+    <logger name="org.mybatis" level="INFO"/>
+    <logger name="org.springframework.jdbc" level="INFO"/>
+    <logger name="com.alibaba.druid" level="INFO"/>
+</configuration>

+ 89 - 0
dorm-manager-admin-api/src/main/resources/logback-spring-prod.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <property name="app_name" value="admin"/>
+    <property name="LOG_HOME" value="/logs/ll-administrative-service"/>
+    <timestamp key="byMilSecond" datePattern="yyyy-MM-dd'T'HH:mm:ss.SSS"/>
+    <contextName>${app_name}</contextName>
+    <!--<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+        <resetJUL>true</resetJUL>
+    </contextListener>-->
+    <!-- <jmxConfigurator/>-->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/${app_name}/info/info.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/${app_name}/info/info.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+            <maxHistory>5</maxHistory>
+            <!-- 日志总保存量为10GB -->
+            <totalSizeCap>10GB</totalSizeCap>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!--文件达到 最大128MB时会被压缩和切割 -->
+                <maxFileSize>200MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <MaxFileSize>1000MB</MaxFileSize>
+        </triggeringPolicy>-->
+    </appender>
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+        <file>${LOG_HOME}/${app_name}/error/error.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/${app_name}/error/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>200MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
+        </encoder>
+        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <MaxFileSize>1000MB</MaxFileSize>
+        </triggeringPolicy>-->
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+    <!-- 将org.springframework.web包下的类的日志级别设置为DEBUG,
+            我们开发Spring MVC经常出现和参数类型相关的4XX错误,设置此项我们可以看到更相信的信息 -->
+    <logger name="org.springframework.web" level="DEBUG"/>
+    <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
+    <!--<log name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+    <log name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG"/>
+    <log name="org.hibernate.SQL" level="DEBUG"/>
+    <log name="org.hibernate.engine.QueryParameters" level="DEBUG"/>
+    <log name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/>-->
+
+    <!--myibatis log configure -->
+    <logger name="com.apache.ibatis" level="TRACE"/>
+    <logger name="java.sql.Connection" level="DEBUG"/>
+    <logger name="java.sql.Statement" level="DEBUG"/>
+    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
+    <logger name="java.sql.ResultSet" level="DEBUG"/>
+    <logger name="java.sql" level="DEBUG"/>
+    <logger name="druid.sql" level="INFO"/>
+    <logger name="com.ibatis" level="DEBUG"/>
+    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="INFO"/>
+    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="INFO"/>
+    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="INFO"/>
+    <logger name="org.mybatis" level="INFO"/>
+    <logger name="org.springframework.jdbc" level="INFO"/>
+    <logger name="com.alibaba.druid" level="INFO"/>
+</configuration>

+ 22 - 0
dorm-manager-admin-api/src/test/java/com/dgtis/dorm/manager/admin/BcryptTest.java

@@ -0,0 +1,22 @@
+package com.dgtis.dorm.manager.admin;
+
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest
+public class BcryptTest {
+
+    /*@Test
+    public void test() {
+        String rawPassword = "aaaaaa";
+        String encodedPassword ="";
+        BCryptPasswordEncoder bCryptPasswordEncoder =  new BCryptPasswordEncoder();
+        encodedPassword = bCryptPasswordEncoder.encode(rawPassword);
+
+        System.out.println("rawPassword=" + rawPassword + " encodedPassword=" + encodedPassword);
+
+        Assert.assertTrue(bCryptPasswordEncoder.matches(rawPassword, encodedPassword));
+    }*/
+}

+ 2 - 0
dorm-manager-db/.gitignore

@@ -0,0 +1,2 @@
+
+/target/

+ 159 - 0
dorm-manager-db/pom.xml

@@ -0,0 +1,159 @@
+<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">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.dgtis</groupId>
+    <artifactId>dorm-manager-db</artifactId>
+    <version>0.1.0</version>
+    <packaging>jar</packaging>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>1.5.10.RELEASE</version>
+        <relativePath /> <!-- lookup parent from repository -->
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <maven.test.skip>true</maven.test.skip>
+    </properties>
+
+
+    <dependencies>
+		<!-- Dom4j 依赖包 -->
+	    <dependency>
+		  <groupId>dom4j</groupId>
+		  <artifactId>dom4j</artifactId>
+		  <version>1.6.1</version>
+		</dependency>
+		
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <!--Spring Boot Web 依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!-- Spring Boot Mybatis 依赖 -->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>1.3.2</version>
+        </dependency>
+
+        <!-- Spring Boot pagehelper 依赖 -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+
+        <!-- MySQL 连接驱动依赖 -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.1.6</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- 热部署模块 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.generator</groupId>
+            <artifactId>mybatis-generator-core</artifactId>
+            <version>1.3.6</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.7</version>
+        </dependency>
+        
+        <!-- json -->
+		<dependency>  
+            <groupId>net.sf.json-lib</groupId>  
+            <artifactId>json-lib</artifactId>  
+            <version>2.3</version>  
+            <classifier>jdk15</classifier>  
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.5</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.twelvemonkeys.imageio</groupId>
+            <artifactId>imageio-jpeg</artifactId>
+            <version>3.0-rc5</version>
+        </dependency>
+
+        <!--中文转拼音 start -->
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+        <!--中文转拼音 end -->
+    </dependencies>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.mybatis.generator</groupId>
+                <artifactId>mybatis-generator-maven-plugin</artifactId>
+                <version>1.3.6</version>
+                <configuration>
+                    <configurationFile>
+                        mybatis-generator/generatorConfig.xml
+                    </configurationFile>
+                    <overwrite>true</overwrite>
+                    <verbose>true</verbose>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>mysql</groupId>
+                        <artifactId>mysql-connector-java</artifactId>
+                        <version>5.1.44</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>com.itfsw</groupId>
+                        <artifactId>mybatis-generator-plugin</artifactId>
+                        <version>1.1.2</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+
+        </plugins>
+
+    </build>
+
+</project>

+ 15 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/DbApplication.java

@@ -0,0 +1,15 @@
+package com.dgtis.dorm.manager.db;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.dgtis.dorm.manager.db.dao")
+public class DbApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(DbApplication.class, args);
+    }
+
+}

+ 69 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdminMapper.java

@@ -0,0 +1,69 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.dgtis.dorm.manager.db.domain.Admin;
+import org.apache.ibatis.annotations.Param;
+
+public interface AdminMapper {
+
+    /**
+     * TODO ~~~~
+     */
+    List<Admin> selectByExample(Admin example);
+
+    /**
+     * TODO ~~~~
+     */
+    List<Admin> selectByExampleSelective(@Param("example") Admin example, @Param("selective") Admin.Column ... selective);
+
+    /**
+     * TODO ~~~~
+     */
+    Admin selectByPrimaryKey(Integer id);
+
+    /**
+     * TODO ~~~~
+     */
+    Admin selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") Admin.Column ... selective);
+
+    /**
+     * TODO ~~~~
+     */
+    long countByExample(Admin example);
+
+    /**
+     * TODO ~~~~
+     */
+    int insertSelective(Admin record);
+
+    /**
+     * TODO ~~~~
+     */
+    int updateByPrimaryKey(Admin record);
+
+    /**
+     * TODO ~~~~
+     */
+    int updateByPrimaryKeySelective(Admin record);
+    
+    /**
+     * TODO ~~~~
+     */
+	List<Admin> findByIdList(@Param("ids") List ids, @Param("selective") Admin.Column ... selective);
+
+    /**
+     * TODO ~~~~
+     */
+	Admin selectByUserId(@Param("userId") Integer userId);
+
+    /**
+     * @descption: 根据用户id查询Oneportal中的用户信息
+     * @param: [userId]
+     * @return: deptUnid isAdmin
+     * @auther: qxp
+     * @date:19-8-6 11:37
+     */
+    Map<String, Object> getUserInfoByUserId(String userId);
+}

+ 24 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdminRoleMapper.java

@@ -0,0 +1,24 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+
+import com.dgtis.dorm.manager.db.domain.AdminRole;
+
+public interface AdminRoleMapper {
+
+    /**
+     * TODO ~~~~
+     */
+    int deleteByExample(AdminRole example);
+
+    /**
+     * TODO ~~~~
+     */
+    int insertSelective(AdminRole record);
+
+    /**
+     * TODO ~~~~
+     */
+    List<AdminRole> selectByExample(AdminRole example);
+
+}

+ 49 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdministrativeItemsDocMapper.java

@@ -0,0 +1,49 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.AdministrativeItemsDoc;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *  办理事项相关文档
+ *
+ * @version 1.0
+ * @since JDK1.8
+ * @author huanghaoqi
+ * @date 2018年12月03日 15:27:42
+ */
+public interface AdministrativeItemsDocMapper {
+
+    /**
+     * 方法描述  根据事项ID查询
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:09:14
+     */
+    List<AdministrativeItemsDoc> selectByItemsId(@Param("itemsId") Integer itemsId,@Param("type") Integer type);
+
+    /**
+     * 方法描述  批量添加
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:09:14
+     */
+    void insertBatch(@Param("itemsDocs") List<AdministrativeItemsDoc> administrativeItemsDocs);
+
+    /**
+     * 方法描述  根据事项ID删除
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:14:13
+     */
+    void deleteByItemsId(@Param("itemsId") Integer itemsId);
+
+    /**
+     * 方法描述  根据事项ID集合批量删除
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:14:13
+     */
+    void deleteByItemsIds(@Param("itemsIds") List<Integer> itemsIds);
+}

+ 83 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AdministrativeItemsMapper.java

@@ -0,0 +1,83 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.AdministrativeItems;
+import com.dgtis.dorm.manager.db.param.ItemsQueryParam;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *  办理事项
+ *
+ * @version 1.0
+ * @since JDK1.8
+ * @author huanghaoqi
+ * @date 2018年12月03日 15:27:42
+ */
+public interface AdministrativeItemsMapper {
+
+    /**
+     * 方法描述  查询列表
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:09:14
+     */
+    List<AdministrativeItems> selectList(ItemsQueryParam param);
+
+    /**
+     * 方法描述  查询总数
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:09:14
+     */
+    Long count(ItemsQueryParam param);
+
+    /**
+     * 方法描述  根据ID查询
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:14:13
+     */
+    AdministrativeItems selectByPrimaryKey(@Param("id") Integer id);
+
+    /**
+     * 方法描述  添加
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:12:37
+     */
+    void insert(AdministrativeItems administrativeItems);
+
+    /**
+     * 方法描述  修改
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:12:37
+     */
+    void update(AdministrativeItems administrativeItems);
+    /**
+     * 方法描述  批量删除
+     * @param ids id集合
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:47:17
+     */
+    void deleteByIds(@Param("ids") List<Integer> ids);
+
+    /**
+     * 方法描述  根据ID集合查询
+     *
+     * @author huanghaoqi
+     * @date 2018年12月03日 15:14:13
+     */
+    List<AdministrativeItems> selectByIds(@Param("ids") List<Integer> ids);
+
+    /**
+     * 方法描述  根据一级name+二级name查询二维码图片
+     * @param oneTitlePY
+     * @param twoTitlePY
+     * @return
+     */
+    List<String> selectQrcodeStorageUrlByNames(@Param("oneTitlePY") String oneTitlePY,
+                                               @Param("twoTitlePY") String twoTitlePY);
+}

+ 27 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniFriUserMapper.java

@@ -0,0 +1,27 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.dgtis.dorm.manager.db.domain.AlumniFriUser;
+import org.apache.ibatis.annotations.Param;
+
+public interface AlumniFriUserMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(AlumniFriUser record);
+
+    int insertSelective(AlumniFriUser record);
+
+    AlumniFriUser selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(AlumniFriUser record);
+
+    int updateByPrimaryKey(AlumniFriUser record);
+
+	List<Map> selectUserByFKUserId(@Param("userId") Integer userId);
+
+	AlumniFriUser selectFriUser(@Param("userId") Integer userId, @Param("friUserId") Integer friUserId);
+
+	List<Map> selectUserConcerned(@Param("userId") Integer userId, @Param("valString") String valString);
+}

+ 23 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeCustomMapper.java

@@ -0,0 +1,23 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeCustom;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AlumniOrganizeCustomMapper {
+
+    List<AlumniOrganizeCustom> selectOrganizeByType(@Param("type") String type);
+
+    List<AlumniOrganizeCustom> selectOrganizeByUserId(AlumniOrganizeCustom alumniOrganizeCustom);
+
+    List<AlumniOrganizeCustom> selectOrganizeBySelective(AlumniOrganizeCustom alumniOrganizeCustom);
+
+    List<AlumniOrganizeCustom> selectMyOrganizeByUserIdAndOrgType(@Param("userId") Integer userId,@Param("organizeType") String organizeType);
+
+    List<AlumniOrganizeCustom> selectMyOrganizeByUserId(@Param("userId") Integer userId);
+
+    Integer deleteOrgById(@Param("orgId") Integer orgId);
+
+    AlumniOrganizeCustom selectById(@Param("id") Integer id);
+}

+ 32 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeMapper.java

@@ -0,0 +1,32 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganize;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeExample;
+import org.apache.ibatis.annotations.Param;
+
+public interface AlumniOrganizeMapper {
+    long countByExample(AlumniOrganizeExample example);
+
+    int deleteByExample(AlumniOrganizeExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(AlumniOrganize record);
+
+    int insertSelective(AlumniOrganize record);
+
+    List<AlumniOrganize> selectByExample(AlumniOrganizeExample example);
+
+    AlumniOrganize selectByPrimaryKey(Integer id);
+
+    int updateByExampleSelective(@Param("record") AlumniOrganize record, @Param("example") AlumniOrganizeExample example);
+
+    int updateByExample(@Param("record") AlumniOrganize record, @Param("example") AlumniOrganizeExample example);
+
+    int updateByPrimaryKeySelective(AlumniOrganize record);
+
+    int updateByPrimaryKey(AlumniOrganize record);
+
+    int countOrganize(AlumniOrganize organize);
+}

+ 16 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeUserCustomMapper.java

@@ -0,0 +1,16 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeUserCustom;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AlumniOrganizeUserCustomMapper {
+
+    List<AlumniOrganizeUserCustom> selectOrganizeUserBySelective(AlumniOrganizeUserCustom alumniOrganizeUserCustom);
+
+
+    List<AlumniOrganizeUserCustom> selectOrganizeNoNormalByUserIdAndOrgId(@Param("adminUserId") Integer adminUserId, @Param("OrgId") Integer OrgId);
+
+
+}

+ 31 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniOrganizeUserMapper.java

@@ -0,0 +1,31 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeUser;
+import com.dgtis.dorm.manager.db.domain.AlumniOrganizeUserExample;
+import org.apache.ibatis.annotations.Param;
+
+
+public interface AlumniOrganizeUserMapper {
+    long countByExample(AlumniOrganizeUserExample example);
+
+    int deleteByExample(AlumniOrganizeUserExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(AlumniOrganizeUser record);
+
+    int insertSelective(AlumniOrganizeUser record);
+
+    List<AlumniOrganizeUser> selectByExample(AlumniOrganizeUserExample example);
+
+    AlumniOrganizeUser selectByPrimaryKey(Integer id);
+
+    int updateByExampleSelective(@Param("record") AlumniOrganizeUser record, @Param("example") AlumniOrganizeUserExample example);
+
+    int updateByExample(@Param("record") AlumniOrganizeUser record, @Param("example") AlumniOrganizeUserExample example);
+
+    int updateByPrimaryKeySelective(AlumniOrganizeUser record);
+
+    int updateByPrimaryKey(AlumniOrganizeUser record);
+}

+ 22 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniRegionMapper.java

@@ -0,0 +1,22 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+
+import com.dgtis.dorm.manager.db.domain.AlumniRegion;
+import org.apache.ibatis.annotations.Param;
+
+public interface AlumniRegionMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(AlumniRegion record);
+
+    int insertSelective(AlumniRegion record);
+
+    AlumniRegion selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(AlumniRegion record);
+
+    int updateByPrimaryKey(AlumniRegion record);
+
+	List<AlumniRegion> selectByPid(@Param("parentId") Integer parentId);
+}

+ 68 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniUserMapper.java

@@ -0,0 +1,68 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.dgtis.dorm.manager.db.domain.AlumniUser;
+import org.apache.ibatis.annotations.Param;
+
+public interface AlumniUserMapper {
+    int insert(AlumniUser record);
+
+    int insertSelective(AlumniUser record);
+    
+    int updateByPrimaryKeySelective(AlumniUser record);
+
+    int updateByPrimaryKey(AlumniUser record);
+
+	List<AlumniUser> selectByExample(AlumniUser example);
+
+	AlumniUser selectByPrimaryKey(Integer id);
+
+	long countByUser(AlumniUser user);
+
+	AlumniUser selectOneByOpenId(@Param("openId")String openId);
+
+	List<Map> findAlumniRecordById(
+			@Param("userId") Integer userId,
+			@Param("pageIndex") int pageIndex,
+            @Param("pageSize") int pageSize);
+
+	List<Map> findAlumniRecord(@Param("userId") Integer userId,
+							   @Param("valString") String valString,
+							   @Param("valInt") Integer valInt);
+
+	List<Map> selectMyOrganizeByUserId(@Param("userId") Integer userId);
+
+	Map selectById(@Param("userId") Integer userId);
+
+	List<AlumniUser> selectUserByUserName(String userName);
+
+	/**
+	 * 查询校友录列表,待审核用户除外
+	 * @param example
+	 * @return
+	 */
+	List<AlumniUser> selectAlumniUser(AlumniUser example);
+
+	/**
+	 * 查询游客列表,待审核用户除外
+	 * @return
+	 */
+	List<AlumniUser> selectAlumniUserNotYK();
+
+	/**
+     * 查询总条数
+     *
+     * @param userId
+     * @return
+     */
+	int selectTotalCount(@Param("userId") Integer userId);
+
+	/**
+	 * 查询校友录人数(非游客)
+	 * @return
+	 */
+	long selectCountNotYK();
+
+}

+ 49 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/AlumniUserMessageMapper.java

@@ -0,0 +1,49 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.dgtis.dorm.manager.db.domain.AlumniUserMessage;
+import org.apache.ibatis.annotations.Param;
+
+public interface AlumniUserMessageMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(AlumniUserMessage record);
+
+    int insertSelective(AlumniUserMessage record);
+
+    AlumniUserMessage selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(AlumniUserMessage record);
+
+    int updateByPrimaryKey(AlumniUserMessage record);
+    
+    List<Map> selectUserMessageAll(AlumniUserMessage record);
+
+	List<Map> selectUserMessage(AlumniUserMessage record);
+
+	List<Map> selectSystemUserMessageByUserId(@Param("userId") String userId);
+
+	List<Map> selectUserMessageDetails(@Param("userId") String userId, @Param("fromUserId") String fromUserId);
+
+	void updateUserMessageRead(@Param("userId") String userId, @Param("fromUserId") String fromUserId);
+
+	Integer selectPrivateNoReadCount(@Param("userId")String userId);
+
+	/**
+	 * 查询申请加入圈子状态为待审核的用户数量
+	 * @param userId
+	 * @return
+	 */
+	Integer selectNoNormalCountByAOU(@Param("userId") String userId);
+
+	/**
+	 * 查询我的系统未读消息
+	 * @param userId
+	 * @return
+	 */
+    Integer findMyMsgCount(@Param("userId") String userId);
+
+	Integer updateMsg(@Param(value = "id") String id);
+}

+ 20 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ApproveHistoryMapper.java

@@ -0,0 +1,20 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.ApproveHistory;
+
+import java.util.List;
+
+public interface ApproveHistoryMapper {
+
+    //查询
+    List<ApproveHistory> selectByExample(ApproveHistory approveHistory);
+
+    //添加
+    int insertSelective(ApproveHistory approveHistory);
+
+    //更新
+    int updateByPrimaryKeySelective(ApproveHistory approveHistory);
+
+    //删除
+    int deleteByPrimaryKey(Integer id);
+}

+ 38 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/BannerMapper.java

@@ -0,0 +1,38 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.Banner;
+
+import java.util.List;
+
+public interface BannerMapper {
+
+    /**
+     * 查询banner信息列表
+     */
+    List<Banner> selectByExample(Banner banner);
+
+    /**
+     * 根据id获取banner信息
+     */
+    Banner selectByPrimaryKey(Integer id);
+
+    /**
+     * 获取banner列表数量
+     */
+    long countByExample(Banner banner);
+
+    /**
+     * 录入banner信息
+     */
+    int insertSelective(Banner banner);
+
+    /**
+     * 更新banner信息
+     */
+    int updateByPrimaryKeySelective(Banner banner);
+
+    /**
+     * 删除banner信息
+     */
+    int deleteByPrimaryKey(Integer id);
+}

+ 25 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/DemandSensitiveWordMapper.java

@@ -0,0 +1,25 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.DemandSensitiveWord;
+
+import java.util.Set;
+
+public interface DemandSensitiveWordMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(DemandSensitiveWord record);
+
+    int insertSelective(DemandSensitiveWord record);
+
+    DemandSensitiveWord selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(DemandSensitiveWord record);
+
+    int updateByPrimaryKey(DemandSensitiveWord record);
+
+    /**
+     * 查询敏感词列表
+     * @return
+     */
+    Set<String> selectDemandSensitiveWord();
+}

+ 20 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/DeptInfoMapper.java

@@ -0,0 +1,20 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.Admin;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface DeptInfoMapper {
+
+
+    /**
+     * @descption: 查询所有的2级部门列表
+     * @param:
+     * @return: void
+     * @auther: qxp
+     * @date:19-8-6 15:36
+     */
+    List<Map<String, Object>> getLeve2DeptList();
+}

+ 61 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsCommentMapper.java

@@ -0,0 +1,61 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.NewsComment;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface NewsCommentMapper {
+
+    /**
+     * 查询评论
+     */
+    List<NewsComment> selectByExample(NewsComment newsComment);
+
+    /**
+     * 评论列表
+     * @param newsComment
+     * @return
+     */
+    List<NewsComment> selectCommonList(NewsComment newsComment);
+    
+    /**
+     * 查询子评论
+     * @param commentfirstid
+     * @return
+     */
+    List<NewsComment>  selectByZiExample(@Param("commentfirstid")Integer commentfirstid);
+
+    /**
+     * 根据id获取
+     */
+    NewsComment selectByPrimaryKey(Integer id);
+
+    /**
+     * 获取评论数量
+     */
+    long countByExample(NewsComment newsComment);
+
+    /**
+     * 评论数量
+     * @param newsComment
+     * @return
+     */
+    long countByComList(NewsComment newsComment);
+    /**
+     * 录入评论信息
+     */
+    int insertSelective(NewsComment newsComment);
+
+    /**
+     * 删除评论信息
+     */
+    int deleteByPrimaryKey(Integer id);
+
+    /**
+     * 根据活动id删除评论
+     * @param newId
+     * @return
+     */
+    int deleteByNewId(@Param("newsId") int newsId);
+}

+ 101 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsMapper.java

@@ -0,0 +1,101 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.News;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface NewsMapper {
+
+    /**
+     * 获取交互内容列表
+     */
+    List<News> selectByExample(News example);
+
+    /**
+     * 获取交互内容详情
+     */
+    News selectByPrimaryKey(Integer id);
+
+    /**
+     * 获取交互内容列表总条数
+     */
+    long countByExample(News example);
+
+    /**
+     * 录入交互内容
+     */
+    int insertSelective(News record);
+
+    /**
+     * 更新交互内容
+     */
+    int updateByPrimaryKeySelective(News record);
+
+    /**
+     * 删除信息交互内容
+     */
+    int deleteByPrimaryKey(int id);
+
+    /**
+     * 批量删除交互内容
+     * @param ids
+     * @return
+     */
+    int deleteQuantity(String ids);
+    /**
+     * 查询带评论数量、点赞数量 的交互内容列表信息
+     * @param news
+     * @return
+     */
+    List<News> selectByExampleWithComment(News news);
+
+    /**
+     * 获取交互内容详情,并带评论数量、点赞数量
+     */
+    News selectByPrimaryKeyWithComment(@Param("id") Integer id, @Param("userIdForZan")Integer userIdForZan);
+
+    /**
+     * 查询活动新闻 并获取关联活动的 活动开始时间、活动地址、活动人数
+     * @param news
+     * @return
+     */
+    List<News> selectByExampleForActivityNews(News news);
+
+    /**
+     * 查询圈子的动态,新闻、活动
+     * @param orgId
+     * @return
+     */
+    List<News> selectByOrgIdForActivityNews(@Param("orgId")Integer orgId, @Param("userIdForZan")Integer userIdForZan);
+
+    /**
+     * 查询参加的活动
+     * @param news
+     * @return
+     */
+    List<News> selectByExampleForMyJoin(News news);
+
+    /**
+     * 我参加活动的数量
+     * @param news
+     * @return
+     */
+    int countForMyJoin(News news);
+
+    /**
+     * 获取圈子动态列表数量
+     */
+    int countForActivityNews(Integer orgId);
+
+    /**
+     * 查询关注好友的动态,新闻、活动
+     * @return
+     */
+    List<News> selectForFriendNews(Integer userId);
+
+    /**
+     * 查询关注好友的动态
+     */
+    int countForFriendNews(Integer userId);
+}

+ 45 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsOrganizeMapper.java

@@ -0,0 +1,45 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.NewsOrganize;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface NewsOrganizeMapper {
+
+    /**
+     * 获取参加的活动列表
+     * @param newsOrganize
+     * @return
+     */
+    List<NewsOrganize> selectByExample(NewsOrganize newsOrganize);
+
+    /**
+     * 获取参加的活动列表总条数
+     */
+    long countByExample(NewsOrganize newsOrganize);
+
+    /**
+     * 录入参加的活动信息
+     */
+    int insertSelective(NewsOrganize newsOrganize);
+
+    /**
+     * 删除参加的活动信息
+     */
+    int deleteByPrimaryKey(int id);
+
+    /**
+     * 根据活动id删除活动推送的组织信息
+     * @param newsId 活动编号
+     * @return
+     */
+    int deleteByActivityId(int newsId);
+
+    /**
+     * 根据活动id和组织id删除活动推送的组织信息
+     * @param newsId
+     * @param organizeId
+     */
+    int deleteOrganizeNewsByActivity(@Param("newsId") String newsId, @Param("organizeId") String organizeId);
+}

+ 40 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/NewsZanMapper.java

@@ -0,0 +1,40 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.NewsZan;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface NewsZanMapper {
+
+    /**
+     * 查询点赞列表
+     */
+    List<NewsZan> selectByExample(NewsZan newsZan);
+
+    /**
+     * 获取点赞数量
+     */
+    long countByExample(NewsZan newsZan);
+
+    /**
+     * 录入点赞信息
+     */
+    int insertSelective(NewsZan newsZan);
+
+    /**
+     * 删除点赞信息
+     */
+    int deleteByPrimaryKey(Integer id);
+
+    /**
+     * 删除点赞
+     */
+    int deleteByExample(NewsZan newszan);
+
+    /**
+     * 根据活动id删除点赞
+     * @param newsId
+     */
+    int deleteByNewId(@Param("newsId") int newsId);
+}

+ 26 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/QuestionsAnswersMapper.java

@@ -0,0 +1,26 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.dgtis.dorm.manager.db.domain.QuestionsAnswers;
+
+public interface QuestionsAnswersMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(QuestionsAnswers record);
+
+    int insertSelective(QuestionsAnswers record);
+
+    QuestionsAnswers selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(QuestionsAnswers record);
+
+    int updateByPrimaryKey(QuestionsAnswers record);
+
+	List<QuestionsAnswers> selectByExample(QuestionsAnswers questionsAnswers);
+
+	int countByExample(QuestionsAnswers questionsAnswers);
+
+	List<Map> selectBy(QuestionsAnswers questionsAnswers);
+}

+ 48 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ReservationRecordMapper.java

@@ -0,0 +1,48 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.ReservationRecord;
+
+import java.util.List;
+
+/**
+ * 用户预约叫号记录 数据层
+ * 
+ * @author ruoyi
+ * @date 2019-07-10
+ */
+public interface ReservationRecordMapper 
+{
+	/**
+     * 查询用户预约叫号记录信息
+     * 
+     * @param id 用户预约叫号记录ID
+     * @return 用户预约叫号记录信息
+     */
+	public ReservationRecord selectReservationRecordById(String id);
+	
+	/**
+     * 查询用户预约叫号记录列表
+     * 
+     * @param reservationRecord 用户预约叫号记录信息
+     * @return 用户预约叫号记录集合
+     */
+	public List<ReservationRecord> selectReservationRecordList(ReservationRecord reservationRecord);
+	
+	/**
+     * 新增用户预约叫号记录
+     * 
+     * @param reservationRecord 用户预约叫号记录信息
+     * @return 结果
+     */
+	public int insertReservationRecord(ReservationRecord reservationRecord);
+	
+	/**
+     * 修改用户预约叫号记录
+     * 
+     * @param reservationRecord 用户预约叫号记录信息
+     * @return 结果
+     */
+	public int updateReservationRecord(ReservationRecord reservationRecord);
+
+	
+}

+ 36 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/RoleMapper.java

@@ -0,0 +1,36 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.Role;
+
+import java.util.List;
+
+public interface RoleMapper {
+
+    /**
+     * TODO ~~~~
+     */
+    List<Role> selectByExample(Role example);
+
+    /**
+     * TODO ~~~~
+     */
+    Role selectByPrimaryKey(Integer id);
+
+    /**
+     * TODO ~~~~
+     */
+    List<String> selectAdminUserMenuByAdminId(Integer id);
+
+
+    /**
+     * TODO ~~~~
+     */
+    int updateByPrimaryKeySelective(Role record);
+
+    /**
+     * TODO ~~~~
+     */
+    int insertSelective(Role record);
+
+
+}

+ 24 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/RoleMenuMapper.java

@@ -0,0 +1,24 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+
+import com.dgtis.dorm.manager.db.domain.RoleMenu;
+
+public interface RoleMenuMapper {
+
+    /**
+     * TODO ~~~~
+     */
+    int deleteByExample(RoleMenu example);
+
+    /**
+     * TODO ~~~~
+     */
+    int insertSelective(RoleMenu record);
+
+    /**
+     * TODO ~~~~
+     */
+    List<RoleMenu> selectByExample(RoleMenu example);
+
+}

+ 53 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/StorageMapper.java

@@ -0,0 +1,53 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import java.util.List;
+
+import com.dgtis.dorm.manager.db.domain.Storage;
+import org.apache.ibatis.annotations.Param;
+
+public interface StorageMapper {
+
+    /**
+     * TODO ~~~~
+     */
+    Storage selectOneByExample(Storage example);
+
+    /**
+     * TODO ~~~~
+     */
+    List<Storage> selectByExample(Storage example);
+
+    /**
+     * TODO ~~~~
+     */
+    Storage selectByPrimaryKey(Integer id);
+
+    /**
+     * TODO ~~~~
+     */
+    int insertSelective(Storage record);
+
+    /**
+     * TODO ~~~~
+     */
+    int updateByPrimaryKeySelective(Storage record);
+
+    /**
+     * TODO ~~~~
+     */
+    int deleteByPrimaryKey(Integer id);
+    /**
+     * 方法描述  根据UUID查询
+     *
+     * @author huanghaoqi
+     * @date 2018年12月07日 14:17:07
+     */
+    Storage selectByKey(@Param("key") String key);
+    /**
+     * 方法描述  根据key集合查询
+     *
+     * @author huanghaoqi
+     * @date 2018年12月10日 09:38:31
+     */
+    List<Storage> selectByKeys(@Param("keys") List<String> keys);
+}

+ 56 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ZhllCollectMapper.java

@@ -0,0 +1,56 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.ZhllCollect;
+
+import java.util.List;
+
+/**
+ * 收藏 数据层
+ * 
+ * @author ruoyi
+ * @date 2019-07-10
+ */
+public interface ZhllCollectMapper 
+{
+	/**
+     * 查询收藏信息
+     * 
+     * @param id 收藏ID
+     * @return 收藏信息
+     */
+	public ZhllCollect selectZhllCollectById(String id);
+	
+	/**
+     * 查询收藏列表
+     * 
+     * @param zhllCollect 收藏信息
+     * @return 收藏集合
+     */
+	public List<ZhllCollect> selectZhllCollectList(ZhllCollect zhllCollect);
+	
+	/**
+     * 新增收藏
+     * 
+     * @param zhllCollect 收藏信息
+     * @return 结果
+     */
+	public int insertZhllCollect(ZhllCollect zhllCollect);
+	
+	/**
+     * 修改收藏
+     * 
+     * @param zhllCollect 收藏信息
+     * @return 结果
+     */
+	public int updateZhllCollect(ZhllCollect zhllCollect);
+
+
+	/*
+	 * @descption: 根据收藏id删除收藏
+	 * @param: [id]
+	 * @return: java.lang.Integer
+	 * @auther: qxp
+	 * @date:19-7-10 16:50
+	 */
+	public Integer deleteById(String id);
+}

+ 62 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ZhllConsultingComplaintsMapper.java

@@ -0,0 +1,62 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.ZhllConsultingComplaints;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 咨询投诉 数据层
+ * 
+ * @author ruoyi
+ * @date 2019-07-10
+ */
+public interface ZhllConsultingComplaintsMapper 
+{
+	/**
+     * 查询咨询投诉信息
+     * 
+     * @param id 咨询投诉ID
+     * @return 咨询投诉信息
+     */
+	public ZhllConsultingComplaints selectZhllConsultingComplaintsById(String id);
+	
+	/**
+     * 查询咨询投诉列表
+     * 
+     * @param zhllConsultingComplaints 咨询投诉信息
+     * @return 咨询投诉集合
+     */
+	public List<ZhllConsultingComplaints> selectZhllConsultingComplaintsList(ZhllConsultingComplaints zhllConsultingComplaints);
+	
+	/**
+     * 新增咨询投诉
+     * 
+     * @param zhllConsultingComplaints 咨询投诉信息
+     * @return 结果
+     */
+	public int insertZhllConsultingComplaints(ZhllConsultingComplaints zhllConsultingComplaints);
+	
+	/**
+     * 修改咨询投诉
+     * 
+     * @param zhllConsultingComplaints 咨询投诉信息
+     * @return 结果
+     */
+	public int updateZhllConsultingComplaints(ZhllConsultingComplaints zhllConsultingComplaints);
+
+
+	/**
+	 * @descption: 根据条件查询List  title和内容是某查询
+	 * @param: [zhllConsultingComplaints]
+	 * @return: java.util.List<com.dgtis.dorm.manager.db.domain.ZhllConsultingComplaints>
+	 * @auther: qxp
+	 * @date:19-8-6 09:49
+	 */
+    List<ZhllConsultingComplaints> queryList(ZhllConsultingComplaints zhllConsultingComplaints);
+
+
+    List<ZhllConsultingComplaints> queryByTimeListPage(@Param(value="zhllCC")ZhllConsultingComplaints zhllConsultingComplaints,
+													   @Param(value="startDate")String startDate, @Param(value="endDate")String endDate);
+}

+ 55 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/dao/ZhllUserMaterialMapper.java

@@ -0,0 +1,55 @@
+package com.dgtis.dorm.manager.db.dao;
+
+import com.dgtis.dorm.manager.db.domain.ZhllUserMaterial;
+
+import java.util.List;
+
+/**
+ * 我的材料 数据层
+ * 
+ * @author ruoyi
+ * @date 2019-07-10
+ */
+public interface ZhllUserMaterialMapper 
+{
+	/**
+     * 查询我的材料信息
+     * 
+     * @param id 我的材料ID
+     * @return 我的材料信息
+     */
+	public ZhllUserMaterial selectZhllUserMaterialById(String id);
+	
+	/**
+     * 查询我的材料列表
+     * 
+     * @param zhllUserMaterial 我的材料信息
+     * @return 我的材料集合
+     */
+	public List<ZhllUserMaterial> selectZhllUserMaterialList(ZhllUserMaterial zhllUserMaterial);
+	
+	/**
+     * 新增我的材料
+     * 
+     * @param zhllUserMaterial 我的材料信息
+     * @return 结果
+     */
+	public int insertZhllUserMaterial(ZhllUserMaterial zhllUserMaterial);
+	
+	/**
+     * 修改我的材料
+     * 
+     * @param zhllUserMaterial 我的材料信息
+     * @return 结果
+     */
+	public int updateZhllUserMaterial(ZhllUserMaterial zhllUserMaterial);
+
+	/**
+	 * @descption: 根据材料id删除材料
+	 * @param:
+	 * @return:
+	 * @auther: qxp
+	 * @date:19-7-10 18:12
+	 */
+	public Integer deleteById(String id);
+}

+ 554 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Admin.java

@@ -0,0 +1,554 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+
+public class Admin {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.id
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.username
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private String username;
+    
+    private String nickname;
+    
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.password
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private String password;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.last_login_ip
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private String lastLoginIp;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.last_login_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private LocalDateTime lastLoginTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.update_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.avatar
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private String avatar;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.add_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private LocalDateTime addTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.deleted
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private Boolean deleted;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin.phone
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    private String phone;
+
+    // 关联微信用户id
+    private Integer userId;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.id
+     *
+     * @return the value of alumni_admin.id
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.id
+     *
+     * @param id the value for alumni_admin.id
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.username
+     *
+     * @return the value of alumni_admin.username
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public String getUsername() {
+        return username;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.username
+     *
+     * @param username the value for alumni_admin.username
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setUsername(String username) {
+        this.username = username;
+    }
+    
+    
+    public String getNickname() {
+        return nickname;
+    }
+
+    
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.password
+     *
+     * @return the value of alumni_admin.password
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.password
+     *
+     * @param password the value for alumni_admin.password
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.last_login_ip
+     *
+     * @return the value of alumni_admin.last_login_ip
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public String getLastLoginIp() {
+        return lastLoginIp;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.last_login_ip
+     *
+     * @param lastLoginIp the value for alumni_admin.last_login_ip
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setLastLoginIp(String lastLoginIp) {
+        this.lastLoginIp = lastLoginIp;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.last_login_time
+     *
+     * @return the value of alumni_admin.last_login_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public LocalDateTime getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.last_login_time
+     *
+     * @param lastLoginTime the value for alumni_admin.last_login_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setLastLoginTime(LocalDateTime lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.update_time
+     *
+     * @return the value of alumni_admin.update_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public LocalDateTime getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.update_time
+     *
+     * @param updateTime the value for alumni_admin.update_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setUpdateTime(LocalDateTime updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.avatar
+     *
+     * @return the value of alumni_admin.avatar
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public String getAvatar() {
+        return avatar;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.avatar
+     *
+     * @param avatar the value for alumni_admin.avatar
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.add_time
+     *
+     * @return the value of alumni_admin.add_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public LocalDateTime getAddTime() {
+        return addTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.add_time
+     *
+     * @param addTime the value for alumni_admin.add_time
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setAddTime(LocalDateTime addTime) {
+        this.addTime = addTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.deleted
+     *
+     * @return the value of alumni_admin.deleted
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public Boolean getDeleted() {
+        return deleted;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.deleted
+     *
+     * @param deleted the value for alumni_admin.deleted
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setDeleted(Boolean deleted) {
+        this.deleted = deleted;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin.phone
+     *
+     * @return the value of alumni_admin.phone
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public String getPhone() {
+        return phone;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin.phone
+     *
+     * @param phone the value for alumni_admin.phone
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_admin
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+
+    private String employeNo;
+    private String post;
+    private String userEmail;
+
+    public String getEmployeNo() {
+        return employeNo;
+    }
+
+    public void setEmployeNo(String employeNo) {
+        this.employeNo = employeNo;
+    }
+
+    public String getPost() {
+        return post;
+    }
+
+    public void setPost(String post) {
+        this.post = post;
+    }
+
+    public String getUserEmail() {
+        return userEmail;
+    }
+
+    public void setUserEmail(String userEmail) {
+        this.userEmail = userEmail;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", username=").append(username);
+        sb.append(", nickname=").append(nickname);
+        sb.append(", password=").append(password);
+        sb.append(", lastLoginIp=").append(lastLoginIp);
+        sb.append(", lastLoginTime=").append(lastLoginTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", avatar=").append(avatar);
+        sb.append(", addTime=").append(addTime);
+        sb.append(", deleted=").append(deleted);
+        sb.append(", phone=").append(phone);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_admin
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Admin other = (Admin) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))
+            && (this.getNickname() == null ? other.getNickname() == null : this.getNickname().equals(other.getNickname()))
+            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
+            && (this.getLastLoginIp() == null ? other.getLastLoginIp() == null : this.getLastLoginIp().equals(other.getLastLoginIp()))
+            && (this.getLastLoginTime() == null ? other.getLastLoginTime() == null : this.getLastLoginTime().equals(other.getLastLoginTime()))
+            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+            && (this.getAvatar() == null ? other.getAvatar() == null : this.getAvatar().equals(other.getAvatar()))
+            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))
+            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()))
+            && (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone()));
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_admin
+     *
+     * @mbg.generated Fri Apr 27 15:50:49 CST 2018
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());
+        result = prime * result + ((getNickname() == null) ? 0 : getNickname().hashCode());
+        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
+        result = prime * result + ((getLastLoginIp() == null) ? 0 : getLastLoginIp().hashCode());
+        result = prime * result + ((getLastLoginTime() == null) ? 0 : getLastLoginTime().hashCode());
+        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+        result = prime * result + ((getAvatar() == null) ? 0 : getAvatar().hashCode());
+        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());
+        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());
+        result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode());
+        return result;
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table alumni_admin
+     *
+     * @mbg.generated
+     * @project https://github.com/itfsw/mybatis-generator-plugin
+     */
+    public enum Column {
+        id("id"),
+        username("username"),
+        nickname("nickname"),
+        password("password"),
+        lastLoginIp("last_login_ip"),
+        lastLoginTime("last_login_time"),
+        updateTime("update_time"),
+        avatar("avatar"),
+        addTime("add_time"),
+        deleted("deleted"),
+        phone("phone");
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table alumni_admin
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        private final String column;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        Column(String column) {
+            this.column = column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String desc() {
+            return this.column + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String asc() {
+            return this.column + " ASC";
+        }
+    }
+}

+ 237 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AdminRole.java

@@ -0,0 +1,237 @@
+package com.dgtis.dorm.manager.db.domain;
+
+public class AdminRole {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin_role.id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin_role.admin_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private Integer adminId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_admin_role.role_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private Integer roleId;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin_role.id
+     *
+     * @return the value of alumni_admin_role.id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin_role.id
+     *
+     * @param id the value for alumni_admin_role.id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin_role.admin_id
+     *
+     * @return the value of alumni_admin_role.admin_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public Integer getAdminId() {
+        return adminId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin_role.admin_id
+     *
+     * @param adminId the value for alumni_admin_role.admin_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setAdminId(Integer adminId) {
+        this.adminId = adminId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_admin_role.role_id
+     *
+     * @return the value of alumni_admin_role.role_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public Integer getRoleId() {
+        return roleId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_admin_role.role_id
+     *
+     * @param roleId the value for alumni_admin_role.role_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setRoleId(Integer roleId) {
+        this.roleId = roleId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_admin_role
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", adminId=").append(adminId);
+        sb.append(", roleId=").append(roleId);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_admin_role
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        AdminRole other = (AdminRole) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getAdminId() == null ? other.getAdminId() == null : this.getAdminId().equals(other.getAdminId()))
+            && (this.getRoleId() == null ? other.getRoleId() == null : this.getRoleId().equals(other.getRoleId()));
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_admin_role
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getAdminId() == null) ? 0 : getAdminId().hashCode());
+        result = prime * result + ((getRoleId() == null) ? 0 : getRoleId().hashCode());
+        return result;
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table alumni_admin_role
+     *
+     * @mbg.generated
+     * @project https://github.com/itfsw/mybatis-generator-plugin
+     */
+    public enum Column {
+        id("id"),
+        adminId("admin_id"),
+        roleId("role_id");
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table alumni_admin_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        private final String column;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        Column(String column) {
+            this.column = column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String desc() {
+            return this.column + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_admin_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String asc() {
+            return this.column + " ASC";
+        }
+    }
+}

+ 353 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AdministrativeItems.java

@@ -0,0 +1,353 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 行政办理事项
+ *
+ * @author huanghaoqi
+ * @version 1.0
+ * @date 2018年12月03日 14:33:52
+ * @since JDK1.8
+ */
+public class AdministrativeItems {
+    /**
+     * 自增主键
+     */
+    private Integer id;
+    /**
+     * 事项名称
+     */
+    private String name;
+    /**
+     * 父级ID
+     */
+    private Integer parentId;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 图标路径
+     */
+    private String iconStorageId;
+    /**
+     * PDF 附件ID
+     */
+    private String pdfStorageId;
+    /**
+     * 表格附件ID
+     */
+    private String tableStorageId;
+    /**
+     * 二维码附件ID
+     */
+    private String qrcodeStorageId;
+    /**
+     * 等级
+     */
+    private Integer level;
+    /**
+     * 创建日期
+     */
+    private Date createDate;
+    /**
+     * 创建人
+     */
+    private Integer createUser;
+    /**
+     * 更新时间
+     */
+    private Date updateDate;
+    /**
+     * 更新人
+     */
+    private Integer updateUser;
+    /**
+     * 删除标识符
+     */
+    private Integer deflag;
+    /**
+     * 所属事项
+     */
+    private String parentName;
+    /**
+     * 图标名称
+     */
+    private String iconStorageOldName;
+    /**
+     * 图标路径
+     */
+    private String iconStorageUrl;
+    /**
+     * pdf名称
+     */
+    private String pdfStorageOldName;
+    /**
+     * pdf路径
+     */
+    private String pdfStorageUrl;
+    /**
+     * 表格名称
+     */
+    private String tableStorageOldName;
+    /**
+     * 表格路径
+     */
+    private String tableStorageUrl;
+    /**
+     * 二维码名称
+     */
+    private String qrcodeStorageOldName;
+    /**
+     * 二维码路径
+     */
+    private String qrcodeStorageUrl;
+    /**
+     * 办事指南文档数量
+     */
+    private Long itemsGuidanceDocCount;
+    /**
+     * 表格文档数量
+     */
+    private Long itemsTableDocCount;
+
+    /**
+     * 所属事项名称(拼音)
+     */
+    private String nameSpell;
+
+    /**
+     * 办事指南文档列表
+     */
+    private List<AdministrativeItemsDoc> itemsGuidanceDocList;
+    /**
+     * 表格文档列表
+     */
+    private List<AdministrativeItemsDoc> itemsTableDocList;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Integer parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getIconStorageId() {
+        return iconStorageId;
+    }
+
+    public void setIconStorageId(String iconStorageId) {
+        this.iconStorageId = iconStorageId;
+    }
+
+    public String getPdfStorageId() {
+        return pdfStorageId;
+    }
+
+    public void setPdfStorageId(String pdfStorageId) {
+        this.pdfStorageId = pdfStorageId;
+    }
+
+    public String getTableStorageId() {
+        return tableStorageId;
+    }
+
+    public void setTableStorageId(String tableStorageId) {
+        this.tableStorageId = tableStorageId;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public Integer getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(Integer createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getUpdateDate() {
+        return updateDate;
+    }
+
+    public void setUpdateDate(Date updateDate) {
+        this.updateDate = updateDate;
+    }
+
+    public Integer getUpdateUser() {
+        return updateUser;
+    }
+
+    public void setUpdateUser(Integer updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Integer getDeflag() {
+        return deflag;
+    }
+
+    public void setDeflag(Integer deflag) {
+        this.deflag = deflag;
+    }
+
+    public String getParentName() {
+        return parentName;
+    }
+
+    public void setParentName(String parentName) {
+        this.parentName = parentName;
+    }
+
+    public String getIconStorageOldName() {
+        return iconStorageOldName;
+    }
+
+    public void setIconStorageOldName(String iconStorageOldName) {
+        this.iconStorageOldName = iconStorageOldName;
+    }
+
+    public String getIconStorageUrl() {
+        return iconStorageUrl;
+    }
+
+    public void setIconStorageUrl(String iconStorageUrl) {
+        this.iconStorageUrl = iconStorageUrl;
+    }
+
+    public String getPdfStorageOldName() {
+        return pdfStorageOldName;
+    }
+
+    public void setPdfStorageOldName(String pdfStorageOldName) {
+        this.pdfStorageOldName = pdfStorageOldName;
+    }
+
+    public String getPdfStorageUrl() {
+        return pdfStorageUrl;
+    }
+
+    public void setPdfStorageUrl(String pdfStorageUrl) {
+        this.pdfStorageUrl = pdfStorageUrl;
+    }
+
+    public String getTableStorageOldName() {
+        return tableStorageOldName;
+    }
+
+    public void setTableStorageOldName(String tableStorageOldName) {
+        this.tableStorageOldName = tableStorageOldName;
+    }
+
+    public String getTableStorageUrl() {
+        return tableStorageUrl;
+    }
+
+    public void setTableStorageUrl(String tableStorageUrl) {
+        this.tableStorageUrl = tableStorageUrl;
+    }
+
+    public String getQrcodeStorageId() {
+        return qrcodeStorageId;
+    }
+
+    public void setQrcodeStorageId(String qrcodeStorageId) {
+        this.qrcodeStorageId = qrcodeStorageId;
+    }
+
+    public String getQrcodeStorageOldName() {
+        return qrcodeStorageOldName;
+    }
+
+    public void setQrcodeStorageOldName(String qrcodeStorageOldName) {
+        this.qrcodeStorageOldName = qrcodeStorageOldName;
+    }
+
+    public String getQrcodeStorageUrl() {
+        return qrcodeStorageUrl;
+    }
+
+    public void setQrcodeStorageUrl(String qrcodeStorageUrl) {
+        this.qrcodeStorageUrl = qrcodeStorageUrl;
+    }
+
+    public String getNameSpell() {
+        return nameSpell;
+    }
+
+    public void setNameSpell(String nameSpell) {
+        this.nameSpell = nameSpell;
+    }
+
+    public List<AdministrativeItemsDoc> getItemsGuidanceDocList() {
+        return itemsGuidanceDocList;
+    }
+
+    public void setItemsGuidanceDocList(List<AdministrativeItemsDoc> itemsGuidanceDocList) {
+        this.itemsGuidanceDocList = itemsGuidanceDocList;
+    }
+
+    public List<AdministrativeItemsDoc> getItemsTableDocList() {
+        return itemsTableDocList;
+    }
+
+    public void setItemsTableDocList(List<AdministrativeItemsDoc> itemsTableDocList) {
+        this.itemsTableDocList = itemsTableDocList;
+    }
+
+    public Long getItemsGuidanceDocCount() {
+        return itemsGuidanceDocCount;
+    }
+
+    public void setItemsGuidanceDocCount(Long itemsGuidanceDocCount) {
+        this.itemsGuidanceDocCount = itemsGuidanceDocCount;
+    }
+
+    public Long getItemsTableDocCount() {
+        return itemsTableDocCount;
+    }
+
+    public void setItemsTableDocCount(Long itemsTableDocCount) {
+        this.itemsTableDocCount = itemsTableDocCount;
+    }
+}

+ 122 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AdministrativeItemsDoc.java

@@ -0,0 +1,122 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+
+/**
+ *  事项相关文档
+ *
+ * @version 1.0
+ * @since JDK1.8
+ * @author huanghaoqi
+ * @date 2019年01月09日 13:31:37
+ */
+public class AdministrativeItemsDoc {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 事项ID
+     */
+    private Integer itemsId;
+    /**
+     * 文档名称
+     */
+    private String docName;
+    /**
+     * 文档存储ID
+     */
+    private String storageKey;
+    /**
+     * 文档存储名称
+     */
+    private String storageOldName;
+    /**
+     * 文档存储url
+     */
+    private String storageUrl;
+    /**
+     * 文档类型(1 表示办事指南  2表示表格)
+     */
+    private Integer type;
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createDate;
+    /**
+     * 创建时间
+     */
+    private Integer createUser;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getItemsId() {
+        return itemsId;
+    }
+
+    public void setItemsId(Integer itemsId) {
+        this.itemsId = itemsId;
+    }
+
+    public String getDocName() {
+        return docName;
+    }
+
+    public void setDocName(String docName) {
+        this.docName = docName;
+    }
+
+    public String getStorageKey() {
+        return storageKey;
+    }
+
+    public void setStorageKey(String storageKey) {
+        this.storageKey = storageKey;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    public Integer getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(Integer createUser) {
+        this.createUser = createUser;
+    }
+
+    public String getStorageOldName() {
+        return storageOldName;
+    }
+
+    public void setStorageOldName(String storageOldName) {
+        this.storageOldName = storageOldName;
+    }
+
+    public String getStorageUrl() {
+        return storageUrl;
+    }
+
+    public void setStorageUrl(String storageUrl) {
+        this.storageUrl = storageUrl;
+    }
+}

+ 59 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniFriUser.java

@@ -0,0 +1,59 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.util.Date;
+
+public class AlumniFriUser {
+    private Integer id;
+
+    private Integer friUserId;
+
+    private Integer fkUserId;
+
+    private Date createDate;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getFriUserId() {
+        return friUserId;
+    }
+
+    public void setFriUserId(Integer friUserId) {
+        this.friUserId = friUserId;
+    }
+
+    public Integer getFkUserId() {
+        return fkUserId;
+    }
+
+    public void setFkUserId(Integer fkUserId) {
+        this.fkUserId = fkUserId;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", friUserId=").append(friUserId);
+        sb.append(", fkUserId=").append(fkUserId);
+        sb.append(", createDate=").append(createDate);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 177 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganize.java

@@ -0,0 +1,177 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalDateTime;
+
+public class AlumniOrganize {
+    private Integer id;
+
+    private String organizeName;
+
+    private String organizeType;
+
+    private String organizeContent;
+
+    private Integer organizeUserId;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createDate;
+
+    private Boolean isDelete;
+
+    private String organizeMemo;
+
+    private Integer authUserId;
+
+    private Integer authStatus;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime authDate;
+
+    private Integer modifyUserId;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime modifyDate;
+
+    private Integer coverImage;
+
+    private String url;
+
+    private Integer weight;
+
+    private String isRemove;//是否删除
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOrganizeName() {
+        return organizeName;
+    }
+
+    public void setOrganizeName(String organizeName) {
+        this.organizeName = organizeName == null ? null : organizeName.trim();
+    }
+
+    public String getOrganizeType() {
+        return organizeType;
+    }
+
+    public void setOrganizeType(String organizeType) {
+        this.organizeType = organizeType == null ? null : organizeType.trim();
+    }
+
+    public Integer getOrganizeUserId() {
+        return organizeUserId;
+    }
+
+    public void setOrganizeUserId(Integer organizeUserId) {
+        this.organizeUserId = organizeUserId;
+    }
+
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    public Boolean getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Boolean isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public String getOrganizeMemo() {
+        return organizeMemo;
+    }
+
+    public void setOrganizeMemo(String organizeMemo) {
+        this.organizeMemo = organizeMemo == null ? null : organizeMemo.trim();
+    }
+
+    public Integer getAuthUserId() {
+        return authUserId;
+    }
+
+    public void setAuthUserId(Integer authUserId) {
+        this.authUserId = authUserId;
+    }
+
+    public Integer getAuthStatus() {
+        return authStatus;
+    }
+
+    public void setAuthStatus(Integer authStatus) {
+        this.authStatus = authStatus;
+    }
+
+    public LocalDateTime getAuthDate() {
+        return authDate;
+    }
+
+    public void setAuthDate(LocalDateTime authDate) {
+        this.authDate = authDate;
+    }
+
+    public Integer getModifyUserId() {
+        return modifyUserId;
+    }
+
+    public void setModifyUserId(Integer modifyUserId) {
+        this.modifyUserId = modifyUserId;
+    }
+
+    public LocalDateTime getModifyDate() {
+        return modifyDate;
+    }
+
+    public void setModifyDate(LocalDateTime modifyDate) {
+        this.modifyDate = modifyDate;
+    }
+
+    public Integer getCoverImage() {
+        return coverImage;
+    }
+
+    public void setCoverImage(Integer coverImage) {
+        this.coverImage = coverImage;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public Integer getWeight() {
+        return weight;
+    }
+
+    public void setWeight(Integer weight) {
+        this.weight = weight;
+    }
+
+    public String getIsRemove() {
+        return isRemove;
+    }
+
+    public void setIsRemove(String isRemove) {
+        this.isRemove = isRemove;
+    }
+
+    public String getOrganizeContent() {
+        return organizeContent;
+    }
+
+    public void setOrganizeContent(String organizeContent) {
+        this.organizeContent = organizeContent;
+    }
+}

+ 296 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeCustom.java

@@ -0,0 +1,296 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalDateTime;
+
+public class AlumniOrganizeCustom  extends AlumniOrganize{
+
+    private Integer id;
+
+    private String organizeName;
+
+    private String organizeType;
+
+    private String organizeContent;
+
+    private Integer organizeUserId;
+
+    private LocalDateTime createDate;
+
+    private Boolean isDelete;
+
+    private String organizeMemo;
+
+    private Integer authUserId;
+
+    private Integer authStatus;
+
+    private LocalDateTime authDate;
+
+    private Integer modifyUserId;
+
+    private LocalDateTime modifyDate;
+
+    private Integer coverImage;
+
+    private String url;
+
+    private Integer weight;
+
+    private Boolean isRemove;//是否删除
+
+
+
+    private String userName;
+
+    private String authUserName;
+
+    private String organizeUserCount;
+
+    private String priType;
+
+    private String adminUserId;
+
+    private String ownerUserName;
+
+    private String bgAuthUserName;
+
+    private Boolean isForbidden;
+
+    private String userId;
+
+    private String isNormal;
+
+    // 格式化返回数据
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getAuthDate() {
+        return authDate;
+    }
+
+    public void setAuthDate(LocalDateTime authDate) {
+        this.authDate = authDate;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getModifyDate() {
+        return modifyDate;
+    }
+
+    public void setModifyDate(LocalDateTime modifyDate) {
+        this.modifyDate = modifyDate;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getAuthUserName() {
+        return authUserName;
+    }
+
+    public void setAuthUserName(String authUserName) {
+        this.authUserName = authUserName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getOrganizeUserCount() {
+        return organizeUserCount;
+    }
+
+    public void setOrganizeUserCount(String organizeUserCount) {
+        this.organizeUserCount = organizeUserCount;
+    }
+
+    public String getPriType() {
+        return priType;
+    }
+
+    public void setPriType(String priType) {
+        this.priType = priType;
+    }
+
+    public String getAdminUserId() {
+        return adminUserId;
+    }
+
+    public void setAdminUserId(String adminUserId) {
+        this.adminUserId = adminUserId;
+    }
+
+    public String getOwnerUserName() {
+        return ownerUserName;
+    }
+
+    public void setOwnerUserName(String ownerUserName) {
+        this.ownerUserName = ownerUserName;
+    }
+
+    public String getBgAuthUserName() {
+        return bgAuthUserName;
+    }
+
+    public void setBgAuthUserName(String bgAuthUserName) {
+        this.bgAuthUserName = bgAuthUserName;
+    }
+
+    public Boolean getForbidden() {
+        return isForbidden;
+    }
+
+    public void setForbidden(Boolean forbidden) {
+        isForbidden = forbidden;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getIsNormal() {
+        return isNormal;
+    }
+
+    public void setIsNormal(String isNormal) {
+        this.isNormal = isNormal;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOrganizeName() {
+        return organizeName;
+    }
+
+    public void setOrganizeName(String organizeName) {
+        this.organizeName = organizeName;
+    }
+
+    public String getOrganizeType() {
+        return organizeType;
+    }
+
+    public void setOrganizeType(String organizeType) {
+        this.organizeType = organizeType;
+    }
+
+    public String getOrganizeContent() {
+        return organizeContent;
+    }
+
+    public void setOrganizeContent(String organizeContent) {
+        this.organizeContent = organizeContent;
+    }
+
+    public Integer getOrganizeUserId() {
+        return organizeUserId;
+    }
+
+    public void setOrganizeUserId(Integer organizeUserId) {
+        this.organizeUserId = organizeUserId;
+    }
+
+    public Boolean getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Boolean delete) {
+        isDelete = delete;
+    }
+
+    public String getOrganizeMemo() {
+        return organizeMemo;
+    }
+
+    public void setOrganizeMemo(String organizeMemo) {
+        this.organizeMemo = organizeMemo;
+    }
+
+    public Integer getAuthUserId() {
+        return authUserId;
+    }
+
+    public void setAuthUserId(Integer authUserId) {
+        this.authUserId = authUserId;
+    }
+
+    public Integer getAuthStatus() {
+        return authStatus;
+    }
+
+    public void setAuthStatus(Integer authStatus) {
+        this.authStatus = authStatus;
+    }
+
+    public Integer getModifyUserId() {
+        return modifyUserId;
+    }
+
+    public void setModifyUserId(Integer modifyUserId) {
+        this.modifyUserId = modifyUserId;
+    }
+
+    public Integer getCoverImage() {
+        return coverImage;
+    }
+
+    public void setCoverImage(Integer coverImage) {
+        this.coverImage = coverImage;
+    }
+
+    public Integer getWeight() {
+        return weight;
+    }
+
+    public void setWeight(Integer weight) {
+        this.weight = weight;
+    }
+
+    public Boolean getRemove() {
+        return isRemove;
+    }
+
+    public void setRemove(Boolean remove) {
+        isRemove = remove;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("AlumniOrganizeCustom{");
+        sb.append("createDate=").append(createDate);
+        sb.append(", authDate=").append(authDate);
+        sb.append(", modifyDate=").append(modifyDate);
+        sb.append(", userName='").append(userName).append('\'');
+        sb.append(", authUserName='").append(authUserName).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 951 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeExample.java

@@ -0,0 +1,951 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AlumniOrganizeExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public AlumniOrganizeExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Integer value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Integer> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Integer> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Integer value1, Integer value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameIsNull() {
+            addCriterion("organize_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameIsNotNull() {
+            addCriterion("organize_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameEqualTo(String value) {
+            addCriterion("organize_name =", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameNotEqualTo(String value) {
+            addCriterion("organize_name <>", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameGreaterThan(String value) {
+            addCriterion("organize_name >", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameGreaterThanOrEqualTo(String value) {
+            addCriterion("organize_name >=", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameLessThan(String value) {
+            addCriterion("organize_name <", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameLessThanOrEqualTo(String value) {
+            addCriterion("organize_name <=", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameLike(String value) {
+            addCriterion("organize_name like", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameNotLike(String value) {
+            addCriterion("organize_name not like", value, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameIn(List<String> values) {
+            addCriterion("organize_name in", values, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameNotIn(List<String> values) {
+            addCriterion("organize_name not in", values, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameBetween(String value1, String value2) {
+            addCriterion("organize_name between", value1, value2, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeNameNotBetween(String value1, String value2) {
+            addCriterion("organize_name not between", value1, value2, "organizeName");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeIsNull() {
+            addCriterion("organize_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeIsNotNull() {
+            addCriterion("organize_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeEqualTo(String value) {
+            addCriterion("organize_type =", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeNotEqualTo(String value) {
+            addCriterion("organize_type <>", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeGreaterThan(String value) {
+            addCriterion("organize_type >", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("organize_type >=", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeLessThan(String value) {
+            addCriterion("organize_type <", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeLessThanOrEqualTo(String value) {
+            addCriterion("organize_type <=", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeLike(String value) {
+            addCriterion("organize_type like", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeNotLike(String value) {
+            addCriterion("organize_type not like", value, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeIn(List<String> values) {
+            addCriterion("organize_type in", values, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeNotIn(List<String> values) {
+            addCriterion("organize_type not in", values, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeBetween(String value1, String value2) {
+            addCriterion("organize_type between", value1, value2, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeTypeNotBetween(String value1, String value2) {
+            addCriterion("organize_type not between", value1, value2, "organizeType");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdIsNull() {
+            addCriterion("organize_user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdIsNotNull() {
+            addCriterion("organize_user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdEqualTo(Integer value) {
+            addCriterion("organize_user_id =", value, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdNotEqualTo(Integer value) {
+            addCriterion("organize_user_id <>", value, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdGreaterThan(Integer value) {
+            addCriterion("organize_user_id >", value, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("organize_user_id >=", value, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdLessThan(Integer value) {
+            addCriterion("organize_user_id <", value, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdLessThanOrEqualTo(Integer value) {
+            addCriterion("organize_user_id <=", value, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdIn(List<Integer> values) {
+            addCriterion("organize_user_id in", values, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdNotIn(List<Integer> values) {
+            addCriterion("organize_user_id not in", values, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdBetween(Integer value1, Integer value2) {
+            addCriterion("organize_user_id between", value1, value2, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeUserIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("organize_user_id not between", value1, value2, "organizeUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateIsNull() {
+            addCriterion("create_date is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateIsNotNull() {
+            addCriterion("create_date is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateEqualTo(LocalDateTime value) {
+            addCriterion("create_date =", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateNotEqualTo(LocalDateTime value) {
+            addCriterion("create_date <>", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateGreaterThan(LocalDateTime value) {
+            addCriterion("create_date >", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateGreaterThanOrEqualTo(LocalDateTime value) {
+            addCriterion("create_date >=", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateLessThan(LocalDateTime value) {
+            addCriterion("create_date <", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateLessThanOrEqualTo(LocalDateTime value) {
+            addCriterion("create_date <=", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateIn(List<LocalDateTime> values) {
+            addCriterion("create_date in", values, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateNotIn(List<LocalDateTime> values) {
+            addCriterion("create_date not in", values, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateBetween(LocalDateTime value1, LocalDateTime value2) {
+            addCriterion("create_date between", value1, value2, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateNotBetween(LocalDateTime value1, LocalDateTime value2) {
+            addCriterion("create_date not between", value1, value2, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteIsNull() {
+            addCriterion("is_delete is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteIsNotNull() {
+            addCriterion("is_delete is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteEqualTo(Boolean value) {
+            addCriterion("is_delete =", value, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteNotEqualTo(Boolean value) {
+            addCriterion("is_delete <>", value, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteGreaterThan(Boolean value) {
+            addCriterion("is_delete >", value, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteGreaterThanOrEqualTo(Boolean value) {
+            addCriterion("is_delete >=", value, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteLessThan(Boolean value) {
+            addCriterion("is_delete <", value, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteLessThanOrEqualTo(Boolean value) {
+            addCriterion("is_delete <=", value, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteIn(List<Boolean> values) {
+            addCriterion("is_delete in", values, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteNotIn(List<Boolean> values) {
+            addCriterion("is_delete not in", values, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteBetween(Boolean value1, Boolean value2) {
+            addCriterion("is_delete between", value1, value2, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andIsDeleteNotBetween(Boolean value1, Boolean value2) {
+            addCriterion("is_delete not between", value1, value2, "isDelete");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoIsNull() {
+            addCriterion("organize_memo is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoIsNotNull() {
+            addCriterion("organize_memo is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoEqualTo(String value) {
+            addCriterion("organize_memo =", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoNotEqualTo(String value) {
+            addCriterion("organize_memo <>", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoGreaterThan(String value) {
+            addCriterion("organize_memo >", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoGreaterThanOrEqualTo(String value) {
+            addCriterion("organize_memo >=", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoLessThan(String value) {
+            addCriterion("organize_memo <", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoLessThanOrEqualTo(String value) {
+            addCriterion("organize_memo <=", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoLike(String value) {
+            addCriterion("organize_memo like", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoNotLike(String value) {
+            addCriterion("organize_memo not like", value, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoIn(List<String> values) {
+            addCriterion("organize_memo in", values, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoNotIn(List<String> values) {
+            addCriterion("organize_memo not in", values, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoBetween(String value1, String value2) {
+            addCriterion("organize_memo between", value1, value2, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andOrganizeMemoNotBetween(String value1, String value2) {
+            addCriterion("organize_memo not between", value1, value2, "organizeMemo");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdIsNull() {
+            addCriterion("auth_user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdIsNotNull() {
+            addCriterion("auth_user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdEqualTo(Integer value) {
+            addCriterion("auth_user_id =", value, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdNotEqualTo(Integer value) {
+            addCriterion("auth_user_id <>", value, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdGreaterThan(Integer value) {
+            addCriterion("auth_user_id >", value, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("auth_user_id >=", value, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdLessThan(Integer value) {
+            addCriterion("auth_user_id <", value, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdLessThanOrEqualTo(Integer value) {
+            addCriterion("auth_user_id <=", value, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdIn(List<Integer> values) {
+            addCriterion("auth_user_id in", values, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdNotIn(List<Integer> values) {
+            addCriterion("auth_user_id not in", values, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdBetween(Integer value1, Integer value2) {
+            addCriterion("auth_user_id between", value1, value2, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthUserIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("auth_user_id not between", value1, value2, "authUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateIsNull() {
+            addCriterion("auth_date is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateIsNotNull() {
+            addCriterion("auth_date is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateEqualTo(LocalDateTime value) {
+            addCriterion("auth_date =", value, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateNotEqualTo(LocalDateTime value) {
+            addCriterion("auth_date <>", value, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateGreaterThan(LocalDateTime value) {
+            addCriterion("auth_date >", value, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateGreaterThanOrEqualTo(LocalDateTime value) {
+            addCriterion("auth_date >=", value, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateLessThan(LocalDateTime value) {
+            addCriterion("auth_date <", value, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateLessThanOrEqualTo(LocalDateTime value) {
+            addCriterion("auth_date <=", value, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateIn(List<LocalDateTime> values) {
+            addCriterion("auth_date in", values, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateNotIn(List<LocalDateTime> values) {
+            addCriterion("auth_date not in", values, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateBetween(LocalDateTime value1, LocalDateTime value2) {
+            addCriterion("auth_date between", value1, value2, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andAuthDateNotBetween(LocalDateTime value1, LocalDateTime value2) {
+            addCriterion("auth_date not between", value1, value2, "authDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdIsNull() {
+            addCriterion("modify_user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdIsNotNull() {
+            addCriterion("modify_user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdEqualTo(Integer value) {
+            addCriterion("modify_user_id =", value, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdNotEqualTo(Integer value) {
+            addCriterion("modify_user_id <>", value, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdGreaterThan(Integer value) {
+            addCriterion("modify_user_id >", value, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("modify_user_id >=", value, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdLessThan(Integer value) {
+            addCriterion("modify_user_id <", value, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdLessThanOrEqualTo(Integer value) {
+            addCriterion("modify_user_id <=", value, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdIn(List<Integer> values) {
+            addCriterion("modify_user_id in", values, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdNotIn(List<Integer> values) {
+            addCriterion("modify_user_id not in", values, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdBetween(Integer value1, Integer value2) {
+            addCriterion("modify_user_id between", value1, value2, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyUserIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("modify_user_id not between", value1, value2, "modifyUserId");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateIsNull() {
+            addCriterion("modify_date is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateIsNotNull() {
+            addCriterion("modify_date is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateEqualTo(LocalDateTime value) {
+            addCriterion("modify_date =", value, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateNotEqualTo(LocalDateTime value) {
+            addCriterion("modify_date <>", value, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateGreaterThan(LocalDateTime value) {
+            addCriterion("modify_date >", value, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateGreaterThanOrEqualTo(LocalDateTime value) {
+            addCriterion("modify_date >=", value, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateLessThan(LocalDateTime value) {
+            addCriterion("modify_date <", value, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateLessThanOrEqualTo(LocalDateTime value) {
+            addCriterion("modify_date <=", value, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateIn(List<LocalDateTime> values) {
+            addCriterion("modify_date in", values, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateNotIn(List<LocalDateTime> values) {
+            addCriterion("modify_date not in", values, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateBetween(LocalDateTime value1, LocalDateTime value2) {
+            addCriterion("modify_date between", value1, value2, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andModifyDateNotBetween(LocalDateTime value1, LocalDateTime value2) {
+            addCriterion("modify_date not between", value1, value2, "modifyDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageIsNull() {
+            addCriterion("cover_image is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageIsNotNull() {
+            addCriterion("cover_image is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageEqualTo(Integer value) {
+            addCriterion("cover_image =", value, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageNotEqualTo(Integer value) {
+            addCriterion("cover_image <>", value, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageGreaterThan(Integer value) {
+            addCriterion("cover_image >", value, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageGreaterThanOrEqualTo(Integer value) {
+            addCriterion("cover_image >=", value, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageLessThan(Integer value) {
+            addCriterion("cover_image <", value, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageLessThanOrEqualTo(Integer value) {
+            addCriterion("cover_image <=", value, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageIn(List<Integer> values) {
+            addCriterion("cover_image in", values, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageNotIn(List<Integer> values) {
+            addCriterion("cover_image not in", values, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageBetween(Integer value1, Integer value2) {
+            addCriterion("cover_image between", value1, value2, "coverImage");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoverImageNotBetween(Integer value1, Integer value2) {
+            addCriterion("cover_image not between", value1, value2, "coverImage");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 165 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeUser.java

@@ -0,0 +1,165 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+
+public class AlumniOrganizeUser {
+    private Integer id;
+
+    private Integer fkOrganizeId;
+
+    private Integer fkUserId;
+
+    private String isNormal;
+
+    private String priType;
+
+    private LocalDateTime createDate;
+
+    private Integer authUserId;
+
+    private LocalDateTime authDate;
+
+    private String authMemo;
+
+    private Boolean isDelete;
+
+    private String deleteMemo;
+
+    private LocalDateTime deleteDate;
+
+    private Boolean isForbidden;
+
+    private LocalDateTime modifyDate;
+
+    private Integer modifyUserId;
+
+    private String userMemo;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getFkOrganizeId() {
+        return fkOrganizeId;
+    }
+
+    public void setFkOrganizeId(Integer fkOrganizeId) {
+        this.fkOrganizeId = fkOrganizeId;
+    }
+
+    public Integer getFkUserId() {
+        return fkUserId;
+    }
+
+    public void setFkUserId(Integer fkUserId) {
+        this.fkUserId = fkUserId;
+    }
+
+    public String getIsNormal() {
+        return isNormal;
+    }
+
+    public void setIsNormal(String isNormal) {
+        this.isNormal = isNormal == null ? null : isNormal.trim();
+    }
+
+    public String getPriType() {
+        return priType;
+    }
+
+    public void setPriType(String priType) {
+        this.priType = priType == null ? null : priType.trim();
+    }
+
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    public Integer getAuthUserId() {
+        return authUserId;
+    }
+
+    public void setAuthUserId(Integer authUserId) {
+        this.authUserId = authUserId;
+    }
+
+    public LocalDateTime getAuthDate() {
+        return authDate;
+    }
+
+    public void setAuthDate(LocalDateTime authDate) {
+        this.authDate = authDate;
+    }
+
+    public String getAuthMemo() {
+        return authMemo;
+    }
+
+    public void setAuthMemo(String authMemo) {
+        this.authMemo = authMemo == null ? null : authMemo.trim();
+    }
+
+    public Boolean getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Boolean isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public String getDeleteMemo() {
+        return deleteMemo;
+    }
+
+    public void setDeleteMemo(String deleteMemo) {
+        this.deleteMemo = deleteMemo == null ? null : deleteMemo.trim();
+    }
+
+    public LocalDateTime getDeleteDate() {
+        return deleteDate;
+    }
+
+    public void setDeleteDate(LocalDateTime deleteDate) {
+        this.deleteDate = deleteDate;
+    }
+
+    public Boolean getIsForbidden() {
+        return isForbidden;
+    }
+
+    public void setIsForbidden(Boolean isForbidden) {
+        this.isForbidden = isForbidden;
+    }
+
+    public LocalDateTime getModifyDate() {
+        return modifyDate;
+    }
+
+    public void setModifyDate(LocalDateTime modifyDate) {
+        this.modifyDate = modifyDate;
+    }
+
+    public Integer getModifyUserId() {
+        return modifyUserId;
+    }
+
+    public void setModifyUserId(Integer modifyUserId) {
+        this.modifyUserId = modifyUserId;
+    }
+
+    public String getUserMemo() {
+        return userMemo;
+    }
+
+    public void setUserMemo(String userMemo) {
+        this.userMemo = userMemo == null ? null : userMemo.trim();
+    }
+}

+ 225 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeUserCustom.java

@@ -0,0 +1,225 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+public class AlumniOrganizeUserCustom extends AlumniOrganizeUser {
+
+    private LocalDateTime createDate;
+
+    private LocalDateTime authDate;
+
+    private LocalDateTime deleteDate;
+
+    private LocalDateTime modifyDate;
+
+    private List<Integer> exclusiveOrgUserId;
+
+    private String userName;
+
+    private String organizeName;
+
+    private String roleType;//角色
+
+    private String gender;//性别
+
+    private Date graduationDate;//毕业时间
+
+    private String working;//工作单位
+
+    private String position;//职位描述
+
+    private String place;//居住地址
+
+
+
+    private String photo;//头像
+
+    private String sign;//签名
+
+    private String email;//邮箱
+
+    private String phone;//手机号
+
+    public AlumniOrganizeUserCustom() {
+
+    }
+
+
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Override
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    @Override
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Override
+    public LocalDateTime getAuthDate() {
+        return authDate;
+    }
+
+    @Override
+    public void setAuthDate(LocalDateTime authDate) {
+        this.authDate = authDate;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Override
+    public LocalDateTime getDeleteDate() {
+        return deleteDate;
+    }
+
+    @Override
+    public void setDeleteDate(LocalDateTime deleteDate) {
+        this.deleteDate = deleteDate;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Override
+    public LocalDateTime getModifyDate() {
+        return modifyDate;
+    }
+
+    @Override
+    public void setModifyDate(LocalDateTime modifyDate) {
+        this.modifyDate = modifyDate;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+    public String getOrganizeName() {
+        return organizeName;
+    }
+
+    public void setOrganizeName(String organizeName) {
+        this.organizeName = organizeName;
+    }
+
+    public String getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(String roleType) {
+        this.roleType = roleType;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    public Date getGraduationDate() {
+        return graduationDate;
+    }
+
+    public void setGraduationDate(Date graduationDate) {
+        this.graduationDate = graduationDate;
+    }
+
+    public String getWorking() {
+        return working;
+    }
+
+    public void setWorking(String working) {
+        this.working = working;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public String getPlace() {
+        return place;
+    }
+
+    public void setPlace(String place) {
+        this.place = place;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+
+    public List<Integer> getExclusiveOrgUserId() {
+        return exclusiveOrgUserId;
+    }
+
+    public void setExclusiveOrgUserId(List<Integer> exclusiveOrgUserId) {
+        this.exclusiveOrgUserId = exclusiveOrgUserId;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("AlumniOrganizeUserCustom{");
+        sb.append("createDate=").append(createDate);
+        sb.append(", authDate=").append(authDate);
+        sb.append(", deleteDate=").append(deleteDate);
+        sb.append(", modifyDate=").append(modifyDate);
+        sb.append(", userName='").append(userName).append('\'');
+        sb.append(", organizeName='").append(organizeName).append('\'');
+        sb.append(", roleType='").append(roleType).append('\'');
+        sb.append(", gender='").append(gender).append('\'');
+        sb.append(", graduationDate=").append(graduationDate);
+        sb.append(", working='").append(working).append('\'');
+        sb.append(", position='").append(position).append('\'');
+        sb.append(", place='").append(place).append('\'');
+        sb.append(", photo='").append(photo).append('\'');
+        sb.append(", sign='").append(sign).append('\'');
+        sb.append(", email='").append(email).append('\'');
+        sb.append(", phone='").append(phone).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

File diff suppressed because it is too large
+ 1211 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniOrganizeUserExample.java


+ 68 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniRegion.java

@@ -0,0 +1,68 @@
+package com.dgtis.dorm.manager.db.domain;
+
+public class AlumniRegion {
+    private Integer id;
+
+    private Integer pid;
+
+    private String name;
+
+    private Byte type;
+
+    private Integer code;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getPid() {
+        return pid;
+    }
+
+    public void setPid(Integer pid) {
+        this.pid = pid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public Byte getType() {
+        return type;
+    }
+
+    public void setType(Byte type) {
+        this.type = type;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", pid=").append(pid);
+        sb.append(", name=").append(name);
+        sb.append(", type=").append(type);
+        sb.append(", code=").append(code);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 467 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniUser.java

@@ -0,0 +1,467 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+public class AlumniUser {
+	private Integer id;
+
+	private String loginId;
+
+	private String password;
+
+	private String enUserName;// 姓名首字母
+
+	private String userName;// 真实姓名
+
+	private String roleType;// 角色
+
+	private String gender;// 性别
+
+	private String working;// 工作单位
+
+	private String position;// 职位描述
+
+	private String place;// 居住地址
+
+	private String photo;// 头像
+
+	private String sign;// 签名
+
+	private String email;// 邮箱
+
+	private String phone;// 手机号
+
+	private Boolean hiddenGender;// 是否隐藏性别
+
+	private Boolean hiddenEmail;// 是否隐藏邮箱
+
+	private Boolean hiddenPosi;// 是否隐藏职位
+
+	private Boolean hiddenPlace;// 是否隐藏居住地址
+
+	private Boolean hiddenPhone;// 是否隐藏手机号码
+
+	private Integer auditStatus;// 审核状态(1:申请中,2:驳回,3:通过,0默认状态)
+
+	private String reason;// 驳回原因
+
+	private String openId;
+
+	private String major;// 专业
+
+	private Date createDate;// 创建时间
+
+	private Date lastLoginTime;// 最后一次登录时间
+
+	private String lastLoginTimeStr;//最后一次登录时间(字符串格式)
+
+	private String formId;// 用户提交表单的id
+
+	private Date auditDataTime;//审核时间
+
+	private String address;//邮寄地址
+
+	private String postcode;//邮政编码
+
+    private String annotation;//备注
+
+    //新加字段
+    private String pDocumentType;//个人证件类型
+    private String pDocumentNum;//个人证件号码
+    private String pPhone;//个人手机号
+    private String pEmail;//个人电子邮箱
+    private String pAddress;//个人用户地址
+    private String lInstitutionName;//法人组织机构全称
+    private String lInstitutionType;//法人组织证件类型
+    private String lInstitutionNum;//法人组织证件号码
+    private String lUsername;//法人姓名
+    private String lDocumentType;//法人证件类型
+    private String lDocumentNum;//法人证件号码
+    private String lPhone;//法人联系方式
+    private String lEmail;//法人电子邮箱
+    private String lAddress;//法人联系地址
+    private String isRealname;//是否实名(1实名,2未实名)
+	private String identity;//身份0个人1法人
+
+	public String getMajor() {
+		return major;
+	}
+
+	public void setMajor(String major) {
+		this.major = major;
+	}
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getLoginId() {
+		return loginId;
+	}
+
+	public void setLoginId(String loginId) {
+		this.loginId = loginId == null ? null : loginId.trim();
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password == null ? null : password.trim();
+	}
+
+	public String getEnUserName() {
+		return enUserName;
+	}
+
+	public void setEnUserName(String enUserName) {
+		this.enUserName = enUserName;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName == null ? null : userName.trim();
+	}
+
+	public String getRoleType() {
+		return roleType;
+	}
+
+	public void setRoleType(String roleType) {
+		this.roleType = roleType == null ? null : roleType.trim();
+	}
+
+	public String getGender() {
+		return gender;
+	}
+
+	public void setGender(String gender) {
+		this.gender = gender == null ? null : gender.trim();
+	}
+
+	public String getWorking() {
+		return working;
+	}
+
+	public void setWorking(String working) {
+		this.working = working == null ? null : working.trim();
+	}
+
+	public String getPosition() {
+		return position;
+	}
+
+	public void setPosition(String position) {
+		this.position = position == null ? null : position.trim();
+	}
+
+	public String getPlace() {
+		return place;
+	}
+
+	public void setPlace(String place) {
+		this.place = place == null ? null : place.trim();
+	}
+
+	public String getPhoto() {
+		return photo;
+	}
+
+	public void setPhoto(String photo) {
+		this.photo = photo == null ? null : photo.trim();
+	}
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign == null ? null : sign.trim();
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email == null ? null : email.trim();
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone == null ? null : phone.trim();
+	}
+
+	public Boolean getHiddenGender() {
+		return hiddenGender;
+	}
+
+	public void setHiddenGender(Boolean hiddenGender) {
+		this.hiddenGender = hiddenGender;
+	}
+
+	public Boolean getHiddenEmail() {
+		return hiddenEmail;
+	}
+
+	public void setHiddenEmail(Boolean hiddenEmail) {
+		this.hiddenEmail = hiddenEmail;
+	}
+
+	public Boolean getHiddenPosi() {
+		return hiddenPosi;
+	}
+
+	public void setHiddenPosi(Boolean hiddenPosi) {
+		this.hiddenPosi = hiddenPosi;
+	}
+
+	public Boolean getHiddenPlace() {
+		return hiddenPlace;
+	}
+
+	public void setHiddenPlace(Boolean hiddenPlace) {
+		this.hiddenPlace = hiddenPlace;
+	}
+
+	public Boolean getHiddenPhone() {
+		return hiddenPhone;
+	}
+
+	public void setHiddenPhone(Boolean hiddenPhone) {
+		this.hiddenPhone = hiddenPhone;
+	}
+
+	public Integer getAuditStatus() {
+		return auditStatus;
+	}
+
+	public void setAuditStatus(Integer auditStatus) {
+		this.auditStatus = auditStatus;
+	}
+
+	public String getReason() {
+		return reason;
+	}
+
+	public void setReason(String reason) {
+		this.reason = reason;
+	}
+
+	public String getOpenId() {
+		return openId;
+	}
+
+	public void setOpenId(String openId) {
+		this.openId = openId == null ? null : openId.trim();
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	public Date getCreateDate() {
+		return createDate;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	public void setCreateDate(Date createDate) {
+		this.createDate = createDate;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public Date getLastLoginTime() {
+		return lastLoginTime;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public void setLastLoginTime(Date lastLoginTime) {
+		this.lastLoginTime = lastLoginTime;
+	}
+
+	public String getFormId() {
+		return formId;
+	}
+
+	public void setFormId(String formId) {
+		this.formId = formId;
+	}
+
+	public Date getAuditDataTime() {
+		return auditDataTime;
+	}
+
+	public void setAuditDataTime(Date auditDataTime) {
+		this.auditDataTime = auditDataTime;
+	}
+
+	public String getAddress() {
+		return address;
+	}
+
+	public void setAddress(String address) {
+		this.address = address;
+	}
+
+	public String getPostcode() {
+		return postcode;
+	}
+
+	public void setPostcode(String postcode) {
+		this.postcode = postcode;
+	}
+
+    public String getAnnotation() {
+        return annotation;
+    }
+
+    public void setAnnotation(String annotation) {
+        this.annotation = annotation;
+    }
+
+	public String getLastLoginTimeStr() {
+		return lastLoginTimeStr;
+	}
+
+	public void setLastLoginTimeStr(String lastLoginTimeStr) {
+		this.lastLoginTimeStr = lastLoginTimeStr;
+	}
+
+    public String getpDocumentType() {
+        return pDocumentType;
+    }
+
+    public void setpDocumentType(String pDocumentType) {
+        this.pDocumentType = pDocumentType;
+    }
+
+    public String getpDocumentNum() {
+        return pDocumentNum;
+    }
+
+    public void setpDocumentNum(String pDocumentNum) {
+        this.pDocumentNum = pDocumentNum;
+    }
+
+    public String getpPhone() {
+        return pPhone;
+    }
+
+    public void setpPhone(String pPhone) {
+        this.pPhone = pPhone;
+    }
+
+    public String getpEmail() {
+        return pEmail;
+    }
+
+    public void setpEmail(String pEmail) {
+        this.pEmail = pEmail;
+    }
+
+    public String getpAddress() {
+        return pAddress;
+    }
+
+    public void setpAddress(String pAddress) {
+        this.pAddress = pAddress;
+    }
+
+    public String getlInstitutionName() {
+        return lInstitutionName;
+    }
+
+    public void setlInstitutionName(String lInstitutionName) {
+        this.lInstitutionName = lInstitutionName;
+    }
+
+    public String getlInstitutionType() {
+        return lInstitutionType;
+    }
+
+    public void setlInstitutionType(String lInstitutionType) {
+        this.lInstitutionType = lInstitutionType;
+    }
+
+    public String getlInstitutionNum() {
+        return lInstitutionNum;
+    }
+
+    public void setlInstitutionNum(String lInstitutionNum) {
+        this.lInstitutionNum = lInstitutionNum;
+    }
+
+    public String getlUsername() {
+        return lUsername;
+    }
+
+    public void setlUsername(String lUsername) {
+        this.lUsername = lUsername;
+    }
+
+    public String getlDocumentType() {
+        return lDocumentType;
+    }
+
+    public void setlDocumentType(String lDocumentType) {
+        this.lDocumentType = lDocumentType;
+    }
+
+    public String getlDocumentNum() {
+        return lDocumentNum;
+    }
+
+    public void setlDocumentNum(String lDocumentNum) {
+        this.lDocumentNum = lDocumentNum;
+    }
+
+    public String getlPhone() {
+        return lPhone;
+    }
+
+    public void setlPhone(String lPhone) {
+        this.lPhone = lPhone;
+    }
+
+    public String getlEmail() {
+        return lEmail;
+    }
+
+    public void setlEmail(String lEmail) {
+        this.lEmail = lEmail;
+    }
+
+    public String getlAddress() {
+        return lAddress;
+    }
+
+    public void setlAddress(String lAddress) {
+        this.lAddress = lAddress;
+    }
+
+    public String getIsRealname() {
+        return isRealname;
+    }
+
+    public void setIsRealname(String isRealname) {
+        this.isRealname = isRealname;
+    }
+
+	public String getIdentity() {
+		return identity;
+	}
+
+	public void setIdentity(String identity) {
+		this.identity = identity;
+	}
+}

+ 86 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/AlumniUserMessage.java

@@ -0,0 +1,86 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.util.Date;
+
+public class AlumniUserMessage {
+    private Integer id;
+
+    private String fkUserId;//接收人id
+
+    private String messageType;//消息类型:(私有消息:private,系统消息:system,通知消息:notification)
+
+    private String content;//消息内容
+
+    private String fromUserId;//发送人id
+
+    private Date createTime;//创建时间
+
+    private Boolean isRead;//是否已读
+
+    private Boolean isDelete;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getFkUserId() {
+        return fkUserId;
+    }
+
+    public void setFkUserId(String fkUserId) {
+        this.fkUserId = fkUserId == null ? null : fkUserId.trim();
+    }
+
+    public String getMessageType() {
+        return messageType;
+    }
+
+    public void setMessageType(String messageType) {
+        this.messageType = messageType == null ? null : messageType.trim();
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content == null ? null : content.trim();
+    }
+
+    public String getFromUserId() {
+        return fromUserId;
+    }
+
+    public void setFromUserId(String fromUserId) {
+        this.fromUserId = fromUserId == null ? null : fromUserId.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Boolean getIsRead() {
+		return isRead;
+	}
+
+	public void setIsRead(Boolean isRead) {
+		this.isRead = isRead;
+	}
+
+	public Boolean getIsDelete() {
+		return isDelete;
+	}
+
+	public void setIsDelete(Boolean isDelete) {
+		this.isDelete = isDelete;
+	}
+
+}

+ 63 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/ApproveHistory.java

@@ -0,0 +1,63 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import net.sf.json.JSON;
+
+import java.time.LocalDateTime;
+
+public class ApproveHistory {
+
+    private int id;
+    private int userId;
+    private LocalDateTime createDate;
+    private String createBy;
+    private JSON userInfo;
+    private String comments;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public JSON getUserInfo() {
+        return userInfo;
+    }
+
+    public void setUserInfo(JSON userInfo) {
+        this.userInfo = userInfo;
+    }
+
+    public String getComments() {
+        return comments;
+    }
+
+    public void setComments(String comments) {
+        this.comments = comments;
+    }
+}

+ 115 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Banner.java

@@ -0,0 +1,115 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+
+public class Banner {
+
+    private int id;
+    private String title; // banner 标题
+    private String content; // banner 内容
+    private int position; // banenr位置:1-首页
+    private boolean enabled; // 是否启用:0-不启用; 1-启用
+    private LocalDateTime createDate; // 创建时间
+    private int orderIndex; // 排序下标
+    private int creatorId; // 创建者id
+    private String image; // banner 图片
+    private int newsId; // 关联的新闻id
+    private String url; // 跳转的url
+    private String activityType; // 关联的活动类型
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getPosition() {
+        return position;
+    }
+
+    public void setPosition(int position) {
+        this.position = position;
+    }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    public int getOrderIndex() {
+        return orderIndex;
+    }
+
+    public void setOrderIndex(int orderIndex) {
+        this.orderIndex = orderIndex;
+    }
+
+    public int getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(int creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public int getNewsId() {
+        return newsId;
+    }
+
+    public void setNewsId(int newsId) {
+        this.newsId = newsId;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getActivityType() {
+        return activityType;
+    }
+
+    public void setActivityType(String activityType) {
+        this.activityType = activityType;
+    }
+}

+ 40 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/DemandSensitiveWord.java

@@ -0,0 +1,40 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.util.Objects;
+
+public class DemandSensitiveWord {
+    private Integer id;//主键id
+
+    private String badword;//关键字
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getBadword() {
+        return badword;
+    }
+
+    public void setBadword(String badword) {
+        this.badword = badword == null ? null : badword.trim();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        DemandSensitiveWord that = (DemandSensitiveWord) o;
+        return Objects.equals(id, that.id) &&
+                Objects.equals(badword, that.badword);
+    }
+
+    @Override
+    public int hashCode() {
+
+        return Objects.hash(id, badword);
+    }
+}

+ 393 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/News.java

@@ -0,0 +1,393 @@
+package com.dgtis.dorm.manager.db.domain;
+
+//import com.fasterxml.jackson.annotation.JsonFormat;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.math.BigDecimal;
+//import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+public class News {
+
+    private int id;
+    private String type; // 六种类型:schoolInfo(校园动态)、alumniInfo(师生风采)、activity(校园活动)、lecture(讲座信息)、reading(悦读)、notice(公告管理)
+    private String title; // 文章标题
+    private String content; // 文章内容
+    private int weight; //权重
+    private String image; // 轮播图片
+    private String file; // 附件地址
+    private String fileName; //附件名称
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime createDate; // 创建日期
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime registStartDate; // 活动报名开始时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime registEndDate; // 活动报名截止时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime activityStartDate; // 活动开始时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime activityEndDate; // 活动结束时间
+    private String activityState; // 活动当前状态:报名进行中、报名已截止、报名待开始、活动进行中、活动已截止
+    private int activityAuditState; // 活动审核状态:0-待审核、1-审核通过、2-审核被拒
+    private String activityAddress; // 活动地址
+    private String activity; // 活动标签(逗号分隔):吃吃喝喝,校园活动,...
+    private String creatorId; // 创建者Id
+    private String creator; // 创建者名字
+    private int orderIndex; // 排序下标
+    private int activityForNews; // 活动新闻关联的活动Id
+    private LocalDateTime activityForNewsDate; // 关联活动的时间
+    private String activityForNewsAddress; // 关联活动的地址d
+    private String activityForNewsFlag; // 关联活动的标签
+    private BigDecimal activityCost; // 活动经费
+
+    private boolean join; // 用于标识用户是否已参加了该活动
+
+    private Integer[] organizeId; // 推送圈子id
+
+    private NewsCriterion newsCriterion; // 查询条件信息
+
+    private int commentCount; // 评论数量
+    private int zanCount; // 点赞数量
+    private int userCount; // 参加人数
+    private int hadCount; // 是否点过赞
+
+    private String universitarios; // 学位描述
+
+    private String photo;
+
+    private List<NewsComment> lstNewsComment; //评论列表
+    private List<NewsZan> lstNewsZan; //点赞列表
+    
+    private Integer activityLimit;//活动的限制报名人数
+    
+    private String isAdmin;
+
+    private String activityType;//校友活动类型(mail:邮寄)
+    
+    private List<Map<String, Object>>  listObject;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getWeight() {
+        return weight;
+    }
+
+    public void setWeight(int weight) {
+        this.weight = weight;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public String getFile() {
+        return file;
+    }
+
+    public void setFile(String file) {
+        this.file = file;
+    }
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getActivityStartDate() {
+        return activityStartDate;
+    }
+
+    public void setActivityStartDate(LocalDateTime activityStartDate) {
+        this.activityStartDate = activityStartDate;
+    }
+   // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getActivityEndDate() {
+        return activityEndDate;
+    }
+
+    public void setActivityEndDate(LocalDateTime activityEndDate) {
+        this.activityEndDate = activityEndDate;
+    }
+
+    public String getActivity() {
+        return activity;
+    }
+
+    public void setActivity(String activity) {
+        this.activity = activity;
+    }
+
+    public Integer[] getOrganizeId() {
+        return organizeId;
+    }
+
+    public void setOrganizeId(Integer[] organizeId) {
+        this.organizeId = organizeId;
+    }
+
+    public String getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(String creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getRegistStartDate() {
+        return registStartDate;
+    }
+
+    public void setRegistStartDate(LocalDateTime registStartDate) {
+        this.registStartDate = registStartDate;
+    }
+    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getRegistEndDate() {
+        return registEndDate;
+    }
+
+    public void setRegistEndDate(LocalDateTime registEndDate) {
+        this.registEndDate = registEndDate;
+    }
+
+    public int getOrderIndex() {
+        return orderIndex;
+    }
+
+    public void setOrderIndex(int orderIndex) {
+        this.orderIndex = orderIndex;
+    }
+
+    public NewsCriterion getNewsCriterion() {
+        return newsCriterion;
+    }
+
+    public void setNewsCriterion(NewsCriterion newsCriterion) {
+        this.newsCriterion = newsCriterion;
+    }
+
+    public String getActivityState() {
+        return activityState;
+    }
+
+    public void setActivityState(String activityState) {
+        this.activityState = activityState;
+    }
+
+    public int getActivityAuditState() {
+        return activityAuditState;
+    }
+
+    public void setActivityAuditState(int activityAuditState) {
+        this.activityAuditState = activityAuditState;
+    }
+
+    public int getActivityForNews() {
+        return activityForNews;
+    }
+
+    public void setActivityForNews(int activityForNews) {
+        this.activityForNews = activityForNews;
+    }
+
+    public boolean isJoin() {
+        return join;
+    }
+
+    public void setJoin(boolean join) {
+        this.join = join;
+    }
+
+    public int getCommentCount() {
+        return commentCount;
+    }
+
+    public void setCommentCount(int commentCount) {
+        this.commentCount = commentCount;
+    }
+
+    public int getZanCount() {
+        return zanCount;
+    }
+
+    public void setZanCount(int zanCount) {
+        this.zanCount = zanCount;
+    }
+
+    public int getUserCount() {
+        return userCount;
+    }
+
+    public void setUserCount(int userCount) {
+        this.userCount = userCount;
+    }
+
+    public String getActivityAddress() {
+        return activityAddress;
+    }
+
+    public void setActivityAddress(String activityAddress) {
+        this.activityAddress = activityAddress;
+    }
+    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public LocalDateTime getActivityForNewsDate() {
+        return activityForNewsDate;
+    }
+
+    public void setActivityForNewsDate(LocalDateTime activityForNewsDate) {
+        this.activityForNewsDate = activityForNewsDate;
+    }
+
+    public String getActivityForNewsAddress() {
+        return activityForNewsAddress;
+    }
+
+    public void setActivityForNewsAddress(String activityForNewsAddress) {
+        this.activityForNewsAddress = activityForNewsAddress;
+    }
+
+    public String getUniversitarios() {
+        return universitarios;
+    }
+
+    public void setUniversitarios(String universitarios) {
+        this.universitarios = universitarios;
+    }
+
+    public String getActivityForNewsFlag() {
+        return activityForNewsFlag;
+    }
+
+    public void setActivityForNewsFlag(String activityForNewsFlag) {
+        this.activityForNewsFlag = activityForNewsFlag;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+    public int getHadCount() {
+        return hadCount;
+    }
+
+    public void setHadCount(int hadCount) {
+        this.hadCount = hadCount;
+    }
+
+    public BigDecimal getActivityCost() {
+        return activityCost;
+    }
+
+    public void setActivityCost(BigDecimal activityCost) {
+        this.activityCost = activityCost;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public List<NewsComment> getLstNewsComment() {
+        return lstNewsComment;
+    }
+
+    public void setLstNewsComment(List<NewsComment> lstNewsComment) {
+        this.lstNewsComment = lstNewsComment;
+    }
+
+	public Integer getActivityLimit() {
+		return activityLimit;
+	}
+
+	public void setActivityLimit(Integer activityLimit) {
+		this.activityLimit = activityLimit;
+	}
+
+    public List<NewsZan> getLstNewsZan() {
+        return lstNewsZan;
+    }
+
+    public void setLstNewsZan(List<NewsZan> lstNewsZan) {
+        this.lstNewsZan = lstNewsZan;
+    }
+
+	public List<Map<String, Object>> getListObject() {
+		return listObject;
+	}
+
+	public void setListObject(List<Map<String, Object>> listObject) {
+		this.listObject = listObject;
+	}
+
+	public String getIsAdmin() {
+		return isAdmin;
+	}
+
+	public void setIsAdmin(String isAdmin) {
+		this.isAdmin = isAdmin;
+	}
+
+    public String getActivityType() {
+        return activityType;
+    }
+
+    public void setActivityType(String activityType) {
+        this.activityType = activityType;
+    }
+
+
+}

+ 116 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsComment.java

@@ -0,0 +1,116 @@
+package com.dgtis.dorm.manager.db.domain;
+
+
+
+public class NewsComment {
+
+    private int id;
+    private int newsId; // 被评论的新闻id
+    private String newsName; //被评论的新闻名称
+    private int userId; // 评论的用户id
+    private String userName; //评论的用户名称
+    private String photo; //评论用户的照片
+    private String content; // 评论内容
+    private String createDate; // 评论时间
+    private String newsTitle;//来源标题
+    
+    private Integer commentFirstId;
+    private Integer commentSecondId;
+    private String  commentSecondUserName;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getNewsId() {
+        return newsId;
+    }
+
+    public void setNewsId(int newsId) {
+        this.newsId = newsId;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(String createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+	public Integer getCommentSecondId() {
+		return commentSecondId;
+	}
+
+	public void setCommentSecondId(Integer commentSecondId) {
+		this.commentSecondId = commentSecondId;
+	}
+
+	public Integer getCommentFirstId() {
+		return commentFirstId;
+	}
+
+	public void setCommentFirstId(Integer commentFirstId) {
+		this.commentFirstId = commentFirstId;
+	}
+
+	public String getCommentSecondUserName() {
+		return commentSecondUserName;
+	}
+
+	public void setCommentSecondUserName(String commentSecondUserName) {
+		this.commentSecondUserName = commentSecondUserName;
+	}
+
+    public String getNewsName() {
+        return newsName;
+    }
+
+    public void setNewsName(String newsName) {
+        this.newsName = newsName;
+    }
+
+    public String getNewsTitle() {
+        return newsTitle;
+    }
+
+    public void setNewsTitle(String newsTitle) {
+        this.newsTitle = newsTitle;
+    }
+}

+ 248 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsCriterion.java

@@ -0,0 +1,248 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+public class NewsCriterion {
+
+    private String title;  // 标题
+    private String key; // 关键字
+    private String type; // 新闻类型 schoolInfo(校园动态)、alumniInfo(师生风采)、activity(校园活动)、activityNews(活动新闻)、lecture(讲座信息)、reading(悦读)、notice(公告管理)
+    private String[] activityType; // 活动标签
+    private int activityState; // 活动状态 1 - 报名进行中; 2 - 报名已截止; 3 - 报名待开始; 4 - 活动进行中; 5 - 活动已结束
+    private String creator; // 创建者名称
+    private int creatorId; // 创建者Id
+    private int page = 1;
+    private int limit = 10;
+    private String sort;
+    private LocalDate[] dateRange; // 时间范围:[活动开始时间, 活动结束时间]
+    private int activityAuditState = -1; // 活动审核状态-0:待审核;1:审核通过;2:审核被拒
+    private boolean myJoin = false; // true - 参加的活动
+    private boolean commentOn = false; // true - 查询评论数量、点赞数量
+    private int userIdForZan; // 用户查询点赞的id
+    private int userId; //当前登录用户id
+
+    private String sql;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String[] getActivityType() {
+        return activityType;
+    }
+
+    public void setActivityType(String[] activityType) {
+        this.activityType = activityType;
+    }
+
+    public int getActivityState() {
+        return activityState;
+    }
+
+    public void setActivityState(int activityState) {
+        this.activityState = activityState;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public int getPage() {
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    public int getLimit() {
+        return limit;
+    }
+
+    public void setLimit(int limit) {
+        this.limit = limit;
+    }
+
+    public String getSort() {
+        return sort;
+    }
+
+    public void setSort(String sort) {
+        this.sort = sort;
+    }
+
+    public LocalDate[] getDateRange() {
+        return dateRange;
+    }
+
+    public void setDateRange(LocalDate[] dateRange) {
+        this.dateRange = dateRange;
+    }
+
+    public int getActivityAuditState() {
+        return activityAuditState;
+    }
+
+    public void setActivityAuditState(int activityAuditState) {
+        this.activityAuditState = activityAuditState;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public int getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(int creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public boolean isMyJoin() {
+        return myJoin;
+    }
+
+    public void setMyJoin(boolean myJoin) {
+        this.myJoin = myJoin;
+    }
+
+    public boolean isCommentOn() {
+        return commentOn;
+    }
+
+    public void setCommentOn(boolean commentOn) {
+        this.commentOn = commentOn;
+    }
+
+    public int getUserIdForZan() {
+        return userIdForZan;
+    }
+
+    public void setUserIdForZan(int userIdForZan) {
+        this.userIdForZan = userIdForZan;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public String getSql() {
+        if(StringUtils.isBlank(sql)) {
+            this.buildSql();
+        }
+        return sql;
+    }
+
+    public void setSql(String sql) {
+        this.sql = sql;
+    }
+
+    private void buildSql() {
+        this.sql = "1 = 1";
+
+        if(this.title != null) {
+            this.sql += " and news_title like '%" + this.title + "%'";
+        }
+
+        if(StringUtils.isNotBlank(this.key)) {
+            this.sql += " and (news_title like '%" + this.key + "%' or news_content like '%" + this.key + "%')";
+        }
+
+        if(StringUtils.isNotBlank(this.creator)) {
+
+        }
+
+        if(this.creatorId != 0) {
+            this.sql += " and creatorId = " + this.creatorId;
+        }
+
+        if(this.type != null) {
+            this.sql += " and news_type = '" + this.type + "'";
+
+            if(this.type.equals("activity")) {
+                if(this.activityType != null) {
+                    for(String str : this.activityType) {
+                        this.sql += " and find_in_set('" + str + "', activity)";
+                    }
+                    //this.sql += " and activity = '" + this.activityType + "'";
+                }
+
+//                LocalDate nowDate = LocalDate.now();
+//                if(this.activityState == 1) { // 报名进行中: 当前时间大于报名开始时间且小于报名截至时间
+//                    this.sql += " and '" + nowDate + "' between date_format(activity_regist_start_date, '%Y-%m-%d')  and date_format(activity_regist_end_date, '%Y-%m-%d') ";
+//                } else if(this.activityState == 2) { // 报名已截止: 当前时间大于报名截止时间,且小于活动开始时间
+//                    this.sql += " and '" + nowDate + "' between date_format(activity_regist_end_date, '%Y-%m-%d') and date_sub(activity_start_date, interval 1 day)";
+//                } else if(this.activityState == 3) { // 报名待开始: 当前时间小于报名开始时间
+//                    this.sql += " and date_format(activity_regist_start_date, '%Y-%m-%d') > '" + nowDate + "'";
+//                } else if(this.activityState == 4) { // 活动进行中: 当前时间大于活动开始时间,且小于活动结束时间
+//                    this.sql += " and '" + nowDate + "' between date_format(activity_start_date, '%Y-%m-%d') and date_format(activity_end_date, '%Y-%m-%d')";
+//                } else if(this.activityState == 5) { // 活动已结束: 当前时间大于活动结束时间
+//                    this.sql += " and date_format(activity_end_date, '%Y-%m-%d') < '" + nowDate + "'";
+//                }
+
+
+                LocalDateTime nowDate = LocalDateTime.now();
+                /*if(this.activityState == 1) { // 报名进行中: 当前时间大于报名开始时间且小于报名截至时间
+                    this.sql += " and '" + nowDate + "' between activity_regist_start_date  and activity_regist_end_date ";
+                } else if(this.activityState == 2) { // 报名已截止: 当前时间大于报名截止时间,且小于活动开始时间
+                    this.sql += " and '" + nowDate + "' between activity_regist_end_date and activity_start_date ";
+                } else if(this.activityState == 3) { // 报名待开始: 当前时间小于报名开始时间
+                    this.sql += " and activity_regist_start_date > '" + nowDate + "'";
+                } else */if(this.activityState == 4) { // 活动进行中: 当前时间大于活动开始时间,且小于活动结束时间
+                    this.sql += " and '" + nowDate + "' between activity_start_date and activity_end_date";
+                } else if(this.activityState == 5) { // 活动已结束: 当前时间大于活动结束时间
+                    this.sql += " and activity_end_date < '" + nowDate + "'";
+                }
+
+                if(this.dateRange != null) {
+                    this.sql += " and date_format(activity_start_date, '%Y-%m-%d') >= '" + this.dateRange[0] + "' and date_format(activity_end_date, '%Y-%m-%d') <= '" + this.dateRange[1] + "'";
+                }
+
+                if(this.activityAuditState != -1) {
+                    this.sql += " and activity_audit_state = " + this.activityAuditState;
+                }
+
+            } else if(this.type.equals("lecture")) {
+                if(this.dateRange != null) {
+                    this.sql += " and date_format(lecture_start_date, '%Y-%m-%d') between '" + this.dateRange[0] + "' and '" + this.dateRange[1] + "'";
+                }
+            } else {
+                if(this.dateRange != null) {
+                    this.sql += " and date_format(create_date, '%Y-%m-%d') between '" + this.dateRange[0] + "' and '" + this.dateRange[1] + "'";
+                }
+            }
+        } else {
+            this.sql += " and (case when zhll_news.news_type = 'activity' then zhll_news.activity_audit_state = 1 else zhll_news.activity_audit_state = 0 end) ";
+        }
+
+
+    }
+}

+ 80 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsOrganize.java

@@ -0,0 +1,80 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+
+public class NewsOrganize {
+
+    private int id;
+    private int newsId; // 新闻/活动/... id
+    private int organizeId; // 圈子id
+    private int userId; // 创建者id
+    private LocalDateTime createDate; // 创建时间
+    private String fromType; // 0 - 表示后台创建; 1 - 表示移动端创建
+    private String organizeName; // 组织名称
+    private String activityName; // 活动名称/标题
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getNewsId() {
+        return newsId;
+    }
+
+    public void setNewsId(int newsId) {
+        this.newsId = newsId;
+    }
+
+    public int getOrganizeId() {
+        return organizeId;
+    }
+
+    public void setOrganizeId(int organizeId) {
+        this.organizeId = organizeId;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public LocalDateTime getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(LocalDateTime createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getFromType() {
+        return fromType;
+    }
+
+    public void setFromType(String fromType) {
+        this.fromType = fromType;
+    }
+
+    public String getOrganizeName() {
+        return organizeName;
+    }
+
+    public void setOrganizeName(String organizeName) {
+        this.organizeName = organizeName;
+    }
+
+    public String getActivityName() {
+        return activityName;
+    }
+
+    public void setActivityName(String activityName) {
+        this.activityName = activityName;
+    }
+}
+

+ 60 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/NewsZan.java

@@ -0,0 +1,60 @@
+package com.dgtis.dorm.manager.db.domain;
+
+public class NewsZan {
+
+    private int id;
+    private int newsId;
+    private int userId;
+    private boolean deleted;
+
+    private String userName; //用户名称
+    private String photo; //用户头像
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getNewsId() {
+        return newsId;
+    }
+
+    public void setNewsId(int newsId) {
+        this.newsId = newsId;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public boolean isDeleted() {
+        return deleted;
+    }
+
+    public void setDeleted(boolean deleted) {
+        this.deleted = deleted;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+}

+ 79 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/QuestionsAnswers.java

@@ -0,0 +1,79 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+public class QuestionsAnswers {
+    private Integer id;
+
+    private String questions;
+
+    private String answers;
+
+    private Integer creatorId;
+
+    private Date createDate;
+    
+    private String creator;
+
+    private Boolean isAnswer;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getQuestions() {
+        return questions;
+    }
+
+    public void setQuestions(String questions) {
+        this.questions = questions == null ? null : questions.trim();
+    }
+
+    public String getAnswers() {
+        return answers;
+    }
+
+    public void setAnswers(String answers) {
+        this.answers = answers == null ? null : answers.trim();
+    }
+
+    public Integer getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(Integer creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getCreator() {
+		return creator;
+	}
+
+	public void setCreator(String creator) {
+		this.creator = creator;
+	}
+
+	public Boolean getIsAnswer() {
+        return isAnswer;
+    }
+
+    public void setIsAnswer(Boolean isAnswer) {
+        this.isAnswer = isAnswer;
+    }
+
+}

+ 227 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/ReservationRecord.java

@@ -0,0 +1,227 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import java.util.Date;
+
+/**
+ * 用户预约叫号记录表 reservation_record
+ * 
+ * @author ruoyi
+ * @date 2019-07-10
+ */
+public class ReservationRecord
+{
+	private static final long serialVersionUID = 1L;
+	
+	/** 主键 */
+	private String id;
+	/** 预约事项id */
+	private String serviceId;
+	/** 预约事项名称 */
+	private String serviceName;
+	/** 小程序端用户id */
+	private String userId;
+	/** 部门id */
+	private String deptId;
+	/** 部门名称 */
+	private String deptName;
+	/** 申报人姓名 */
+	private String applicantName;
+	/** 申报人身份证 */
+	private String applicantIdCard;
+	/** 预约日期 */
+	private Date reservationDate;
+	/** 预约时段(AM:上午,PM:下午) */
+	private String reservationInterval;
+	/** 预约号码 */
+	private Integer reservationNumber;
+	/** 预约状态(1已成功、2已取消、3已失约、4已完结) */
+	private String reservationState;
+	/** 添加时间 */
+	private Date addTime;
+	/** 添加人 */
+	private String addUser;
+	/** 修改时间 */
+	private Date modifyTime;
+	/** 修改人 */
+	private String modifyUser;
+	/** 删除标记 */
+	private String delFlag;
+
+	public void setId(String id) 
+	{
+		this.id = id;
+	}
+
+	public String getId() 
+	{
+		return id;
+	}
+	public void setServiceId(String serviceId) 
+	{
+		this.serviceId = serviceId;
+	}
+
+	public String getServiceId() 
+	{
+		return serviceId;
+	}
+	public void setServiceName(String serviceName) 
+	{
+		this.serviceName = serviceName;
+	}
+
+	public String getServiceName() 
+	{
+		return serviceName;
+	}
+	public void setUserId(String userId) 
+	{
+		this.userId = userId;
+	}
+
+	public String getUserId() 
+	{
+		return userId;
+	}
+	public void setDeptId(String deptId) 
+	{
+		this.deptId = deptId;
+	}
+
+	public String getDeptId() 
+	{
+		return deptId;
+	}
+	public void setDeptName(String deptName) 
+	{
+		this.deptName = deptName;
+	}
+
+	public String getDeptName() 
+	{
+		return deptName;
+	}
+	public void setApplicantName(String applicantName) 
+	{
+		this.applicantName = applicantName;
+	}
+
+	public String getApplicantName() 
+	{
+		return applicantName;
+	}
+	public void setApplicantIdCard(String applicantIdCard) 
+	{
+		this.applicantIdCard = applicantIdCard;
+	}
+
+	public String getApplicantIdCard() 
+	{
+		return applicantIdCard;
+	}
+	public void setReservationDate(Date reservationDate) 
+	{
+		this.reservationDate = reservationDate;
+	}
+
+	public Date getReservationDate() 
+	{
+		return reservationDate;
+	}
+	public void setReservationInterval(String reservationInterval) 
+	{
+		this.reservationInterval = reservationInterval;
+	}
+
+	public String getReservationInterval() 
+	{
+		return reservationInterval;
+	}
+	public void setReservationNumber(Integer reservationNumber) 
+	{
+		this.reservationNumber = reservationNumber;
+	}
+
+	public Integer getReservationNumber() 
+	{
+		return reservationNumber;
+	}
+	public void setReservationState(String reservationState) 
+	{
+		this.reservationState = reservationState;
+	}
+
+	public String getReservationState() 
+	{
+		return reservationState;
+	}
+	public void setAddTime(Date addTime) 
+	{
+		this.addTime = addTime;
+	}
+
+	public Date getAddTime() 
+	{
+		return addTime;
+	}
+	public void setAddUser(String addUser) 
+	{
+		this.addUser = addUser;
+	}
+
+	public String getAddUser() 
+	{
+		return addUser;
+	}
+	public void setModifyTime(Date modifyTime) 
+	{
+		this.modifyTime = modifyTime;
+	}
+
+	public Date getModifyTime() 
+	{
+		return modifyTime;
+	}
+	public void setModifyUser(String modifyUser) 
+	{
+		this.modifyUser = modifyUser;
+	}
+
+	public String getModifyUser() 
+	{
+		return modifyUser;
+	}
+	public void setDelFlag(String delFlag) 
+	{
+		this.delFlag = delFlag;
+	}
+
+	public String getDelFlag() 
+	{
+		return delFlag;
+	}
+
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("serviceId", getServiceId())
+            .append("serviceName", getServiceName())
+            .append("userId", getUserId())
+            .append("deptId", getDeptId())
+            .append("deptName", getDeptName())
+            .append("applicantName", getApplicantName())
+            .append("applicantIdCard", getApplicantIdCard())
+            .append("reservationDate", getReservationDate())
+            .append("reservationInterval", getReservationInterval())
+            .append("reservationNumber", getReservationNumber())
+            .append("reservationState", getReservationState())
+            .append("addTime", getAddTime())
+            .append("addUser", getAddUser())
+            .append("modifyTime", getModifyTime())
+            .append("modifyUser", getModifyUser())
+            .append("delFlag", getDelFlag())
+            .toString();
+    }
+}

+ 352 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Role.java

@@ -0,0 +1,352 @@
+package com.dgtis.dorm.manager.db.domain;
+
+import java.time.LocalDateTime;
+
+public class Role {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role.id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role.role_name
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private String roleName;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role.create_time
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private LocalDateTime createTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role.create_user_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private String createUserId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role.modify_time
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private LocalDateTime modifyTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role.modify_user_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    private String modifyUserId;
+
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role.id
+     *
+     * @return the value of alumni_role.id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role.id
+     *
+     * @param id the value for alumni_role.id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role.role_name
+     *
+     * @return the value of alumni_role.role_name
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public String getRoleName() {
+        return roleName;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role.role_name
+     *
+     * @param roleName the value for alumni_role.role_name
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setRoleName(String roleName) {
+        this.roleName = roleName;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role.create_time
+     *
+     * @return the value of alumni_role.create_time
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public LocalDateTime getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role.create_time
+     *
+     * @param createTime the value for alumni_role.create_time
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setCreateTime(LocalDateTime createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role.create_user_id
+     *
+     * @return the value of alumni_role.create_user_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public String getCreateUserId() {
+        return createUserId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role.create_user_id
+     *
+     * @param createUserId the value for alumni_role.create_user_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setCreateUserId(String createUserId) {
+        this.createUserId = createUserId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role.modify_time
+     *
+     * @return the value of alumni_role.modify_time
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public LocalDateTime getModifyTime() {
+        return modifyTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role.modify_time
+     *
+     * @param modifyTime the value for alumni_role.modify_time
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setModifyTime(LocalDateTime modifyTime) {
+        this.modifyTime = modifyTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role.modify_user_id
+     *
+     * @return the value of alumni_role.modify_user_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public String getModifyUserId() {
+        return modifyUserId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role.modify_user_id
+     *
+     * @param modifyUserId the value for alumni_role.modify_user_id
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    public void setModifyUserId(String modifyUserId) {
+        this.modifyUserId = modifyUserId;
+    }
+
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_role
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", roleName=").append(roleName);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", createUserId=").append(createUserId);
+        sb.append(", modifyTime=").append(modifyTime);
+        sb.append(", modifyUserId=").append(modifyUserId);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_role
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Role other = (Role) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getRoleName() == null ? other.getRoleName() == null : this.getRoleName().equals(other.getRoleName()))
+            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+            && (this.getCreateUserId() == null ? other.getCreateUserId() == null : this.getCreateUserId().equals(other.getCreateUserId()))
+            && (this.getModifyTime() == null ? other.getModifyTime() == null : this.getModifyTime().equals(other.getModifyTime()))
+            && (this.getModifyUserId() == null ? other.getModifyUserId() == null : this.getModifyUserId().equals(other.getModifyUserId()));
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_role
+     *
+     * @mbg.generated Wed Apr 18 13:21:47 CST 2018
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getRoleName() == null) ? 0 : getRoleName().hashCode());
+        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+        result = prime * result + ((getCreateUserId() == null) ? 0 : getCreateUserId().hashCode());
+        result = prime * result + ((getModifyTime() == null) ? 0 : getModifyTime().hashCode());
+        result = prime * result + ((getModifyUserId() == null) ? 0 : getModifyUserId().hashCode());
+        return result;
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table alumni_role
+     *
+     * @mbg.generated
+     * @project https://github.com/itfsw/mybatis-generator-plugin
+     */
+    public enum Column {
+        id("id"),
+        roleName("role_name"),
+        createTime("create_time"),
+        createUserId("create_user_id"),
+        modifyTime("modify_time"),
+        modifyUserId("modify_user_id");
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table alumni_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        private final String column;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        Column(String column) {
+            this.column = column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String desc() {
+            return this.column + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String asc() {
+            return this.column + " ASC";
+        }
+    }
+}

+ 237 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/RoleMenu.java

@@ -0,0 +1,237 @@
+package com.dgtis.dorm.manager.db.domain;
+
+public class RoleMenu {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role_menu.id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role_menu.role_id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    private Integer roleId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alumni_role_menu.menu_id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    private String menuId;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role_menu.id
+     *
+     * @return the value of alumni_role_menu.id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role_menu.id
+     *
+     * @param id the value for alumni_role_menu.id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role_menu.role_id
+     *
+     * @return the value of alumni_role_menu.role_id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    public Integer getRoleId() {
+        return roleId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role_menu.role_id
+     *
+     * @param roleId the value for alumni_role_menu.role_id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    public void setRoleId(Integer roleId) {
+        this.roleId = roleId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column alumni_role_menu.menu_id
+     *
+     * @return the value of alumni_role_menu.menu_id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    public String getMenuId() {
+        return menuId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column alumni_role_menu.menu_id
+     *
+     * @param menuId the value for alumni_role_menu.menu_id
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    public void setMenuId(String menuId) {
+        this.menuId = menuId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_role_menu
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", roleId=").append(roleId);
+        sb.append(", menuId=").append(menuId);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_role_menu
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        RoleMenu other = (RoleMenu) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getRoleId() == null ? other.getRoleId() == null : this.getRoleId().equals(other.getRoleId()))
+            && (this.getMenuId() == null ? other.getMenuId() == null : this.getMenuId().equals(other.getMenuId()));
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table alumni_role_menu
+     *
+     * @mbg.generated Wed Apr 18 17:04:03 CST 2018
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getRoleId() == null) ? 0 : getRoleId().hashCode());
+        result = prime * result + ((getMenuId() == null) ? 0 : getMenuId().hashCode());
+        return result;
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table alumni_role_menu
+     *
+     * @mbg.generated
+     * @project https://github.com/itfsw/mybatis-generator-plugin
+     */
+    public enum Column {
+        id("id"),
+        roleId("role_id"),
+        menuId("menu_id");
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table alumni_role_menu
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        private final String column;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role_menu
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role_menu
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role_menu
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        Column(String column) {
+            this.column = column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role_menu
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String desc() {
+            return this.column + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table alumni_role_menu
+         *
+         * @mbg.generated
+         * @project https://github.com/itfsw/mybatis-generator-plugin
+         */
+        public String asc() {
+            return this.column + " ASC";
+        }
+    }
+}

+ 0 - 0
dorm-manager-db/src/main/java/com/dgtis/dorm/manager/db/domain/Storage.java


Some files were not shown because too many files changed in this diff