Explorar o código

瀚高 highgo db适配支持

瀚高db适配支持
MaxKey %!s(int64=4) %!d(string=hai) anos
pai
achega
64455c47c5
Modificáronse 43 ficheiros con 1972 adicións e 33 borrados
  1. 1 0
      build.gradle
  2. 1 0
      config/build_docker.gradle
  3. 1 0
      config/build_jar.gradle
  4. 1 0
      config/build_standard.gradle
  5. 1 0
      gradle.properties
  6. 3 3
      maxkey-core/src/main/java/org/maxkey/entity/Groups.java
  7. 6 14
      maxkey-core/src/main/java/org/maxkey/entity/Organizations.java
  8. 1 1
      maxkey-core/src/main/java/org/maxkey/persistence/db/LoginService.java
  9. 1 1
      maxkey-identitys/maxkey-synchronizers/src/main/java/org/maxkey/synchronizer/workweixin/WorkweixinOrganizationService.java
  10. BIN=BIN
      maxkey-lib/hgjdbc-6.0.4-jdbc42.jar
  11. BIN=BIN
      maxkey-lib/mybatis-jpa-extra-2.3.jar
  12. 2 2
      maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java
  13. 32 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AccountsMapper.xml
  14. 30 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsAdaptersMapper.xml
  15. 18 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsCasDetailsMapper.xml
  16. 17 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsFormBasedDetailsMapper.xml
  17. 18 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsJwtDetailsMapper.xml
  18. 197 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsMapper.xml
  19. 34 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsSaml20DetailsMapper.xml
  20. 18 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsTokenBasedDetailsMapper.xml
  21. 5 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/ForgotPasswordMapper.xml
  22. 260 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/GroupMemberMapper.xml
  23. 61 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/GroupPrivilegesMapper.xml
  24. 58 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/GroupsMapper.xml
  25. 54 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/HistoryLoginAppsMapper.xml
  26. 72 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/HistoryLoginMapper.xml
  27. 55 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/HistoryLogsMapper.xml
  28. 36 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/NoticesMapper.xml
  29. 58 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/OrganizationsMapper.xml
  30. 6 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/PasswordPolicyMapper.xml
  31. 23 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/RegistrationMapper.xml
  32. 82 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/ReportMapper.xml
  33. 55 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/ResourcesMapper.xml
  34. 261 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/RoleMemberMapper.xml
  35. 92 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/RolesMapper.xml
  36. 25 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/SynchronizersMapper.xml
  37. 49 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/UserInfoAdjointMapper.xml
  38. 252 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/UserInfoMapper.xml
  39. 1 1
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupMemberMapper.xml
  40. 25 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/SynchronizersMapper.xml
  41. 20 3
      maxkey-web-manage/src/main/resources/application.properties
  42. 20 4
      maxkey-web-maxkey/src/main/resources/application-http.properties
  43. 20 4
      maxkey-web-maxkey/src/main/resources/application-https.properties

+ 1 - 0
build.gradle

@@ -286,6 +286,7 @@ subprojects {
          implementation  group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}"
 		 //database
 		 implementation  group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}"
+		 implementation  group: 'org.postgresql', name: 'postgresql', version: "${postgresqlVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid', version: "${druidVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}"
          implementation  group: 'redis.clients', name: 'jedis', version: "${jedisVersion}"

+ 1 - 0
config/build_docker.gradle

@@ -282,6 +282,7 @@ subprojects {
          implementation  group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}"
 		 //database
 		 implementation  group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}"
+		 implementation  group: 'org.postgresql', name: 'postgresql', version: "${postgresqlVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid', version: "${druidVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}"
          implementation  group: 'redis.clients', name: 'jedis', version: "${jedisVersion}"

+ 1 - 0
config/build_jar.gradle

@@ -282,6 +282,7 @@ subprojects {
          implementation  group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}"
 		 //database
 		 implementation  group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}"
+		 implementation  group: 'org.postgresql', name: 'postgresql', version: "${postgresqlVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid', version: "${druidVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}"
          implementation  group: 'redis.clients', name: 'jedis', version: "${jedisVersion}"

+ 1 - 0
config/build_standard.gradle

@@ -283,6 +283,7 @@ subprojects {
          implementation  group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}"
 		 //database
 		 implementation  group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}"
+		 implementation  group: 'org.postgresql', name: 'postgresql', version: "${postgresqlVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid', version: "${druidVersion}"
 		 implementation  group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}"
          implementation  group: 'redis.clients', name: 'jedis', version: "${jedisVersion}"

+ 1 - 0
gradle.properties

@@ -61,6 +61,7 @@ swaggerVersion                  =1.6.2
 swaggerV3Version                =2.1.6
 knife4jVersion                  =3.0.2
 #database
+postgresqlVersion               =42.2.20
 mysqlconnectorjavaVersion       =8.0.21
 druidVersion                    =1.2.5
 druidspringbootstarterVersion   =1.2.5

+ 3 - 3
maxkey-core/src/main/java/org/maxkey/entity/Groups.java

@@ -67,7 +67,7 @@ public class Groups extends JpaBaseEntity implements Serializable {
     @Column
     String modifiedDate;
     @Column
-    String status;
+    int status;
 
     public Groups() {
     }
@@ -153,11 +153,11 @@ public class Groups extends JpaBaseEntity implements Serializable {
         this.modifiedDate = modifiedDate;
     }
 
-    public String getStatus() {
+    public int getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(int status) {
         this.status = status;
     }
 

+ 6 - 14
maxkey-core/src/main/java/org/maxkey/entity/Organizations.java

@@ -78,13 +78,13 @@ public class Organizations extends JpaBaseEntity implements Serializable {
     @Column
     private String email;
     @Column
-    private String sortIndex;
+    private long sortIndex;
     @Column
     private String ldapDn;
     @Column
     private String description;
     
-    private String status;
+    private int status;
     @Column
     private String extId;
     @Column
@@ -256,14 +256,6 @@ public class Organizations extends JpaBaseEntity implements Serializable {
         this.email = email;
     }
 
-    public String getSortOrder() {
-        return sortOrder;
-    }
-
-    public void setSortOrder(String sortOrder) {
-        this.sortOrder = sortOrder;
-    }
-
     public String getDescription() {
         return description;
     }
@@ -288,11 +280,11 @@ public class Organizations extends JpaBaseEntity implements Serializable {
         this.namePath = namePath;
     }
 
-    public String getSortIndex() {
+    public long getSortIndex() {
         return sortIndex;
     }
 
-    public void setSortIndex(String sortIndex) {
+    public void setSortIndex(long sortIndex) {
         this.sortIndex = sortIndex;
     }
     
@@ -306,11 +298,11 @@ public class Organizations extends JpaBaseEntity implements Serializable {
 		this.ldapDn = ldapDn;
 	}
 
-	public String getStatus() {
+	public int getStatus() {
         return status;
     }
 
-    public void setStatus(String status) {
+    public void setStatus(int status) {
         this.status = status;
     }
     

+ 1 - 1
maxkey-core/src/main/java/org/maxkey/persistence/db/LoginService.java

@@ -52,7 +52,7 @@ public class LoginService {
     private static final String LOGOUT_USERINFO_UPDATE_STATEMENT = "update mxk_userinfo set lastlogofftime = ? , online = "
             + UserInfo.ONLINE.OFFLINE + "  where id = ?";
 
-    private static final String GROUPS_SELECT_STATEMENT = "select distinct g.id,g.name from mxk_userinfo u,`mxk_groups` g,mxk_group_member gm where u.id = ?  and u.id=gm.memberid and gm.groupid=g.id ";
+    private static final String GROUPS_SELECT_STATEMENT = "select distinct g.id,g.name from mxk_userinfo u,mxk_groups g,mxk_group_member gm where u.id = ?  and u.id=gm.memberid and gm.groupid=g.id ";
 
     private static final String DEFAULT_USERINFO_SELECT_STATEMENT = "select * from  mxk_userinfo where username = ?";
     

+ 1 - 1
maxkey-identitys/maxkey-synchronizers/src/main/java/org/maxkey/synchronizer/workweixin/WorkweixinOrganizationService.java

@@ -76,7 +76,7 @@ public class WorkweixinOrganizationService implements ISynchronizerService{
 		org.setId(dept.getId()+"");
 		org.setName(dept.getName());
 		org.setParentId(dept.getParentid()+"");
-		org.setSortIndex(dept.getOrder()+"");
+		org.setSortIndex(dept.getOrder());
 		return org;
 	}
 

BIN=BIN
maxkey-lib/hgjdbc-6.0.4-jdbc42.jar


BIN=BIN
maxkey-lib/mybatis-jpa-extra-2.3.jar


+ 2 - 2
maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java

@@ -176,7 +176,7 @@ public class OrganizationsService  extends JpaBaseService<Organizations>{
 	                                // 排序
 	                                Cell cell = row.getCell(k);
 	                                String sortIndex=getValue(cell);
-	                                organization.setSortIndex(sortIndex.equals("") ? "1" : sortIndex);
+	                                organization.setSortIndex(sortIndex.equals("") ? 1 : Integer.parseInt(sortIndex));
 	                            } else if (k == 11) {
 	                                // 联系人
 	                                Cell cell = row.getCell(k);
@@ -219,7 +219,7 @@ public class OrganizationsService  extends JpaBaseService<Organizations>{
 	                                organization.setDescription(getValue(cell));
 	                            }
 	                        }
-	                        organization.setStatus("1");
+	                        organization.setStatus(1);
 	                        orgsList.add(organization);
 	                    }
 	                    

+ 32 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AccountsMapper.xml

@@ -0,0 +1,32 @@
+<?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="org.maxkey.persistence.mapper.AccountsMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id = #{id}
+		</if> 
+		<if test="appId != null and appId != ''">
+			and	appid =	#{appId}
+		</if> 
+		<if test="username != null and username != ''">
+			and	username = #{username}
+		</if> 
+		<if test="relatedUsername != null and relatedUsername != ''">
+			and	relatedusername	= #{relatedUsername}
+		</if> 
+    </sql>
+    
+	
+	
+	<select id="queryPageResults" parameterType="Accounts" resultType="Accounts">
+		select
+			*
+		from
+			mxk_accounts
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>
+	
+</mapper>

+ 30 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsAdaptersMapper.xml

@@ -0,0 +1,30 @@
+<?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="org.maxkey.persistence.mapper.AppsAdaptersMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id = #{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name like '%${name}%'
+		</if> 
+		<if test="protocol != null and protocol != ''">
+			and	protocol = #{protocol}
+		</if> 
+    </sql>
+    
+	
+	
+	<select id="queryPageResults" parameterType="AppsAdapters" resultType="AppsAdapters">
+		select
+			*
+		from
+			mxk_apps_adapters
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+		order by sortindex
+	</select>
+	
+</mapper>

+ 18 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsCasDetailsMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.maxkey.persistence.mapper.AppsCasDetailsMapper">
+	<select id="getAppDetails" parameterType="string" resultType="AppsCasDetails">
+    	select 
+			*
+    	from 
+    		mxk_apps_cas_details cd,
+    		mxk_apps app
+    	where 	
+    		status = 1
+    		and cd.id =	app.id
+    		and (
+    			app.id = #{value}
+    			or  lower(cd.service) = lower(substring(#{value},1,length(cd.service)))
+    		)
+    </select>
+</mapper>

+ 17 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsFormBasedDetailsMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.maxkey.persistence.mapper.AppsFormBasedDetailsMapper">
+
+	<select id="getAppDetails" parameterType="string" resultType="AppsFormBasedDetails">
+    	select 
+			*
+    	from 
+    		mxk_apps_form_based_details fbd,
+    		mxk_apps app
+    	where 	
+    		app.id = #{value}
+    		and fbd.id = #{value}
+    		and fbd.id = app.id
+    		and status = 1
+    </select>
+</mapper>

+ 18 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsJwtDetailsMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.maxkey.persistence.mapper.AppsJwtDetailsMapper">
+
+<select id="getAppDetails" parameterType="string" resultType="AppsJwtDetails">
+    	select 
+			*
+    	from 
+    		mxk_apps_jwt_details jd,
+    		mxk_apps app
+    	where 	
+    		app.id	=	#{value}
+    		and jd.id	=	#{value}
+    		and jd.id	=	app.id
+    		and status	=	1
+    </select>
+	
+</mapper>

+ 197 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsMapper.xml

@@ -0,0 +1,197 @@
+<?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="org.maxkey.persistence.mapper.AppsMapper">
+
+	<sql id="where_statement">
+		<if test="id != null and id != ''">
+			and id = #{id}
+		</if>
+		<if test="name != null and name != ''">
+			and name  like  '%${name}%'
+		</if>
+		<if test="protocol != null and protocol != ''">
+			and protocol = #{protocol}
+		</if>
+		<if test="credential != null and credential != ''">
+			and credential = #{credential}
+		</if>
+		<if test="category != null and category != ''">
+			and category = #{category}
+		</if>
+		<if test="vendor != null and vendor != ''">
+			and vendor = #{vendor}
+		</if>
+	</sql>
+	
+	
+	<select id="queryPageResults" parameterType="Apps" resultType="Apps">
+		select
+			*
+		from
+			mxk_apps
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+		order by sortindex
+	</select>
+	
+		
+	<insert id="insertApp" parameterType="Apps">
+		insert into mxk_apps(
+			id,
+			name,
+			icon,
+			loginurl,
+			protocol,
+			category,
+			secret,
+			description,
+			vendor,
+			vendorurl,
+			
+			credential,
+			sharedusername,
+			sharedpassword,
+			systemuserattr,
+			
+			isextendattr,
+			extendattr,
+			userpropertys,
+			
+			issignature,
+			
+			isadapter,
+			adapter,
+			
+			principal,
+			credentials,
+			
+			visible,
+			
+			sortindex,
+			
+			createdby,
+			createddate,
+			
+			status,
+			
+			logouturl,
+			logouttype
+		)values(
+			#{id},
+			#{name},
+			#{icon},
+			#{loginUrl},
+			#{protocol},
+			#{category},
+			#{secret},
+			#{description},
+			#{vendor} ,
+			#{vendorUrl},
+			
+			#{credential},
+			#{sharedUsername},
+			#{sharedPassword},
+			#{systemUserAttr},
+			
+			#{isExtendAttr},
+			#{extendAttr},
+			#{userPropertys},
+			#{isSignature},
+			
+			#{isAdapter},
+			#{adapter},
+			
+			#{principal},
+			#{credentials},
+			
+			#{visible},
+			
+			#{sortIndex},
+			
+			#{createdBy},
+			#{createdDate} ,
+			
+			#{status},
+
+			#{logoutUrl},
+			#{logoutType}
+		)
+	</insert>
+	
+	<update id="updateApp" parameterType="Apps" >
+    	update mxk_apps set
+    		name			=	#{name},
+    		<if test="icon != null">
+			icon			=	#{icon},
+			</if>
+			loginurl		=	#{loginUrl},
+			protocol		=	#{protocol},
+			category		=	#{category},
+			secret 			=	#{secret},
+			description		=	#{description},
+			vendor			=	#{vendor},
+			vendorurl		=	#{vendorUrl},
+			
+			credential			=	#{credential},
+			sharedusername		=	#{sharedUsername},
+			sharedpassword		=	#{sharedPassword},
+			systemuserattr		=	#{systemUserAttr},
+			<!--
+			isextendattr		=	#{isExtendAttr},
+			extendattr			=	#{extendAttr},
+			-->
+			userpropertys		=	#{userPropertys},
+			issignature			=	#{isSignature},
+			
+			<if test="adapter != null">
+			isadapter			=	#{isAdapter},
+			adapter				=	#{adapter},
+			</if>
+			principal		=	#{principal},
+			credentials		=	#{credentials},
+			visible				=	#{visible},
+			sortindex			=	#{sortIndex},
+			
+			modifiedby		=	#{modifiedBy},
+			modifieddate	=	#{modifiedDate},
+			
+			status			=	#{status},
+
+			logouturl			=	#{logoutUrl},
+			logouttype			=	#{logoutType}
+    	where 
+			id	=	#{id}
+    </update>
+    
+    <select id="queryMyApps" parameterType="UserApps" resultType="UserApps">
+        select distinct
+            app.*
+        from
+            mxk_apps app,mxk_group_privileges gp,mxk_groups g
+        where
+            app.id=gp.appid
+            and gp.groupid=g.id
+            and app.visible != 0
+            and (
+            	 g.id='ROLE_ALL_USER'
+                 or g.id in(
+                      select 
+                        gm.groupid 
+                      from 
+                        mxk_group_member gm,mxk_userinfo u 
+                      where gm.memberid    =   u.id 
+                        <if test="userId != null and userId != ''">
+                            and u.id        =   #{userId}
+                        </if>
+                        <if test="username != null and username != ''">
+                            and  u.username =   #{username}
+                        </if>
+                    )
+            )
+        <if test="name != null and name != ''">
+            and name    =   #{name}
+        </if>
+        order by sortindex
+    </select>
+</mapper>

+ 34 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsSaml20DetailsMapper.xml

@@ -0,0 +1,34 @@
+<?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="org.maxkey.persistence.mapper.AppsSaml20DetailsMapper">
+
+	<select id="getAppDetails" parameterType="string" resultType="AppsSaml20Details">
+    	select 
+    		svd.certissuer,
+    		svd.certsubject,
+    		svd.certexpiration,
+    		svd.keystore,
+    		svd.spacsurl ,
+    		svd.issuer,
+    		svd.entityid,
+    		svd.audience,
+    		svd.validityinterval ,
+    		svd.nameidformat,
+    		svd.encrypted,
+    		svd.binding,
+    		svd.nameidconvert,
+    		svd.signature,
+    		svd.digestmethod,
+    		svd.metaurl,
+			app.*
+    	from 
+    		mxk_apps_saml_v20_details svd,
+    		mxk_apps app
+    	where 	
+    		app.id			=	#{value}
+    		and svd.id		=	#{value}
+    		and svd.id		=	app.id
+    		and app.status	=	1
+    </select>
+    
+</mapper>

+ 18 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/AppsTokenBasedDetailsMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.maxkey.persistence.mapper.AppsTokenBasedDetailsMapper">
+
+<select id="getAppDetails" parameterType="string" resultType="AppsTokenBasedDetails">
+    	select 
+			*
+    	from 
+    		mxk_apps_token_based_details tbd,
+    		mxk_apps app
+    	where 	
+    		app.id	=	#{value}
+    		and tbd.id	=	#{value}
+    		and tbd.id	=	app.id
+    		and status	=	1
+    </select>
+	
+</mapper>

+ 5 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/ForgotPasswordMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.maxkey.persistence.mapper.ForgotPasswordMapper">
+
+</mapper>

+ 260 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/GroupMemberMapper.xml

@@ -0,0 +1,260 @@
+<?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="org.maxkey.persistence.mapper.GroupMemberMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name = #{name}
+		</if>
+    </sql>
+    
+
+    <!-- GROUP_MEMBER  User Member-->
+    <select id="allMemberInGroup" parameterType="GroupMember" resultType="GroupMember">
+		    select	distinct
+					u.id,
+					u.username,
+					u.usertype,
+					u.windowsaccount,
+					
+					u.displayname ,
+					u.nickname ,
+					u.namezhspell,
+					u.namezhshortspell,
+					u.givenname ,
+					u.middlename ,
+					u.familyname ,
+					
+					u.gender,
+		
+					u.authntype,
+					u.mobile,
+					u.email,
+					u.workemail,
+					u.workphonenumber,
+		
+					u.employeenumber,
+					u.division,
+					u.costcenter,
+					u.organization,
+					u.departmentid,
+					u.department,
+					u.jobtitle,
+					u.joblevel,
+					
+					
+					u.createdby,
+					u.createddate,
+					u.modifiedby,
+					u.modifieddate,
+					
+					u.status
+				from
+					mxk_userinfo u
+			where	1	=	1
+	</select>
+	
+    <select id="memberInGroup" parameterType="GroupMember" resultType="GroupMember">
+			select	distinct
+				gm.id,
+				u.username,
+				u.usertype,
+				u.windowsaccount,
+				
+				u.displayname ,
+				u.nickname ,
+				u.namezhspell,
+				u.namezhshortspell,
+				u.givenname ,
+				u.middlename ,
+				u.familyname ,
+				
+				u.gender,
+	
+				u.authntype,
+				u.mobile,
+				u.email,
+				u.workemail,
+				u.workphonenumber,
+	
+				u.employeenumber,
+				u.division,
+				u.costcenter,
+				u.organization,
+				u.departmentid,
+				u.department,
+				u.jobtitle,
+				u.joblevel,
+				
+				
+				u.createdby,
+				u.createddate,
+				u.modifiedby,
+				u.modifieddate,
+				
+				u.status
+			from
+				mxk_userinfo u,
+				mxk_groups g,
+				mxk_group_member gm
+			where	1	=	1
+				<if test="groupId != null and groupId != ''">
+					and gm.groupid = #{groupId}
+					and g.id = #{groupId}
+				</if>
+				<if test="groupName != null and groupName != ''">
+					and g.name = #{groupName}
+				</if>
+				<if test="username != null and username != ''">
+					and u.username = #{username}
+				</if>
+				<if test="displayName != null and displayName != ''">
+					and u.displayname   like  '%${displayName}%'
+				</if>
+				and	gm.type		in(	'USER','USER-DYNAMIC')
+				and	gm.groupid	=	g.id	
+				and	gm.memberid	=	u.id
+	</select>
+	
+	
+	<select id="memberNotInGroup" parameterType="GroupMember" resultType="GroupMember">
+		select	distinct
+			u.id,
+			u.username,
+			u.usertype,
+			u.windowsaccount,
+			
+			u.displayname ,
+			u.nickname ,
+			u.namezhspell,
+			u.namezhshortspell,
+			u.givenname ,
+			u.middlename ,
+			u.familyname ,
+			
+			u.gender,
+
+			u.authntype,
+			u.mobile,
+			u.email,
+			u.workemail,
+			u.workphonenumber,
+
+			u.employeenumber,
+			u.division,
+			u.costcenter,
+			u.organization,
+			u.departmentid,
+			u.department,
+			u.jobtitle,
+			u.joblevel,
+			
+			
+			u.createdby,
+			u.createddate,
+			u.modifiedby,
+			u.modifieddate,
+			
+			u.status
+		from
+			mxk_userinfo u
+		where
+			u.id not in(
+       			 select gm.memberid 
+       			 from 	mxk_groups g,mxk_group_member gm
+			     where  1  =  1
+			     <if test="groupId != null and groupId != ''">
+					and gm.groupid = #{groupId}
+					and g.id = #{groupId}
+				</if>
+				<if test="groupName != null and groupName != ''">
+					and g.name = #{groupName}
+				</if>
+					and	gm.type		in(	'USER','USER-DYNAMIC')
+			     	and gm.groupid	=	g.id
+			)
+		<if test="username != null and username != ''">
+			and u.username = #{username}
+		</if>
+		<if test="displayName != null and displayName != ''">
+			and u.displayname   like  '%${displayName}%'
+		</if>
+	</select>
+	
+	
+	<!-- GROUP_MEMBER  Group Member-->
+	<select id="groupMemberInGroup" parameterType="GroupMember" resultType="Groups">
+		select	distinct
+			ig.*
+		from
+			mxk_groups ig,
+			mxk_groups g,
+			mxk_group_member gm
+		where
+			 1	=	1
+			and gm.groupid	=	g.id	
+			and	gm.memberid	=	ig.id
+			and	gm.type		=	'GROUP'
+		<if test="groupId != null and groupId != ''">
+			and gm.groupid = #{groupId}
+			and g.id = #{groupId}
+		</if>
+		<if test="groupName != null and groupName != ''">
+			and g.name = #{groupName}
+		</if>
+	</select>
+
+	<update id="addDynamicGroupMember" parameterType="Groups" >
+    	insert into mxk_group_member(
+    		id,
+    		groupid,
+    		memberid,
+    		type
+    	)
+    	select 
+    		concat_ws('-','UD','${id}',u.id) id,
+    		'${id}' groupid,
+    		u.id memberid,
+    		'USER-DYNAMIC' as type
+    	from mxk_userinfo u
+		where not exists(
+				select  1 from mxk_group_member gm 
+				where gm.groupid=#{id}
+					and gm.memberid=u.id
+					and gm.type='USER-DYNAMIC'
+			)
+		<if test="filters != null and filters != ''">
+				and (${filters})
+		</if>
+		<if test="orgIdsList != null and orgIdsList != ''">
+				and u.departmentid in( ${orgIdsList})
+		</if>
+    </update>
+    
+    <delete id="deleteDynamicGroupMember" parameterType="Groups" >
+    	delete from mxk_group_member gm
+    	where type = 'user-dynamic'
+    		and gm.groupid=#{id}
+    		and not exists(
+		    	select 1
+		    	from mxk_userinfo u
+		    	where 1 = 1 
+		    		and u.id=gm.memberid
+				<if test="filters != null and filters != ''">
+						and (${filters})
+				</if>
+				<if test="orgIdsList != null and orgIdsList != ''">
+						and u.departmentid in ( ${orgIdsList})
+				</if>
+			)
+    </delete>
+    
+    <delete id="deleteByGroupId" parameterType="string" >
+    	delete from mxk_group_member gm
+    	where  gm.groupid=#{value}
+    </delete>
+	
+</mapper>

+ 61 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/GroupPrivilegesMapper.xml

@@ -0,0 +1,61 @@
+<?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="org.maxkey.persistence.mapper.GroupPrivilegesMapper" >
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	apps.id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and apps.name like  '%${name}%'
+		</if>
+		<if test="protocol != null and protocol != ''">
+			and apps.protocol = #{protocol}
+		</if>
+		<if test="category != null and category != ''">
+			and apps.category = #{category}
+		</if>
+    </sql>
+	
+	<!-- AppGroup -->
+	<select id="appsInGroup" parameterType="GroupPrivileges" resultType="GroupPrivileges">
+		select
+			gp.id,
+			gp.groupid,
+			gp.appid,
+			apps.name,
+            apps.icon,
+            apps.loginurl,
+            apps.protocol,
+            apps.category,
+            apps.description,
+            apps.vendor,
+            apps.vendorurl
+		from
+			mxk_apps apps,
+			mxk_group_privileges    gp
+		where
+			gp.appid=apps.id
+			and gp.groupid	=	#{groupId}
+		<include refid="where_statement"/>
+	</select>
+	
+	<select id="appsNotInGroup" parameterType="GroupPrivileges" resultType="GroupPrivileges">
+		select
+			*
+		from
+			mxk_apps apps
+		where
+			 1	=	1
+			and  apps.id not in(
+				select 
+					appid
+				from
+					mxk_group_privileges
+				where 
+					groupid	=	#{groupId}
+			)
+		<include refid="where_statement"/>
+	</select>
+	
+</mapper>

+ 58 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/GroupsMapper.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="org.maxkey.persistence.mapper.GroupsMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name like '%${name}%'
+		</if>
+    </sql>
+    
+	
+	
+	<select id="queryPageResults" parameterType="Groups" resultType="Groups">
+		select
+			*
+		from
+			mxk_groups
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>
+	
+	<select id="queryDynamicGroups" parameterType="Groups" resultType="Groups">
+		select
+			*
+		from
+			mxk_groups
+		where
+			 dynamic = '1'
+		<include refid="where_statement"/>
+	</select>
+	
+	
+	<update id="logisticDelete" parameterType="Groups" >
+    	update mxk_groups set
+    		status	=	'2'  
+    	where	1	=	1
+    	<if test="id != null">
+			and	id	=	#{id}
+		</if>
+		<if test="name != name">
+			and	name	=	#{name}
+		</if>
+    </update>
+    
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	update mxk_groups set status='2' where id in
+    		<foreach item="item" collection="list" open="(" separator="," close=")">
+				#{item}
+    		</foreach>
+    </update>
+    
+   
+</mapper>

+ 54 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/HistoryLoginAppsMapper.xml

@@ -0,0 +1,54 @@
+<?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="org.maxkey.persistence.mapper.HistoryLoginAppsMapper" >
+
+	<sql id="dao_where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="sessionId != null and sessionId != ''">
+			and	sessionid	=	#{sessionId}
+		</if> 
+		<if test="appId != null and appId != ''">
+			and	appid	=	#{appId}
+		</if>
+		<if test="appName != null and appName != ''">
+			and	appname	like concat('%',#{appName},'%')
+		</if> 
+		<if test="uid != null and uid != ''">
+			and	uid	=	#{uid}
+		</if> 
+		<if test="username != null and username != ''">
+			and	username	like concat('%',#{username},'%')
+		</if> 
+		<if test="displayName != null and displayName != ''">
+			and	displayname	like concat('%',#{displayName},'%')
+		</if> 
+		<if test="startDate != null and startDate != ''">
+			and	logintime	>=	#{startDate}
+		</if>
+		<if test="endDate != null and endDate != ''">
+			and	 #{endDate}	>=	logintime
+		</if>
+		
+    </sql>
+    
+     <select id="queryPageResults" parameterType="HistoryLoginApps" resultType="HistoryLoginApps">
+    	select 
+			id,
+			sessionid,
+			appid,
+			appname,
+			uid,
+			username,
+			displayname,
+			to_char(logintime,'YYYY-MM-DD HH24:MI:SS') as logintime
+    	from mxk_history_login_apps
+    	where	1	=	1
+    	<include refid="dao_where_statement"/>
+    	
+    	order by logintime desc
+    </select>
+  
+    
+</mapper>

+ 72 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/HistoryLoginMapper.xml

@@ -0,0 +1,72 @@
+<?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="org.maxkey.persistence.mapper.HistoryLoginMapper" >
+
+	<sql id="dao_where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="uid != null and uid != ''">
+			and	uid	=	#{uid}
+		</if> 
+		<if test="username != null and username != '' ">
+			and lower(username) like lower(concat('%',#{username},'%'))
+		</if>
+		<if test="message != null and message != '' ">
+			and lower(message) like lower(concat('%',#{message},'%'))
+		</if>
+		<if test="displayName != null and displayName != '' ">
+			and lower(displayname) like lower(concat('%',#{displayName},'%'))
+		</if>
+
+		<if test="startDate != null and startDate != ''">
+			and	logintime	>=	#{startDate}
+		</if>
+		<if test="endDate != null and endDate != ''">
+			and	 #{endDate}	>=	logintime
+		</if>
+		<if test="sessionId != null and sessionId != ''">
+			and	sessionid	=	#{sessionId}
+		</if> 
+		<if test="loginType != null and loginType != ''">
+			and	logintype	=	#{loginType}
+		</if>
+		<if test="sourceIp != null and sourceIp != ''">
+			and	sourceip	=	#{sourceIp}
+		</if>
+    </sql>
+	
+   
+    
+     <select id="queryPageResults" parameterType="HistoryLogin" resultType="HistoryLogin">
+    	select 
+			id,
+	   		sessionid,
+			uid,
+			username,
+			displayname,
+			logintype,
+			message,
+			code,
+			provider,
+			sourceip,
+			browser,
+			platform,
+			application,
+			loginurl,
+			to_char(logintime,'YYYY-MM-DD HH24:MI:SS') as logintime,
+			to_char(logouttime,'YYYY-MM-DD HH24:MI:SS') as logouttime
+    	from mxk_history_login
+    	where	1	=	1
+    	<include refid="dao_where_statement"/>
+    	
+    	order by logintime desc
+    </select>
+    
+    <update id="logout" parameterType="java.lang.String" >
+    	update mxk_history_login set
+			logouttime			=	current_timestamp
+		where
+			sessionid	=	#{value}
+    </update>
+</mapper>

+ 55 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/HistoryLogsMapper.xml

@@ -0,0 +1,55 @@
+<?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="org.maxkey.persistence.mapper.HistoryLogsMapper" >
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="serviceName != null and serviceName != '' ">
+			and	 lower(servicename) like lower(concat('%',#{serviceName},'%'))
+		</if>
+		<if test="message != null and message != '' ">
+			and	 lower(message) like lower(concat('%',#{message},'%'))
+		</if>
+		<if test="startDate != null  and startDate != '' ">
+			and createddate  between 	#{startDate} and	#{endDate}
+		</if>
+		<if test="createdBy != null and createdBy != ''">
+			and	createdby	=	#{createdBy}
+		</if>
+
+		<if test="username != null and username != ''">
+			and	 lower(username) like lower(concat('%',#{username},'%'))
+		</if>
+		<if test="messageType != null and messageType != ''">
+			and	messagetype	=	#{messageType}
+		</if>
+		<if test="operateType != null and operateType != ''">
+			and	operatetype	=	#{operateType}
+		</if>
+    </sql>
+	
+    
+     <select id="queryPageResults" parameterType="HistoryLogs" resultType="HistoryLogs">
+    	select 
+			id,
+			tid,
+			tname,
+			servicename ,
+			code,
+			message ,
+			content,
+			operatetype,
+			messagetype,
+			username,
+			createddate,
+			createdby
+    	from mxk_history_logs 
+    	where	1	=	1
+    	<include refid="where_statement"/>
+    	
+    	order by createddate desc
+    </select>
+  
+</mapper>

+ 36 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/NoticesMapper.xml

@@ -0,0 +1,36 @@
+<?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="org.maxkey.persistence.mapper.NoticesMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="title != null and title != ''">
+			and title  like  '%${title}%'
+		</if> 
+    </sql>
+    
+	
+	
+	<select id="queryPageResults" parameterType="Notices" resultType="Notices">
+		select
+			*
+		from
+			mxk_notices
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+		order by  modifieddate desc
+	</select>
+	
+	<select id="queryLastedNotices" parameterType="Notices" resultType="Notices">
+		select
+			*
+		from
+			mxk_notices
+		order by  modifieddate desc
+		limit 1
+	</select>
+	
+</mapper>

+ 58 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/OrganizationsMapper.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="org.maxkey.persistence.mapper.OrganizationsMapper" >
+
+	<sql id="dao_where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id} 	
+		</if> 
+		<if test="name != null and name != '' ">
+			and	name	like  '%#{name}%'
+		</if>
+		<if test="parentId != null and parentId != '' ">
+			and	parentid	=	#{parentId}
+		</if>
+		<if test="parentName != null and parentName != ''">
+			and	parentname	like	'%#{parentName}%'
+		</if>
+
+    </sql>
+	
+    
+    
+     <select id="queryPageResults" parameterType="Organizations" resultType="Organizations">
+    	select 
+			*
+    	from mxk_organizations 
+    	where	1	=	1
+    	<include refid="dao_where_statement"/>
+    </select>
+    
+  
+    <update id="logisticDelete" parameterType="Organizations" >
+    	update mxk_organizations set status	=	'2'  
+    		where	1	=	1
+    	<if test="id != null and id != '' ">
+			and	id	=	#{id}
+		</if>
+		<if test="name != name">
+			and	name	=	#{name}
+		</if>
+		<if test="enable != null">
+			and	status	=	'1'
+		</if>
+		<if test="codePath != null">
+			and	codepath	=	#{codePath}
+		</if>
+    </update>
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	UPDATE MXK_ORGANIZATIONS SET STATUS	=	'2'  
+    		 WHERE ID IN
+		<foreach collection="ids" item="selectId"  open="(" separator="," close=")">  
+        	#{selectId}   
+     	</foreach>
+    </update>
+    
+  
+</mapper>

+ 6 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/PasswordPolicyMapper.xml

@@ -0,0 +1,6 @@
+<?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="org.maxkey.persistence.mapper.PasswordPolicyMapper" >
+	
+   
+</mapper>

+ 23 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/RegistrationMapper.xml

@@ -0,0 +1,23 @@
+<?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="org.maxkey.persistence.mapper.RegistrationMapper">
+	
+	<select id="queryUserInfoByEmail" parameterType="string" resultType="UserInfo">
+		select
+			id,
+			email
+		from
+			userinfo
+		where
+			email = #{value}
+		union
+		select 
+			id,
+			workemail eamil
+		from
+			mxk_registration
+		where 
+			workemail = #{value}
+	</select>
+	
+</mapper>

+ 82 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/ReportMapper.xml

@@ -0,0 +1,82 @@
+<?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="org.maxkey.persistence.mapper.ReportMapper" >
+ 	<!-- DAY  COUNT 一天访问量 -->
+	<select id="analysisDay" resultType="Integer">
+    	select 
+    		count(id) reportcount
+    	from mxk_history_login 
+     	where 
+    		date(logintime) =current_date
+    </select>
+    <!-- 本月新用户统计 -->
+    <select id="analysisNewUsers" parameterType="String" resultType="Integer">
+    	select 
+			count(*) reportcount 
+		from mxk_userinfo 
+		where to_char(createddate,'YYYY-MM')=to_char(current_date,'YYYY-MM')
+    </select>
+    <!-- 在线用户统计 -->
+    <select id="analysisOnlineUsers" parameterType="String" resultType="Integer">
+    	    select 
+				count(*) reportcount 
+			from mxk_userinfo 
+			where 
+			lastlogintime >lastlogofftime 
+    </select>
+    <!-- 30天活跃用户统计 -->
+    <select id="analysisActiveUsers" parameterType="String" resultType="Integer">
+    	select 
+			count(*) reportcount 
+		from mxk_userinfo 
+		where 
+		date(lastlogintime) >(current_date - interval '30 day')
+    </select> 
+    
+    <!-- DAY HOUR COUNT 当天每小时 -->
+	<select id="analysisDayHour" parameterType="String" resultType="Map">
+    	select 
+    		count(id) reportcount, 
+			to_char(logintime,'HH24') reportstring
+    	from mxk_history_login 
+    	where 
+    		date(logintime) =current_date
+    	group by reportstring
+    	order by reportstring
+    </select>
+    <!-- 30 DAY COUNT 最近30天每天访问量-->   
+    <select id="analysisMonth" parameterType="String" resultType="Map">
+    	select 
+    		count(id) reportcount, 
+			date(logintime) reportstring 
+    	from mxk_history_login 
+    	 where 
+    		date(logintime) >(current_date - interval '30 day')
+    	group by reportstring
+    	order by reportstring
+    </select>
+    
+    <!-- 30天浏览器的访问统计 -->
+    <select id="analysisBrowser" parameterType="Map" resultType="Map">
+    	select 
+    		count(id) reportcount, 
+			browser reportstring 
+    	from mxk_history_login 
+    	 where 
+    		date(logintime) >(current_date - interval '30 day')
+    	group by reportstring
+    	order by reportcount desc
+    </select>
+    
+    <!-- 30天应用单点登录的访问统计 -->
+	<select id="analysisApp" parameterType="Map" resultType="Map">
+    	select 
+			count(id) reportcount,
+			appname 
+    	from mxk_history_login_apps
+    	where 
+    		date(logintime) >(current_date - interval '30 day')
+    	group by appname order by reportcount desc
+    </select>
+
+</mapper>

+ 55 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/ResourcesMapper.xml

@@ -0,0 +1,55 @@
+<?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="org.maxkey.persistence.mapper.ResourcesMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	res.id	=	#{id}
+		</if> 
+		<if test="appId != null and appId != ''">
+            and res.appid  =   #{appId}
+        </if> 
+        <if test="parentId != null and parentId != ''">
+            and res.parentid  =   #{parentId}
+        </if> 
+		<if test="name != null and name != ''">
+			and res.name like '%${name}%'
+		</if>
+    </sql>
+    
+	
+	
+	<select id="queryPageResults" parameterType="Resources" resultType="Resources">
+		select
+			res.*,app.name appname
+		from
+			mxk_resources res, mxk_apps app
+		where
+			 (1=1)	and res.appid=app.id
+		<include refid="where_statement"/>
+		order by res.sortindex 
+	</select>
+	
+	
+	<update id="logisticDelete" parameterType="Resources" >
+    	update mxk_resources set
+    		status	=	'2'  
+    	where	1	=	1
+    	<if test="id != null">
+			and	id	=	#{id}
+		</if>
+		<if test="name != name">
+			and	name	=	#{name}
+		</if>
+    </update>
+    
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	update mxk_resources set status='2' where id in
+    		<foreach item="item" collection="list" open="(" separator="," close=")">
+				#{item}
+    		</foreach>
+    </update>
+    
+   
+</mapper>

+ 261 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/RoleMemberMapper.xml

@@ -0,0 +1,261 @@
+<?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="org.maxkey.persistence.mapper.RoleMemberMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name = #{name}
+		</if>
+    </sql>
+    
+
+    <!-- ROLE_MEMBER  User Member-->
+    <select id="allMemberInRole" parameterType="RoleMember" resultType="RoleMember">
+		    select	distinct
+					u.id,
+					u.username,
+					u.usertype,
+					u.windowsaccount,
+					
+					u.displayname ,
+					u.nickname ,
+					u.namezhspell,
+					u.namezhshortspell,
+					u.givenname ,
+					u.middlename ,
+					u.familyname ,
+					
+					u.gender,
+		
+					u.authntype,
+					u.mobile,
+					u.email,
+					u.workemail,
+					u.workphonenumber,
+		
+					u.employeenumber,
+					u.division,
+					u.costcenter,
+					u.organization,
+					u.departmentid,
+					u.department,
+					u.jobtitle,
+					u.joblevel,
+					
+					
+					u.createdby,
+					u.createddate,
+					u.modifiedby,
+					u.modifieddate,
+					
+					u.status
+				from
+					mxk_userinfo u
+			where	1	=	1
+	</select>
+	
+    <select id="memberInRole" parameterType="RoleMember" resultType="RoleMember">
+			select	distinct
+				rm.id,
+				u.username,
+				u.usertype,
+				u.windowsaccount,
+				
+				u.displayname ,
+				u.nickname ,
+				u.namezhspell,
+				u.namezhshortspell,
+				u.givenname ,
+				u.middlename ,
+				u.familyname ,
+				
+				u.gender,
+	
+				u.authntype,
+				u.mobile,
+				u.email,
+				u.workemail,
+				u.workphonenumber,
+	
+				u.employeenumber,
+				u.division,
+				u.costcenter,
+				u.organization,
+				u.departmentid,
+				u.department,
+				u.jobtitle,
+				u.joblevel,
+				
+				
+				u.createdby,
+				u.createddate,
+				u.modifiedby,
+				u.modifieddate,
+				
+				u.status
+			from
+				mxk_userinfo u,
+				mxk_roles r,
+				mxk_role_member rm
+			where	1	=	1
+				<if test="roleId != null and roleId != ''">
+					and rm.roleid = #{roleId}
+					and r.id = #{roleId}
+				</if>
+				<if test="roleName != null and roleName != ''">
+					and r.name = #{roleName}
+				</if>
+				<if test="username != null and username != ''">
+					and u.username = #{username}
+				</if>
+				<if test="displayName != null and displayName != ''">
+					and u.displayname   like  '%${displayName}%'
+				</if>
+				and	rm.type		in(	'USER','USER-DYNAMIC')
+				and	rm.roleid	=	r.id	
+				and	rm.memberid	=	u.id
+	</select>
+	
+	
+	<select id="memberNotInRole" parameterType="RoleMember" resultType="RoleMember">
+		select	distinct
+			u.id,
+			u.username,
+			u.usertype,
+			u.windowsaccount,
+			
+			u.displayname ,
+			u.nickname ,
+			u.namezhspell,
+			u.namezhshortspell,
+			u.givenname ,
+			u.middlename ,
+			u.familyname ,
+			
+			u.gender,
+
+			u.authntype,
+			u.mobile,
+			u.email,
+			u.workemail,
+			u.workphonenumber,
+
+			u.employeenumber,
+			u.division,
+			u.costcenter,
+			u.organization,
+			u.departmentid,
+			u.department,
+			u.jobtitle,
+			u.joblevel,
+			
+			
+			u.createdby,
+			u.createddate,
+			u.modifiedby,
+			u.modifieddate,
+			
+			u.status
+		from
+			mxk_userinfo u
+		where
+			u.id not in(
+       			 select rm.memberid 
+       			 from 	mxk_roles r,mxk_role_member rm
+			     where  1  =  1
+			     <if test="roleId != null and roleId != ''">
+					and rm.roleid = #{roleId}
+					and r.id = #{roleId}
+				</if>
+				<if test="roleName != null and roleName != ''">
+					and r.name = #{roleName}
+				</if>
+				
+					and	rm.type		in(	'USER','USER-DYNAMIC')
+			     	and rm.roleid	=	r.id
+			)
+		<if test="username != null and username != ''">
+			and u.username = #{username}
+		</if>
+		<if test="displayName != null and displayName != ''">
+			and u.displayname   like  '%${displayName}%'
+		</if>
+	</select>
+	
+	
+	<!-- ROLE_MEMBER  Roles Member-->
+	<select id="roleMemberInRole" parameterType="RoleMember" resultType="Roles">
+		select	distinct
+			ir.*
+		from
+			mxk_roles ir,
+			mxk_roles r,
+			mxk_role_member rm
+		where
+			 1	=	1
+			and rm.groupid	=	r.id	
+			and	rm.memberid	=	ir.id
+			and	rm.type		in(	'USER','USER-DYNAMIC')
+		<if test="roleId != null and roleId != ''">
+			and rm.roleid = #{roleId}
+			and r.id = #{roleId}
+		</if>
+		<if test="roleName != null and roleName != ''">
+			and r.name = #{roleName}
+		</if>
+	</select>
+
+	<update id="addDynamicRoleMember" parameterType="Roles" >
+    	insert into mxk_role_member(
+    		id,
+    		roleid,
+    		memberid,
+    		type
+    	)
+    	select 
+    		concat_ws('-','UD','${id}',u.id) id,
+    		'${id}' ROLEID,
+    		u.id memberid,
+    		'USER-DYNAMIC' type
+    	from mxk_userinfo u
+		where not exists(
+				select  1 from mxk_role_member rm 
+				where rm.roleid=#{id}
+					and rm.memberid=u.id
+					and rm.type='USER-DYNAMIC'
+			)
+		<if test="filters != null and filters != ''">
+				${filters}
+		</if>
+		<if test="orgIdsList != null and orgIdsList != ''">
+				and u.departmentid in( ${orgIdsList})
+		</if>
+    </update>
+    
+    <delete id="deleteDynamicRoleMember" parameterType="Roles" >
+    	delete from mxk_role_member rm
+    	where type = 'USER-DYNAMIC'
+    		and rm.roleid = #{id}
+    		and not exists(
+		    	select 1
+		    	from mxk_userinfo u
+		    	where 1 = 1 
+		    		and u.id=rm.memberid
+				<if test="filters != null and filters != ''">
+						${filters}
+				</if>
+				<if test="orgIdsList != null and orgIdsList != ''">
+						and u.departmentid in( ${orgIdsList})
+				</if>
+			)
+    </delete>
+    
+    <delete id="deleteByRoleId" parameterType="string" >
+    	delete from mxk_role_member rm
+    	where  rm.roleid=#{value}
+    </delete>
+	
+</mapper>

+ 92 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/RolesMapper.xml

@@ -0,0 +1,92 @@
+<?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="org.maxkey.persistence.mapper.RolesMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name like '%${name}%'
+		</if>
+    </sql>
+    
+	<select id="queryDynamicRoles" parameterType="Roles" resultType="Roles">
+		select
+			*
+		from
+			mxk_groups
+		where
+			 dynamic = '1'
+		<include refid="where_statement"/>
+	</select>
+	
+	<select id="queryPageResults" parameterType="Roles" resultType="Roles">
+		select
+			*
+		from
+			mxk_roles
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>
+	
+	
+	<update id="logisticDelete" parameterType="Roles" >
+    	update mxk_roles set
+    		status	=	'2'  
+    	where	1	=	1
+    	<if test="id != null">
+			and	id	=	#{id}
+		</if>
+		<if test="name != name">
+			and	name	=	#{name}
+		</if>
+    </update>
+    
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	update mxk_roles set status='2' where id in
+    		<foreach item="item" collection="list" open="(" separator="," close=")">
+				#{item}
+    		</foreach>
+    </update>
+    
+    
+    <select id="queryRolePermissions" parameterType="RolePermissions" resultType="RolePermissions">
+        select
+            *
+        from
+            mxk_role_permissions
+        where
+             status = 1
+       <if test="id != null and id != ''">
+            and id  =   #{id}
+        </if> 
+        <if test="roleId != null and roleId != ''">
+            and roleid  =   #{roleId}
+        </if> 
+        <if test="appId != null and appId != ''">
+            and appid  =   #{appId}
+        </if> 
+        
+    </select>
+    
+    <update id="logisticDeleteRolePermissions" parameterType="java.util.List">
+        update mxk_role_permissions set status=9 where id in
+            <foreach item="item" collection="list" open="(" separator="," close=")">
+                #{item.id}
+            </foreach>
+    </update>
+    
+    <insert id="insertRolePermissions"  parameterType="java.util.List">
+	    insert into mxk_role_permissions ( id,appid,roleid,resourceid,status) 
+	    values 
+	    <foreach collection="list" item="item" index="index" separator=",">
+	        (#{item.id},#{item.appId},#{item.roleId},#{item.resourceId},#{item.status})
+	    </foreach>
+	</insert>
+	
+	
+   
+</mapper>

+ 25 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/SynchronizersMapper.xml

@@ -0,0 +1,25 @@
+<?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="org.maxkey.persistence.mapper.SynchronizersMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name like '%${name}%'
+		</if>
+    </sql>
+    	
+	<select id="queryPageResults" parameterType="Synchronizers" resultType="Synchronizers">
+		select
+			*
+		from
+			mxk_synchronizers
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>	
+    
+   
+</mapper>

+ 49 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/UserInfoAdjointMapper.xml

@@ -0,0 +1,49 @@
+<?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="org.maxkey.persistence.mapper.UserInfoAdjointMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="userId != null and userId != ''">
+			and	userid	=	#{userId}
+		</if> 
+    </sql>
+    
+
+	
+	<select id="queryPageResults" parameterType="UserInfoAdjoint" resultType="UserInfoAdjoint">
+		select
+			*
+		from
+			mxk_userinfo_adjunct
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>
+	
+	
+	<update id="logisticDelete" parameterType="UserInfoAdjoint" >
+    	update mxk_userinfo_adjunct set
+    		status	=	'2'  
+    	where	1	=	1
+    	<if test="id != null">
+			and	id	=	#{id}
+		</if>
+		<if test="name != name">
+			and	name	=	#{name}
+		</if>
+    </update>
+    
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	update mxk_userinfo_adjunct set status='2' where id in
+    		<foreach item="item" collection="list" open="(" separator="," close=")">
+				#{item}
+    		</foreach>
+    </update>
+    
+
+   
+</mapper>

+ 252 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/highgo/UserInfoMapper.xml

@@ -0,0 +1,252 @@
+<?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="org.maxkey.persistence.mapper.UserInfoMapper">
+	
+	<select id="loadByUsername" parameterType="string" resultType="UserInfo">
+    	select 
+			*
+    	from
+			mxk_userinfo
+		where	username = #{value}
+    </select>
+    
+	<select id="queryPageResults" parameterType="UserInfo" resultType="UserInfo">
+		select
+			id,
+			username,
+			usertype,
+			windowsaccount,
+			
+			displayname ,
+			nickname ,
+			namezhspell,
+			namezhshortspell,
+			givenname ,
+			middlename ,
+			familyname ,
+			
+			gender,
+
+			authntype,
+			mobile,
+			email,
+			workemail,
+			workphonenumber,
+
+			employeenumber,
+			division,
+			costcenter,
+			organization,
+			departmentid,
+			department,
+			jobtitle,
+			joblevel,
+			
+			
+			createdby,
+			createddate,
+			modifiedby,
+			modifieddate,
+			
+			status
+		from
+			mxk_userinfo
+		where
+			 (1=1)	
+		<if test="username != null and username != ''">
+			and username = #{username}
+		</if>
+		<if test="employeeNumber != null and employeeNumber != ''">
+			and employeenumber = #{employeeNumber}
+		</if>
+		<if test="userType != null and userType != ''">
+			and usertype = #{userType}
+		</if>
+		<if test="displayName != null and displayName != ''">
+			and displayname   like  '%${displayName}%'
+		</if>
+		<if test="departmentId != null and departmentId != ''">
+			and departmentid = #{departmentId}
+		</if>
+		order by sortorder 
+	</select>
+	
+    <update id="locked" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="isLocked != null">
+    		islocked		=	#{isLocked},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="lockout" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="isLocked != null">
+    		islocked		=	#{isLocked},
+    		badpwdcount		=	0,
+			</if>
+			unlockdate			=	current_timestamp,
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    	
+	<update id="changePassword" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="password != null">
+    		password			=	#{password},
+			decipherable		=	#{decipherable},
+			</if>
+			passwordsettype			=	0,
+			passwordlastsettime		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="changeSharedSecret" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="sharedSecret != null">
+    		sharedsecret		=	#{sharedSecret},
+			sharedcounter		=	#{sharedCounter},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="changeAppLoginPassword" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="appLoginPassword != null">
+    		apploginpassword		=	#{appLoginPassword},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="updateProtectedApps" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="protectedApps != null">
+    		protectedapps		=	#{protectedApps},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="changePasswordQuestion" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="passwordAnswer != null">
+    		passwordquestion	=	#{passwordQuestion},
+			passwordanswer		=	#{passwordAnswer},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+	
+	<update id="changeAuthnType" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="authnType != null">
+    		authntype	=	#{authnType},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="changeEmail" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="email != null">
+    		email	=	#{email},
+			</if>
+			<if test="emailVerified != null">
+    		emailverified	=	#{emailVerified},
+			</if>
+			<if test="theme != null">
+            theme   =   #{theme},
+            </if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="changeMobile" parameterType="UserInfo" >
+    	update mxk_userinfo set
+    		<if test="mobile != null">
+    		mobile			=	#{mobile},
+			</if>
+			<if test="mobileVerified != null">
+    		mobileverified	=	#{mobileVerified},
+			</if>
+			modifieddate		=	current_timestamp
+		where 
+			id	=	#{id}
+    </update>
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	update mxk_userinfo set status='2' where id in
+    		<foreach item="item" collection="list" open="(" separator="," close=")">
+				#{item}
+    		</foreach>
+	</update>
+	
+    <update id="updateProfile" parameterType="UserInfo" >
+        update mxk_userinfo set
+            displayname     =   #{displayName},
+            nickname        =   #{nickName},
+            namezhspell     =   #{nameZhSpell},
+            namezhshortspell=   #{nameZhShortSpell},
+            givenname       =   #{givenName},
+            middlename      =   #{middleName},
+            familyname      =   #{familyName},
+            honorificprefix =   #{honorificPrefix},
+            honorificsuffix =   #{honorificSuffix},
+            formattedname   =   #{formattedName} ,
+            married         =   #{married},
+            gender          =   #{gender},
+            birthdate       =   #{birthDate},
+            <if test="picture != null">
+            picture         =   #{picture},
+            </if>
+            idtype          =   #{idType},
+            idcardno        =   #{idCardNo},
+            website         =   #{webSite},
+
+            locale          =   #{locale},
+            timezone        =   #{timeZone},
+            preferredlanguage=  #{preferredLanguage},
+
+            windowsaccount  =   #{windowsAccount},
+            
+            workcountry     =   #{workCountry},
+            workregion      =   #{workRegion},
+            worklocality    =   #{workLocality},
+            workstreetaddress=  #{workStreetAddress},
+            workaddressformatted=   #{workAddressFormatted},
+            workemail       =   #{workEmail},
+            workphonenumber =   #{workPhoneNumber},
+            workpostalcode  =   #{workPostalCode},
+            workfax         =   #{workFax},
+            
+            homecountry     =   #{homeCountry},
+            homeregion      =   #{homeRegion},
+            homelocality    =   #{homeLocality},
+            homestreetaddress=  #{homeStreetAddress},
+            homeaddressformatted=   #{homeAddressFormatted},
+            homeemail       =   #{homeEmail},
+            homephonenumber=    #{homePhoneNumber},
+            homepostalcode  =   #{homePostalCode},
+            homefax         =   #{homeFax},
+            
+            extraattribute  =   #{extraAttribute},
+            
+            modifiedby      =   #{modifiedBy},
+            modifieddate    =   current_timestamp       
+        where 
+            id  =   #{id}
+    </update>
+ 
+</mapper>

+ 1 - 1
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupMemberMapper.xml

@@ -218,7 +218,7 @@
     		concat_ws('-','UD','${id}',u.id) id,
     		'${id}' groupid,
     		u.id memberid,
-    		'USER-DYNAMIC' type
+    		'USER-DYNAMIC' as type
     	from mxk_userinfo u
 		where not exists(
 				select  1 from mxk_group_member gm 

+ 25 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/SynchronizersMapper.xml

@@ -0,0 +1,25 @@
+<?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="org.maxkey.persistence.mapper.SynchronizersMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			and	id	=	#{id}
+		</if> 
+		<if test="name != null and name != ''">
+			and name like '%${name}%'
+		</if>
+    </sql>
+    	
+	<select id="queryPageResults" parameterType="Synchronizers" resultType="Synchronizers">
+		select
+			*
+		from
+			mxk_synchronizers
+		where
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>	
+    
+   
+</mapper>

+ 20 - 3
maxkey-web-manage/src/main/resources/application.properties

@@ -34,20 +34,37 @@ spring.servlet.multipart.max-file-size=4194304
 #server.servlet.encoding.force=
 
 ############################################################################
-#database configuration                                                    #
+#database configuration 
+#   supported database
+#       mysql
+#       highgo
+#       postgresql
 ############################################################################
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#mysql
 spring.datasource.username=root
 spring.datasource.password=maxkey
 spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#highgo
+#spring.datasource.username=highgo
+#spring.datasource.password=High@123
+#spring.datasource.url=jdbc:highgo://192.168.56.107:5866/highgo?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=com.highgo.jdbc.Driver
+#postgresql
+#spring.datasource.username=root
+#spring.datasource.password=maxkey!
+#spring.datasource.url=jdbc:postgresql://localhost/maxkey?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=org.postgresql.Driver
+
 #mybatis
 mybatis.dialect=mysql
 mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps,
 mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml
 mybatis.table-column-snowflake-datacenter-id=1
 mybatis.table-column-snowflake-machine-id=1
-mybatis.table-column-escape=true
+mybatis.table-column-escape=false
+mybatis.table-column-case=lowercase
 
 ############################################################################
 #redis server  configuration                                               #

+ 20 - 4
maxkey-web-maxkey/src/main/resources/application-http.properties

@@ -38,21 +38,37 @@ spring.servlet.multipart.max-file-size=4194304
 #server.servlet.encoding.force=true
 
 ############################################################################
-#database configuration                                                    #
+#database configuration 
+#   supported database
+#       mysql
+#       highgo
+#       postgresql
 ############################################################################
-#datasource
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#mysql
 spring.datasource.username=root
 spring.datasource.password=maxkey
 spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#highgo
+#spring.datasource.username=highgo
+#spring.datasource.password=High@123
+#spring.datasource.url=jdbc:highgo://192.168.56.107:5866/highgo?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=com.highgo.jdbc.Driver
+#postgresql
+#spring.datasource.username=root
+#spring.datasource.password=maxkey!
+#spring.datasource.url=jdbc:postgresql://localhost/maxkey?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=org.postgresql.Driver
+
 #mybatis
 mybatis.dialect=mysql
 mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps,
 mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml
 mybatis.table-column-snowflake-datacenter-id=1
 mybatis.table-column-snowflake-machine-id=1
-mybatis.table-column-escape=true
+mybatis.table-column-escape=false
+mybatis.table-column-case=lowercase
 
 ############################################################################
 #redis server  configuration                                               #

+ 20 - 4
maxkey-web-maxkey/src/main/resources/application-https.properties

@@ -38,21 +38,37 @@ server.ssl.key-store-type=JKS
 #server.servlet.encoding.force=true
 
 ############################################################################
-#database configuration                                                    #
+#database configuration 
+#   supported database
+#       mysql
+#       highgo
+#       postgresql
 ############################################################################
-#datasource
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#mysql
 spring.datasource.username=root
 spring.datasource.password=maxkey
 spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#highgo
+#spring.datasource.username=highgo
+#spring.datasource.password=High@123
+#spring.datasource.url=jdbc:highgo://192.168.56.107:5866/highgo?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=com.highgo.jdbc.Driver
+#postgresql
+#spring.datasource.username=root
+#spring.datasource.password=maxkey!
+#spring.datasource.url=jdbc:postgresql://localhost/maxkey?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=org.postgresql.Driver
+
 #mybatis
 mybatis.dialect=mysql
 mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps,
 mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml
 mybatis.table-column-snowflake-datacenter-id=1
 mybatis.table-column-snowflake-machine-id=1
-mybatis.table-column-escape=true
+mybatis.table-column-escape=false
+mybatis.table-column-case=lowercase
 
 ############################################################################
 #redis server  configuration                                               #