admin
2020-12-05 8ac93bd9b45e3d25783798e1fe8cfc26bedd57d2
service-lucky/src/main/resources/mapper/LuckyActivityJoinRecordMapper.xml
@@ -1,5 +1,6 @@
<?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"/>
@@ -10,185 +11,196 @@
        <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>
    <sql id="Base_Column_List">
    id, activity_id, app_id, uid, join_info, user_type, weight, create_time
  </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>
    <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 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.appId!=null">
            and app_id=#{query.appId}
        </if>
        <if test="query.uid!=null">
            and uid=#{query.uid}
        </if>
        <if test="query.minCreateTime!=null">
            and create_time>=#{query.minCreateTime}
        </if>
        <if test="query.maxCreateTime!=null">
            and #{query.maxCreateTime}>create_time
        </if>
        <if test="query.minCreateTime!=null">and create_time&gt;=#{query.minCreateTime}</if>
        <if test="query.maxCreateTime!=null">and #{query.maxCreateTime}&gt;create_time</if>
    </sql>
    <select id="list" resultMap="BaseResultMap">
        select
    <select id="list" resultMap="BaseResultMap">select
        <include refid="Base_Column_List"/>
        from lucky_activity_join_record
        where 1=1
        <include refid="listWhere">
        </include>
        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>
            <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">
        </include>
    <select id="count" resultType="java.lang.Long">select count(*) from lucky_activity_join_record where 1=1
        <include refid="listWhere"/>
    </select>
    <update id="addWeight">
        update lucky_activity_join_record set weight=weight+#{weight} where id=#{id}
    <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&gt;=#{query.minCreateTime}</if>
        <if test="query.maxCreateTime!=null">and #{query.maxCreateTime}&gt;r.create_time</if>
    </sql>
    </update>
    <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"/>
    <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)
    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})
  </insert>
    <insert id="insertSelective"  useGeneratedKeys="true" keyProperty="id" parameterType="com.ks.lucky.pojo.DO.LuckyActivityJoinRecord">
        insert into lucky_activity_join_record
        <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="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="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
    <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="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="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}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
    <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>