<?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.msm.mapper.UserMapper"> 
    <!-- 这里的id必须和UserMapper接口中的接口方法名相同，不然运行的时候也要报错 --> 
    <select id="isUserExisted" resultType="java.util.HashMap"  parameterType="map"> 
    <![CDATA[
    	select UserName from t_user_msm where UserName = #{UserName}
		]]>
    </select>
    
    <select id="login" resultType="java.util.HashMap"  parameterType="map"> 
    <![CDATA[
    	select a.id, a.UserName, a.Country, a.AreaCode from t_user_msm a
    	where a.UserName = #{UserName} and a.PassWord = #{PassWord}
		]]>
    </select>
     <insert id="register" parameterType="com.msm.pojo.TUser"> 
     	<selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">
			SELECT LAST_INSERT_ID() AS id
		</selectKey>
		insert into t_user_msm(UserName, PassWord, Country, Tel, EMail, AreaCode) values (#{UserName}, #{PassWord}, #{Country}, #{Tel}, #{EMail}, #{AreaCode})
     </insert>
     
     <insert id="addUserRole" parameterType="com.msm.pojo.TUser"> 
     	insert into t_user_role(userId, roleId) values (#{userId}, #{roleId})
     </insert>
     
     <select id="queryAccessURLs" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select a.unaccessurl as unaccessurl, a.unaccessmethod as unaccessmethod from t_authority a 
			left join t_role_authority b on a.id = b.authorityId
			left join t_role c on b.roleId = c.id 
			left join t_user_role d on c.id = d.roleId
			left join t_user_msm e on e.id = d.userId
			where userid = #{id}
		]]>
    </select>
    
    <select id="queryUnLoginUnAccessURLs" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select a.unaccessurl as unaccessurl, a.unaccessmethod as unaccessmethod from t_authority a 
			left join t_role_authority b on a.id = b.authorityId
			left join t_role c on b.roleId = c.id 
			where c.id = 3
		]]>
    </select>
    
    <select id="getAuthority" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select name, code, description from t_authority
		]]>
    </select>
    
    <select id="getAuthorityByUserName" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select UserName, AuthorityCode from t_user_authority where UserName = #{UserName}
		]]>
    </select>
    
    
    <select id="getAllArea" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select id, AreaName, AreaCode from t_area
		]]>
    </select>
    
    <select id="getAllUsers" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select id, UserName, Country, Tel, EMail, AreaCode from t_user_msm
		]]>
    </select>
    
    <select id="getUserInfo" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select id, UserName, Country, Tel, EMail, AreaCode from t_user_msm where UserName = #{UserName}
		]]>
    </select>
    
    <insert id="addAuthority"  parameterType="java.util.List"> 
	    <![CDATA[
	    	insert into t_user_authority(UserName, AuthorityCode) values
	    ]]>
	    <foreach collection="list" item="item" index="index" separator="," >  
     	   (#{item.UserName}, #{item.AuthorityCode})  
   		</foreach> 
		
    </insert>
    
    <select id="isPassWordValid" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select id, UserName, Country, Tel, EMail, AreaCode from t_user_msm where UserName = #{UserName} and PassWord = #{PassWord}
		]]>
    </select>
    
    <select id="isAdmin" resultType="java.util.HashMap"  parameterType="map"> 
	    <![CDATA[
	    	select AuthorityCode, UserName from t_user_authority where UserName = #{UserName}
		]]>
    </select>
    
    
     <update id="updateUser" parameterType="map">
     	update t_user_msm set Tel = #{Tel}, EMail = #{EMail}
     	<if test="Country">
     		, Country = #{Country}
     	</if>
     	<if test="AreaCode">
     		, AreaCode = #{AreaCode}
     	</if>
     	 where UserName = #{UserName}
     </update>
     
     <update id="updatePassWord" parameterType="map">
     	update t_user_msm set PassWord = #{PassWord} where UserName = #{UserName}
     </update>
     
    
    <delete id="deleteUser" parameterType="map">
     	delete from t_user_msm where UserName = #{UserName}
     </delete>
     
     <delete id="deleteUserAuthority" parameterType="map">
     	delete from t_user_authority where UserName = #{UserName}
     </delete>
     
</mapper> 