<?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.ks.lucky.mapper.LuckyActivityJoinRecordMapper">
|
<resultMap id="BaseResultMap" type="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">
|
<id column="id" jdbcType="BIGINT" property="id"/>
|
<result column="activity_id" jdbcType="BIGINT" property="activityId"/>
|
<result column="app_id" jdbcType="BIGINT" property="appId"/>
|
<result column="uid" jdbcType="VARCHAR" property="uid"/>
|
<result column="join_info" jdbcType="VARCHAR" property="joinInfo"/>
|
<result column="user_type" jdbcType="INTEGER" property="userType"/>
|
<result column="weight" jdbcType="INTEGER" property="weight"/>
|
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
<result column="draw_state" property="drawState" jdbcType="INTEGER"/>
|
</resultMap>
|
|
|
<resultMap id="RankResultMap" type="com.ks.lucky.pojo.DTO.ActivityJoinerRankInfo">
|
<result column="rank" jdbcType="INTEGER" property="rank"/>
|
<result column="app_id" jdbcType="BIGINT" property="appId"/>
|
<result column="uid" jdbcType="VARCHAR" property="uid"/>
|
<result column="weight" jdbcType="INTEGER" property="weight"/>
|
</resultMap>
|
|
<sql id="Base_Column_List">id, activity_id, app_id, uid, join_info, user_type, weight, create_time,update_time,draw_state</sql>
|
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">select
|
<include refid="Base_Column_List"/>
|
from lucky_activity_join_record where id = #{id,jdbcType=BIGINT}
|
</select>
|
<select id="selectByPrimaryKeyForUpdate" parameterType="java.lang.Long" resultMap="BaseResultMap">select
|
<include refid="Base_Column_List"/>
|
from lucky_activity_join_record where id = #{0} for update
|
</select>
|
<!-- 非模板 -->
|
<sql id="listWhere">
|
<if test="query.activityId!=null">and activity_id=#{query.activityId}</if>
|
<if test="query.appId!=null">and app_id=#{query.appId}</if>
|
<if test="query.uid!=null">and uid=#{query.uid}</if>
|
<if test="query.drawStateList!=null">
|
<foreach collection="query.drawStateList" item="state" open=" and (" close=")" separator=" or ">
|
and draw_state=#{state}
|
</foreach>
|
</if>
|
<if test="query.minCreateTime!=null">and create_time>=#{query.minCreateTime}</if>
|
<if test="query.maxCreateTime!=null">and #{query.maxCreateTime}>create_time</if>
|
</sql>
|
|
|
<select id="list" resultMap="BaseResultMap">select
|
<include refid="Base_Column_List"/>
|
from lucky_activity_join_record where 1=1
|
<include refid="listWhere"/>
|
<if test="query.sortList!=null">
|
<foreach collection="query.sortList" item="item" separator="," open=" order by ">#{item}</foreach>
|
</if>
|
limit #{query.start},#{query.count}
|
</select>
|
<select id="count" resultType="java.lang.Long">select count(*) from lucky_activity_join_record where 1=1
|
<include refid="listWhere"/>
|
</select>
|
|
|
<sql id="listWithActivityWhere">
|
<if test="query.activityId!=null">and r.activity_id=#{query.activityId}</if>
|
<if test="query.appId!=null">and r.app_id=#{query.appId}</if>
|
<if test="query.uid!=null">and r.uid=#{query.uid}</if>
|
<if test="query.drawStateList!=null">
|
<foreach collection="query.drawStateList" item="state" open=" and (" close=")" separator=" or ">
|
and draw_state=#{state}
|
</foreach>
|
</if>
|
<if test="query.minCreateTime!=null">and r.create_time>=#{query.minCreateTime}</if>
|
<if test="query.maxCreateTime!=null">and #{query.maxCreateTime}>r.create_time</if>
|
</sql>
|
|
<select id="listWithActivityState" resultMap="BaseResultMap">
|
select
|
r.*
|
from lucky_activity_join_record r LEFT JOIN `lucky_activity` a ON r.`activity_id`=a.`id` where 1=1
|
<include refid="listWithActivityWhere"/>
|
|
<if test="activityStateList!=null">
|
<foreach collection="activityStateList" item="state" open=" and (" close=")" separator="or">
|
#{state}=a.state
|
</foreach>
|
</if>
|
order by r.create_time desc
|
limit #{query.start},#{query.count}
|
</select>
|
<select id="countWithActivityState" resultType="java.lang.Long">
|
select
|
count(*)
|
from lucky_activity_join_record r LEFT JOIN `lucky_activity` a ON r.`activity_id`=a.`id` where 1=1
|
<include refid="listWithActivityWhere"/>
|
|
<if test="activityStateList!=null">
|
<foreach collection="activityStateList" item="state" open=" and (" close=")" separator="or">
|
#{state}=a.state
|
</foreach>
|
</if>
|
</select>
|
|
|
<select id="getJoinerPosition" resultType="java.lang.Integer">
|
select count(*) from `lucky_activity_join_record` r where r.`activity_id`=#{activityId} and r.`id` <![CDATA[<]]> (SELECT r.`id` FROM `lucky_activity_join_record` r where r.`activity_id`=#{activityId} and r.`app_id`=#{appId} and r.`uid`=#{uid})
|
</select>
|
|
|
<select id="sumWeight" resultType="java.lang.Long">
|
select sum(r.weight) from `lucky_activity_join_record` r where r.`activity_id`=#{activityId}
|
</select>
|
|
|
<select id="listWeightRank" resultMap="RankResultMap">
|
SELECT (@i:=@i+1) rank,r.* FROM lucky_activity_join_record r,(SELECT @i:=#{start}) t where r.`activity_id`=#{activityId} order by r.`weight` desc,r.`id` LIMIT #{start},#{count};
|
</select>
|
|
|
<select id="countWeightRank" resultType="java.lang.Long">
|
SELECT count(*) FROM lucky_activity_join_record r where r.`activity_id`=#{activityId}
|
</select>
|
|
|
<!-- 参与者的排行 = 大于自己权重的参与者数量 + 等于自己的权重数量且id小于等于自己ID的参与者数量 -->
|
|
<select id="getWeightRankWithRecord" resultType="java.lang.Integer">
|
select
|
(
|
(select COUNT(*) from lucky_activity_join_record r where r.`activity_id`=#{activityId} and r.`weight`>#{weight})
|
+
|
(SELECT COUNT(*) FROM lucky_activity_join_record r WHERE r.`activity_id`=#{activityId} AND r.`weight`=#{weight} and r.`id` <![CDATA[<=]]> #{id})) as rank
|
</select>
|
|
|
<update id="addWeight">update lucky_activity_join_record set weight=weight+#{weight} where id=#{id}</update>
|
<delete id="deleteByPrimaryKey"
|
parameterType="java.lang.Long">delete from lucky_activity_join_record where id = #{id,jdbcType=BIGINT}</delete>
|
<insert id="insert" useGeneratedKeys="true" keyProperty="id"
|
parameterType="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">insert into lucky_activity_join_record (id, activity_id, app_id, uid, join_info, user_type, weight, create_time,id,update_time,draw_state) values (#{id,jdbcType=BIGINT}, #{activityId,jdbcType=BIGINT}, #{appId,jdbcType=BIGINT}, #{uid,jdbcType=VARCHAR}, #{joinInfo,jdbcType=VARCHAR}, #{userType,jdbcType=INTEGER}, #{weight,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP},#{id,jdbcType=BIGINT},#{updateTime,jdbcType=TIMESTAMP},#{drawState,jdbcType=INTEGER})</insert>
|
<insert id="insertSelective" useGeneratedKeys="true" keyProperty="id"
|
parameterType="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">insert into lucky_activity_join_record
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<if test="id != null">id,</if>
|
<if test="activityId != null">activity_id,</if>
|
<if test="appId != null">app_id,</if>
|
<if test="uid != null">uid,</if>
|
<if test="joinInfo != null">join_info,</if>
|
<if test="userType != null">user_type,</if>
|
<if test="weight != null">weight,</if>
|
<if test="createTime != null">create_time,</if>
|
<if test="updateTime != null">update_time,</if>
|
<if test="drawState != null">draw_state,</if>
|
</trim>
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<if test="id != null">#{id,jdbcType=BIGINT},</if>
|
<if test="activityId != null">#{activityId,jdbcType=BIGINT},</if>
|
<if test="appId != null">#{appId,jdbcType=BIGINT},</if>
|
<if test="uid != null">#{uid,jdbcType=VARCHAR},</if>
|
<if test="joinInfo != null">#{joinInfo,jdbcType=VARCHAR},</if>
|
<if test="userType != null">#{userType,jdbcType=INTEGER},</if>
|
<if test="weight != null">#{weight,jdbcType=INTEGER},</if>
|
<if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
|
<if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP}</if>
|
<if test="drawState != null">#{drawState,jdbcType=INTEGER}</if>
|
</trim>
|
</insert>
|
<update id="updateByPrimaryKeySelective" parameterType="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">update
|
lucky_activity_join_record
|
<set>
|
<if test="activityId != null">activity_id = #{activityId,jdbcType=BIGINT},</if>
|
<if test="appId != null">app_id = #{appId,jdbcType=BIGINT},</if>
|
<if test="uid != null">uid = #{uid,jdbcType=VARCHAR},</if>
|
<if test="joinInfo != null">join_info = #{joinInfo,jdbcType=VARCHAR},</if>
|
<if test="userType != null">user_type = #{userType,jdbcType=INTEGER},</if>
|
<if test="weight != null">weight = #{weight,jdbcType=INTEGER},</if>
|
<if test="createTime != null">create_time = #{createTime,jdbcType=TIMESTAMP},</if>
|
<if test="updateTime !=null">update_time =#{updateTime,jdbcType=TIMESTAMP},</if>
|
<if test="drawState != null">draw_state =#{drawState,jdbcType=INTEGER},</if>
|
</set>
|
where id = #{id,jdbcType=BIGINT}
|
</update>
|
|
|
<update id="updateSelectiveWithQuery" parameterType="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">update
|
lucky_activity_join_record
|
<set>
|
<if test="record.activityId != null">activity_id = #{record.activityId,jdbcType=BIGINT},</if>
|
<if test="record.appId != null">app_id = #{record.appId,jdbcType=BIGINT},</if>
|
<if test="record.uid != null">uid = #{record.uid,jdbcType=VARCHAR},</if>
|
<if test="record.joinInfo != null">join_info = #{record.joinInfo,jdbcType=VARCHAR},</if>
|
<if test="record.userType != null">user_type = #{record.userType,jdbcType=INTEGER},</if>
|
<if test="record.weight != null">weight = #{record.weight,jdbcType=INTEGER},</if>
|
<if test="record.createTime != null">create_time = #{record.createTime,jdbcType=TIMESTAMP},</if>
|
<if test="record.updateTime !=null">update_time =#{record.updateTime,jdbcType=TIMESTAMP},</if>
|
<if test="record.drawState != null">draw_state =#{record.drawState,jdbcType=INTEGER},</if>
|
</set>
|
where 1=1
|
<include refid="listWhere"></include>
|
</update>
|
|
<update id="updateByPrimaryKey"
|
parameterType="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">update lucky_activity_join_record set activity_id = #{activityId,jdbcType=BIGINT}, app_id = #{appId,jdbcType=BIGINT}, uid = #{uid,jdbcType=VARCHAR}, join_info = #{joinInfo,jdbcType=VARCHAR}, user_type = #{userType,jdbcType=INTEGER}, weight = #{weight,jdbcType=INTEGER}, create_time = #{createTime,jdbcType=TIMESTAMP} ,update_time =#{updateTime,jdbcType=TIMESTAMP} ,draw_state =#{drawState,jdbcType=INTEGER} where id = #{id,jdbcType=BIGINT}</update>
|
|
|
</mapper>
|