648540858
2023-09-11 88350873ee7632924cb135a450fef9f4d05c5306
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
186
187
188
189
190
191
192
193
194
195
196
197
package com.genersoft.iot.vmp.storager.dao;
 
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
 
import java.util.List;
 
@Mapper
@Repository
public interface StreamPushMapper {
 
    @Insert("INSERT INTO wvp_stream_push (app, stream, total_reader_count, origin_type, origin_type_str, " +
            "push_time, alive_second, media_server_id, update_time, create_time, push_ing, self) VALUES" +
            "(#{app}, #{stream}, #{totalReaderCount}, #{originType}, #{originTypeStr}, " +
            "#{pushTime}, #{aliveSecond}, #{mediaServerId} , #{updateTime} , #{createTime}, " +
            "#{pushIng}, #{self} )")
    int add(StreamPushItem streamPushItem);
 
 
    @Update(value = {" <script>" +
            "UPDATE wvp_stream_push " +
            "SET update_time=#{updateTime}" +
            "<if test=\"mediaServerId != null\">, media_server_id=#{mediaServerId}</if>" +
            "<if test=\"totalReaderCount != null\">, total_reader_count=#{totalReaderCount}</if>" +
            "<if test=\"originType != null\">, origin_type=#{originType}</if>" +
            "<if test=\"originTypeStr != null\">, origin_type_str=#{originTypeStr}</if>" +
            "<if test=\"pushTime != null\">, push_time=#{pushTime}</if>" +
            "<if test=\"aliveSecond != null\">, alive_second=#{aliveSecond}</if>" +
            "<if test=\"pushIng != null\">, push_ing=#{pushIng}</if>" +
            "<if test=\"self != null\">, self=#{self}</if>" +
            "WHERE app=#{app} AND stream=#{stream}"+
            " </script>"})
    int update(StreamPushItem streamPushItem);
 
    @Delete("DELETE FROM wvp_stream_push WHERE app=#{app} AND stream=#{stream}")
    int del(String app, String stream);
 
    @Delete("<script> "+
            "DELETE sp FROM wvp_stream_push sp left join wvp_gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream where " +
            "<foreach collection='streamPushItems' item='item' separator='or'>" +
            "(sp.app=#{item.app} and sp.stream=#{item.stream} and gs.gb_id is null) " +
            "</foreach>" +
            "</script>")
    int delAllWithoutGBId(List<StreamPushItem> streamPushItems);
 
    @Delete("<script> "+
            "DELETE FROM wvp_stream_push where " +
            "<foreach collection='streamPushItems' item='item' separator='or'>" +
            "(app=#{item.app} and stream=#{item.stream}) " +
            "</foreach>" +
            "</script>")
    int delAll(List<StreamPushItem> streamPushItems);
 
    @Delete("<script> "+
            "DELETE FROM wvp_stream_push where " +
            "<foreach collection='gbStreams' item='item' separator='or'>" +
            "(app=#{item.app} and stream=#{item.stream}) " +
            "</foreach>" +
            "</script>")
    int delAllForGbStream(List<GbStream> gbStreams);
 
 
    @Select(value = {" <script>" +
            "SELECT " +
            "st.*, " +
            "gs.gb_id, gs.name, gs.longitude, gs.latitude, gs.gb_stream_id " +
            "from " +
            "wvp_stream_push st " +
            "LEFT join wvp_gb_stream gs " +
            "on st.app = gs.app AND st.stream = gs.stream " +
            "WHERE " +
            "1=1 " +
            " <if test='query != null'> AND (st.app LIKE concat('%',#{query},'%') OR st.stream LIKE concat('%',#{query},'%') OR gs.gb_id LIKE concat('%',#{query},'%') OR gs.name LIKE concat('%',#{query},'%'))</if> " +
            " <if test='pushing == true' > AND (gs.gb_id is null OR st.push_ing=1)</if>" +
            " <if test='pushing == false' > AND (st.push_ing is null OR st.push_ing=0) </if>" +
            " <if test='mediaServerId != null' > AND st.media_server_id=#{mediaServerId} </if>" +
            "order by st.create_time desc" +
            " </script>"})
    List<StreamPushItem> selectAllForList(String query, Boolean pushing, String mediaServerId);
 
    @Select("SELECT st.*, gs.gb_id, gs.name, gs.longitude, gs.latitude FROM wvp_stream_push st LEFT join wvp_gb_stream gs on st.app = gs.app AND st.stream = gs.stream order by st.create_time desc")
    List<StreamPushItem> selectAll();
 
    @Select("SELECT st.*, gs.gb_id, gs.name, gs.longitude, gs.latitude FROM wvp_stream_push st LEFT join wvp_gb_stream gs on st.app = gs.app AND st.stream = gs.stream WHERE st.app=#{app} AND st.stream=#{stream}")
    StreamPushItem selectOne(String app, String stream);
 
    @Insert("<script>"  +
            "Insert INTO wvp_stream_push (app, stream, total_reader_count, origin_type, origin_type_str, " +
            "create_time, alive_second, media_server_id, status, push_ing) " +
            "VALUES <foreach collection='streamPushItems' item='item' index='index' separator=','>" +
            "( #{item.app}, #{item.stream}, #{item.totalReaderCount}, #{item.originType}, " +
            "#{item.originTypeStr},#{item.createTime}, #{item.aliveSecond}, #{item.mediaServerId}, #{item.status} ," +
            " #{item.pushIng} )" +
            " </foreach>" +
            "</script>")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int addAll(List<StreamPushItem> streamPushItems);
 
    @Delete("DELETE FROM wvp_stream_push")
    void clear();
 
    @Delete("delete" +
            " from wvp_stream_push " +
            " where id in " +
            "   (select temp.id from " +
            "       (select wgs.gb_stream_id as id " +
            "          from wvp_gb_stream wgs" +
            "               left join wvp_stream_push sp on sp.id = wgs.gb_stream_id" +
            "           where wgs.gb_id is null and wgs.media_server_id = #{mediaServerId}) temp)"
            )
    void deleteWithoutGBId(String mediaServerId);
 
    @Select("SELECT * FROM wvp_stream_push WHERE media_server_id=#{mediaServerId}")
    List<StreamPushItem> selectAllByMediaServerId(String mediaServerId);
 
    @Select("SELECT sp.* FROM wvp_stream_push sp left join wvp_gb_stream gs on gs.app = sp.app and gs.stream= sp.stream WHERE sp.media_server_id=#{mediaServerId} and gs.gb_id is null")
    List<StreamPushItem> selectAllByMediaServerIdWithOutGbID(String mediaServerId);
 
    @Update("UPDATE wvp_stream_push " +
            "SET status=#{status} " +
            "WHERE app=#{app} AND stream=#{stream}")
    int updateStatus(String app, String stream, boolean status);
 
    @Update("UPDATE wvp_stream_push " +
            "SET push_ing=#{pushIng} " +
            "WHERE app=#{app} AND stream=#{stream}")
    int updatePushStatus(String app, String stream, boolean pushIng);
 
    @Update("UPDATE wvp_stream_push " +
            "SET status=#{status} " +
            "WHERE media_server_id=#{mediaServerId}")
    void updateStatusByMediaServerId(String mediaServerId, boolean status);
 
 
    @Select("<script> "+
            "SELECT gs.* FROM wvp_stream_push sp left join wvp_gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream " +
            "where sp.status = true and (gs.app, gs.stream) in (" +
            "<foreach collection='offlineStreams' item='item' separator=','>" +
            "(#{item.app}, #{item.stream}) " +
            "</foreach>" +
            ")</script>")
    List<GbStream> getOnlinePusherForGbInList(List<StreamPushItemFromRedis> offlineStreams);
 
    @Update("<script> "+
            "UPDATE wvp_stream_push SET status=0  where (app, stream) in (" +
            "<foreach collection='offlineStreams' item='item' separator=','>" +
            "(#{item.app}, #{item.stream}) " +
            "</foreach>" +
            ")</script>")
    void offline(List<StreamPushItemFromRedis> offlineStreams);
 
    @Select("<script> "+
            "SELECT * FROM wvp_stream_push sp left join wvp_gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream " +
            "where sp.status = 0 and (gs.app, gs.stream) in (" +
            "<foreach collection='onlineStreams' item='item' separator=','>" +
            "(#{item.app}, #{item.stream}) " +
            "</foreach>" +
            ") </script>")
    List<GbStream> getOfflinePusherForGbInList(List<StreamPushItemFromRedis> onlineStreams);
 
    @Update("<script> "+
            "UPDATE wvp_stream_push SET status=1  where (app, stream) in (" +
            "<foreach collection='onlineStreams' item='item' separator=','>" +
            "(#{item.app}, #{item.stream}) " +
            "</foreach>" +
            ")</script>")
    void online(List<StreamPushItemFromRedis> onlineStreams);
 
    @Select("SELECT gs.* FROM wvp_stream_push sp left join wvp_gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream where sp.status = true")
    List<GbStream> getOnlinePusherForGb();
 
    @Update("UPDATE wvp_stream_push SET status=0")
    void setAllStreamOffline();
 
    @Select("SELECT CONCAT(app,stream) from wvp_gb_stream")
    List<String> getAllAppAndStream();
 
    @Select("select count(1) from wvp_stream_push ")
    int getAllCount();
 
    @Select(value = {" <script>" +
            " <if test='pushIngAsOnline == true'> select count(1) from wvp_stream_push where push_ing = true </if>" +
            " <if test='pushIngAsOnline == false'> select count(1)from wvp_stream_push where status = true  </if>" +
            " </script>"})
    int getAllOnline(Boolean usePushingAsStatus);
 
    @Select("<script> " +
            "select app, stream from wvp_stream_push where (app, stream) in " +
            "<foreach collection='streamPushItems' item='item' separator=','>" +
            "(#{item.app}, #{item.stream}) " +
            "</foreach>" +
            "</script>")
    List<StreamPushItem> getListIn(List<StreamPushItem> streamPushItems);
}