陶杰
2024-08-30 f512140fe18368250824bfe63ebd6b17bed40a76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?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.mzl.flower.mapper.coupon.CouponTemplateMapperCustom">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.mzl.flower.entity.coupon.CouponTemplateDO">
        <id column="id" property="id" />
        <result column="create_by" property="createBy" />
        <result column="create_time" property="createTime" />
        <result column="update_by" property="updateBy" />
        <result column="update_time" property="updateTime" />
        <result column="deleted" property="deleted" />
        <result column="category" property="category" />
        <result column="coupon_code" property="couponCode" />
        <result column="coupon_name" property="couponName" />
        <result column="coupon_description" property="couponDescription" />
        <result column="coupon_amount" property="couponAmount" />
        <result column="coupon_discount_type" property="couponDiscountType" />
        <result column="coupon_discount_value" property="couponDiscountValue" />
        <result column="min_order_amount" property="minOrderAmount" />
        <result column="max_discount_amount" property="maxDiscountAmount" />
        <result column="get_type" property="getType" />
        <result column="get_user_type" property="getUserType" />
        <result column="get_start_date" property="getStartDate" />
        <result column="get_end_date" property="getEndDate" />
        <result column="get_limit" property="getLimit" />
        <result column="usage_type" property="usageType" />
        <result column="usage_limit" property="usageLimit" />
        <result column="usage_per_user" property="usagePerUser" />
        <result column="usage_start_date" property="usageStartDate" />
        <result column="usage_end_date" property="usageEndDate" />
        <result column="usage_time_type" property="usageTimeType" />
        <result column="usage_time_num" property="usageTimeNum" />
        <result column="status" property="status" />
        <result column="point" property="point" />
        <result column="vip_grade" property="vipGrade" />
 
    </resultMap>
    <update id="activeBatchCouponTemplate">
        update t_coupon_template set status='active',update_by=#{param.updateBy},update_time=now() where id in
        <foreach collection="param.idList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>
    <update id="expireBatchCouponTemplate">
        update t_coupon_template set status='expired',update_by=#{param.updateBy},update_time=now() where id in
        <foreach collection="param.idList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>
 
    <update id="deleteBatchCouponTemplate">
        update t_coupon_template set deleted=true ,update_by=#{param.updateBy},update_time=now() where id in
        <foreach collection="param.idList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>
 
    <select id="getCouponTemplatePage" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO">
        <include refid="QuerySql2"/>
    </select>
    <select id="getList" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO">
        <include refid="QuerySql2"/>
    </select>
    <select id="getCouponPointList" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO">
        <include refid="QueryPointSql" />
    </select>
    <select id="getPointPage" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO">
        <include refid="QueryPointSql" />
    </select>
 
    <sql id="QueryPointSql">
        select *
        from t_coupon_template
        where deleted=0
        <if test="param.category != null and param.category != ''">
            AND category =  #{param.category}
        </if>
        <if test="param.status != null and param.status != ''">
            AND status =  #{param.status}
        </if>
        <if test="param.minPoint != null ">
            AND point &gt;=  #{param.minPoint}
        </if>
        <if test="param.maxPoint != null ">
            AND point &lt;=  #{param.maxPoint}
        </if>
        <if test="param.orderStr != null and param.orderStr != '' ">
            order by ${param.orderStr}
        </if>
 
    </sql>
 
    <sql id="QuerySql2">
        select *
        from (
            select t.*,
            create_by_user.nick_name as createByName,
            IFNULL(get_num.cnt, 0) as getNum,
            IFNULL(t.coupon_amount, 0) - IFNULL(get_num.cnt, 0) as unGetNum
        from t_coupon_template t
        left join t_user create_by_user
        on t.create_by =create_by_user.id
        left join (select coupon_id,count(1) as cnt  from t_coupon_record where deleted=0 group by coupon_id) get_num
        on t.id=get_num.coupon_id
        ) t
        where t.deleted=0
        <if test="param.name != null and param.name != ''">
            AND t.coupon_name like concat('%', #{param.name},'%')
        </if>
        <if test="param.couponDiscountType != null and param.couponDiscountType != ''">
            AND t.coupon_discount_type =  #{param.couponDiscountType}
        </if>
        <if test="param.getType != null and param.getType != ''">
            AND t.get_type =  #{param.getType}
        </if>
        <if test="param.getUserType != null and param.getUserType != ''">
            AND t.get_user_type =  #{param.getUserType}
        </if>
        <if test="param.id != null and param.id != ''">
            AND t.id =  #{param.id}
        </if>
        <if test="param.category != null and param.category != ''">
            AND t.category =  #{param.category}
        </if>
        <if test="param.status != null and param.status != ''">
            AND t.status =  #{param.status}
        </if>
        order by t.create_time desc
    </sql>
 
</mapper>