active-gift-record-mapper.xml 5.22 KB
<?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">

<!-- @author tongxiaochuan -->
<mapper namespace="com.cjs.cms.dao.user.point.ActiveGiftRecordDao">
	
	<sql id="active_gift_record_field">
		id, active_id, user_id, gift_id, gift_at, gift_amount, gift_by, issue_status, 
			issue_by, issue_at, create_at, create_by
	</sql>
	
	<insert id="insert" parameterType="ActiveGiftRecordInfo" useGeneratedKeys="true" keyProperty="id">
		insert into active_gift_record(active_id, user_id, gift_id, gift_at, gift_amount, gift_by, issue_status, 
			issue_by, issue_at, create_at, create_by) 
		values(#{activeId}, #{userId}, #{giftId}, CURRENT_TIMESTAMP, #{giftAmount}, #{giftBy}, #{issueStatus}, 
			#{issueBy}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, #{createBy})
	</insert>
	
	<delete id="delete" parameterType="map">
		delete from active_gift_record 
		where active_id = #{activeId} 
		and user_id = #{userId} 
		and issue_status in (0,2)
	</delete>
	
	<!-- 查询符合条件的发奖条目数 -->
	<select id="queryCountByConditions" parameterType="map" resultType="int">
		select count(1) from active_gift_record 
		where active_id = #{activeId} 
		and user_id = #{clientId} 
		<if test="issueStatus != null and issueStatus != ''">
			and issue_status = #{issueStatus} 
		</if>
	</select>
	
	<sql id="searchCondition">
		where 1=1 
		<if test="activeId != null and activeId != ''">
			and c.id = #{activeId}
		</if>
		<if test="issueStatus != null and issueStatus != ''">
			and instr(#{issueStatus},r.issue_status) > 0 
		</if>
	</sql>
	
	<!-- 按条件查询发送记录 -->
	<select id="search" parameterType="map" resultType="map">
		select c.name, c.type, r.user_id, u.end_rule, g.gift_type, g.gift_code, g.gift_name, r.gift_id, r.gift_amount, r.issue_status  
		from active_gift_record r 
		left join active_gift g on r.gift_id = g.id 
		inner join active_config c on r.active_id = c.id 
		left join active_rule u on g.id = u.gift_id 
		<include refid="searchCondition" /> 
		order by r.id asc 
		<include refid="common.pageLimit" />
	</select>
	
	<select id="searchTotal"  parameterType="map" resultType="int">
		select count(1) from active_gift_record r 
		left join active_gift g on r.gift_id = g.id 
		inner join active_config c on r.active_id = c.id 
		left join active_rule u on g.id = u.gift_id 
		<include refid="searchCondition" /> 
	</select>
	
	<!-- 查询用户中奖未送/送失败纪录 -->
	<select id="queryRecord" parameterType="map" resultType="ActiveGiftRecordInfo">
		select <include refid="active_gift_record_field" /> 
		from active_gift_record 
		where active_id = #{activeId} 
		and instr('02', issue_status) > 0 
		<if test="userId != null and userId != ''">
			and user_id = #{userId} 
		</if>
	</select>
	
	<update id="updateRecord" parameterType="ActiveGiftRecordInfo">
		update active_gift_record set gift_id = #{giftId}, gift_at = CURRENT_TIMESTAMP, 
		gift_amount = #{giftAmount}, issue_status = #{issueStatus}, issue_by = #{issueBy},  
		issue_at = CURRENT_TIMESTAMP, create_by = #{createBy} 
		where id = #{id}
	</update>
	
	<update id="updateStatus" parameterType="ActiveGiftRecordInfo">
		update active_gift_record set 
		issue_status = #{issueStatus}, issue_by = #{issueBy},  
		issue_at = CURRENT_TIMESTAMP 
		where id = #{id}
	</update>
	
	<!-- 查询所有发放记录 -->
	<sql id="searchAll">
	     <if test="name != null and name != ''">and active.name = #{name}</if>
		 <if test="type != null and type != ''">and active.type = #{type}</if>	
		 <if test="userId != null and userId != ''">and record.user_id = #{userId}</if>
		 <if test="giftType != null and giftType != ''">and gift.gift_type = #{giftType}</if>
		 <if test="issueStatus != null and issueStatus != ''">and record.issue_status = #{issueStatus}</if>	
		 <if test="startDate != null and startDate != ''"> <![CDATA[ and record.issue_at >= #{startDate}]]> </if>
		 <if test="endDate != null and endDate != ''"> <![CDATA[ and record.issue_at <= DATE_ADD(#{endDate}, INTERVAL 1 day)]]> </if>	
	</sql>
	<select id="queryAll" resultType="map"  parameterType="map">
	   select record.id, active.name, active.type, record.user_id, record.gift_amount, record.issue_at, record.issue_status, 
       gift.gift_name, gift.gift_code, gift.gift_type ,record.gift_by
       	from active_gift_record record 
		left join active_gift gift on record.gift_id = gift.id 
		inner join active_config active on record.active_id = active.id 
       <include refid="searchAll" />
       <include refid="common.pageLimit" />
	</select>
	
	<select id="queryAllTotal" resultType="int"  parameterType="map">
	   select count(*)
       	from active_gift_record record 
		left join active_gift gift on record.gift_id = gift.id 
		inner join active_config active on record.active_id = active.id 
       <include refid="searchAll" />
	</select>
	<!-- 发放记录汇总 -->
	<select id="recordCount" resultType="map" parameterType="map">
	   select count(DISTINCT record.user_id) user_id,  sum(record.gift_by) end_rule, sum(record.gift_amount) gift_amount 
    	from active_gift_record record 
		left join active_gift gift on record.gift_id = gift.id 
		inner join active_config active on record.active_id = active.id 
       <include refid="searchAll" />
	</select>
</mapper>