admin
2020-12-01 678b01185fda7ffd4d0959ca39be9b3633cb8294
活动流程优化
7个文件已修改
529 ■■■■■ 已修改文件
facade-lucky/src/main/java/com/ks/lucky/pojo/DO/LuckyActivity.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/java/com/ks/daylucky/util/mq/LuckyMQFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/test/java/com/ks/MyBatisTest.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/resources/mapper/LuckyActivityMapper.xml 414 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/test/java/com/ks/lucky/ActivityTest.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/pojo/DO/LuckyActivity.java
@@ -1,6 +1,8 @@
package com.ks.lucky.pojo.DO;
import org.springframework.data.annotation.Transient;
import org.yeshi.utils.mybatis.Column;
import org.yeshi.utils.mybatis.Table;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
@@ -9,6 +11,7 @@
import java.util.Date;
import java.util.List;
@Table("lucky_activity")
@Valid
public class LuckyActivity implements Serializable {
@@ -44,51 +47,74 @@
    public final static int STATE_OPENED = 41;
    @Column(name="id")
    private Long id;
    @Column(name="app_id")
    @NotNull(message = "应用ID不能为空")
    private Long appId;
    @Column(name="sponsor_id")
    @NotNull(message = "赞助商不能为空")
    private Long sponsorId;
    @Column(name="`name`")
    @NotEmpty(message = "活动名称不能为空")
    private String name;
    @Column(name="material_poster")
    @NotEmpty(message = "活动海报不能为空")
    private String materialPoster;
    @Column(name="material_tag_image")
    private String materialTagImage;
    @Column(name="material_")
    private String material;
    @Column(name="`desc`")
    private String desc;
    /**
     * 最大人数
     */
    @Column(name="max_person_count")
    private Integer maxPersonCount;
    /**
     * 现有人数
     */
    @Column(name="current_person_count")
    private Integer currentPersonCount;
    @Column(name="`state`")
    private Integer state;
    @Column(name="state_remarks")
    private String stateRemarks;
    @Column(name="pre_start_time")
    @NotNull(message = "开始时间不能为空")
    private Date startTime;
    private Date preStartTime;
    @Column(name="actual_start_time")
    private Date actualStartTime;
    @Column(name="pre_finish_time")
    private Date preFinishTime;
    @NotNull(message = "结束时间不能为空")
    @Column(name="actual_finish_time")
    private Date actualFinishTime;
    @Column(name="pre_open_time")
    private Date preOpenTime;
    @Column(name="actual_open_time")
    private Date actualOpenTime;
    @Column(name="create_time")
    private Date createTime;
    @Column(name="update_time")
    private Date updateTime;
    @Transient
@@ -232,14 +258,6 @@
        this.stateRemarks = stateRemarks == null ? null : stateRemarks.trim();
    }
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getPreOpenTime() {
        return preOpenTime;
    }
@@ -279,4 +297,20 @@
    public void setActualFinishTime(Date actualFinishTime) {
        this.actualFinishTime = actualFinishTime;
    }
    public Date getPreStartTime() {
        return preStartTime;
    }
    public void setPreStartTime(Date preStartTime) {
        this.preStartTime = preStartTime;
    }
    public Date getActualStartTime() {
        return actualStartTime;
    }
    public void setActualStartTime(Date actualStartTime) {
        this.actualStartTime = actualStartTime;
    }
}
service-daylucky/src/main/java/com/ks/daylucky/util/mq/LuckyMQFactory.java
@@ -13,7 +13,7 @@
        LuckyMQ mq = new LuckyMQ();
        mq.setState(LuckyMQ.STATE_NOT_SEND);
        mq.setCreateTime(new Date());
        mq.setPreSendTime(activity.getStartTime());
        mq.setPreSendTime(activity.getPreStartTime());
        mq.setQueueContent(new Gson().toJson(new ActivityMQMsg(activity.getId(), ActivityMQMsg.TYPE_EXEC_START, new Date())));
        mq.setQueueName(CMQManager.QUEUENAME_LUCKY_ACTIVITY);
        mq.setTaskId("start-activity-" + activity.getId());
service-daylucky/src/test/java/com/ks/MyBatisTest.java
@@ -1,5 +1,6 @@
package com.ks;
import com.ks.lucky.pojo.DO.LuckyActivity;
import com.ks.lucky.pojo.DO.LuckyActivityAwardResultExtra;
import org.junit.jupiter.api.Test;
import org.yeshi.utils.mybatis.ColumnParseUtil;
@@ -7,7 +8,7 @@
public class MyBatisTest {
    @Test
    public void test(){
        ColumnParseUtil.parseColumn(LuckyActivityAwardResultExtra.class,"D:\\workspace\\DayBuy\\service-lucky\\src\\main\\resources\\mapper\\LuckyActivityAwardResultExtraMapper.xml");
    public void test() {
        ColumnParseUtil.parseColumn(LuckyActivity.class, "D:\\workspace\\DayLucky\\service-lucky\\src\\main\\resources\\mapper\\LuckyActivityMapper.xml");
    }
}
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java
@@ -102,6 +102,41 @@
        //启动活动
        setState(activityId, LuckyActivity.STATE_STARTED, "已经启动");
        //设置实际开始时间
        LuckyActivity update = new LuckyActivity();
        update.setId(activityId);
        update.setActualStartTime(new Date());
        update.setUpdateTime(new Date());
        luckyActivityMapper.updateByPrimaryKeySelective(update);
    }
    /**
     * 结束活动
     *
     * @param activityId
     * @param force      是否强制结束
     * @param remarks
     */
    @Transactional(rollbackFor = Exception.class)
    public void finishActivity(Long activityId, boolean force, String remarks) throws LuckyActivityException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        if (activity.getState() != LuckyActivity.STATE_STARTED) {
            throw new LuckyActivityException(1, "活动未处于已开始状态");
        }
        //设置活动处于强制结束状态
        if (force) {
            setState(activityId, LuckyActivity.STATE_FOUCE_FINISH, remarks);
        } else {
            setState(activityId, LuckyActivity.STATE_FINISH, remarks);
        }
        LuckyActivity update = new LuckyActivity();
        update.setId(activityId);
        update.setActualFinishTime(new Date());
        update.setUpdateTime(new Date());
        luckyActivityMapper.updateByPrimaryKeySelective(update);
    }
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java
@@ -121,15 +121,15 @@
     */
    private void checkActivityForPublish(LuckyActivity activity) throws LuckyActivityException {
        notNull(activity);
        if (activity.getStartTime() == null) {
        if (activity.getPreStartTime() == null) {
            throw new LuckyActivityException(1, "活动开始时间未设置");
        }
        if (activity.getStartTime().getTime() < System.currentTimeMillis()) {
        if (activity.getPreStartTime().getTime() < System.currentTimeMillis()) {
            throw new LuckyActivityException(1, "活动开始时间不能小于当前时间");
        }
        if (activity.getPreFinishTime() != null && activity.getStartTime().getTime() >= activity.getPreFinishTime().getTime()) {
        if (activity.getPreFinishTime() != null && activity.getPreStartTime().getTime() >= activity.getPreFinishTime().getTime()) {
            throw new LuckyActivityException(1, "活动开始结束时间不能小于开始时间");
        }
@@ -216,18 +216,11 @@
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void forceFinishActivity(Long activityId, String remarks) throws LuckyActivityException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(activityId);
        notNull(activity);
        if (activity.getState() != LuckyActivity.STATE_STARTED) {
            throw new LuckyActivityException(1, "活动未处于已开始状态");
        }
        //设置活动处于强制结束状态
        luckyActivityManager.setState(activityId, LuckyActivity.STATE_FOUCE_FINISH, remarks);
        luckyActivityManager.finishActivity(activityId, true, remarks);
    }
    @Transactional(rollbackFor = Exception.class)
service-lucky/src/main/resources/mapper/LuckyActivityMapper.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.LuckyActivityMapper">
    <resultMap id="BaseResultMap" type="com.ks.lucky.pojo.DO.LuckyActivity">
        <id column="id" jdbcType="BIGINT" property="id"/>
@@ -14,352 +15,131 @@
        <result column="current_person_count" jdbcType="INTEGER" property="currentPersonCount"/>
        <result column="state" jdbcType="INTEGER" property="state"/>
        <result column="state_remarks" jdbcType="VARCHAR" property="stateRemarks"/>
        <result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
        <result column="pre_finish_time" jdbcType="TIMESTAMP" property="preFinishTime"/>
        <result column="actual_finish_time" jdbcType="TIMESTAMP" property="actualFinishTime"/>
        <result column="pre_open_time" jdbcType="TIMESTAMP" property="preOpenTime"/>
        <result column="actual_open_time" jdbcType="TIMESTAMP" property="actualOpenTime"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
        <result column="pre_start_time" property="preStartTime" jdbcType="TIMESTAMP"/>
        <result column="actual_start_time" property="actualStartTime" jdbcType="TIMESTAMP"/>
    </resultMap>
    <sql id="Base_Column_List">
    id, app_id, sponsor_id, `name`, material_poster, material_tag_image, material_, `desc`,
    max_person_count,current_person_count, state, state_remarks, start_time, pre_finish_time,actual_finish_time, pre_open_time,actual_open_time, create_time,
    update_time
  </sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
    <sql id="Base_Column_List">id, app_id, sponsor_id, `name`, material_poster, material_tag_image, material_, `desc`, max_person_count,current_person_count, state, state_remarks, pre_finish_time,actual_finish_time, pre_open_time,actual_open_time, create_time, update_time,`state`,pre_start_time,actual_start_time</sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">select
        <include refid="Base_Column_List"/>
        from lucky_activity
        where id = #{id,jdbcType=BIGINT}
        from lucky_activity where id = #{id,jdbcType=BIGINT}
    </select>
    <select id="selectByPrimaryKeyForUpdate" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
    <select id="selectByPrimaryKeyForUpdate" parameterType="java.lang.Long" resultMap="BaseResultMap">select
        <include refid="Base_Column_List"/>
        from lucky_activity
        where id = #{0} for update
        from lucky_activity where id = #{0} for update
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    delete from lucky_activity
    where id = #{id,jdbcType=BIGINT}
  </delete>
    <insert id="insert"  useGeneratedKeys="true" keyProperty="id" parameterType="com.ks.lucky.pojo.DO.LuckyActivity">
    insert into lucky_activity (id, app_id, sponsor_id,
      `name`, material_poster, material_tag_image,
      material_, `desc`, max_person_count, current_person_count,
      state, state_remarks, start_time,
      pre_finish_time,actual_finish_time, pre_open_time, actual_open_time,create_time,
      update_time)
    values (#{id,jdbcType=BIGINT}, #{appId,jdbcType=BIGINT}, #{sponsorId,jdbcType=BIGINT},
      #{name,jdbcType=VARCHAR}, #{materialPoster,jdbcType=VARCHAR}, #{materialTagImage,jdbcType=VARCHAR},
      #{material,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, #{maxPersonCount,jdbcType=INTEGER}, #{currentPersonCount,jdbcType=INTEGER},
      #{state,jdbcType=INTEGER}, #{stateRemarks,jdbcType=VARCHAR}, #{startTime,jdbcType=TIMESTAMP},
      #{preFinishTime,jdbcType=TIMESTAMP},  #{actualFinishTime,jdbcType=TIMESTAMP}, #{preOpenTime,jdbcType=TIMESTAMP},  #{actualOpenTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP},
      #{updateTime,jdbcType=TIMESTAMP})
  </insert>
    <insert id="insertSelective"  useGeneratedKeys="true" keyProperty="id" parameterType="com.ks.lucky.pojo.DO.LuckyActivity">
        insert into lucky_activity
    <delete id="deleteByPrimaryKey"
            parameterType="java.lang.Long">delete from lucky_activity where id = #{id,jdbcType=BIGINT}</delete>
    <insert id="insert" useGeneratedKeys="true" keyProperty="id"
            parameterType="com.ks.lucky.pojo.DO.LuckyActivity">insert into lucky_activity (id, app_id, sponsor_id, `name`, material_poster, material_tag_image, material_, `desc`, max_person_count, current_person_count, state, state_remarks, pre_finish_time,actual_finish_time, pre_open_time, actual_open_time,create_time, update_time,id,`state`,pre_start_time,actual_start_time) values (#{id,jdbcType=BIGINT}, #{appId,jdbcType=BIGINT}, #{sponsorId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{materialPoster,jdbcType=VARCHAR}, #{materialTagImage,jdbcType=VARCHAR}, #{material,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, #{maxPersonCount,jdbcType=INTEGER}, #{currentPersonCount,jdbcType=INTEGER}, #{state,jdbcType=INTEGER}, #{stateRemarks,jdbcType=VARCHAR}, #{preFinishTime,jdbcType=TIMESTAMP}, #{actualFinishTime,jdbcType=TIMESTAMP}, #{preOpenTime,jdbcType=TIMESTAMP}, #{actualOpenTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},#{id,jdbcType=BIGINT},#{state,jdbcType=INTEGER},#{preStartTime,jdbcType=TIMESTAMP},#{actualStartTime,jdbcType=TIMESTAMP})</insert>
    <insert id="insertSelective" useGeneratedKeys="true" keyProperty="id"
            parameterType="com.ks.lucky.pojo.DO.LuckyActivity">insert into lucky_activity
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="appId != null">
                app_id,
            </if>
            <if test="sponsorId != null">
                sponsor_id,
            </if>
            <if test="name != null">
                `name`,
            </if>
            <if test="materialPoster != null">
                material_poster,
            </if>
            <if test="materialTagImage != null">
                material_tag_image,
            </if>
            <if test="material != null">
                material_,
            </if>
            <if test="desc != null">
                `desc`,
            </if>
            <if test="maxPersonCount != null">
                max_person_count,
            </if>
            <if test="currentPersonCount != null">
                current_person_count,
            </if>
            <if test="state != null">
                state,
            </if>
            <if test="stateRemarks != null">
                state_remarks,
            </if>
            <if test="startTime != null">
                start_time,
            </if>
            <if test="preFinishTime != null">
                pre_finish_time,
            </if>
            <if test="actualFinishTime != null">
                actual_finish_time,
            </if>
            <if test="preOpenTime != null">
                pre_open_time,
            </if>
            <if test="actualOpenTime != null">
                actual_open_time,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
            <if test="updateTime != null">
                update_time,
            </if>
            <if test="id != null">id,</if>
            <if test="appId != null">app_id,</if>
            <if test="sponsorId != null">sponsor_id,</if>
            <if test="name != null">`name`,</if>
            <if test="materialPoster != null">material_poster,</if>
            <if test="materialTagImage != null">material_tag_image,</if>
            <if test="material != null">material_,</if>
            <if test="desc != null">`desc`,</if>
            <if test="maxPersonCount != null">max_person_count,</if>
            <if test="currentPersonCount != null">current_person_count,</if>
            <if test="state != null">state,</if>
            <if test="stateRemarks != null">state_remarks,</if>
            <if test="preFinishTime != null">pre_finish_time,</if>
            <if test="actualFinishTime != null">actual_finish_time,</if>
            <if test="preOpenTime != null">pre_open_time,</if>
            <if test="actualOpenTime != null">actual_open_time,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="state != null">`state`,</if>
            <if test="preStartTime != null">pre_start_time,</if>
            <if test="actualStartTime != null">actual_start_time,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="appId != null">
                #{appId,jdbcType=BIGINT},
            </if>
            <if test="sponsorId != null">
                #{sponsorId,jdbcType=BIGINT},
            </if>
            <if test="name != null">
                #{name,jdbcType=VARCHAR},
            </if>
            <if test="materialPoster != null">
                #{materialPoster,jdbcType=VARCHAR},
            </if>
            <if test="materialTagImage != null">
                #{materialTagImage,jdbcType=VARCHAR},
            </if>
            <if test="material != null">
                #{material,jdbcType=VARCHAR},
            </if>
            <if test="desc != null">
                #{desc,jdbcType=VARCHAR},
            </if>
            <if test="maxPersonCount != null">
                #{maxPersonCount,jdbcType=INTEGER},
            </if>
            <if test="currentPersonCount != null">
                #{currentPersonCount,jdbcType=INTEGER},
            </if>
            <if test="state != null">
                #{state,jdbcType=INTEGER},
            </if>
            <if test="stateRemarks != null">
                #{stateRemarks,jdbcType=VARCHAR},
            </if>
            <if test="startTime != null">
                #{startTime,jdbcType=TIMESTAMP},
            </if>
            <if test="preFinishTime != null">
                #{preFinishTime,jdbcType=TIMESTAMP},
            </if>
            <if test="actualFinishTime != null">
                #{actualFinishTime,jdbcType=TIMESTAMP},
            </if>
            <if test="preOpenTime != null">
                #{preOpenTime,jdbcType=TIMESTAMP},
            </if>
            <if test="actualOpenTime != null">
                #{actualOpenTime,jdbcType=TIMESTAMP},
            </if>
            <if test="createTime != null">
                #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateTime != null">
                #{updateTime,jdbcType=TIMESTAMP},
            </if>
            <if test="id != null">#{id,jdbcType=BIGINT},</if>
            <if test="appId != null">#{appId,jdbcType=BIGINT},</if>
            <if test="sponsorId != null">#{sponsorId,jdbcType=BIGINT},</if>
            <if test="name != null">#{name,jdbcType=VARCHAR},</if>
            <if test="materialPoster != null">#{materialPoster,jdbcType=VARCHAR},</if>
            <if test="materialTagImage != null">#{materialTagImage,jdbcType=VARCHAR},</if>
            <if test="material != null">#{material,jdbcType=VARCHAR},</if>
            <if test="desc != null">#{desc,jdbcType=VARCHAR},</if>
            <if test="maxPersonCount != null">#{maxPersonCount,jdbcType=INTEGER},</if>
            <if test="currentPersonCount != null">#{currentPersonCount,jdbcType=INTEGER},</if>
            <if test="state != null">#{state,jdbcType=INTEGER},</if>
            <if test="stateRemarks != null">#{stateRemarks,jdbcType=VARCHAR},</if>
            <if test="preFinishTime != null">#{preFinishTime,jdbcType=TIMESTAMP},</if>
            <if test="actualFinishTime != null">#{actualFinishTime,jdbcType=TIMESTAMP},</if>
            <if test="preOpenTime != null">#{preOpenTime,jdbcType=TIMESTAMP},</if>
            <if test="actualOpenTime != null">#{actualOpenTime,jdbcType=TIMESTAMP},</if>
            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
            <if test="state != null">#{state,jdbcType=INTEGER}</if>
            <if test="preStartTime != null">#{preStartTime,jdbcType=TIMESTAMP}</if>
            <if test="actualStartTime != null">#{actualStartTime,jdbcType=TIMESTAMP}</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.ks.lucky.pojo.DO.LuckyActivity">
        update lucky_activity
    <update id="updateByPrimaryKeySelective" parameterType="com.ks.lucky.pojo.DO.LuckyActivity">update lucky_activity
        <set>
            <if test="appId != null">
                app_id = #{appId,jdbcType=BIGINT},
            </if>
            <if test="sponsorId != null">
                sponsor_id = #{sponsorId,jdbcType=BIGINT},
            </if>
            <if test="name != null">
                `name` = #{name,jdbcType=VARCHAR},
            </if>
            <if test="materialPoster != null">
                material_poster = #{materialPoster,jdbcType=VARCHAR},
            </if>
            <if test="materialTagImage != null">
                material_tag_image = #{materialTagImage,jdbcType=VARCHAR},
            </if>
            <if test="material != null">
                material_ = #{material,jdbcType=VARCHAR},
            </if>
            <if test="desc != null">
                `desc` = #{desc,jdbcType=VARCHAR},
            </if>
            <if test="maxPersonCount != null">
                max_person_count = #{maxPersonCount,jdbcType=INTEGER},
            </if>
            <if test="currentPersonCount != null">
                current_person_count = #{currentPersonCount,jdbcType=INTEGER},
            </if>
            <if test="state != null">
                state = #{state,jdbcType=INTEGER},
            </if>
            <if test="stateRemarks != null">
                state_remarks = #{stateRemarks,jdbcType=VARCHAR},
            </if>
            <if test="startTime != null">
                start_time = #{startTime,jdbcType=TIMESTAMP},
            </if>
            <if test="preFinishTime != null">
                pre_finish_time = #{preFinishTime,jdbcType=TIMESTAMP},
            </if>
            <if test="actualFinishTime != null">
                actual_finish_time = #{actualFinishTime,jdbcType=TIMESTAMP},
            </if>
            <if test="preOpenTime != null">
                pre_open_time = #{preOpenTime,jdbcType=TIMESTAMP},
            </if>
            <if test="actualOpenTime != null">
                actual_open_time = #{actualOpenTime,jdbcType=TIMESTAMP},
            </if>
            <if test="createTime != null">
                create_time = #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateTime != null">
                update_time = #{updateTime,jdbcType=TIMESTAMP},
            </if>
            <if test="appId != null">app_id = #{appId,jdbcType=BIGINT},</if>
            <if test="sponsorId != null">sponsor_id = #{sponsorId,jdbcType=BIGINT},</if>
            <if test="name != null">`name` = #{name,jdbcType=VARCHAR},</if>
            <if test="materialPoster != null">material_poster = #{materialPoster,jdbcType=VARCHAR},</if>
            <if test="materialTagImage != null">material_tag_image = #{materialTagImage,jdbcType=VARCHAR},</if>
            <if test="material != null">material_ = #{material,jdbcType=VARCHAR},</if>
            <if test="desc != null">`desc` = #{desc,jdbcType=VARCHAR},</if>
            <if test="maxPersonCount != null">max_person_count = #{maxPersonCount,jdbcType=INTEGER},</if>
            <if test="currentPersonCount != null">current_person_count = #{currentPersonCount,jdbcType=INTEGER},</if>
            <if test="state != null">state = #{state,jdbcType=INTEGER},</if>
            <if test="stateRemarks != null">state_remarks = #{stateRemarks,jdbcType=VARCHAR},</if>
            <if test="preFinishTime != null">pre_finish_time = #{preFinishTime,jdbcType=TIMESTAMP},</if>
            <if test="actualFinishTime != null">actual_finish_time = #{actualFinishTime,jdbcType=TIMESTAMP},</if>
            <if test="preOpenTime != null">pre_open_time = #{preOpenTime,jdbcType=TIMESTAMP},</if>
            <if test="actualOpenTime != null">actual_open_time = #{actualOpenTime,jdbcType=TIMESTAMP},</if>
            <if test="createTime != null">create_time = #{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">update_time = #{updateTime,jdbcType=TIMESTAMP},</if>
            <if test="state !=null">`state` =#{state,jdbcType=INTEGER},</if>
            <if test="preStartTime !=null">pre_start_time =#{preStartTime,jdbcType=TIMESTAMP},</if>
            <if test="actualStartTime !=null">actual_start_time =#{actualStartTime,jdbcType=TIMESTAMP},</if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKey" parameterType="com.ks.lucky.pojo.DO.LuckyActivity">
    update lucky_activity
    set app_id = #{appId,jdbcType=BIGINT},
      sponsor_id = #{sponsorId,jdbcType=BIGINT},
      `name` = #{name,jdbcType=VARCHAR},
      material_poster = #{materialPoster,jdbcType=VARCHAR},
      material_tag_image = #{materialTagImage,jdbcType=VARCHAR},
      material_ = #{material,jdbcType=VARCHAR},
      `desc` = #{desc,jdbcType=VARCHAR},
      max_person_count = #{maxPersonCount,jdbcType=INTEGER},
      current_person_count = #{currentPersonCount,jdbcType=INTEGER},
      state = #{state,jdbcType=INTEGER},
      state_remarks = #{stateRemarks,jdbcType=VARCHAR},
      start_time = #{startTime,jdbcType=TIMESTAMP},
      pre_finish_time = #{preFinishTime,jdbcType=TIMESTAMP},
      actual_finish_time = #{actualFinishTime,jdbcType=TIMESTAMP},
      pre_open_time = #{preOpenTime,jdbcType=TIMESTAMP},
      actual_open_time = #{actualOpenTime,jdbcType=TIMESTAMP},
      create_time = #{createTime,jdbcType=TIMESTAMP},
      update_time = #{updateTime,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=BIGINT}
  </update>
update lucky_activity set app_id = #{appId,jdbcType=BIGINT}, sponsor_id = #{sponsorId,jdbcType=BIGINT}, `name` = #{name,jdbcType=VARCHAR}, material_poster = #{materialPoster,jdbcType=VARCHAR}, material_tag_image = #{materialTagImage,jdbcType=VARCHAR}, material_ = #{material,jdbcType=VARCHAR}, `desc` = #{desc,jdbcType=VARCHAR}, max_person_count = #{maxPersonCount,jdbcType=INTEGER}, current_person_count = #{currentPersonCount,jdbcType=INTEGER}, state = #{state,jdbcType=INTEGER}, state_remarks = #{stateRemarks,jdbcType=VARCHAR}, pre_finish_time = #{preFinishTime,jdbcType=TIMESTAMP}, actual_finish_time = #{actualFinishTime,jdbcType=TIMESTAMP}, pre_open_time = #{preOpenTime,jdbcType=TIMESTAMP}, actual_open_time = #{actualOpenTime,jdbcType=TIMESTAMP}, create_time = #{createTime,jdbcType=TIMESTAMP}, update_time = #{updateTime,jdbcType=TIMESTAMP} ,`state` =#{state,jdbcType=INTEGER} ,pre_start_time =#{preStartTime,jdbcType=TIMESTAMP} ,actual_start_time =#{actualStartTime,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT}</update>
    <sql id="queryWhere">
        <if test="query.key!=null">
            and `name` like '${query.key}%'
        </if>
        <if test="query.appId!=null">
            and app_id=#{query.appId}
        </if>
        <if test="query.sponsorId!=null">
            and sponsor_id= #{query.sponsorId}
        </if>
        <if test="query.key!=null">and `name` like '${query.key}%'</if>
        <if test="query.appId!=null">and app_id=#{query.appId}</if>
        <if test="query.sponsorId!=null">and sponsor_id= #{query.sponsorId}</if>
        <if test="query.full!=null">
            <if test="query.full=true">
                and max_person_count=current_person_count
            </if>
            <if test="query.full=true">and max_person_count=current_person_count</if>
        </if>
        <if test="query.stateList!=null">
            <foreach collection="query.stateList" item="state" open=" and (" close=")" separator=" or ">
                state=#{state}
            <foreach collection="query.stateList" item="state" open=" and (" close=")" separator=" or ">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>
        <if test="query.minStartTime!=null">
            and start_time>=#{query.minStartTime}
        </if>
        <if test="query.maxStartTime!=null">
            and #{query.maxStartTime}>start_time
        </if>
        <if test="query.minFinishTime!=null">
            and pre_finish_time>=#{query.minFinishTime}
        </if>
        <if test="query.maxFinishTime!=null">
            and #{query.maxFinishTime}>pre_finish_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>
        <if test="query.minStartTime!=null">and pre_start_time&gt;=#{query.minStartTime}</if>
        <if test="query.maxStartTime!=null">and #{query.maxStartTime}&gt;start_time</if>
        <if test="query.minFinishTime!=null">and pre_finish_time&gt;=#{query.minFinishTime}</if>
        <if test="query.maxFinishTime!=null">and #{query.maxFinishTime}&gt;pre_finish_time</if>
    </sql>
    <select id="list" resultMap="BaseResultMap">
        select
    <select id="list" resultMap="BaseResultMap">select
        <include refid="Base_Column_List"/>
        from lucky_activity
        where 1=1
        <include refid="queryWhere"></include>
        <if test="query.sort!=null">
            order by #{query.sort}
        </if>
        from lucky_activity where 1=1
        <include refid="queryWhere"/>
        <if test="query.sort!=null">order by #{query.sort}</if>
        limit #{query.start},#{query.count}
    </select>
    <select id="count" resultType="java.lang.Long">
        select
        count(*)
        from lucky_activity
        where 1=1
        <include refid="queryWhere"></include>
    <select id="count" resultType="java.lang.Long">select count(*) from lucky_activity where 1=1
        <include refid="queryWhere"/>
    </select>
    <update id="addJoinCount">
          update lucky_activity set current_person_count=current_person_count+#{joinCount} where id=#{activityId}
    </update>
</mapper>
    <update id="addJoinCount">update lucky_activity set current_person_count=current_person_count+#{joinCount} where id=#{activityId}</update>
</mapper>
service-lucky/src/test/java/com/ks/lucky/ActivityTest.java
@@ -50,7 +50,7 @@
        activity.setCurrentPersonCount(0);
        activity.setAppId(4L);
        activity.setMaxPersonCount(100);
        activity.setStartTime(new Date());
        activity.setPreStartTime(new Date());
        activity.setPreFinishTime(new Date());
        activity.setMaterialPoster("http://");
        activity.setSponsorId(1L);