ImLiveBroadcastRoomMemberMapper.xml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomMemberDao">
  4. <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember">
  5. <id column="id_" jdbcType="INTEGER" property="id"/>
  6. <result column="tenant_id_" jdbcType="INTEGER" property="tenantId"/>
  7. <result column="room_uid_" jdbcType="VARCHAR" property="roomUid"/>
  8. <result column="user_id_" jdbcType="INTEGER" property="userId"/>
  9. <result column="join_time_" jdbcType="TIMESTAMP" property="joinTime"/>
  10. <result column="total_time_" jdbcType="INTEGER" property="totalTime"/>
  11. </resultMap>
  12. <sql id="Base_Column_List">
  13. id
  14. , tenant_id_, room_uid_, user_id_, join_time_, total_time_
  15. </sql>
  16. <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
  17. parameterType="com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember">
  18. insert into im_live_broadcast_room_member(tenant_id_, room_uid_, user_id_, join_time_, total_time_,online_status_,live_room_status_) values
  19. <foreach collection="entities" item="entity" separator=",">
  20. (#{entity.tenantId}, #{entity.roomUid}, #{entity.userId}, #{entity.joinTime}, #{entity.totalTime},0,0)
  21. </foreach>
  22. ON DUPLICATE KEY UPDATE join_time_ = VALUES(join_time_), total_time_ = VALUES(total_time_),online_status_ = 0,live_room_status_ = 0
  23. </insert>
  24. <select id="queryMemberPage" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
  25. select
  26. a.room_uid_ as roomUid,
  27. a.user_id_ as studentId,
  28. a.whether_mic_status_ as whetherMicStatus,
  29. a.fingerprint_ as fingerprint,
  30. IFNULL(su.username_, a.visitor_name_) as studentName,
  31. su.avatar_ as avatar,
  32. su.phone_ as phone,
  33. su.organ_id_ AS organId,
  34. a.join_time_ as joinTime,
  35. a.total_time_ as totalViewTime,
  36. if(ib.user_id_ is null, 0, 1) as blackFlag,
  37. a.microphone_flag_ as microphoneFlag
  38. from
  39. im_live_broadcast_room_member as a
  40. left join sys_user as su on su.id_ = a.user_id_
  41. left join im_live_room_black ib on ib.room_uid_ = a.room_uid_ and ib.user_id_ = a.user_id_
  42. where a.room_uid_ = #{param.roomUid}
  43. <if test="param.search != null ">
  44. AND (
  45. a.user_id_ LIKE CONCAT('%', #{param.search},'%')
  46. OR a.visitor_name_ LIKE CONCAT('%', #{param.search},'%')
  47. OR su.username_ LIKE CONCAT('%', #{param.search},'%')
  48. )
  49. </if>
  50. <if test="param.onlineStatus != null">
  51. AND (a.online_status_ = #{param.onlineStatus} and a.live_room_status_ = 1)
  52. </if>
  53. <if test="param.whetherMicStatus != null">
  54. and a.whether_mic_status_ = #{param.whetherMicStatus}
  55. </if>
  56. <if test="param.excludeBlacklist != null and param.excludeBlacklist == 1">
  57. AND ib.user_id_ is null
  58. </if>
  59. <if test="param.visitorQuery != null">
  60. <if test="param.visitorQuery == 1">
  61. AND a.fingerprint_ IS NOT NULL
  62. </if>
  63. <if test="param.visitorQuery == 0">
  64. AND a.fingerprint_ IS NULL
  65. </if>
  66. </if>
  67. group by a.user_id_
  68. ORDER BY a.join_time_
  69. </select>
  70. <update id="updateOnlineStatus">
  71. update im_live_broadcast_room_member
  72. set online_status_ = #{onlineStatus}
  73. where room_uid_ = #{groupId} and user_id_ in <foreach collection="userIds" item="userId" open="(" separator="," close=")">#{userId}</foreach>
  74. </update>
  75. <update id="updateLiveRoomStatus">
  76. update im_live_broadcast_room_member
  77. set live_room_status_ = #{liveRoomStatus}
  78. where room_uid_ = #{groupId} and user_id_ in <foreach collection="userIds" item="userId" open="(" separator="," close=")">#{userId}</foreach>
  79. </update>
  80. <select id="queryMember" resultType="com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember">
  81. select * from im_live_broadcast_room_member
  82. where room_uid_ = #{groupId} and user_id_ in <foreach collection="userIds" item="userId" open="(" separator="," close=")">#{userId}</foreach>
  83. </select>
  84. <update id="userWhetherMic">
  85. update im_live_broadcast_room_member
  86. set whether_mic_status_ = #{whetherMicStatus}
  87. where room_uid_ = #{roomUid} and user_id_ = #{userId}
  88. </update>
  89. <select id="queryMemberNum" resultType="com.ym.mec.biz.dal.dto.RoomMemberNumDto">
  90. select room_uid_ as roomUid,
  91. count(1) as totalNum ,
  92. sum(if(online_status_ = 1 and live_room_status_ = 1,1,0)) as onlineNum
  93. from im_live_broadcast_room_member
  94. where room_uid_ = #{roomUid}
  95. group by room_uid_
  96. </select>
  97. <!--学后报名乐团-->
  98. <select id="selectStudentMusicGroup" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
  99. select
  100. sr.user_id_ as studentId, GROUP_CONCAT(distinct mg.name_) musicGroupName
  101. from
  102. student_registration sr LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
  103. WHERE sr.user_id_ IN (<foreach collection="studentIds" separator="," item="item">#{item}</foreach>)
  104. </select>
  105. <!--学后报名乐团-->
  106. <!--学生声部信息-->
  107. <select id="selectStudentSubject" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo">
  108. SELECT
  109. st.user_id_ as studentId, b.name_ as subName
  110. FROM
  111. student st left join subject as b on st.subject_id_list_ = b.id_
  112. WHERE st.user_id_ IN (<foreach collection="studentIds" separator="," item="item">#{item}</foreach>)
  113. </select>
  114. <!--学生声部信息-->
  115. </mapper>