yonge 4 years ago
parent
commit
d377115f4b
34 changed files with 1288 additions and 167 deletions
  1. 22 16
      edu-auth/edu-auth-server/pom.xml
  2. 1 1
      edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/AuthServerApplication.java
  3. 20 0
      edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/config/WebMvcConfig.java
  4. 0 25
      edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/dal/dao/SysUserDao.java
  5. 0 5
      edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/SysUserService.java
  6. 0 5
      edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/impl/SysUserServiceImpl.java
  7. 86 0
      edu-auth/edu-auth-server/src/main/resources/application.yml
  8. 21 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/Global.mapper.xml
  9. 183 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml
  10. 99 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysOauthClientDetailsMapper.xml
  11. 63 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysRoleDeptMapper.xml
  12. 86 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml
  13. 65 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysRoleMenuMapper.xml
  14. 44 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserLoginLogMapper.xml
  15. 87 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserLoginMapper.xml
  16. 189 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  17. 58 0
      edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserRoleMapper.xml
  18. 55 0
      edu-auth/edu-auth-server/src/main/resources/logback-spring.xml
  19. 4 4
      edu-cms/src/main/resources/application.yml
  20. 0 16
      edu-cms/src/main/resources/bootstrap-dev.properties
  21. 0 16
      edu-cms/src/main/resources/bootstrap-prod.properties
  22. 0 16
      edu-cms/src/main/resources/bootstrap-test.properties
  23. 1 1
      edu-cms/src/main/resources/logback-spring.xml
  24. 5 0
      edu-datasource/pom.xml
  25. 1 1
      edu-datasource/src/main/java/com/keao/edu/datasource/DataSourceConfig.java
  26. 31 0
      edu-datasource/src/main/java/com/keao/edu/datasource/interceptor/DataSourceInterceptor.java
  27. 3 3
      edu-task/src/main/resources/application.yml
  28. 0 16
      edu-task/src/main/resources/bootstrap-dev.properties
  29. 0 16
      edu-task/src/main/resources/bootstrap-prod.properties
  30. 0 16
      edu-task/src/main/resources/bootstrap-test.properties
  31. 0 4
      edu-zuul/src/main/java/com/keao/edu/zuul/web/config/SwaggerDocumentConfig.java
  32. 96 0
      edu-zuul/src/main/resources/application.yml
  33. 55 0
      edu-zuul/src/main/resources/logback-spring.xml
  34. 13 6
      pom.xml

+ 22 - 16
edu-auth/edu-auth-server/pom.xml

@@ -1,19 +1,20 @@
 <?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>com.keao.edu</groupId>
-    <artifactId>edu-auth</artifactId>
-    <version>1.0</version>
-  </parent>
-  <artifactId>edu-auth-server</artifactId>
-  <name>edu-auth-server</name>
-  <url>http://maven.apache.org</url>
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-  <dependencies>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>com.keao.edu</groupId>
+		<artifactId>edu-auth</artifactId>
+		<version>1.0</version>
+	</parent>
+	<artifactId>edu-auth-server</artifactId>
+	<name>edu-auth-server</name>
+	<url>http://maven.apache.org</url>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<dependencies>
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
@@ -75,5 +76,10 @@
 			<groupId>com.keao.edu</groupId>
 			<artifactId>edu-im-api</artifactId>
 		</dependency>
-  </dependencies>
+
+		<dependency>
+			<groupId>com.keao.edu</groupId>
+			<artifactId>edu-datasource</artifactId>
+		</dependency>
+	</dependencies>
 </project>

+ 1 - 1
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/AuthServerApplication.java

@@ -16,7 +16,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 
 @SpringBootApplication
 @EnableDiscoveryClient
-@EnableFeignClients({"com.ym.mec"})
+@EnableFeignClients({"com.keao.edu"})
 @MapperScan("com.keao.edu.*.dal.dao")
 @ComponentScan(basePackages="com.keao.edu")
 @Configuration

+ 20 - 0
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/config/WebMvcConfig.java

@@ -8,10 +8,12 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 import com.keao.edu.common.config.EnumConverterFactory;
 import com.keao.edu.common.config.LocalFastJsonHttpMessageConverter;
+import com.keao.edu.datasource.interceptor.DataSourceInterceptor;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
@@ -24,6 +26,24 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		registry.addConverterFactory(new EnumConverterFactory());
 	}
 	
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// addPathPatterns 用于添加拦截规则, 这里假设拦截 /url 后面的全部链接
+		List<String> includePathPatterns = new ArrayList<String>();
+		includePathPatterns.add("/**");
+
+		// excludePathPatterns 用户排除拦截
+		List<String> excludePathPatterns = new ArrayList<String>();
+		excludePathPatterns.add("/login");
+
+		registry.addInterceptor(getDataSrouceInterceptor()).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
+	}
+
+	@Bean
+	public DataSourceInterceptor getDataSrouceInterceptor() {
+		return new DataSourceInterceptor();
+	}
+	
 	@Bean
     public HttpMessageConverters fastJsonHttpMessageConverters(){
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();

+ 0 - 25
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/dal/dao/SysUserDao.java

@@ -61,35 +61,10 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	SysUser findUserBySalt(String userType);
 
 	/**
-	 * 创建teacher表
-	 * @param userId
-	 * @param lesseeOrganId
-	 */
-	void insertTeacher(@Param("userId") Integer userId, @Param("lesseeOrganId") Integer lesseeOrganId);
-
-	/**
-	 * 获取教师分部编号
-	 * @param userId
-	 * @return
-	 */
-	Integer getTeacherOrganId(Integer userId);
-
-	/**
-	 * 创建租户账户表
-	 * @param userId
-	 */
-    void insertSysTenantAccount(Integer userId);
-
-	/**
 	 * 刷新用户token
 	 * @param userId
 	 * @param imToken
 	 */
 	void refreshImToken(@Param("userId") Integer userId, @Param("imToken") String imToken);
 
-	/**
-	 * 保存student
-	 * @param userId
-	 */
-    void saveStudent(@Param("userId") Integer userId);
 }

+ 0 - 5
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/SysUserService.java

@@ -96,9 +96,4 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 */
     void refreshImToken(SysUser sysUser);
 
-	/**
-	 * 保存student数据
-	 * @param userId
-	 */
-	void saveStudent(Integer userId);
 }

+ 0 - 5
edu-auth/edu-auth-server/src/main/java/com/keao/edu/auth/service/impl/SysUserServiceImpl.java

@@ -150,9 +150,4 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		sysUserDao.refreshImToken(sysUser.getId(),sysUser.getImToken());
 	}
 
-	@Override
-	public void saveStudent(Integer userId) {
-		sysUserDao.saveStudent(userId);
-	}
-
 }

+ 86 - 0
edu-auth/edu-auth-server/src/main/resources/application.yml

@@ -0,0 +1,86 @@
+server:
+  port: 8001
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-auth
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
+
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://admin:admin123@localhost:8761/eureka/eureka/
+    instance:
+      lease-renewal-interval-in-seconds: 5
+
+spring:
+  application:
+    name: auth-server
+
+  datasource:
+    name: test
+    url: jdbc:mysql://47.99.212.176:3306/edu_saas?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+    username: edu_saas
+    password: edu_saas
+    # 使用druid数据源
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    filters: stat
+    maxActive: 20
+    initialSize: 1
+    maxWait: 60000
+    minIdle: 1
+    timeBetweenEvictionRunsMillis: 60000
+    minEvictableIdleTimeMillis: 300000
+    validationQuery: select 'x'
+    testWhileIdle: true
+    testOnBorrow: false
+    testOnReturn: false
+    poolPreparedStatements: true
+    maxOpenPreparedStatements: 20
+
+  redis:
+    host: 47.99.212.176
+    port: 6379
+    password: 
+    database: 0
+    #连接超时时间(毫秒)
+    timeout: 10000
+    jedis:
+      pool:
+        #连接池最大连接数(使用负值表示没有限制)
+        max-active: 10
+        #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1
+        #连接池中的最大空闲连接
+        max-idle: 10
+        #连接池中的最小空闲连接
+        min-idle: 1
+
+mybatis:
+  mapperLocations: classpath:config/mybatis/*.xml
+
+swagger:
+  base-package: com.keao.edu.auth.web.controller
+
+#spring boot admin 相关配置
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"
+  endpoint:
+    health:
+      show-details: ALWAYS
+
+
+ribbon:
+  ReadTimeout: 60000
+  ConnectTimeout: 60000

+ 21 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/Global.mapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="global">
+
+	<sql id="limit">
+		<if test="offset != null">
+			 limit #{offset},#{rows}
+		</if>
+	</sql>
+
+	<sql id="orderby">
+		<if test="sort != null and sort != ''">
+			 ORDER BY ${sort}
+			 <if test="order != null and order != ''">
+			 	${order}
+			 </if>
+		</if>
+	</sql>	
+ </mapper>

+ 183 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml

@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysMenuDao">
+
+    <resultMap type="com.keao.edu.auth.api.entity.SysMenu" id="SysMenu">
+        <result column="id_" property="id"/>
+        <result column="name_" property="name"/>
+        <result column="permission_" property="permission"/>
+        <result column="parent_permission_" property="parentPermission"/>
+        <result column="path_" property="path"/>
+        <result column="parent_id_" property="parentId"/>
+        <result column="icon_" property="icon"/>
+        <result column="component_" property="component"/>
+        <result column="sort_" property="sort"/>
+        <result column="keep_alive_" property="keepAlive"/>
+        <result column="type_" property="type"/>
+        <result column="type_" property="type"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="del_flag_" property="delFlag"/>
+        <result column="hidden_" property="hid"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysMenu">
+		SELECT * FROM sys_menu WHERE id_ = #{id}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysMenu">
+		SELECT * FROM sys_menu ORDER BY id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysMenu" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO sys_menu
+        (id_,name_,permission_,path_,parent_id_,icon_,component_,sort_,type_,create_time_,update_time_,hidden_,parent_permission_)
+        VALUES(#{id},#{name},#{permission},#{path},#{parentId},#{icon},#{component},#{sort},#{type},now(),now(),#{hid},#{parentPermission})
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.keao.edu.auth.api.entity.SysMenu">
+        UPDATE sys_menu
+        <set>
+            <if test="parentId != null">
+                parent_id_ = #{parentId},
+            </if>
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag},
+            </if>
+            <if test="keepAlive != null">
+                keep_alive_ = #{keepAlive},
+            </if>
+            <if test="permission != null">
+                permission_ = #{permission},
+            </if>
+            <if test="parentPermission != null">
+                parent_permission_ = #{parentPermission},
+            </if>
+            <if test="path != null">
+                path_ = #{path},
+            </if>
+            <if test="sort != null">
+                sort_ = #{sort},
+            </if>
+            <if test="name != null">
+                name_ = #{name},
+            </if>
+            <if test="icon != null">
+                icon_ = #{icon},
+            </if>
+            <if test="component != null">
+                component_ = #{component},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="type != null">
+                type_ = #{type},
+            </if>
+            <if test="hid != null">
+                hidden_ = #{hid},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <update id="delete">
+		UPDATE sys_menu SET del_flag_ = 1 WHERE id_ = #{id}
+	</update>
+
+    <update id="batchDel" parameterType="java.util.List">
+        UPDATE sys_menu SET del_flag_ = 1 WHERE id_ IN
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+          #{item}
+        </foreach>
+    </update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysMenu" parameterType="map">
+        SELECT sm.* FROM sys_user_role sur
+        LEFT JOIN sys_role_menu srm ON sur.role_id_ = srm.role_id_
+        LEFT JOIN sys_menu sm ON srm.menu_id_ = sm.id_
+        <include refid="queryTree"/>
+        GROUP BY sm.id_
+        ORDER BY sm.sort_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(DISTINCT sm.id_) FROM sys_user_role sur
+        LEFT JOIN sys_role_menu srm ON sur.role_id_ = srm.role_id_
+        LEFT JOIN sys_menu sm ON srm.menu_id_ = sm.id_
+        <include refid="queryTree"/>
+	</select>
+
+    <select id="getMenusByRoleId" resultMap="SysMenu">
+		SELECT sm.* FROM sys_role_menu srm
+		LEFT JOIN sys_menu sm ON srm.menu_id_ = sm.id_
+		WHERE srm.role_id_ = #{roleId} AND sm.del_flag_ = 0
+	</select>
+
+    <select id="findByUser" resultMap="SysMenu">
+		SELECT sm.* FROM sys_user_role sur
+		LEFT JOIN sys_role sr ON sur.role_id_ = sr.id_
+		LEFT JOIN sys_role_menu srm ON sr.id_ = srm.role_id_
+		LEFT JOIN sys_menu sm ON srm.menu_id_ = sm.id_
+		WHERE sur.user_id_ = #{userId} AND sr.del_flag_ = 0 AND sm.del_flag_ = 0
+	</select>
+
+    <!-- 根据权限标识查菜单 -->
+    <select id="findMenuByPermission" resultMap="SysMenu">
+        SELECT * FROM `sys_menu` WHERE `permission_` = #{permission} AND del_flag_ = 0
+    </select>
+    <sql id="queryTree">
+        <where>
+            <if test="userId != null">
+                sur.user_id_ = #{userId}
+            </if>
+            <if test="hid != null">
+                AND sm.hidden_ = #{hid}
+            </if>
+            <if test="delFlag != null">
+                AND sm.del_flag_ = #{delFlag}
+            </if>
+            <if test="parentId != null">
+                AND sm.parent_id_ = #{parentId}
+            </if>
+        </where>
+    </sql>
+
+    <select id="findByParentId" resultMap="SysMenu">
+        SELECT sm.* FROM sys_user_role sur
+        LEFT JOIN sys_role_menu srm ON sur.role_id_ = srm.role_id_
+        LEFT JOIN sys_menu sm ON srm.menu_id_ = sm.id_
+        <include refid="queryTree"/>
+        GROUP BY sm.id_
+        ORDER BY sm.sort_ DESC,sm.id_ DESC
+    </select>
+
+    <select id="findList" resultMap="SysMenu">
+        SELECT * FROM sys_menu
+        <where>
+            <if test="delFlag != null">
+                AND del_flag_ = #{delFlag}
+            </if>
+            <if test="parentId != null">
+                AND parent_id_ = #{parentId}
+            </if>
+            <if test="hid != null">
+                AND hidden_ = #{hid}
+            </if>
+        </where>
+        ORDER BY sort_ DESC
+    </select>
+</mapper>

+ 99 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysOauthClientDetailsMapper.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysOauthClientDetailsDao">
+
+    <resultMap type="com.keao.edu.auth.api.entity.SysOauthClientDetails" id="SysOauthClientDetails">
+        <result column="id_" property="id"/>
+        <result column="resource_ids_" property="resourceIds"/>
+        <result column="client_secret_" property="clientSecret"/>
+        <result column="scope_" property="scope"/>
+        <result column="authorized_grant_types_" property="authorizedGrantTypes"/>
+        <result column="web_server_redirect_uri_" property="webServerRedirectUri"/>
+        <result column="authorities_" property="authorities"/>
+        <result column="access_token_validity_" property="accessTokenValidity"/>
+        <result column="refresh_token_validity_" property="refreshTokenValidity"/>
+        <result column="additional_information_" property="additionalInformation"/>
+        <result column="autoapprove_" property="autoapprove"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysOauthClientDetails">
+		SELECT * FROM sys_oauth_client_details WHERE id_ = #{id}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysOauthClientDetails">
+		SELECT * FROM sys_oauth_client_details ORDER BY id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysOauthClientDetails" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO sys_oauth_client_details
+        (id_,resource_ids_,client_secret_,scope_,authorized_grant_types_,web_server_redirect_uri_,authorities_,access_token_validity_,refresh_token_validity_,additional_information_,autoapprove_)
+        VALUES(#{id},#{resourceIds},#{clientSecret},#{scope},#{authorizedGrantTypes},#{webServerRedirectUri},#{authorities},#{accessTokenValidity},#{refreshTokenValidity},#{additionalInformation},#{autoapprove})
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.keao.edu.auth.api.entity.SysOauthClientDetails">
+        UPDATE sys_oauth_client_details
+        <set>
+            <if test="accessTokenValidity != null">
+                access_token_validity_ = #{accessTokenValidity},
+            </if>
+            <if test="resourceIds != null">
+                resource_ids_ = #{resourceIds},
+            </if>
+            <if test="refreshTokenValidity != null">
+                refresh_token_validity_ = #{refreshTokenValidity},
+            </if>
+            <if test="additionalInformation != null">
+                additional_information_ = #{additionalInformation},
+            </if>
+            <if test="clientSecret != null">
+                client_secret_ = #{clientSecret},
+            </if>
+            <if test="webServerRedirectUri != null">
+                web_server_redirect_uri_ = #{webServerRedirectUri},
+            </if>
+            <if test="authorizedGrantTypes != null">
+                authorized_grant_types_ = #{authorizedGrantTypes},
+            </if>
+            <if test="authorities != null">
+                authorities_ = #{authorities},
+            </if>
+            <if test="scope != null">
+                scope_ = #{scope},
+            </if>
+            <if test="autoapprove != null">
+                autoapprove_ = #{autoapprove},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+		DELETE FROM sys_oauth_client_details WHERE id_ = #{id}
+	</delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysOauthClientDetails" parameterType="map">
+        SELECT * FROM sys_oauth_client_details ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_oauth_client_details
+	</select>
+</mapper>

+ 63 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysRoleDeptMapper.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysRoleDeptDao">
+	
+	<resultMap type="com.keao.edu.auth.api.entity.SysRoleDept" id="SysRoleDept">
+		<result column="id_" property="id" />
+		<result column="role_id_" property="roleId" />
+		<result column="dept_id_" property="deptId" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysRoleDept" >
+		SELECT * FROM sys_role_dept WHERE id_ = #{id}
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysRoleDept">
+		SELECT * FROM sys_role_dept ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysRoleDept" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO sys_role_dept (id_,role_id_,dept_id_) VALUES(#{id},#{roleId},#{deptId})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.keao.edu.auth.api.entity.SysRoleDept">
+		UPDATE sys_role_dept
+		 <set>
+			 <if test="roleId != null">
+				 role_id_ = #{roleId},
+			 </if>
+			 <if test="deptId != null">
+				 dept_id_ = #{deptId},
+			 </if>
+		 </set>
+		 WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM sys_role_dept WHERE id_ = #{id}
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysRoleDept" parameterType="map">
+		SELECT * FROM sys_role_dept ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_role_dept
+	</select>
+</mapper>

+ 86 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysRoleMapper.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysRoleDao">
+
+    <resultMap type="com.keao.edu.auth.api.entity.SysRole" id="SysRole">
+        <result column="id_" property="id"/>
+        <result column="role_name_" property="roleName"/>
+        <result column="role_code_" property="roleCode"/>
+        <result column="role_desc_" property="roleDesc"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="del_flag_" property="delFlag"/>
+        <result column="organ_id_" property="organId"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysRole">
+		SELECT * FROM sys_role WHERE id_ = #{id}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysRole">
+		SELECT * FROM sys_role WHERE del_flag_ = 0 ORDER BY upate_time_ DESC
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysRole" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO sys_role (id_,role_name_,role_code_,role_desc_,create_time_,update_time_,organ_id_)
+        VALUES(#{id},#{roleName},#{roleCode},#{roleDesc},now(),now(),#{organId})
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.keao.edu.auth.api.entity.SysRole">
+        UPDATE sys_role
+        <set>
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag},
+            </if>
+            <if test="roleCode != null">
+                role_code_ = #{roleCode},
+            </if>
+            <if test="roleName != null">
+                role_name_ = #{roleName},
+            </if>
+            <if test="roleDesc != null">
+                role_desc_ = #{roleDesc},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="organId != null">
+                organ_id_ = #{organId},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+		UPDATE sys_role SET del_flag_ = 1 WHERE id_ = #{id}
+	</delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysRole" parameterType="map">
+        SELECT * FROM sys_role WHERE del_flag_ = 0 ORDER BY update_time_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_role WHERE del_flag_ = 0
+	</select>
+
+    <select id="findRoleByUserId" resultMap="SysRole">
+		SELECT sr.* FROM sys_user_role sur LEFT JOIN sys_role sr ON sur.role_id_ = sr.id_ WHERE sur.user_id_ = #{userId} AND sr.del_flag_ = 0
+	</select>
+
+    <select id="findRoleByCode" resultMap="SysRole">
+        SELECT sr.* FROM sys_role WHERE role_code_ = #{code} AND sr.del_flag_ = 0
+    </select>
+</mapper>

+ 65 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysRoleMenuMapper.xml

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysRoleMenuDao">
+	
+	<resultMap type="com.keao.edu.auth.api.entity.SysRoleMenu" id="SysRoleMenu">
+		<result column="role_id_" property="roleId" />
+		<result column="menu_id_" property="menuId" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysRoleMenu" parameterType="java.util.Map">
+		SELECT * FROM sys_role_menu WHERE role_id_ = #{roleId} AND menu_id_ = #{menuId}
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysRoleMenu">
+		SELECT * FROM sys_role_menu ORDER BY role_id_,menu_id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysRoleMenu" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO sys_role_menu (role_id_,menu_id_) VALUES(#{roleId},#{menuId})
+	</insert>
+    <insert id="batchAdd">
+		INSERT INTO sys_role_menu (role_id_,menu_id_) VALUES
+		<foreach collection="menuIds" item="item" index="index" separator=",">
+			(#{roleId},#{item})
+		</foreach>
+	</insert>
+
+    <!-- 根据主键删除一条记录 -->
+	<delete id="delete" parameterType="java.util.Map">
+		DELETE FROM sys_role_menu WHERE role_id_ = #{roleId} AND menu_id_ = #{menuId}
+	</delete>
+    <delete id="deleteAllMenu">
+		DELETE FROM sys_role_menu WHERE role_id_ = #{roleId}
+	</delete>
+
+    <!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysRoleMenu" parameterType="map">
+		SELECT * FROM sys_role_menu ORDER BY role_id_,menu_id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_role_menu
+	</select>
+	
+	<select id="queryPermissionsByRoleId" resultType="string" parameterType="int">
+		SELECT m.permission_ FROM sys_role_menu rm left join sys_menu m on rm.menu_id_ = m.id_ where rm.role_id_ = #{roleId} and m.del_flag_ = 0
+	</select>
+
+	<select id="queryMenuIdByRoleId" resultType="integer" parameterType="int">
+		SELECT m.id_ FROM sys_role_menu rm left join sys_menu m on rm.menu_id_ = m.id_ where rm.role_id_ = #{roleId} and m.del_flag_ = 0
+	</select>
+</mapper>

+ 44 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserLoginLogMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysUserLoginLogDao">
+	
+	<resultMap type="com.keao.edu.auth.api.entity.SysUserLoginLog" id="SysUserLoginLog">
+		<result column="id_" property="id"/>
+		<result column="user_id_" property="userId" />
+		<result column="login_ip_" property="loginIp" />
+		<result column="login_time_" property="loginTime" />
+		<result column="source_" property="source" />
+	</resultMap>
+	
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysUserLoginLog">
+		SELECT * FROM sys_user_login_log
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysUserLoginLog" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO sys_user_login_log (id_,user_id_,login_ip_,login_time_,source_) VALUES(#{id},#{userId},#{loginIp},#{loginTime},#{source})
+	</insert>
+	
+	
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysUserLoginLog" parameterType="map">
+		SELECT * FROM sys_user_login_log <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_user_login_log
+	</select>
+</mapper>

+ 87 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserLoginMapper.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysUserLoginDao">
+
+    <resultMap type="com.keao.edu.auth.api.entity.SysUserLogin" id="SysUserLogin">
+        <result column="user_id_" property="userId"/>
+        <result column="login_count_" property="loginCount"/>
+        <result column="last_login_time_" property="lastLoginTime"/>
+        <result column="last_login_ip_" property="lastLoginIp"/>
+        <result column="fail_count_" property="failCount"/>
+        <result column="lock_time_" property="lockTime"/>
+        <result column="lock_date_" property="lockDate"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysUserLogin">
+		SELECT * FROM sys_user_login WHERE user_id_ = #{userId}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysUserLogin">
+		SELECT * FROM sys_user_login ORDER BY user_id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysUserLogin" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO sys_user_login
+        (user_id_,login_count_,last_login_time_,last_login_ip_,fail_count_,lock_time_,lock_date_)
+        VALUES(#{userId},#{loginCount},#{lastLoginTime},#{lastLoginIp},#{failCount},#{lockTime},#{lockDate})
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.keao.edu.auth.api.entity.SysUserLogin">
+        UPDATE sys_user_login
+        <set>
+            <if test="failCount != null">
+                fail_count_ = #{failCount},
+            </if>
+            <if test="lastLoginIp != null">
+                last_login_ip_ = #{lastLoginIp},
+            </if>
+            <if test="lockTime != null">
+                lock_time_ = #{lockTime},
+            </if>
+            <if test="loginCount != null">
+                login_count_ = #{loginCount},
+            </if>
+            <if test="lastLoginTime != null">
+                last_login_time_ = #{lastLoginTime},
+            </if>
+            <if test="lockDate != null">
+                lock_date_ = #{lockDate},
+            </if>
+        </set>
+        WHERE user_id_ = #{userId}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+		DELETE FROM sys_user_login WHERE user_id_ = #{userId}
+	</delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysUserLogin" parameterType="map">
+        SELECT * FROM sys_user_login ORDER BY user_id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_user_login
+	</select>
+
+    <select id="findLoginByUserId" resultMap="SysUserLogin">
+		SELECT * FROM sys_user_login WHERE user_id_ = #{userId}
+	</select>
+</mapper>

+ 189 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysUserDao">
+
+    <resultMap type="com.keao.edu.auth.api.entity.SysUser" id="SysUser">
+        <result column="id_" property="id"/>
+        <result column="username_" property="username"/>
+        <result column="real_name_" property="realName"/>
+        <result column="password_" property="password"/>
+        <result column="salt_" property="salt"/>
+        <result column="phone_" property="phone"/>
+        <result column="avatar_" property="avatar"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="lock_flag_" property="lockFlag"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
+        <result column="wx_openid_" property="wxOpenid"/>
+        <result column="qq_openid_" property="qqOpenid"/>
+        <result column="user_type_" property="userType"/>
+        <result column="gender_" property="gender"/>
+        <result column="nation_" property="nation"/>
+        <result column="birthdate_" property="birthdate"/>
+        <result column="email_" property="email"/>
+        <result column="im_token_" property="imToken"/>
+        <result column="id_card_no_" property="idCardNo"/>
+        <result column="wechat_id_" property="wechatId"/>
+        <result column="is_super_admin_" property="isSuperAdmin"/>
+        <result column="current_grade_" property="currentGrade"/>
+        <result column="current_class_" property="currentClass"/>
+    </resultMap>
+
+    <!-- 查询条件 -->
+    <sql id="queryCondition">
+        <if test="userStartDate != null">
+            and create_time_ &gt;= #{createStartDate}
+        </if>
+        <if test="userEndDate != null">
+            and create_time_ &lt;= #{createEndDate}
+        </if>
+        <if test="userType != null">
+            and user_type_ = #{userType}
+        </if>
+        <if test="organId != null">
+            and organ_id_ = #{organId}
+        </if>
+    </sql>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysUser">
+		SELECT su.*,sr.current_class_,sr.current_grade_
+        FROM sys_user su LEFT JOIN student_registration sr ON su.id_ = sr.user_id_
+        WHERE su.id_ = #{id} LIMIT 1
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysUser">
+		SELECT * FROM sys_user ORDER BY id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysUser" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO sys_user
+        (is_super_admin_,im_token_,id_,username_,salt_,phone_,avatar_,organ_id_,create_time_,update_time_,wx_openid_,qq_openid_,user_type_,
+        gender_,nation_,birthdate_,email_,id_card_no_,wechat_id_,real_name_)
+        VALUES(#{isSuperAdmin},#{imToken},#{id},#{username},#{salt},#{phone},#{avatar},#{organId},now(),now(),#{wxOpenid},#{qqOpenid},#{userType},
+        #{gender},#{nation},#{birthdate},#{email},#{idCardNo},#{wechatId},#{realName})
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.keao.edu.auth.api.entity.SysUser">
+        UPDATE sys_user
+        <set>
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag, typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="wxOpenid != null">
+                wx_openid_ = #{wxOpenid},
+            </if>
+            <if test="avatar != null">
+                avatar_ = #{avatar},
+            </if>
+            <if test="email != null">
+                email_ = #{email},
+            </if>
+            <if test="gender != null">
+                gender_ = #{gender},
+            </if>
+            <if test="salt != null">
+                salt_ = #{salt},
+            </if>
+            <if test="username != null">
+                username_ = #{username},
+            </if>
+            <if test="userType != null">
+                user_type_ = #{userType},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+            <if test="lockFlag != null">
+                lock_flag_ = #{lockFlag},
+            </if>
+            <if test="birthdate != null">
+                birthdate_ = #{birthdate},
+            </if>
+            <if test="phone != null">
+                phone_ = #{phone},
+            </if>
+            <if test="qqOpenid != null">
+                qq_openid_ = #{qqOpenid},
+            </if>
+            <if test="nation != null">
+                nation_ = #{nation},
+            </if>
+            <if test="organId != null">
+                organ_id_ = #{organId},
+            </if>
+            <if test="imToken != null">
+                im_token_ = #{imToken},
+            </if>
+            <if test="idCardNo != null">
+                id_card_no_ = #{idCardNo},
+            </if>
+            <if test="password != null">
+                password_ = #{password},
+            </if>
+            <if test="wechatId != null">
+                wechat_id_ = #{wechatId},
+            </if>
+            <if test="realName != null">
+                real_name_ = #{realName},
+            </if>
+            <if test="isSuperAdmin != null">
+                is_super_admin_ = #{isSuperAdmin},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+    <update id="updatePassword">
+        UPDATE sys_user SET password_ = #{password} WHERE phone_ = #{mobile}
+    </update>
+    <update id="refreshImToken">
+        UPDATE sys_user SET im_token_ = #{imToken},update_time_ = NOW() WHERE id_ = #{userId}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+		UPDATE sys_user SET del_flag_ = 1 WHERE id_ = #{id}
+	</delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysUser" parameterType="map">
+        SELECT * FROM sys_user ORDER BY id_
+        <include refid="queryCondition"/>
+        <include refid="global.orderby"/>
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM sys_user
+        <include refid="queryCondition"/>
+    </select>
+
+    <select id="queryByUsername" resultMap="SysUser">
+		select * from sys_user where username_ = #{username} OR phone_ = #{username} LIMIT 1 FOR UPDATE
+	</select>
+
+    <select id="queryByPhone" resultMap="SysUser">
+		select * from sys_user where phone_ = #{phone} OR username_ = #{phone} LIMIT 1 FOR UPDATE
+	</select>
+    
+    <select id="queryByStatus" resultMap="SysUser">
+        select * from sys_user where lock_flag_ = #{status}
+    </select>
+    <select id="findUserBySalt" resultMap="SysUser">
+        SELECT * FROM sys_user WHERE salt_ IS NOT NULL AND salt_ = 'replace' AND user_type_ LIKE CONCAT('%',#{userType},'%') LIMIT 1
+    </select>
+    </select>
+    <select id="queryByPhoneAndClient" resultMap="SysUser">
+        select * from sys_user where (phone_ = #{phone} OR username_ = #{phone}) AND user_type_ LIKE CONCAT('%',#{client},'%') LIMIT 1 FOR UPDATE
+    </select>
+</mapper>

+ 58 - 0
edu-auth/edu-auth-server/src/main/resources/config/mybatis/SysUserRoleMapper.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.keao.edu.auth.dal.dao.SysUserRoleDao">
+
+    <resultMap type="com.keao.edu.auth.api.entity.SysUserRole" id="SysUserRole">
+        <result column="user_id_" property="userId"/>
+        <result column="role_id_" property="roleId"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="SysUserRole" parameterType="java.util.Map">
+		SELECT * FROM sys_user_role WHERE user_id_ = #{userId} AND role_id_ = #{roleId}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="SysUserRole">
+		SELECT * FROM sys_user_role ORDER BY user_id_,role_id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.keao.edu.auth.api.entity.SysUserRole" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        <!--
+        <selectKey resultClass="int" keyProperty="id" >
+        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
+        </selectKey>
+        -->
+        INSERT INTO sys_user_role (user_id_,role_id_) VALUES(#{userId},#{roleId})
+    </insert>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete" parameterType="java.util.Map">
+		DELETE FROM sys_user_role WHERE user_id = #{userId} AND role_id = #{roleId} 
+	</delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="SysUserRole" parameterType="map">
+        SELECT * FROM sys_user_role ORDER BY user_id_,role_id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_user_role
+	</select>
+
+    <select id="queryRoleIdListByUserId" resultType="int" parameterType="int">
+		SELECT ur.role_id_ FROM sys_user_role ur left join sys_role r on ur.role_id_ = r.id_ where ur.user_id_ = #{userId} and r.del_flag_ = 0
+	</select>
+
+    <select id="queryRoleCodeListByUserId" resultType="string" parameterType="int">
+		SELECT r.role_code_ FROM sys_user_role ur left join sys_role r on ur.role_id_ = r.id_ where ur.user_id_ = #{userId} and r.del_flag_ = 0
+	</select>
+</mapper>

+ 55 - 0
edu-auth/edu-auth-server/src/main/resources/logback-spring.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/auth-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.keao.edu" level="DEBUG" />
+
+	<!--开发环境:打印控制台 -->
+	<springProfile name="dev">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	
+	<springProfile name="test">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--生产环境:输出到文件 -->
+	<springProfile name="prod">
+		<root level="WARN">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+</configuration>

+ 4 - 4
edu-cms/src/main/resources/application.yml

@@ -26,9 +26,9 @@ spring:
     
   datasource:
     name: test
-    url: jdbc:mysql://47.99.212.176:3306/mec_dev?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
-    username: mec_dev
-    password: mec_dev
+    url: jdbc:mysql://47.99.212.176:3306/edu_saas?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+    username: edu_saas
+    password: edu_saas
     # 使用druid数据源
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver
@@ -51,7 +51,7 @@ mybatis:
     mapperLocations: classpath:config/mybatis/*.xml
     
 swagger:
-  base-package: com.ym.mec.cms.controller
+  base-package: com.keao.edu.cms.controller
   
   
 ##认证 

+ 0 - 16
edu-cms/src/main/resources/bootstrap-dev.properties

@@ -1,16 +0,0 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=cms
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 0 - 16
edu-cms/src/main/resources/bootstrap-prod.properties

@@ -1,16 +0,0 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.96.80.97:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=cms
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 0 - 16
edu-cms/src/main/resources/bootstrap-test.properties

@@ -1,16 +0,0 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.96.85.100:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=02105743-16b8-46ab-87df-2aca0f3dbca3
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=cms
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 1 - 1
edu-cms/src/main/resources/logback-spring.xml

@@ -27,7 +27,7 @@
 		</encoder>
 	</appender>
 
-	<logger name="com.ym.mec" level="INFO" />
+	<logger name="com.keao.edu" level="INFO" />
 
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">

+ 5 - 0
edu-datasource/pom.xml

@@ -31,5 +31,10 @@
 			<groupId>com.alibaba</groupId>
 			<artifactId>druid-spring-boot-starter</artifactId>
 		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+		</dependency>
 	</dependencies>
 </project>

+ 1 - 1
edu-datasource/src/main/java/com/keao/edu/datasource/MybatisConfig.java → edu-datasource/src/main/java/com/keao/edu/datasource/DataSourceConfig.java

@@ -21,7 +21,7 @@ import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
 @EnableTransactionManagement
 @Configuration
 @MapperScan("com.keao.edu.*.dal.dao")
-public class MybatisConfig {
+public class DataSourceConfig {
 
 	@Bean("master")
 	@Primary

+ 31 - 0
edu-datasource/src/main/java/com/keao/edu/datasource/interceptor/DataSourceInterceptor.java

@@ -0,0 +1,31 @@
+package com.keao.edu.datasource.interceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.keao.edu.datasource.DataSourceContextHolder;
+
+public class DataSourceInterceptor extends HandlerInterceptorAdapter {
+
+	private static final String TENANT_ID = "tenantId";
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+		String tenantId = request.getHeader(TENANT_ID);
+		if (StringUtils.isBlank(tenantId)) {
+			tenantId = request.getParameter(TENANT_ID);
+		}
+		DataSourceContextHolder.setDataSourceKey(tenantId);
+
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		DataSourceContextHolder.clearDataSourceKey();
+	}
+
+}

+ 3 - 3
edu-task/src/main/resources/application.yml

@@ -26,9 +26,9 @@ spring:
 
   datasource:
     name: test
-    url: jdbc:mysql://47.99.212.176:3306/mec_dev?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
-    username: mec_dev
-    password: mec_dev
+    url: jdbc:mysql://47.99.212.176:3306/edu_saas?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+    username: edu_saas
+    password: edu_saas
     # 使用druid数据源
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 0 - 16
edu-task/src/main/resources/bootstrap-dev.properties

@@ -1,16 +0,0 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=task
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 0 - 16
edu-task/src/main/resources/bootstrap-prod.properties

@@ -1,16 +0,0 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.96.80.97:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=task
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 0 - 16
edu-task/src/main/resources/bootstrap-test.properties

@@ -1,16 +0,0 @@
-#\u6307\u5b9a\u5f00\u53d1\u73af\u5883
-#spring.profiles.active=dev
-#\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.96.85.100:8848
-#\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=02105743-16b8-46ab-87df-2aca0f3dbca3
-#\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
-spring.cloud.nacos.config.group=DEFAULT_GROUP
-#\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}
-spring.cloud.nacos.config.prefix=task
-#\u6307\u5b9a\u6587\u4ef6\u540e\u7f00
-spring.cloud.nacos.config.file-extension=yaml
-#\u662f\u5426\u52a8\u6001\u5237\u65b0
-spring.cloud.nacos.config.refresh.enabled=true
-#\u662f\u5426\u542f\u7528nacos\u914d\u7f6e\u4e2d\u5fc3
-spring.cloud.nacos.config.enabled=true

+ 0 - 4
edu-zuul/src/main/java/com/keao/edu/zuul/web/config/SwaggerDocumentConfig.java

@@ -20,11 +20,7 @@ public class SwaggerDocumentConfig implements SwaggerResourcesProvider {
 		// 增加服务信息
 		resources.add(swaggerResource("授权服务", "/auth-server/v2/api-docs", "2.0"));
 		resources.add(swaggerResource("CMS服务", "/cms-server/v2/api-docs", "2.0"));
-		resources.add(swaggerResource("WEB服务", "/web-server/v2/api-docs", "2.0"));
 		resources.add(swaggerResource("TASK服务", "/task-server/v2/api-docs", "2.0"));
-		resources.add(swaggerResource("STUDENT服务", "/student-server/v2/api-docs", "2.0"));
-		resources.add(swaggerResource("TEACHER服务", "/teacher-server/v2/api-docs", "2.0"));
-		resources.add(swaggerResource("EDUCATION服务", "/education-server/v2/api-docs", "2.0"));
 		return resources;
 	}
 

+ 96 - 0
edu-zuul/src/main/resources/application.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8000
+  tomcat:
+    accesslog:
+      enabled: true
+      buffered: true
+      directory: /var/logs
+      file-date-format: -yyyy-MM-dd
+      pattern: common
+      prefix: tomcat-gateway
+      rename-on-rotate: false
+      request-attributes-enabled: false
+      rotate: true
+      suffix: .log
+
+spring:
+  application:
+    name: zuul-web
+
+  servlet:
+    multipart:
+      # 最大支持文件大小
+      max-file-size: 50MB
+      # 最大支持请求大小
+      max-request-size: 50MB
+
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://admin:admin123@localhost:8761/eureka/eureka/
+    instance:
+      lease-renewal-interval-in-seconds: 5
+
+ribbon:
+  eureka:
+    enable: true
+  ReadTimeout: 30000
+  SocketTimeout: 10000
+
+### 配置网关反向代理
+zuul:
+  routes:
+    api-auth:
+      ### 以 /api-auth/访问转发到会员服务
+      path: /api-auth/**
+      serviceId: auth-server
+      #url: http://localhost:8001/
+      ##加上下面参数,可将header信息传递至下游
+      #sensitiveHeaders:
+    api-task:
+      ### 以 /api-auth/访问转发到会员服务
+      path: /api-task/**
+      serviceId: task-server
+      #url: http://localhost:8001/
+      ##加上下面参数,可将header信息传递至下游
+      #sensitiveHeaders:
+    api-cms:
+      ### 以 /api-auth/访问转发到会员服务
+      path: /api-cms/**
+      serviceId: cms-server
+      #url: http://localhost:8001/
+      ##加上下面参数,可将header信息传递至下游
+      #sensitiveHeaders:
+  #忽略某个微服务
+  ignored-services: eureka-server
+  #重试
+  retryable: false
+  #请求处理超时
+  ReadTimeout: 600000
+  #连接超时
+  ConnectTimeout: 100000
+  sensitiveHeaders:
+
+hystrix:
+  command:
+    default:
+      execution:
+        isolation:
+          thread:
+            #发生熔断的超时时间
+            timeoutInMilliseconds: 60000
+          semaphore:
+            maxConcurrentRequests: 500
+          circuitBreaker:
+            sleepWindowInMilliseconds: 5000
+
+
+#spring boot admin 相关配置
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"
+  endpoint:
+    health:
+      show-details: ALWAYS

+ 55 - 0
edu-zuul/src/main/resources/logback-spring.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+	<property name="LOG_HOME" value="/mdata/logs/gateway-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="CONSOLE_LOG_PATTERN"
+		value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
+
+	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder charset="UTF-8">
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="file"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>${LOG_HOME}</FileNamePattern>
+			<MaxHistory>90</MaxHistory>
+			<TimeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<MaxFileSize>20MB</MaxFileSize>
+			</TimeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+
+		<encoder>
+			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="com.keao.edu" level="INFO" />
+
+	<!--开发环境:打印控制台 -->
+	<springProfile name="dev">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+	
+	<springProfile name="test">
+		<root level="INFO">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+	<!--生产环境:输出到文件 -->
+	<springProfile name="prod">
+		<root level="WARN">
+			<appender-ref ref="stdout" />
+			<appender-ref ref="file" />
+		</root>
+	</springProfile>
+
+</configuration>

+ 13 - 6
pom.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<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">
+<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.keao.edu</groupId>
@@ -54,6 +55,12 @@
 				<version>1.0</version>
 			</dependency>
 
+			<dependency>
+				<groupId>com.keao.edu</groupId>
+				<artifactId>edu-datasource</artifactId>
+				<version>1.0</version>
+			</dependency>
+
 			<!--֧��Spring Boot 2.1.X -->
 			<dependency>
 				<groupId>org.springframework.boot</groupId>
@@ -294,9 +301,9 @@
 		<module>edu-task</module>
 		<module>edu-cms</module>
 		<module>edu-user</module>
-	  <module>edu-auth</module>
-    <module>edu-im</module>
-    <module>edu-thirdparty</module>
-    <module>edu-datasource</module>
-  </modules>
+		<module>edu-auth</module>
+		<module>edu-im</module>
+		<module>edu-thirdparty</module>
+		<module>edu-datasource</module>
+	</modules>
 </project>