<?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="cn.iocoder.mall.promotion.biz.dao.PromotionActivityMapper">

    <sql id="FIELDS">
        id, title, activity_type, status, start_time,
        end_time, invalid_time, delete_time, time_limited_discount, full_privilege,
        create_time, update_time
    </sql>

    <resultMap id="PromotionActivityResultMap" type="PromotionActivityDO">
        <result property="timeLimitedDiscount" column="time_limited_discount" javaType="cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO$TimeLimitedDiscount" typeHandler="cn.iocoder.common.framework.mybatis.JSONTypeHandler"/>
        <result property="fullPrivilege" column="full_privilege" javaType="cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO$FullPrivilege" typeHandler="cn.iocoder.common.framework.mybatis.JSONTypeHandler"/>
    </resultMap>

<!--    <select id="selectListByPidAndStatusOrderBySort" resultType="PromotionActivityDO">-->
<!--        SELECT-->
<!--            <include refid="FIELDS" />-->
<!--        FROM banner-->
<!--        WHERE pid = #{pid}-->
<!--        AND status = #{status}-->
<!--        AND deleted = 0-->
<!--        ORDER BY sort ASC-->
<!--    </select>-->

<!--    <select id="selectList" resultType="PromotionActivityDO">-->
<!--        SELECT-->
<!--          <include refid="FIELDS" />-->
<!--        FROM banner-->
<!--        WHERE deleted = 0-->
<!--    </select>-->

    <select id="selectById" parameterType="Integer" resultMap="PromotionActivityResultMap">
        SELECT
            <include refid="FIELDS" />
        FROM promotion_activity
        WHERE id = #{id}
    </select>

    <select id="selectListByStatus" resultMap="PromotionActivityResultMap">
        SELECT
            <include refid="FIELDS" />
        FROM promotion_activity
        WHERE status IN
            <foreach item="status" collection="statuses" separator="," open="(" close=")" index="">
                #{status}
            </foreach>
    </select>

<!--    <select id="selectListByStatus" parameterType="Integer" resultType="PromotionActivityDO">-->
<!--        SELECT-->
<!--            <include refid="FIELDS" />-->
<!--        FROM banner-->
<!--        <where>-->
<!--            <if test="status != null">-->
<!--                status = #{status}-->
<!--            </if>-->
<!--            AND deleted = 0-->
<!--        </where>-->
<!--    </select>-->

    <select id="selectListByPage" resultMap="PromotionActivityResultMap">
        SELECT
            <include refid="FIELDS" />
        FROM promotion_activity
        WHERE activity_type = #{activityType}
        <if test="title != null">
            AND title LIKE "%"#{title}"%"
        </if>
        AND status IN
        <foreach item="status" collection="statuses" separator="," open="(" close=")" index="">
            #{status}
        </foreach>
        LIMIT #{offset}, #{limit}
    </select>

    <select id="selectCountByPage" resultType="Integer">
        SELECT
          COUNT(1)
        FROM promotion_activity
        WHERE activity_type = #{activityType}
        <if test="title != null">
            AND title LIKE "%"#{title}"%"
        </if>
        AND status IN
        <foreach item="status" collection="statuses" separator="," open="(" close=")" index="">
            #{status}
        </foreach>
    </select>

    <insert id="insert" parameterType="PromotionActivityDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
        INSERT INTO promotion_activity (
          title, activity_type, status, start_time,
          end_time, invalid_time, delete_time,
          time_limited_discount,
          full_privilege,
          create_time
        ) VALUES (
          #{title}, #{activityType}, #{status}, #{startTime},
          #{endTime}, #{invalidTime}, #{deleteTime},
          #{timeLimitedDiscount, typeHandler=cn.iocoder.common.framework.mybatis.JSONTypeHandler},
          #{fullPrivilege, typeHandler=cn.iocoder.common.framework.mybatis.JSONTypeHandler},
          #{createTime}
        )
    </insert>

<!--    <update id="update" parameterType="PromotionActivityDO">-->
<!--        UPDATE banner-->
<!--        <set>-->
<!--            <if test="title != null">-->
<!--                title = #{title},-->
<!--            </if>-->
<!--            <if test="url != null">-->
<!--                url = #{url},-->
<!--            </if>-->
<!--            <if test="picUrl != null">-->
<!--                pic_url = #{picUrl} ,-->
<!--            </if>-->
<!--            <if test="sort != null">-->
<!--                sort = #{sort},-->
<!--            </if>-->
<!--            <if test="status != null">-->
<!--                status = #{status},-->
<!--            </if>-->
<!--            <if test="memo != null">-->
<!--                memo = #{memo},-->
<!--            </if>-->
<!--            <if test="deleted != null">-->
<!--                deleted = #{deleted}-->
<!--            </if>-->
<!--        </set>-->
<!--        WHERE id = #{id}-->
<!--    </update>-->

</mapper>