<?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.WxActivityJoinMapper">
	<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxActivityJoin">
		<id column="id" jdbcType="BIGINT" property="id"/>
		<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
		<result column="user_id" jdbcType="BIGINT" property="userId"/>
		<result column="activity_id" jdbcType="BIGINT" property="activityId"/>
		<result column="name" jdbcType="VARCHAR" property="name"/>
		<result column="nick_name" jdbcType="VARCHAR" property="nickName"/>
		<result column="birthday" jdbcType="TIMESTAMP" property="birthday"/>
		<result column="sex" jdbcType="INTEGER" property="sex"/>
		<result column="phone" jdbcType="VARCHAR" property="phone"/>
		<result column="address" jdbcType="VARCHAR" property="address"/>
		<result column="answer" jdbcType="VARCHAR" property="answer"/>
		<result column="sign_in" jdbcType="INTEGER" property="signIn"/>
		<result column="status" jdbcType="INTEGER" property="status"/>
		<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
		<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
		<result column="img_url" jdbcType="VARCHAR" property="imgUrl"/>
		<result column="send_msg" jdbcType="INTEGER" property="sendMsg"/>
	
	</resultMap>
	
	<sql id="allColumns">
		`id`,`tenant_id`,`user_id`,`activity_id`,`name`,`nick_name`,`birthday`,`sex`,`phone`,
		`address`,`answer`,`sign_in`,`status`,`create_time`,`update_time`,`img_url`,`send_msg`
	</sql>
	
	
	<sql id="dynamicWhereConditions">
		where 1 = 1
		<if test=" null != id ">
			and `id` = #{id}
		</if>
		<if test=" null != tenantId ">
			and `tenant_id` = #{tenantId}
		</if>
		<if test=" null != name and ''!=name">
			and `name` like concat('%', #{name},'%')
		</if>
		<if test=" null != phone and ''!=phone">
			and `phone` = #{phone}
		</if>
		<if test=" null != sex ">
			and `sex` = #{sex}
		</if>
		<if test=" null != signIn ">
			and `sign_in` = #{signIn}
		</if>
		<if test=" null != status ">
			and `status` = #{status}
		</if>
		<if test=" null != activityId ">
			and `activity_id` = #{activityId}
		</if>
		
		<if test=" null != sendMsg ">
			and `send_msg` = #{sendMsg}
		</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.WxActivityJoin" resultMap="BaseResultMap">
		select
		<include refid="allColumns"/>
		from wx_activity_join
		<include refid="dynamicWhereConditions"/>
	</select>
	
	<select id="cfindList" parameterType="com.iformall.domain.po.WxActivityJoin"
	        resultType="com.iformall.domain.po.WxActivity">
		select a.id,a.cover_img,a.title,a.activity_start_time,a.activity_end_time,aj.`status`
		from wx_activity_join aj left join wx_activity a on aj.activity_id=a.id
		where aj.user_id=#{userId}
		<if test=" null != tenantId ">
			and aj.`tenant_id` = #{tenantId}
		</if>
		<if test=" null != statusStr and ''!=statusStr">
			and aj.`status` in (${statusStr}) and a.`status`=2
		</if>
		<if test=" null != status">
			and a.`status`= 1
		</if>
		<if test=" null != sortColumns">order by aj.${sortColumns}</if>
	</select>
	
	<update id="updateSendMsg" parameterType="hashmap">
		update wx_activity_join set send_msg = #{send_msg} where id in
		<foreach collection="joinList" index="index" item="join" open="(" separator="," close=")">
			#{join.id}
		</foreach>
	</update>
	
	<update id="updateStatus" parameterType="java.util.List">
		update wx_activity_join set status = 3 where activity_id in
		<foreach collection="list" index="index" item="activity" open="(" separator="," close=")">
			#{activity.id}
		</foreach>
	</update>
	
	<update id="activityExpired">
		update wx_activity_join set `status`=2,update_time=now() where `status`= 0 and activity_id in (select id from wx_activity where is_expired=1)
	</update>

</mapper>
