瀏覽代碼

处理到期提醒逻辑错误

yuanliang 10 月之前
父節點
當前提交
25b4e6c193
共有 1 個文件被更改,包括 25 次插入11 次删除
  1. 25 11
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardRecordMapper.xml

+ 25 - 11
cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardRecordMapper.xml

@@ -81,10 +81,18 @@
             <include refid="baseColumns"/>,
             u.phone_ as phone
         from (
-            select any_value(id_) id_
-            from (
-            select * from vip_card_record where efficient_flag_ = 1 and end_time_ &gt;= now() and end_time_ &lt; DATE_ADD(now(),INTERVAL 3 DAY) order by end_time_ desc
-            ) t group by t.user_id_,t.client_type_,t.vip_type_
+        select
+        any_value(id_) id_
+        , max(if(vip_type_ = 'VIP', end_time_, null))  vipEndTime
+        , max(if(vip_type_ = 'SVIP', end_time_, null)) svipEndTime
+        from (select id_,user_id_,client_type_,vip_type_,end_time_
+        from vip_card_record
+        where efficient_flag_ = 1
+        and end_time_ > now()
+        having 1
+        order by end_time_ desc) t
+        group by t.user_id_, t.client_type_, t.vip_type_
+        having (DATE_ADD(now(), INTERVAL 3 DAY) > vipEndTime or DATE_ADD(now(), INTERVAL 3 DAY) > svipEndTime)
         ) a
         left join vip_card_record t on a.id_ = t.id_
         left join sys_user u on t.user_id_ = u.id_
@@ -97,16 +105,22 @@
             <include refid="baseColumns"/>,
             u.phone_ as phone
         from (
-            select any_value(id_) id_
-            from (
-            select * from vip_card_record where efficient_flag_ = 1 order by end_time_ desc
-            ) t group by t.user_id_,t.client_type_,t.vip_type_
+            select
+            any_value(id_) id_
+            ,user_id_
+            , max(if(vip_type_ = 'VIP', end_time_, null))  vipEndTime
+            , max(if(vip_type_ = 'SVIP', end_time_, null)) svipEndTime
+            from (select id_,user_id_,client_type_,vip_type_,end_time_
+            from vip_card_record
+            where efficient_flag_ = 1
+            and msg_status_ in (0,1)
+            having 1
+            order by end_time_ desc) t
+            group by t.user_id_, t.client_type_, t.vip_type_
+            having ( now() > vipEndTime or now()> svipEndTime)
         ) a
         left join vip_card_record t on a.id_ = t.id_
         left join sys_user u on t.user_id_ = u.id_
-        where t.efficient_flag_ = 1
-        and t.end_time_ &lt;= now()
-        and msg_status_ in (0,1)
         order by end_time_ desc
     </select>