mitao
2025-01-17 afa0dbb4f54e7244835dd67ec33c3e545f122f71
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?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.ruoyi.goods.mapper.activity.ActivityMapper">
 
    <select id="pageMgtActivity" resultType="com.ruoyi.goods.domain.vo.MgtActivityPageVo">
        SELECT
            ta.activity_id activityId,
            ta.activity_name activityName,
            ta.activity_start_time activityStartTime,
            ta.activity_end_time activityEndTime,
            tat.order_total orderTotal,
            tat.person_total personTotal,
            CASE ta.shop_flag
                WHEN 1 THEN '全部'
                WHEN 2 THEN '部分'
                END shopFlag,
            CASE ta.activity_status
                WHEN 0 THEN '未开始'
                WHEN 1 THEN '进行中'
                WHEN 2 THEN '已结束'
                END activityStatus,
            CASE ta.recommend_flag
                WHEN 1 THEN '是'
                ELSE '否'
                END recommendFlag,
            ta.create_time createTime,
            ta.activity_code activityCode,
            ta.propaganda_poster propagandaPoster
        FROM t_activity ta
        INNER JOIN t_activity_total tat ON ta.activity_id = tat.activity_id
        WHERE ta.del_flag = 0
        <if test="param.activityName!=null and param.activityName != ''">
            AND ta.activity_name LIKE CONCAT('%',#{param.activityName},'%')
        </if>
        <if test="param.shopId!=null and param.shopId != ''">
            AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) &gt; 0
        </if>
        <if test="param.activityStartTime!=null and param.activityStartTime != ''">
            AND Date(ta.activity_start_time) &gt;= #{param.activityStartTime}
        </if>
        <if test="param.activityEndTime!=null and param.activityEndTime != ''">
            AND Date(ta.activity_start_time) &lt;= #{param.activityEndTime}
        </if>
        <if test="param.activityStatus!=null">
            AND ta.activity_status = #{param.activityStatus}
        </if>
        <if test="param.createStartTime!=null and param.createStartTime != ''">
            AND Date(ta.create_time) &gt;= #{param.createStartTime}
        </if>
        <if test="param.createEndTime!=null and param.createEndTime != ''">
            AND Date(ta.create_time) &lt;= #{param.createEndTime}
        </if>
        ORDER BY ta.create_time DESC
    </select>
 
    <select id="pageMgtActivityRecord" resultType="com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo">
        SELECT
        user_id userId,
        create_time createTime,
        CASE WHEN order_id IS NOT NULL THEN '是' ELSE '否' END orderFlag
        FROM t_activity_record
        WHERE del_flag = 0 AND activity_id = #{param.activityId}
        <if test="param.userIds!=null and param.userIds != ''">
            AND FIND_IN_SET(#{param.userIds}, user_id) &gt; 0
        </if>
        <if test="param.createStartTime!=null and param.createStartTime != ''">
            AND Date(create_time) &gt;= #{param.createStartTime}
        </if>
        <if test="param.createEndTime!=null and param.createEndTime != ''">
            AND Date(create_time) &lt;= #{param.createEndTime}
        </if>
        <if test="param.orderFlag!=null and param.orderFlag == 1">
            AND order_id IS NOT NULL
        </if>
        <if test="param.orderFlag!=null and param.orderFlag == 0">
            AND order_id IS NULL
        </if>
        ORDER BY create_time DESC
    </select>
 
    <select id="pagePlatformMerActivity" resultType="com.ruoyi.goods.domain.vo.MerActivityPageVo">
        SELECT
        ta.activity_id activityId,
        ta.activity_name activityName,
        ta.activity_start_time activityStartTime,
        ta.activity_end_time activityEndTime,
        CASE ta.activity_status
        WHEN 0 THEN '未开始'
        WHEN 1 THEN '活动中'
        WHEN 2 THEN '已结束'
        END activityStatus,
        ta.propaganda_poster propagandaPoster,
        COUNT(ag.activity_id) goodsNum,
        ta.activity_code activityCode
        FROM t_activity ta
        LEFT JOIN t_activity_goods ag ON ta.activity_id = ag.activity_id AND ag.del_flag = 0
        WHERE ta.del_flag = 0 AND ((ta.shop_flag = 1 AND ta.area_flag = 1) OR (FIND_IN_SET(#{param.shopId}, ta.applicable_shop) &gt; 0))
        group by ta.activity_id
        ORDER BY ta.activity_status ASC,ta.create_time DESC
    </select>
 
    <select id="listMgtActivity" resultType="com.ruoyi.goods.domain.vo.MgtActivityListVo">
        SELECT
            ta.activity_id activityId,
            ta.activity_name activityName
        FROM t_activity ta
        WHERE ta.del_flag = 0
        ORDER BY ta.create_time DESC
    </select>
 
    <select id="getRecommendActivity" resultType="com.ruoyi.system.api.domain.poji.activity.Activity">
        SELECT * FROM t_activity
        WHERE del_flag = 0 AND recommend_flag = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time
        AND activity_status = 1
        <if test="shopId != null and shopId != ''">
            AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0))
        </if>
        ORDER BY activity_end_time - NOW()
        LIMIT 1;
    </select>
 
 
    <select id="listActivityIdByShopId" resultType="java.lang.String">
        SELECT activity_id FROM t_activity
        WHERE del_flag = 0 AND activity_status = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time
        <if test="shopId != null and shopId != ''">
            AND ((shop_flag = 1 AND area_flag = 1) OR (FIND_IN_SET(#{shopId}, applicable_shop) &gt; 0))
        </if>
    </select>
 
    <select id="pageAppActivity" resultType="com.ruoyi.goods.domain.vo.AppActivityPageVo">
        SELECT
            ta.activity_id activityId,
            ta.activity_name activityName,
            ta.activity_start_time activityStartTime,
            ta.activity_end_time activityEndTime,
            CASE ta.activity_status
                WHEN 0 THEN '未开始'
                WHEN 1 THEN '抢购中'
                WHEN 2 THEN '已结束'
                END activityStatus,
            ta.propaganda_poster propagandaPoster,
            ta.activity_introduce activityIntroduce
        FROM t_activity ta
        WHERE ta.del_flag = 0 AND ta.activity_status &lt;=1 AND CURRENT_TIME &lt; ta.activity_end_time
        <if test="shopId != null and shopId != ''">
            AND ((ta.shop_flag = 1 AND ta.area_flag = 1) OR (FIND_IN_SET(#{shopId}, ta.applicable_shop) &gt; 0))
        </if>
        group by ta.activity_id
        ORDER BY ta.activity_status ASC,ta.create_time DESC
    </select>
 
    <update id="addActivityGoodsStock">
        UPDATE t_activity_goods
        SET sales_number = sales_number - #{param.changeNum},
            activity_stock = activity_stock + #{param.changeNum},
            sell_out_flag =  0,
            sell_out_time = NULL
        WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId}
    </update>
 
    <update id="subActivityGoodsStock">
        UPDATE t_activity_goods
        SET sales_number = sales_number + #{param.changeNum},
            activity_stock = activity_stock - #{param.changeNum},
            sell_out_flag = CASE WHEN activity_stock - #{param.changeNum} = 0 THEN 1 ELSE sell_out_flag END,
            sell_out_time = CASE WHEN activity_stock - #{param.changeNum} = 0 THEN NOW() ELSE sell_out_time END
        WHERE activity_id = #{param.activityId} AND goods_id = #{param.goodsId} AND activity_stock &gt;= #{param.changeNum}
    </update>
 
    <select id="checkSellOut" resultType="java.lang.Integer">
        SELECT COUNT(ag_id) FROM t_activity_goods
        WHERE del_flag = 0 AND activity_id = #{activityId} AND sell_out_flag = 0
    </select>
 
    <select id="listStaffActivity" resultType="com.ruoyi.goods.domain.vo.MgtActivityListVo">
        SELECT
            ta.activity_id activityId,
            1 activityType,
            ta.activity_name activityName
        FROM t_activity ta
        WHERE ta.del_flag = 0
        ORDER BY ta.create_time DESC
    </select>
</mapper>