<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gx.obe.server.management.user.dao.AuthUserMapper">

    
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.gx.obe.server.management.user.entity.AuthUserEntity">
              <id column="USER_ID" property="id" />
              <result column="USER_ACCOUNT" property="userAccount" />
              <result column="USER_PASSWORD" property="userPassword" />
              <result column="USER_NAME" property="userName" />
              <result column="GENDER" property="gender" />
              <result column="COMPANY" property="company" />
              <result column="USER_IDCARD" property="userIdcard" />
              <result column="PHONE" property="phone" />
              <result column="USER_TYPE" property="userType" />
              <result column="PROFESSIONAL_TITLE" property="professionalTitle" />
              <result column="AVATAR" property="avatar" />
              <result column="SPECIALTY" property="specialty" />
              <result column="AREA_CODE" property="areaCode" />
              <result column="USE_STATUS" property="useStatus" />
              <result column="BINDING_CA" property="bindingCa" />
              <result column="CREATE_TIME" property="createTime" />
              <result column="MODIFY_TIME" property="modifyTime"/>
              <result column="DEFAULT_PASSWORD" property="defaultPassword" />
              <result column="BANK_INFO" property="bankInfo" />
              <result column="BANK_ACCOUNT" property="bankAccount" />
              <result column="SOURCE" property="source" />
      </resultMap> 

      <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        USER_ID, USER_ACCOUNT, USER_PASSWORD, USER_NAME, GENDER, COMPANY, USER_IDCARD, PHONE, USER_TYPE, PROFESSIONAL_TITLE, AVATAR, SPECIALTY, AREA_CODE, USE_STATUS, BINDING_CA, CREATE_TIME, MODIFY_TIME,SOURCE, DEFAULT_PASSWORD
    </sql> 
    
    <!-- 指定字段修改 -->
	<update id="updateAssignProperty">
		UPDATE
			auth_user
		<set>
			<foreach collection="attributes" item="attribute" index="index" open="" close="" separator=",">
				<if test="attribute == 'userAccount'">
					USER_ACCOUNT = #{AuthUser.userAccount}
				</if>
				<if test="attribute == 'userPassword'">
					USER_PASSWORD = #{AuthUser.userPassword}
				</if>
				<if test="attribute == 'userName'">
					USER_NAME = #{AuthUser.userName}
				</if>
				<if test="attribute == 'gender'">
					GENDER = #{AuthUser.gender}
				</if>
				<if test="attribute == 'company'">
					COMPANY = #{AuthUser.company}
				</if>
				<if test="attribute == 'userIdcard'">
					USER_IDCARD = #{AuthUser.userIdcard}
				</if>
				<if test="attribute == 'phone'">
					PHONE = #{AuthUser.phone}
				</if>
				<if test="attribute == 'userType'">
					USER_TYPE = #{AuthUser.userType}
				</if>
				<if test="attribute == 'professionalTitle'">
					PROFESSIONAL_TITLE = #{AuthUser.professionalTitle}
				</if>
				<if test="attribute == 'avatar'">
					AVATAR = #{AuthUser.avatar}
				</if>
				<if test="attribute == 'specialty'">
					SPECIALTY = #{AuthUser.specialty}
				</if>
				<if test="attribute == 'areaCode'">
					AREA_CODE = #{AuthUser.areaCode}
				</if>
				<if test="attribute == 'useStatus'">
					USE_STATUS = #{AuthUser.useStatus}
				</if>
				<if test="attribute == 'bindingCa'">
					BINDING_CA = #{AuthUser.bindingCa}
				</if>
				<if test="attribute == 'createTime'">
					CREATE_TIME = #{AuthUser.createTime}
				</if>
				<if test="attribute == 'modifyTime'">
					MODIFY_TIME = #{AuthUser.modifyTime}
				</if>
				<if test="attribute == 'defaultPassword'">
					DEFAULT_PASSWORD = #{AuthUser.defaultPassword}
				</if>
				<if test="attribute == 'bankInfo'">
					BANK_INFO = #{AuthUser.bankInfo}
				</if>
				<if test="attribute == 'bankAccount'">
					BANK_ACCOUNT = #{AuthUser.bankAccount}
				</if>
				<if test="attribute == 'source'">
					SOURCE = #{AuthUser.source}
				</if>
			</foreach>
		</set>
		<where>
			USER_ID = #{AuthUser.id}
		</where>
	</update>
    
    <!-- parameterType="List" -->
    <select id="valLoginAuthority" resultType="Integer">
    	SELECT
			count( USER.USER_ID ) 
		FROM
			AUTH_USER USER,
			AUTH_USER_ROLE ur 
		WHERE
			USER.USER_ID = ur.USER_ID 
			AND ur.ROLE_ID IN ( SELECT r.ROLE_ID FROM AUTH_ROLE r WHERE r.ROLE_TYPE = #{terminal} AND r.USE_STATUS = '01' ) 
			AND USER.USER_ID = #{userId}
    </select>
    
    
    <select id="findCertId"  resultMap="BaseResultMap">
	    SELECT
			* 
		FROM
			AUTH_USER 
		WHERE
			USER_ID IN ( SELECT t.USER_ID FROM OBE_CA_BINDING t WHERE t.CERT_ID = #{certId} )
    </select>
    
    <!-- 获得评标步骤的专家 -->
    <select id="findEvaluationStepUserList" resultMap="BaseResultMap">
		SELECT
			u.USER_ID,
			u.USER_NAME 
		FROM
			AUTH_USER u,
			OBE_EXPERT m 
		WHERE
			m.USER_ID = u.USER_ID 
			AND m.TENDER_ID = #{tenderId}
		<if test="evaluationStep.roleType != null and evaluationStep.roleType == 03 ">
			AND u.USER_ID IN (
				SELECT
					USER_ID 
				FROM
					OBE_EVALUATION_STEP_EXPERT 
				WHERE
					TENDER_ID = #{tenderId}
					
					AND STEP_ID = #{evaluationStep.id})
		</if>
    	<if test="evaluationStep.roleType != null and evaluationStep.roleType == 01 ">
    		AND m.IS_LEADER = 1
    	</if>
    	<if test="evaluationStep.roleType != null and evaluationStep.roleType == 04 ">
    		 <if test="evaluationStep.evalBidType != null">
    		 	AND (m.EVAL_BID_TYPE IS NULL OR m.EVAL_BID_TYPE = 0 OR 
    		 	<if test="evaluationStep.evalBidType == 01">
		    	 	(m.EVAL_BID_TYPE  &amp; 2) != 0) 
	    		</if>
	    		<if test="evaluationStep.evalBidType == 02">
		    	 	(m.EVAL_BID_TYPE  &amp; 4) != 0) 
	    		</if>
	    		<if test="evaluationStep.evalBidType == 03">
		    	 	(m.EVAL_BID_TYPE  &amp; 8) != 0) 
	    		</if>
	    		<if test="evaluationStep.evalBidType == 00">
		    	 	(m.EVAL_BID_TYPE  &amp; 6) != 0) 
	    		</if>
	    		<if test="evaluationStep.evalBidType != 00 and evaluationStep.evalBidType != 02 and evaluationStep.evalBidType != 01 and evaluationStep.evalBidType != 03" >
	    			(m.EVAL_BID_TYPE  &amp; 0) != 0) 
	    		</if>
    		 </if>
    	</if>
    	<if test="evaluationStep.roleType != null and evaluationStep.roleType == 05 ">
    			AND m.EVAL_GROUP IN (
					SELECT DISTINCT
					( e.EVAL_GROUP ) 
					FROM
						OBE_EVALUATION_FACTOR e,
						OBE_EVALUATION_STEP_FACTOR f 
					WHERE
						f.TENDER_ID = #{tenderId}
						AND f.STEP_ID = #{evaluationStep.id}	
						AND e.TENDER_ID = f.TENDER_ID 
						AND e.FACTOR_ID = f.FACTOR_ID 
				)
    	</if>
    	AND ( m.SIGN_TYPE IS NULL OR m.SIGN_TYPE != 02 ) 
		ORDER BY
			m.IS_LEADER DESC,
			m.CREATE_TIME
    </select>
    
    <!--查询项目所对用的用户信息  -->
    <select id="findUserInfoByTenderId"  resultMap="BaseResultMap">
	    SELECT
			u.* 
		FROM
			AUTH_USER u 
		WHERE
			u.USER_ID = ( SELECT USER_ID FROM OBE_TENDER_PROJECT WHERE TENDER_ID = #{tenderId})
    </select>
    
    <!-- 通过项目ID,查询当前项目下所有专家的用户信息 -->
    <select id="getExpertByProjectId" resultMap="BaseResultMap">
    	SELECT
			USER_ID,
			USER_NAME 
		FROM
			AUTH_USER 
		WHERE
			USER_ID IN ( SELECT DISTINCT USER_ID FROM OBE_EXPERT WHERE PROJECT_ID = #{projectId} )
    </select>
    
    <!-- 获取当前系统临时用户数量 -->
    <select id="getTempUserNum" resultType="Integer">
	    SELECT
			COUNT( USER_ID ) 
		FROM
			AUTH_USER 
		WHERE
			USE_STATUS = 00
    </select>
    
    <!-- 根据用户名和用户类型,获得用户列表。 -->
    <select id="getUserListByUserName" resultMap="BaseResultMap">
	    SELECT
			u.* 
		FROM
			auth_user u 
		WHERE u.USE_STATUS = 01
		<if test=" userType != null and userType !=''">
			AND u.USER_TYPE = #{userType}
		</if>
	    <if test=" userName != null and userName !=''">
	    	AND ( u.USER_ACCOUNT LIKE concat('%', #{userName} ,'%') OR u.USER_NAME LIKE concat('%', #{userName} ,'%') )
	    </if>
    </select>
    
    <!-- 更新用户状态 -->
    <update id="updateUsestatus">
    	UPDATE auth_user
   		  	SET USE_STATUS = #{useStatus}
		WHERE	
 			USER_ID = #{id}
    </update>
    
    <select id="getUserPageList" resultMap="BaseResultMap">
    	 SELECT DISTINCT 
   	  m.* FROM auth_user m 
   	  
   	  <if test=" roleType != null and roleType !=''">
	   	   LEFT JOIN auth_user_role u
	   	  ON m.USER_ID = u.USER_ID	   	
	   	   WHERE 
   	  </if>
   	  
   	  <if test="( account != null and account !='') or (userName != null and userName !='')">
	   	 <if test=" roleType == null or roleType ==''">
	   	 	 WHERE 
	   	 </if>
   	  </if>
   	  
   	  <if test=" account != null and account !=''">
   	  	 m.USER_ACCOUNT like concat('%', #{account} ,'%')
   	   
   	  </if>
   	  
   	  <if test=" userName != null and userName !=''">
   	    <if test=" account != null and account !=''">
   	     		 AND
   	    </if>
   	     	 m.USER_NAME like  concat('%', #{userName} ,'%')
   	  </if>
   	   
   	  <if test=" roleType != null and roleType !=''">
   	     <if test="( account != null and account !='') or (userName != null and userName !='')">
   	     		 AND
   	     </if>
   	     	  u.ROLE_ID = ( SELECT r.ROLE_ID  FROM auth_role r WHERE r.ROLE_TYPE = #{roleType} ) 
   	  </if>
   	   
   	   ORDER BY m.CREATE_TIME ASC 
    </select>
    
    <select id="getEvaluationStepUserByManagerList" resultMap="BaseResultMap">
 	 	SELECT  u.USER_ID,  u.USER_NAME  FROM AUTH_USER u WHERE u.USER_ID = (SELECT USER_ID FROM OBE_TENDER_PROJECT WHERE TENDER_ID = #{tenderId} )
 	</select>
 	
 	<!--  -->
 	<select id="getGroupItemUserList" resultMap="BaseResultMap">
		 SELECT
			u.USER_ID,
			u.USER_ACCOUNT,
			u.USER_NAME,
			u.GENDER,
			u.COMPANY,
			u.USER_IDCARD,
			u.PHONE,
			u.PROFESSIONAL_TITLE,
			u.SPECIALTY
		FROM
			auth_user u,
			group_item g
		WHERE
			u.USER_ID = g.USER_ID
		AND g.GROUP_ID =#{id}
 	</select>
</mapper>