<?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.iformall.mapper.MallUserActionMapper">
	<resultMap id="BaseResultMap" type="com.iformall.domain.po.MallUserAction">
		<id column="id" jdbcType="BIGINT" property="id" />
		<result column="user_id" jdbcType="BIGINT" property="userId" />
		<result column="type" jdbcType="INTEGER" property="type" />
		<result column="ip" jdbcType="VARCHAR" property="ip" />
		<result column="action_desc" jdbcType="VARCHAR" property="actionDesc" />
		<result column="action_time" jdbcType="TIMESTAMP" property="actionTime" />
	</resultMap>
	
	<sql id="allColumns">
	    `id`,`user_id`,`type`,`ip`,`action_desc`,`action_time`
	</sql>

	<sql id="dynamicWhereConditions">
	    where 1 = 1
		<if test=" null != id ">
		    and `id` = #{id}
		</if>    
		<if test=" null != userId ">
		    and `user_id` = #{userId}
		</if>
        <if test=" null != type ">
		    and `type` = #{type}
		</if>    
		<if test=" null != ip ">
		    and `ip`  like concat('%', #{ip},'%')
		</if>    
		<if test=" null != actionDesc ">
		    and `action_desc` like concat('%', #{actionDesc},'%')
		</if>    
		<if test=" null != actionTime ">
		    and `action_time` = #{actionTime}
		</if>    
		<if test=" null != ids ">
		 	and id in
			<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
			#{idItem}
			</foreach>
		</if>		
		<if test=" null != sortColumns"> order by ${sortColumns} </if>
	</sql>

    <select id="findList" parameterType="com.iformall.domain.po.MallUserAction" resultMap="BaseResultMap">
        select <include refid="allColumns" />
        from mall_user_action
        <include refid="dynamicWhereConditions" />
    </select>

    <resultMap id="VoBaseResultMap" type="com.iformall.domain.vo.MallUserActionVo">
        <id column="id" jdbcType="BIGINT" property="id" />
        <result column="user_id" jdbcType="BIGINT" property="userId" />
        <result column="type" jdbcType="INTEGER" property="type" />
        <result column="ip" jdbcType="VARCHAR" property="ip" />
        <result column="action_desc" jdbcType="VARCHAR" property="actionDesc" />
        <result column="action_time" jdbcType="TIMESTAMP" property="actionTime" />
        <result column="name" jdbcType="VARCHAR" property="name" />
    </resultMap>

    <sql id="allVoColumns">
	    mua.`id`,mua.`user_id`,mua.`type`,mua.`ip`,mua.`action_desc`,mua.`action_time`,mui.`name`
	</sql>

    <sql id="dynamicVoWhereConditions">
        where 1 = 1
        <if test=" null != id ">
            and mua.`id` = #{id}
        </if>
        <if test=" null != userId ">
            and mua.`user_id` = #{userId}
        </if>
        <if test=" null != name ">
            and mui.`name` like concat('%', #{name},'%')
        </if>
        <if test=" null != type ">
            and mua.`type` = #{type}
        </if>
        <if test=" null != ip ">
            and mua.`ip`  like concat('%', #{ip},'%')
        </if>
        <if test=" null != actionDesc ">
            and mua.`action_desc` like concat('%', #{actionDesc},'%')
        </if>
        <if test=" null != actionTime ">
            and mua.`action_time` = #{actionTime}
        </if>
        <if test=" null != startdate and  null!=enddate">
            and mua.`action_time` between #{startdate} and #{enddate}
        </if>
        <if test=" null != ids ">
            and mua.id in
            <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
                #{idItem}
            </foreach>
        </if>
        <if test=" null != sortColumns"> order by ${sortColumns} </if>
        <if test=" null == sortColumns"> order by mua.`action_time` desc, mua.`id` desc </if>
    </sql>
	
	<select id="findListVo" parameterType="com.iformall.domain.vo.MallUserActionVo" resultMap="VoBaseResultMap">
		select <include refid="allVoColumns" />
		from mall_user_action mua
		left join mall_user_info mui on mua.user_id = mui.id
		<include refid="dynamicVoWhereConditions" />
	</select>
	
	
	
	
	
	
</mapper>
