huanghongfa
2021-01-22 04c96f26282f021fcc59b40d6f11f172fc070af8
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
@@ -9,6 +9,9 @@
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -37,6 +40,7 @@
            "a.`status`,\n" +
            "a.publish_at,\n" +
            "a.begin_at,\n" +
            "a.cover,\n" +
            "a.end_at,\n" +
            "a.volunteer_max,\n" +
            "count(if(s.is_volunteer=1,s.id,null))volunteer_now,\n"+
@@ -50,15 +54,22 @@
            "left join com_act_act_sign s on a.id=s.activity_id \n"+
            " where a.community_id=#{comActActivityVO.communityId}" +
            "<if test='comActActivityVO.activityName != null and comActActivityVO.activityName.trim() != &quot;&quot;'>" +
            " and a.activity_name = #{comActActivityVO.activityName} \n" +
            " and a.activity_name like concat(#{comActActivityVO.activityName},'%')  \n" +
            " </if> " +
            "<if test='comActActivityVO.status != null and comActActivityVO.status !=0'>" +
            "<if test='comActActivityVO.status != null and comActActivityVO.status !=0 and comActActivityVO.isIng==null'>" +
            "AND a.`status` = #{comActActivityVO.status} \n" +
            " </if> " +
            "<if test='comActActivityVO.beginAt != null and comActActivityVO.beginAt.trim() != &quot;&quot;'>" +
            "<if test='comActActivityVO.status != null and comActActivityVO.status !=0 and comActActivityVO.isIng!=null and comActActivityVO.isIng==1'>" +
            "AND a.`status` in (3,4) \n" +
            " </if> " +
            "<if test='comActActivityVO.isApplets != null and comActActivityVO.isApplets ==1'>" +
            "AND a.`status` != 1 \n" +
            " </if> " +
            "<if test='comActActivityVO.beginAt != null '>" +
            "AND a.begin_at <![CDATA[ >= ]]> #{comActActivityVO.beginAt} AND a.end_at <![CDATA[ <= ]]> #{comActActivityVO.endAt} \n" +
            " </if> " +
            " group by a.id "+
            " order by a.status asc,a.publish_at desc "+
            "</script>")
    IPage<ComActActivityVO> pageActivity( Page page, @Param("comActActivityVO") ComActActivityVO comActActivityVO);
@@ -86,4 +97,121 @@
            "ORDER BY\n" +
            "s.create_at DESC")
    IPage<ComActActivityVO> pageMyActivity(Page page, @Param("comActActivityVO") ComActActivityVO comActActivityVO);
    @Select("select " +
            "t.activity_name," +
            "t.id," +
            "t.end_at," +
            "t.begin_at," +
            "t.cover," +
            "t.status " +
            "from com_act_act_sign s  " +
            "join sys_user u on s.user_id=u.user_id and u.phone=#{phone} and s.is_volunteer=1 " +
            "join com_act_activity t on s.activity_id=t.id and t.status=5")
    List<ComActActivityVO> listActivityByPhone(String phone);
    @Select("select t.id from (\n" +
            "SELECT \n" +
            "a.id,\n" +
            "a.activity_name,\n" +
            "COUNT(case when s.is_volunteer=1 then s.id else null end )volunteernum,\n" +
            "COUNT(case when s.is_volunteer=0 then s.id else null end)usernum,\n" +
            "a.participant_min,\n" +
            "a.volunteer_min\n" +
            "FROM\n" +
            "com_act_activity a \n" +
            "LEFT JOIN com_act_act_sign s on a.id=s.activity_id \n" +
            "WHERE\n" +
            "a.`status` in(3,4) and TIMESTAMPDIFF(HOUR,SYSDATE(),a.sign_up_end)<=0\n" +
            "GROUP BY a.id)t WHERE t.usernum<participant_min or t.volunteernum<volunteer_min")
    List<Long> selectTimedTaskActActivity();
    @Update("<script> " +
       "update com_act_activity set `status`=6 where id in\n" +
            "<foreach item=\"item\" collection=\"longs\" separator=\",\" open=\"(\" close=\")\" index=\"\">\n"+
            "#{item}\n"+
            "</foreach>\n"+
        "</script>")
    int updateIdBatch(@Param("longs") List<Long> longs);
    @Update("update com_act_activity set `status`=2 where `status`=1 and TIMESTAMPDIFF(HOUR,SYSDATE(),publish_at)<=0")
    int updateStatusToNotBegin();
    @Update("update com_act_activity set `status`=3 where `status`=2 and TIMESTAMPDIFF(HOUR,SYSDATE(),sign_up_begin)<=0")
    int updateStatusToBeginSign();
    @Update("update com_act_activity set `status`=(if(DATEDIFF(SYSDATE(),end_at)>=0,5,4)) where `status`=3 and TIMESTAMPDIFF(HOUR,SYSDATE(),begin_at)<=0")
    int updateStatusToBeginActiveOrEnd();
    @Select("<script> " +
            "select t.* from (\n" +
            "SELECT \n" +
            "a.id,\n" +
            "a.activity_name,\n" +
            "u.`name` sponsorName,\n" +
            "a.activity_addr,\n" +
            "a.participant_max,\n" +
            "count(if(s.is_volunteer=1,null,s.id))participant_now,\n"+
            "a.volunteer_max,\n" +
            "count(if(s.is_volunteer=1,s.id,null))volunteer_now,\n"+
            "a.`status`,\n" +
            "a.publish_at,\n" +
            "a.begin_at,\n" +
            "a.end_at,\n" +
            "a.sign_up_begin,\n" +
            "a.sign_up_end\n" +
            "FROM\n" +
            "\tcom_act_activity a \n" +
            "\tLEFT JOIN sys_user u on a.sponsor_id=u.user_id\n" +
            "\tLEFT JOIN com_act_act_sign s on a.id=s.activity_id\n" +
            "WHERE\n" +
            "\t a.`status` = 1 and a.community_id=#{comActActivityVO.communityId}\n" +
            "<if test='comActActivityVO.activityName != null and comActActivityVO.activityName !=&quot;&quot;'>" +
            "\tand a.activity_name LIKE concat( #{comActActivityVO.activityName}, '%' ) \n" +
            " </if> " +
            "<if test='comActActivityVO.status != null and comActActivityVO.status !=0 and comActActivityVO.status !=1'>" +
            "AND a.`status` = 99 \n" +
            " </if> " +
            "<if test='comActActivityVO.beginAt != null '>" +
            "AND a.begin_at <![CDATA[ >= ]]> #{comActActivityVO.beginAt} AND a.end_at <![CDATA[ <= ]]> #{comActActivityVO.endAt} \n" +
            " </if> " +
            "group by a.id\n" +
            "\t\n" +
            "\tunion all\n" +
            "select t1.* from (\n"+
            "\t\n" +
            "\tSELECT \n" +
            "a.id,\n" +
            "a.activity_name,\n" +
            "u.`name` sponsorName,\n" +
            "a.activity_addr,\n" +
            "a.participant_max,\n" +
            "count(if(s.is_volunteer=1,null,s.id))participant_now,\n"+
            "a.volunteer_max,\n" +
            "count(if(s.is_volunteer=1,s.id,null))volunteer_now,\n"+
            "a.`status`,\n" +
            "a.publish_at,\n" +
            "a.begin_at,\n" +
            "a.end_at,\n" +
            "a.sign_up_begin,\n" +
            "a.sign_up_end\n" +
            "FROM\n" +
            "\tcom_act_activity a \n" +
            "\tLEFT JOIN sys_user u on a.sponsor_id=u.user_id\n" +
            "\tLEFT JOIN com_act_act_sign s on a.id=s.activity_id\n" +
            "WHERE\n" +
            "\t a.`status` != 1 and a.community_id=#{comActActivityVO.communityId}\n" +
            "<if test='comActActivityVO.activityName != null and comActActivityVO.activityName !=&quot;&quot;'>" +
            "\tand a.activity_name LIKE concat( #{comActActivityVO.activityName}, '%' ) \n" +
            " </if> " +
            "<if test='comActActivityVO.status != null and comActActivityVO.status !=0 '>" +
            "AND a.`status` = #{comActActivityVO.status} \n" +
            " </if> " +
            "<if test='comActActivityVO.beginAt != null '>" +
            "AND a.begin_at <![CDATA[ >= ]]> #{comActActivityVO.beginAt} AND a.end_at <![CDATA[ <= ]]> #{comActActivityVO.endAt} \n" +
            " </if> " +
            " group by a.id order by a.publish_at desc)t1 )t"+
            "</script>")
    IPage<ComActActivityVO> pageActivityCommunityBack(Page page, @Param("comActActivityVO") ComActActivityVO comActActivityVO);
    @Update("update com_act_activity set `status`=4 where `status`=3 and TIMESTAMPDIFF(HOUR,SYSDATE(),sign_up_end)<=0")
    int updateStatusToBeginAfterSingEnd();
}