LiveWatchUserMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.fs.live.mapper.LiveWatchUserMapper">
  6. <resultMap type="LiveWatchUser" id="LiveWatchUserResult">
  7. <result property="id" column="id" />
  8. <result property="liveId" column="live_id" />
  9. <result property="userId" column="user_id" />
  10. <result property="msgStatus" column="msg_status" />
  11. <result property="online" column="online" />
  12. <result property="createTime" column="create_time" />
  13. <result property="createBy" column="create_by" />
  14. <result property="updateBy" column="update_by" />
  15. <result property="updateTime" column="update_time" />
  16. <result property="remark" column="remark" />
  17. <result property="onlineSeconds" column="online_seconds" />
  18. <result property="globalVisible" column="global_visible" />
  19. <result property="singleVisible" column="single_visible" />
  20. <result property="liveFlag" column="live_flag" />
  21. <result property="replayFlag" column="replay_flag" />
  22. <result property="location" column="location" />
  23. </resultMap>
  24. <sql id="selectLiveWatchUserVo">
  25. select id, live_id,user_id, msg_status, online, create_time, create_by, update_by, update_time, remark,online_seconds,global_visible,single_visible,live_flag,replay_flag,location from live_watch_user
  26. </sql>
  27. <select id="selectLiveWatchUserList" parameterType="LiveWatchUser" resultMap="LiveWatchUserResult">
  28. <include refid="selectLiveWatchUserVo"/>
  29. <where>
  30. <if test="liveId != null "> and live_id = #{liveId}</if>
  31. <if test="userId != null "> and user_id = #{userId}</if>
  32. <if test="liveFlag != null "> and live_flag = #{liveFlag}</if>
  33. <if test="replayFlag != null "> and replay_flag = #{replayFlag}</if>
  34. <if test="msgStatus != null "> and msg_status = #{msgStatus}</if>
  35. <if test="online != null "> and online = #{online}</if>
  36. <if test="onlineSeconds != null "> and online_seconds = #{onlineSeconds}</if>
  37. </where>
  38. </select>
  39. <select id="selectLiveWatchUserById" parameterType="Long" resultMap="LiveWatchUserResult">
  40. <include refid="selectLiveWatchUserVo"/>
  41. where id = #{id}
  42. </select>
  43. <select id="selectWatchUserListByLiveId" resultType="com.fs.live.vo.LiveWatchUserVO">
  44. select
  45. lwu.live_id liveId,
  46. lwu.user_id userId,
  47. lwu.msg_status msgStatus,
  48. lwu.online online,
  49. fu.nick_name nickName,
  50. fu.avatar avatar,
  51. lwu.global_visible globalVisible,
  52. lwu.single_visible singleVisible
  53. from live_watch_user lwu
  54. left join fs_user fu on lwu.user_id = fu.user_id
  55. where lwu.live_id = #{params.liveId} and fu.status = 1
  56. <if test="params.liveFlag != null "> and lwu.live_flag = #{params.liveFlag}</if>
  57. <if test="params.replayFlag != null "> and lwu.replay_flag = #{params.replayFlag}</if>
  58. <if test="params.msgStatus != null "> and msg_status = #{params.msgStatus}</if>
  59. <if test="params.online != null "> and online = #{params.online}</if>
  60. <if test="params.userName != null and params.userName != ''"> and fu.nick_name like concat('%',#{params.userName},'%')</if>
  61. order by lwu.create_time desc
  62. </select>
  63. <select id="selectWatchUserListAllByLiveId" resultType="com.fs.live.vo.LiveWatchUserVO">
  64. select
  65. lwu.live_id liveId,
  66. lwu.user_id userId,
  67. lwu.msg_status msgStatus,
  68. lwu.online online,
  69. fu.nick_name nickName,
  70. fu.avatar avatar,
  71. lwu.global_visible globalVisible,
  72. lwu.single_visible singleVisible
  73. from live_watch_user lwu
  74. left join fs_user fu on lwu.user_id = fu.user_id
  75. where lwu.live_id = #{params.liveId} and fu.status = 1
  76. <if test="params.liveFlag != null "> and lwu.live_flag = #{params.liveFlag}</if>
  77. <if test="params.replayFlag != null "> and lwu.replay_flag = #{params.replayFlag}</if>
  78. <if test="params.userName != null and params.userName != ''"> and fu.nick_name like concat('%',#{params.userName},'%')</if>
  79. order by lwu.create_time desc
  80. </select>
  81. <select id="selectLiveWatchUserByIdAndCompanyIdAndCompanyUserId" resultMap="LiveWatchUserResult">
  82. <include refid="selectLiveWatchUserVo"/>
  83. where id = #{id} and company_id = #{companyId} and company_user_id = #{companyUserId}
  84. </select>
  85. <select id="selectWatchUserByLiveIdAndUserId" resultType="com.fs.live.vo.LiveWatchUserVO">
  86. select
  87. lwu.live_id liveId,
  88. lwu.user_id userId,
  89. lwu.msg_status msgStatus,
  90. lwu.online online,
  91. fu.nickname nickName,
  92. fu.avatar avatar,
  93. lwu.global_visible globalVisible,
  94. lwu.single_visible singleVisible
  95. from live_watch_user lwu
  96. left join fs_user fu on lwu.user_id = fu.user_id
  97. where lwu.live_id = #{params.liveId} and lwu.user_id = #{params.userId}
  98. <if test="params.liveFlag != null "> and lwu.live_flag = #{params.liveFlag}</if>
  99. <if test="params.replayFlag != null "> and lwu.replay_flag = #{params.replayFlag}</if>
  100. </select>
  101. <select id="selectOnlineUserList" parameterType="LiveWatchUser" resultType="com.fs.live.vo.LiveWatchUserVO">
  102. select lwu.*,
  103. fu.nickname nickName,
  104. fu.avatar avatar
  105. from live_watch_user lwu
  106. left join fs_user fu on lwu.user_id = fu.user_id
  107. <where>
  108. <if test="liveId != null "> and live_id = #{liveId}</if>
  109. <if test="liveFlag != null "> and live_flag = #{liveFlag}</if>
  110. <if test="replayFlag != null "> and replay_flag = #{replayFlag}</if>
  111. <if test="online != null "> and online = #{online}</if>
  112. </where>
  113. </select>
  114. <insert id="insertLiveWatchUser" parameterType="LiveWatchUser" useGeneratedKeys="true" keyProperty="id">
  115. insert into live_watch_user
  116. <trim prefix="(" suffix=")" suffixOverrides=",">
  117. <if test="liveId != null">live_id,</if>
  118. <if test="userId != null">user_id,</if>
  119. <if test="msgStatus != null">msg_status,</if>
  120. <if test="online != null">online,</if>
  121. <if test="createTime != null">create_time,</if>
  122. <if test="createBy != null">create_by,</if>
  123. <if test="updateBy != null">update_by,</if>
  124. <if test="updateTime != null">update_time,</if>
  125. <if test="remark != null">remark,</if>
  126. <if test="onlineSeconds != null">online_seconds,</if>
  127. <if test="globalVisible != null">global_visible,</if>
  128. <if test="singleVisible != null">single_visible,</if>
  129. <if test="liveFlag != null">live_flag,</if>
  130. <if test="replayFlag != null">replay_flag,</if>
  131. <if test="location != null">location,</if>
  132. </trim>
  133. <trim prefix="values (" suffix=")" suffixOverrides=",">
  134. <if test="liveId != null">#{liveId},</if>
  135. <if test="userId != null">#{userId},</if>
  136. <if test="msgStatus != null">#{msgStatus},</if>
  137. <if test="online != null">#{online},</if>
  138. <if test="createTime != null">#{createTime},</if>
  139. <if test="createBy != null">#{createBy},</if>
  140. <if test="updateBy != null">#{updateBy},</if>
  141. <if test="updateTime != null">#{updateTime},</if>
  142. <if test="remark != null">#{remark},</if>
  143. <if test="onlineSeconds != null">#{onlineSeconds},</if>
  144. <if test="globalVisible != null">#{globalVisible},</if>
  145. <if test="singleVisible != null">#{singleVisible},</if>
  146. <if test="liveFlag != null">#{liveFlag},</if>
  147. <if test="replayFlag != null">#{replayFlag},</if>
  148. <if test="location != null">#{location},</if>
  149. </trim>
  150. </insert>
  151. <update id="updateLiveWatchUser" parameterType="LiveWatchUser">
  152. update live_watch_user
  153. <trim prefix="SET" suffixOverrides=",">
  154. <if test="liveId != null">live_id = #{liveId},</if>
  155. <if test="userId != null">user_id = #{userId},</if>
  156. <if test="msgStatus != null">msg_status = #{msgStatus},</if>
  157. <if test="online != null">online = #{online},</if>
  158. <if test="createTime != null">create_time = #{createTime},</if>
  159. <if test="createBy != null">create_by = #{createBy},</if>
  160. <if test="updateBy != null">update_by = #{updateBy},</if>
  161. <if test="updateTime != null">update_time = #{updateTime},</if>
  162. <if test="remark != null">remark = #{remark},</if>
  163. <if test="onlineSeconds != null">online_seconds = #{onlineSeconds},</if>
  164. <if test="globalVisible != null">global_visible = #{globalVisible},</if>
  165. <if test="singleVisible != null">single_visible = #{singleVisible},</if>
  166. <if test="liveFlag != null">live_flag = #{liveFlag},</if>
  167. <if test="replayFlag != null">replay_flag = #{replayFlag},</if>
  168. <if test="location != null">location = #{location},</if>
  169. </trim>
  170. where id = #{id}
  171. </update>
  172. <delete id="deleteLiveWatchUserById" parameterType="Long">
  173. delete from live_watch_user where id = #{id}
  174. </delete>
  175. <delete id="deleteLiveWatchUserByIds" parameterType="String">
  176. delete from live_watch_user where id in
  177. <foreach item="id" collection="array" open="(" separator="," close=")">
  178. #{id}
  179. </foreach>
  180. </delete>
  181. <select id="checkOnlineNoRewardUser" resultType="com.fs.live.domain.LiveWatchUser">
  182. SELECT lwu.*
  183. FROM live_watch_user lwu
  184. WHERE lwu.live_id = #{params.liveId}
  185. AND lwu.online = 0
  186. <if test="params.liveFlag != null "> and lwu.live_flag = #{params.liveFlag}</if>
  187. <if test="params.replayFlag != null "> and lwu.replay_flag = #{params.replayFlag}</if>
  188. AND NOT EXISTS (
  189. SELECT 1
  190. FROM live_reward_record lrr
  191. WHERE lrr.user_id = lwu.user_id
  192. AND lrr.live_id = lwu.live_id
  193. and lrr.source_type = 3
  194. AND DATE(lrr.create_time) = DATE(#{params.now})
  195. )
  196. </select>
  197. <select id="selectLiveWatchAndRegisterUser" resultType="com.fs.live.domain.LiveWatchUser">
  198. select a.*,fu.nickname as nick_name from (
  199. select lws.* from live_watch_user lws
  200. where live_id=#{params.liveId} and online = 0
  201. <if test="params.liveFlag != null "> and live_flag = #{params.liveFlag}</if>
  202. <if test="params.replayFlag != null "> and replay_flag = #{params.replayFlag}</if>
  203. and user_id in (
  204. select user_id from live_lottery_registration
  205. where live_id = #{params.liveId} and lottery_id=#{params.lotteryId}
  206. and registration_id >= (SELECT FLOOR(RAND() * (SELECT MAX(registration_id) FROM live_lottery_registration)))
  207. )
  208. ) a left join fs_user fu on fu.user_id = a.user_id
  209. </select>
  210. <select id="selectUserByLiveIdAndUserId" resultType="com.fs.live.domain.LiveWatchUser">
  211. select * from live_watch_user
  212. where live_id = #{params.liveId} and user_id = #{params.userId}
  213. <if test="params.liveFlag != null "> and live_flag = #{params.liveFlag}</if>
  214. <if test="params.replayFlag != null "> and replay_flag = #{params.replayFlag}</if>
  215. </select>
  216. <!-- 根据唯一索引查询:live_id, user_id, live_flag, replay_flag -->
  217. <select id="selectByUniqueIndex" resultMap="LiveWatchUserResult">
  218. <include refid="selectLiveWatchUserVo"/>
  219. WHERE live_id = #{liveId}
  220. AND user_id = #{userId}
  221. AND live_flag = #{liveFlag}
  222. AND replay_flag = #{replayFlag}
  223. LIMIT 1
  224. </select>
  225. <!-- 根据唯一索引插入或更新(ON DUPLICATE KEY UPDATE) -->
  226. <insert id="insertOrUpdateByUniqueIndex" parameterType="LiveWatchUser">
  227. INSERT INTO live_watch_user (
  228. live_id, user_id, live_flag, replay_flag,
  229. msg_status, online, location,
  230. create_time, update_time
  231. ) VALUES (
  232. #{liveId}, #{userId}, #{liveFlag}, #{replayFlag},
  233. #{msgStatus}, #{online}, #{location},
  234. #{createTime}, #{updateTime}
  235. )
  236. ON DUPLICATE KEY UPDATE
  237. msg_status = VALUES(msg_status),
  238. online = VALUES(online),
  239. location = VALUES(location),
  240. update_time = VALUES(update_time)
  241. </insert>
  242. <!-- 批量更新直播间观看用户 -->
  243. <update id="batchUpdateLiveWatchUser" parameterType="java.util.List">
  244. UPDATE live_watch_user
  245. <set>
  246. <if test="list != null and list.size() > 0 and list[0].onlineSeconds != null">
  247. online_seconds = CASE id
  248. <foreach collection="list" item="item">
  249. WHEN #{item.id} THEN #{item.onlineSeconds}
  250. </foreach>
  251. ELSE online_seconds
  252. END,
  253. </if>
  254. <if test="list != null and list.size() > 0 and list[0].updateTime != null">
  255. update_time = CASE id
  256. <foreach collection="list" item="item">
  257. WHEN #{item.id} THEN #{item.updateTime}
  258. </foreach>
  259. ELSE update_time
  260. END,
  261. </if>
  262. <if test="list != null and list.size() > 0 and list[0].msgStatus != null">
  263. msg_status = CASE id
  264. <foreach collection="list" item="item">
  265. WHEN #{item.id} THEN #{item.msgStatus}
  266. </foreach>
  267. ELSE msg_status
  268. END,
  269. </if>
  270. <if test="list != null and list.size() > 0 and list[0].online != null">
  271. online = CASE id
  272. <foreach collection="list" item="item">
  273. WHEN #{item.id} THEN #{item.online}
  274. </foreach>
  275. ELSE online
  276. END,
  277. </if>
  278. <if test="list != null and list.size() > 0 and list[0].liveFlag != null">
  279. live_flag = CASE id
  280. <foreach collection="list" item="item">
  281. WHEN #{item.id} THEN #{item.liveFlag}
  282. </foreach>
  283. ELSE live_flag
  284. END,
  285. </if>
  286. <if test="list != null and list.size() > 0 and list[0].replayFlag != null">
  287. replay_flag = CASE id
  288. <foreach collection="list" item="item">
  289. WHEN #{item.id} THEN #{item.replayFlag}
  290. </foreach>
  291. ELSE replay_flag
  292. END,
  293. </if>
  294. <if test="list != null and list.size() > 0 and list[0].location != null">
  295. location = CASE id
  296. <foreach collection="list" item="item">
  297. WHEN #{item.id} THEN #{item.location}
  298. </foreach>
  299. ELSE location
  300. END
  301. </if>
  302. </set>
  303. WHERE id IN
  304. <foreach collection="list" item="item" open="(" separator="," close=")">
  305. #{item.id}
  306. </foreach>
  307. </update>
  308. <!-- 批量插入直播间观看用户 -->
  309. <insert id="batchInsertLiveWatchUser" parameterType="java.util.List">
  310. INSERT INTO live_watch_user (
  311. live_id, user_id, msg_status, online, online_seconds,
  312. global_visible, single_visible, live_flag, replay_flag, location,
  313. create_time, update_time
  314. ) VALUES
  315. <foreach collection="list" item="item" separator=",">
  316. (
  317. #{item.liveId}, #{item.userId}, #{item.msgStatus}, #{item.online}, #{item.onlineSeconds},
  318. #{item.globalVisible}, #{item.singleVisible}, #{item.liveFlag}, #{item.replayFlag}, #{item.location},
  319. #{item.createTime}, #{item.updateTime}
  320. )
  321. </foreach>
  322. </insert>
  323. </mapper>