Pārlūkot izejas kodu

!10 适配postgresql
Merge pull request !10 from oof/master

MaxKeyTop 3 gadi atpakaļ
vecāks
revīzija
7a5cdae8ca
33 mainītis faili ar 2107 papildinājumiem un 1831 dzēšanām
  1. 1 1
      maxkey-core/src/main/java/org/maxkey/entity/Institutions.java
  2. 2 2
      maxkey-core/src/main/java/org/maxkey/persistence/repository/LoginRepository.java
  3. 68 31
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AccountsMapper.xml
  4. 31 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AccountsStrategyMapper.xml
  5. 28 29
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsAdaptersMapper.xml
  6. 15 17
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsCasDetailsMapper.xml
  7. 14 16
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsFormBasedDetailsMapper.xml
  8. 15 17
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsJwtDetailsMapper.xml
  9. 185 196
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsMapper.xml
  10. 31 33
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsSaml20DetailsMapper.xml
  11. 15 17
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsTokenBasedDetailsMapper.xml
  12. 4 4
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/ForgotPasswordMapper.xml
  13. 296 259
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupMemberMapper.xml
  14. 62 60
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupPrivilegesMapper.xml
  15. 74 57
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupsMapper.xml
  16. 62 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistoryConnectorMapper.xml
  17. 54 53
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistoryLoginAppsMapper.xml
  18. 97 71
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistoryLoginMapper.xml
  19. 37 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistorySynchronizerMapper.xml
  20. 48 48
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistorySystemLogsMapper.xml
  21. 32 35
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/NoticesMapper.xml
  22. 68 57
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/OrganizationsMapper.xml
  23. 5 5
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/PasswordPolicyMapper.xml
  24. 11 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RegisterMapper.xml
  25. 13 19
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RegistrationMapper.xml
  26. 76 81
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/ReportMapper.xml
  27. 58 54
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/ResourcesMapper.xml
  28. 254 260
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RoleMemberMapper.xml
  29. 95 91
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RolesMapper.xml
  30. 27 0
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/SocialsProviderMapper.xml
  31. 19 19
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/SynchronizersMapper.xml
  32. 49 48
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/UserInfoAdjointMapper.xml
  33. 261 251
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/UserInfoMapper.xml

+ 1 - 1
maxkey-core/src/main/java/org/maxkey/entity/Institutions.java

@@ -259,7 +259,7 @@ public class Institutions extends JpaBaseEntity implements Serializable {
 	}
 	
 	public boolean isCaptchaSupport() {
-		return (captchaSupport !=null && captchaSupport.equalsIgnoreCase("YES") ? true : false);
+		return "YES".equalsIgnoreCase(captchaSupport);
 	}
 	
 	

+ 2 - 2
maxkey-core/src/main/java/org/maxkey/persistence/repository/LoginRepository.java

@@ -257,13 +257,13 @@ public class LoginRepository {
                 				userInfo.getLoginCount() + 1, 
                 				userInfo.getId() 
                 			},
-                new int[] { Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.VARCHAR });
+                new int[] { Types.TIMESTAMP, Types.VARCHAR, Types.INTEGER, Types.VARCHAR });
     }
     
     public void updateLastLogoff(UserInfo userInfo) {
         jdbcTemplate.update(	LOGOUT_USERINFO_UPDATE_STATEMENT, 
         		new Object[] { 	userInfo.getLastLogoffTime(), userInfo.getId() },
-                new int[] { 	Types.VARCHAR, Types.VARCHAR });
+                new int[] { 	Types.TIMESTAMP, Types.VARCHAR });
     }
     
     public class UserInfoRowMapper implements RowMapper<UserInfo> {

+ 68 - 31
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AccountsMapper.xml

@@ -1,32 +1,69 @@
-<?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>
-	
+<?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 instid = #{instId}
+        <include refid="where_statement"/>
+    </select>
+
+    <select id="queryUserNotInStrategy" parameterType="AccountsStrategy" resultType="UserInfo">
+        select
+        *
+        from mxk_userinfo u
+        where u.instid = #{instId}
+        and not exists(
+        select 1 from mxk_accounts ac
+        where ac.appid = #{appId}
+        and ac.instid = #{instId}
+        and ac.userid = u.id
+        and ac.createtype='automatic'
+        )
+        <if test="filters != null and filters != ''">
+            and (${filters})
+        </if>
+        <if test="orgIdsList != null and orgIdsList != ''">
+            and u.departmentid in( ${orgIdsList})
+        </if>
+    </select>
+
+    <delete id="deleteByStrategy" parameterType="AccountsStrategy">
+        delete from mxk_accounts ac
+        where ac.instid = #{instId}
+        and ac.createtype = 'automatic'
+        and ac.appid = #{appId}
+        and ac.strategyid = #{id}
+        and not exists(
+        select 1
+        from mxk_userinfo u
+        where instid = #{instId}
+        and u.id=ac.userid
+        <if test="filters != null and filters != ''">
+            and (${filters})
+        </if>
+        <if test="orgIdsList != null and orgIdsList != ''">
+            and u.departmentid in ( ${orgIdsList})
+        </if>
+        )
+    </delete>
 </mapper>

+ 31 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AccountsStrategyMapper.xml

@@ -0,0 +1,31 @@
+<?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.AccountsStrategyMapper">
+
+    <sql id="where_statement">
+        <if test="id != null and id != ''">
+            and mas.id = #{id}
+        </if>
+        <if test="appId != null and appId != ''">
+            and mas.appid = #{appId}
+        </if>
+        <if test="name != null and name != ''">
+            and mas.name = #{name}
+        </if>
+    </sql>
+
+
+    <select id="queryPageResults" parameterType="AccountsStrategy" resultType="AccountsStrategy">
+        select
+        mas.*,
+        ma.icon appicon
+        from
+        mxk_accounts_strategy mas,
+        mxk_apps ma
+        where ma.instid = #{instId}
+        and mas.instid = #{instId}
+        and mas.appid = ma.id
+        <include refid="where_statement"/>
+    </select>
+
+</mapper>

+ 28 - 29
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsAdaptersMapper.xml

@@ -1,30 +1,29 @@
-<?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>
-	
+<?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>

+ 15 - 17
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsCasDetailsMapper.xml

@@ -1,18 +1,16 @@
-<?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>
+<?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 app.instid = cd.instid
+          and app.status = 1
+          and cd.id = app.id
+          and (
+                    app.id = #{value}
+                or lower(cd.service) = lower(substring(#{value}, 1, length(cd.service)))
+            )
+    </select>
 </mapper>

+ 14 - 16
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsFormBasedDetailsMapper.xml

@@ -1,17 +1,15 @@
-<?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>
+<?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.instId = fbd.instId
+          and app.id = #{value}
+          and fbd.id = #{value}
+          and fbd.id = app.id
+          and status = 1
+    </select>
 </mapper>

+ 15 - 17
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsJwtDetailsMapper.xml

@@ -1,18 +1,16 @@
-<?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>
-	
+<?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.instid = jd.instid
+          and app.id = #{value}
+          and jd.id = #{value}
+          and status = 1
+          and jd.id = app.id
+    </select>
+
 </mapper>

+ 185 - 196
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsMapper.xml

@@ -1,197 +1,186 @@
-<?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>
+<?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 instid = #{instId}
+        <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,
+                             adapterid,
+                             adaptername,
+                             adapter,
+                             principal,
+                             credentials,
+                             visible,
+                             sortindex,
+                             createdby,
+                             createddate,
+                             status,
+                             logouturl,
+                             logouttype,
+                             instid)
+        values (#{id},
+                #{name},
+                #{icon},
+                #{loginUrl},
+                #{protocol},
+                #{category},
+                #{secret},
+                #{description},
+                #{vendor},
+                #{vendorUrl},
+                #{credential},
+                #{sharedUsername},
+                #{sharedPassword},
+                #{systemUserAttr},
+                #{isExtendAttr},
+                #{extendAttr},
+                #{userPropertys},
+                #{isSignature},
+                #{isAdapter},
+                #{adapterId},
+                #{adapterName},
+                #{adapter},
+                #{principal},
+                #{credentials},
+                #{visible},
+                #{sortIndex},
+                #{createdBy},
+                #{createdDate},
+                #{status},
+                #{logoutUrl},
+                #{logoutType},
+                #{instId})
+    </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},
+            adapterid = #{adapterId},
+            adaptername = #{adapterName},
+            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.instid = #{instId}
+        and gp.instid = #{instId}
+        and g.instid = #{instId}
+        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>

+ 31 - 33
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsSaml20DetailsMapper.xml

@@ -1,34 +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.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>
-    
+<?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.instid = svd.instid
+          and app.id = #{value}
+          and svd.id = #{value}
+          and svd.id = app.id
+          and app.status = 1
+    </select>
+
 </mapper>

+ 15 - 17
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/AppsTokenBasedDetailsMapper.xml

@@ -1,18 +1,16 @@
-<?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>
-	
+<?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.instid = tbd.instid
+          and app.id = #{value}
+          and tbd.id = #{value}
+          and tbd.id = app.id
+          and status = 1
+    </select>
+
 </mapper>

+ 4 - 4
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/ForgotPasswordMapper.xml

@@ -1,5 +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">
-
+<?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>

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

@@ -1,260 +1,297 @@
-<?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>
-	
+<?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.createddate,
+
+                        u.status
+        from mxk_userinfo u
+        where instid = #{instId}
+    </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,
+
+        gm.createddate,
+
+        u.status
+        from
+        mxk_userinfo u,
+        mxk_groups g,
+        mxk_group_member gm
+        where u.instid = #{instId}
+        and g.instid = #{instId}
+        and gm.instid = #{instId}
+        <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('${id}',u.id) id,
+        '${id}' groupid,
+        u.id memberid,
+        'USER-DYNAMIC' 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>
+
+    <select id="queryMemberByGroupId" parameterType="string" resultType="UserInfo">
+        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,
+                        gm.createddate,
+                        u.status
+        from mxk_userinfo u,
+             mxk_groups g,
+             mxk_group_member gm
+        where 1 = 1
+          and gm.groupid = #{value}
+          and g.id = #{value}
+          and gm.type in ('USER', 'USER-DYNAMIC')
+          and gm.groupid = g.id
+          and gm.memberid = u.id
+    </select>
+
+
+    <delete id="deleteByGroupId" parameterType="string">
+        delete
+        from mxk_group_member gm
+        where gm.groupid = #{value}
+    </delete>
+
 </mapper>

+ 62 - 60
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupPrivilegesMapper.xml

@@ -1,61 +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="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>
-	
+<?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
+        apps.instid = #{instId}
+        and gp.instid = #{instId}
+        and 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>

+ 74 - 57
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/GroupsMapper.xml

@@ -1,58 +1,75 @@
-<?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>
-    
-   
+<?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 instid = #{instId}
+        <include refid="where_statement"/>
+    </select>
+
+    <select id="queryDynamicGroups" parameterType="Groups" resultType="Groups">
+        select
+        *
+        from
+        mxk_groups
+        where instid = #{instId}
+        and dynamic = '1'
+        <include refid="where_statement"/>
+    </select>
+
+
+    <update id="logisticDelete" parameterType="Groups">
+        update mxk_groups set
+        status = '2'
+        where instid = #{instId}
+        <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 instid = #{instId}
+        and id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
+
+
+    <select id="queryGroupByUserId" parameterType="string" resultType="Groups">
+        select distinct g.*
+        from mxk_userinfo u,
+             mxk_groups g,
+             mxk_group_member gm
+        where u.instid = #{instId}
+          and g.instid = #{instId}
+          and gm.instid = #{instId}
+          and gm.memberid = #{value}
+          and u.id = #{value}
+          and gm.type in ('USER', 'USER-DYNAMIC')
+          and gm.groupid = g.id
+          and gm.memberid = u.id
+    </select>
+
+
 </mapper>

+ 62 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistoryConnectorMapper.xml

@@ -0,0 +1,62 @@
+<?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.HistoryConnectorMapper">
+
+    <sql id="where_statement">
+        <if test="id != null and id != ''">
+            and id = #{id}
+        </if>
+
+        <if test="conName != null and conName != ''">
+            and conName = #{conName}
+        </if>
+
+        <if test="conType != null and conType != ''">
+            and conType = #{conType}
+        </if>
+
+        <if test="sourceId != null and sourceId != ''">
+            and sourceId = #{sourceId}
+        </if>
+
+        <if test="sourceName != null and sourceName != ''">
+            and sourceName = #{sourceName}
+        </if>
+
+        <if test="objectId != null and objectId != ''">
+            and objectId = #{objectId}
+        </if>
+
+        <if test="objectName != null and objectName != ''">
+            and objectname = #{objectName}
+        </if>
+
+        <if test="result != null and result != ''">
+            and result = #{result}
+        </if>
+
+        <if test="startDate != null and startDate != ''">
+            and synctime >= #{startDate}
+        </if>
+
+        <if test="endDate != null and endDate != ''">
+            and #{endDate} >= synctime
+        </if>
+
+        <if test="description != null and description != ''">
+            and description like '%${description}%'
+        </if>
+    </sql>
+
+
+    <select id="queryPageResults" parameterType="HistoryConnector" resultType="HistoryConnector">
+        select
+        *
+        from mxk_history_connector
+        where instid = #{instId}
+        <include refid="where_statement"/>
+
+        order by synctime desc
+    </select>
+
+</mapper>

+ 54 - 53
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistoryLoginAppsMapper.xml

@@ -1,54 +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.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="userId != null and userId != ''">
-			and	userId	=	#{userId}
-		</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>
-  
-    
+<?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="userId != null and userId != ''">
+            and userId = #{userId}
+        </if>
+        <if test="username != null and username != ''">
+            and username = #{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,
+        userId,
+        username,
+        displayname,
+        to_char(logintime,'YYYY-MM-DD HH24:MI:SS') as logintime
+
+        from mxk_history_login_apps
+        where instid = #{instId}
+        <include refid="dao_where_statement"/>
+
+        order by logintime desc
+    </select>
+
+
 </mapper>

+ 97 - 71
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistoryLoginMapper.xml

@@ -1,72 +1,98 @@
-<?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="userId != null and userId != ''">
-			and	userId	=	#{userId}
-		</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,
-			userId,
-			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>
+<?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="userId != null and userId != ''">
+            and userId = #{userId}
+        </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,
+        userId,
+        username,
+        displayname,
+        logintype,
+        message,
+        code,
+        provider,
+        sourceip,
+        browser,
+        platform,
+        application,
+        loginurl,
+        to_char(logintime,'YYYY-MM-DD HH24:MI:SS') as logintime,
+        logouttime
+        from mxk_history_login
+        where instid = #{instId}
+        <include refid="dao_where_statement"/>
+
+        order by logintime desc
+    </select>
+
+
+    <select id="queryOnlineSession" parameterType="HistoryLogin" resultType="HistoryLogin">
+        select
+        sessionid id,
+        sessionid,
+        userId,
+        username,
+        displayname,
+        logintype,
+        message,
+        code,
+        provider,
+        sourceip,
+        browser,
+        platform,
+        application,
+        loginurl,
+        to_char(logintime,'YYYY-MM-DD HH24:MI:SS') as logintime,
+        logouttime
+        from mxk_history_login
+        where instid = #{instId}
+        and sessionstatus = 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>

+ 37 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistorySynchronizerMapper.xml

@@ -0,0 +1,37 @@
+<?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.HistorySynchronizerMapper">
+
+    <sql id="where_statement">
+        <if test="id != null and id != ''">
+            and id = #{id}
+        </if>
+        <if test="syncId != null and syncId != ''">
+            and syncid = #{syncId}
+        </if>
+        <if test="objectName != null and objectName != ''">
+            and objectname = #{objectName}
+        </if>
+        <if test="result != null and result != ''">
+            and result = #{result}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            and synctime >= #{startDate}
+        </if>
+        <if test="endDate != null and endDate != ''">
+            and #{endDate} >= synctime
+        </if>
+    </sql>
+
+
+    <select id="queryPageResults" parameterType="HistorySynchronizer" resultType="HistorySynchronizer">
+        select
+        *
+        from mxk_history_synchronizer
+        where instid = #{instId}
+        <include refid="where_statement"/>
+
+        order by synctime desc
+    </select>
+
+</mapper>

+ 48 - 48
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/HistorySystemLogsMapper.xml

@@ -1,55 +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.HistorySystemLogsMapper" >
+<mapper namespace="org.maxkey.persistence.mapper.HistorySystemLogsMapper">
 
-	<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>
+    <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>
+        <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 id="queryPageResults" parameterType="HistoryLogs" resultType="HistoryLogs">
+        select
+        id,
+        tid,
+        tname,
+        servicename ,
+        code,
+        message ,
+        content,
+        operatetype,
+        messagetype,
+        username,
+        createddate,
+        createdby
+        from mxk_history_logs
+        where instid = #{instId}
+        <include refid="where_statement"/>
+
+        order by createddate desc
     </select>
-  
+
 </mapper>

+ 32 - 35
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/NoticesMapper.xml

@@ -1,36 +1,33 @@
-<?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>
-	
+<?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
+        instid = #{instId}
+        <include refid="where_statement"/>
+        order by modifieddate desc
+    </select>
+
+    <select id="queryLastedNotices" parameterType="Notices" resultType="Notices">
+        select *
+        from mxk_notices
+        where instid = #{instId}
+        order by modifieddate desc limit 1
+    </select>
+
 </mapper>

+ 68 - 57
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/OrganizationsMapper.xml

@@ -1,58 +1,69 @@
-<?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>
-    
-  
+<?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="queryOrgs" parameterType="Organizations" resultType="Organizations">
+        select
+        *
+        from mxk_organizations
+        where instid = #{instId}
+        <include refid="dao_where_statement"/>
+        order by sortindex,id
+    </select>
+
+
+    <select id="queryPageResults" parameterType="Organizations" resultType="Organizations">
+        select
+        *
+        from mxk_organizations
+        where instid = #{instId}
+        <include refid="dao_where_statement"/>
+        order by sortindex,id
+    </select>
+
+    <update id="logisticDelete" parameterType="Organizations">
+        update mxk_organizations set status = '2'
+        where instid = #{instId}
+        <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 instid = #{instId}
+        and id in
+        <foreach collection="ids" item="selectId" open="(" separator="," close=")">
+            #{selectId}
+        </foreach>
+    </update>
+
+
 </mapper>

+ 5 - 5
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/PasswordPolicyMapper.xml

@@ -1,6 +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" >
-	
-   
+<?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>

+ 11 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RegisterMapper.xml

@@ -0,0 +1,11 @@
+<?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.RegisterMapper">
+
+    <select id="findByEmail" parameterType="string" resultType="Register">
+        select *
+        from mxk_register
+        where workemail = #{value}
+    </select>
+
+</mapper>

+ 13 - 19
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RegistrationMapper.xml

@@ -1,23 +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.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>
-	
+
+    <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>

+ 76 - 81
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/ReportMapper.xml

@@ -1,82 +1,77 @@
-<?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>
-
+<?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" parameterType="java.util.HashMap" resultType="Integer">
+        select count(id) reportcount
+        from mxk_history_login
+        where instid = #{instId}
+          and date (logintime) = current_date
+    </select>
+    <!-- 本月新用户统计 -->
+    <select id="analysisNewUsers" parameterType="java.util.HashMap" resultType="Integer">
+        select count(*) reportcount
+        from mxk_userinfo
+        where instid = #{instId}
+          and to_char(createddate,'YYYY-MM')=to_char(current_date,'YYYY-MM')
+    </select>
+    <!-- 在线用户统计 -->
+    <select id="analysisOnlineUsers" parameterType="java.util.HashMap" resultType="Integer">
+        select count(*) reportcount
+        from mxk_userinfo
+        where instid = #{instId}
+          and online = 1
+          and extract(epoch from now() - lastlogintime) &lt; 10000
+    </select>
+    <!-- 30天活跃用户统计 -->
+    <select id="analysisActiveUsers" parameterType="java.util.HashMap" resultType="Integer">
+        select count(*) reportcount
+        from mxk_userinfo
+        where instid = #{instId}
+          and date(lastlogintime) > (current_date - interval '30 day')
+    </select>
+
+    <!-- DAY HOUR COUNT 当天每小时 -->
+    <select id="analysisDayHour" parameterType="java.util.HashMap" resultType="Map">
+        select count(id) reportcount,
+               to_char(logintime,'HH24') reportstring
+        from mxk_history_login
+        where instid = #{instId}
+          and date (logintime) = current_date
+        group by reportstring
+        order by reportstring
+    </select>
+    <!-- 30 DAY COUNT 最近30天每天访问量-->
+    <select id="analysisMonth" parameterType="java.util.HashMap" resultType="Map">
+        select count(id) reportcount,
+            date (logintime) reportstring
+        from mxk_history_login
+        where instid = #{instId}
+          and date(logintime) > (current_date - interval '30 day')
+        group by reportstring
+        order by reportstring
+    </select>
+
+    <!-- 30天浏览器的访问统计 -->
+    <select id="analysisBrowser" parameterType="java.util.HashMap" resultType="Map">
+        select count(id)                  reportcount,
+               coalesce(browser, 'Other') reportstring
+        from mxk_history_login
+        where instid = #{instId}
+          and date(logintime) &gt; (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 instid = #{instId}
+          and date(logintime) &gt; (current_date - interval '30 day')
+        group by appname
+        order by reportcount desc
+    </select>
+
 </mapper>

+ 58 - 54
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/ResourcesMapper.xml

@@ -1,55 +1,59 @@
-<?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>
-    
-   
+<?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
+        res.instid = #{instId}
+        and app.instid = #{instId}
+        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 instid = #{instId}
+        <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 instid = #{instId}
+        and id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
+
+
 </mapper>

+ 254 - 260
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RoleMemberMapper.xml

@@ -1,261 +1,255 @@
-<?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>
-	
+<?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.createddate,
+
+                        u.status
+        from mxk_userinfo u
+        where instid = #{instId}
+    </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,
+
+
+        rm.createddate,
+
+        u.status
+        from
+        mxk_userinfo u,
+        mxk_roles r,
+        mxk_role_member rm
+        where u.instid = #{instId}
+        and r.instid = #{instId}
+        and rm.instid = #{instId}
+        <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('${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>

+ 95 - 91
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/RolesMapper.xml

@@ -1,92 +1,96 @@
-<?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>
-	
-	
-   
+<?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_roles
+        where instid = #{instId}
+        and dynamic = '1'
+        <include refid="where_statement"/>
+    </select>
+
+    <select id="queryPageResults" parameterType="Roles" resultType="Roles">
+        select
+        *
+        from
+        mxk_roles
+        where
+        instid = #{instId}
+        <include refid="where_statement"/>
+    </select>
+
+
+    <update id="logisticDelete" parameterType="Roles">
+        update mxk_roles set
+        status = '2'
+        where instid = #{instId}
+        <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 instid = #{instId}
+        and 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 instid = #{instId}
+        and 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 1 = 1 and
+        <foreach item="item" collection="list" open="(" separator="or" close=")">
+            ( id = #{item.id} and instid = #{item.instId} )
+        </foreach>
+    </update>
+
+    <insert id="insertRolePermissions" parameterType="java.util.List">
+        insert into mxk_role_permissions ( id,appid,roleid,resourceid,status,instid)
+        values
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.id},#{item.appId},#{item.roleId},#{item.resourceId},#{item.status},#{item.instId})
+        </foreach>
+    </insert>
+
+
 </mapper>

+ 27 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/SocialsProviderMapper.xml

@@ -0,0 +1,27 @@
+<?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.SocialsProviderMapper">
+
+    <sql id="where_statement">
+        <if test="id != null and id != ''">
+            and id = #{id}
+        </if>
+        <if test="providerName != null and providerName != ''">
+            and providerName like '%${providerName}%'
+        </if>
+    </sql>
+
+
+    <select id="queryPageResults" parameterType="SocialsProvider" resultType="SocialsProvider">
+        select
+        *
+        from
+        mxk_socials_provider
+        where
+        instid = #{instId}
+        <include refid="where_statement"/>
+        order by sortindex
+    </select>
+
+
+</mapper>

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

@@ -2,24 +2,24 @@
 <!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 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>	
-    
-   
+
+    <select id="queryPageResults" parameterType="Synchronizers" resultType="Synchronizers">
+        select
+        *
+        from
+        mxk_synchronizers
+        where
+        instid = #{instId}
+        <include refid="where_statement"/>
+    </select>
+
+
 </mapper>

+ 49 - 48
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/UserInfoAdjointMapper.xml

@@ -1,49 +1,50 @@
-<?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>
-    
-
-   
+<?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
+        instid = #{instId}
+        <include refid="where_statement"/>
+    </select>
+
+
+    <update id="logisticDelete" parameterType="UserInfoAdjoint">
+        update mxk_userinfo_adjunct set
+        status = '2'
+        where instid = #{instId}
+        <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 instid = #{instId}
+        and id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
+
+
 </mapper>

+ 261 - 251
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/postgresql/UserInfoMapper.xml

@@ -1,252 +1,262 @@
-<?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>
- 
+<?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="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 instid = #{instId}
+        <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,id
+    </select>
+
+    <update id="updateLocked" parameterType="UserInfo">
+        update mxk_userinfo set
+        <if test="isLocked != null">
+            islocked = #{isLocked},
+        </if>
+        modifieddate = current_timestamp
+        where
+        id = #{id}
+    </update>
+
+    <update id="updateLockout" 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="updatePassword" parameterType="UserInfo">
+        update mxk_userinfo set
+        <if test="password != null">
+            password = #{password},
+            decipherable = #{decipherable},
+            passwordsettype =#{passwordSetType},
+        </if>
+        passwordlastsettime = current_timestamp
+        where
+        id = #{id}
+    </update>
+
+    <update id="updateSharedSecret" parameterType="UserInfo">
+        update mxk_userinfo set
+        <if test="sharedSecret != null">
+            sharedsecret = #{sharedSecret},
+            sharedcounter = #{sharedCounter},
+        </if>
+        modifieddate = current_timestamp
+        where
+        id = #{id}
+    </update>
+
+    <update id="updateAppLoginPassword" 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="updatePasswordQuestion" parameterType="UserInfo">
+        update mxk_userinfo set
+        <if test="passwordAnswer != null">
+            passwordquestion = #{passwordQuestion},
+            passwordanswer = #{passwordAnswer},
+        </if>
+        modifieddate = current_timestamp
+        where
+        id = #{id}
+    </update>
+
+    <update id="updateAuthnType" parameterType="UserInfo">
+        update mxk_userinfo set
+        <if test="authnType != null">
+            authntype = #{authnType},
+        </if>
+        modifieddate = current_timestamp
+        where
+        id = #{id}
+    </update>
+
+    <update id="updateEmail" 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="updateMobile" 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="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>
+
+    <select id="findDeptsByUserId" parameterType="string" resultType="Organizations">
+        select o.*, 1 isPrimary
+        from mxk_organizations o,
+             mxk_userinfo u
+        where o.instid = #{instId}
+          and u.instid = #{instId}
+          and o.id = u.departmentid
+          and u.id = #{value}
+
+        union all
+
+        select o.*, 0 isPrimary
+        from mxk_organizations o,
+             mxk_userinfo_adjunct ua
+        where o.instid = #{instId}
+          and ua.instid = #{instId}
+          and o.id = ua.departmentid
+          and ua.userid = #{value}
+    </select>
+
+    <select id="findAdjointsByUserId" parameterType="string" resultType="UserInfoAdjoint">
+        select *
+        from mxk_userinfo_adjunct
+        where userid = #{value}
+    </select>
+
 </mapper>