StoreStaffCommentMapper.xml 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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="shop.alien.mapper.StoreStaffCommentMapper">
  4. <!-- 评论列表查询结果映射 -->
  5. <resultMap id="StoreStaffCommentVoResultMap" type="shop.alien.entity.store.vo.StoreStaffCommentVo">
  6. <id column="id" property="id" />
  7. <result column="review_id" property="reviewId" />
  8. <result column="send_user_id" property="sendUserId" />
  9. <result column="receive_user_id" property="receiveUserId" />
  10. <result column="send_user_name" property="sendUserName" />
  11. <result column="send_user_avatar" property="sendUserAvatar" />
  12. <result column="receive_user_name" property="receiveUserName" />
  13. <result column="receive_user_avatar" property="receiveUserAvatar" />
  14. <result column="send_user_type" property="sendUserType" />
  15. <result column="receive_user_type" property="receiveUserType" />
  16. <result column="comment_content" property="commentContent" />
  17. <result column="like_count" property="likeCount" />
  18. <result column="reply_count" property="replyCount" />
  19. <result column="head_type" property="headType" />
  20. <result column="head_id" property="headId" />
  21. <result column="is_liked" property="isLiked" />
  22. <result column="created_time" property="createdTime" />
  23. </resultMap>
  24. <!-- 根据评价ID查询评论列表(包含用户信息) -->
  25. <select id="getCommentListByReviewId" resultMap="StoreStaffCommentVoResultMap">
  26. SELECT
  27. ssc.id,
  28. ssc.review_id,
  29. ssc.send_user_id,
  30. ssc.receive_user_id,
  31. -- 发送用户名称:根据 sendUserType 分别查询普通用户表和员工表
  32. CASE
  33. WHEN ssc.send_user_type = 2 THEN sp_send.personnel_name
  34. WHEN ssc.send_user_type = 1 OR ssc.send_user_type IS NULL THEN lu_send.user_name
  35. ELSE lu_send.user_name
  36. END AS send_user_name,
  37. -- 发送用户头像:根据 sendUserType 分别查询普通用户表和员工表
  38. CASE
  39. WHEN ssc.send_user_type = 2 THEN si_send.img_url
  40. WHEN ssc.send_user_type = 1 OR ssc.send_user_type IS NULL THEN lu_send.user_image
  41. ELSE lu_send.user_image
  42. END AS send_user_avatar,
  43. -- 接收用户名称:根据 receiveUserType 分别查询普通用户表和员工表
  44. CASE
  45. WHEN ssc.receive_user_type = 2 THEN sp_receive.personnel_name
  46. WHEN ssc.receive_user_type = 1 OR ssc.receive_user_type IS NULL THEN lu_receive.user_name
  47. ELSE NULL
  48. END AS receive_user_name,
  49. -- 接收用户头像:根据 receiveUserType 分别查询普通用户表和员工表
  50. CASE
  51. WHEN ssc.receive_user_type = 2 THEN si_receive.img_url
  52. WHEN ssc.receive_user_type = 1 OR ssc.receive_user_type IS NULL THEN lu_receive.user_image
  53. ELSE NULL
  54. END AS receive_user_avatar,
  55. ssc.send_user_type,
  56. ssc.receive_user_type,
  57. ssc.comment_content,
  58. ssc.like_count,
  59. ssc.reply_count,
  60. ssc.head_type,
  61. ssc.head_id,
  62. CASE
  63. WHEN #{currentUserId} IS NOT NULL AND llr.id IS NOT NULL THEN 1
  64. ELSE 0
  65. END AS is_liked,
  66. ssc.created_time
  67. FROM store_staff_comment ssc
  68. -- 发送用户:普通用户表
  69. LEFT JOIN life_user lu_send ON lu_send.id = ssc.send_user_id
  70. AND lu_send.delete_flag = 0
  71. -- 发送用户:员工表
  72. LEFT JOIN store_personnel sp_send ON sp_send.id = ssc.send_user_id
  73. AND sp_send.delete_flag = 0
  74. LEFT JOIN store_img si_send ON si_send.id = sp_send.img_id
  75. AND si_send.delete_flag = 0
  76. -- 接收用户:普通用户表
  77. LEFT JOIN life_user lu_receive ON lu_receive.id = ssc.receive_user_id
  78. AND lu_receive.delete_flag = 0
  79. -- 接收用户:员工表
  80. LEFT JOIN store_personnel sp_receive ON sp_receive.id = ssc.receive_user_id
  81. AND sp_receive.delete_flag = 0
  82. LEFT JOIN store_img si_receive ON si_receive.id = sp_receive.img_id
  83. AND si_receive.delete_flag = 0
  84. LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssc.id, CHAR)
  85. AND llr.type = '10'
  86. AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
  87. AND llr.delete_flag = 0
  88. WHERE ssc.delete_flag = 0
  89. AND ssc.review_id = #{reviewId}
  90. AND ssc.head_type = 0
  91. ORDER BY ssc.created_time DESC
  92. </select>
  93. <!-- 根据首评ID查询回复列表(包含用户信息) -->
  94. <select id="getReplyListByHeadId" resultMap="StoreStaffCommentVoResultMap">
  95. SELECT
  96. ssc.id,
  97. ssc.review_id,
  98. ssc.send_user_id,
  99. ssc.receive_user_id,
  100. -- 发送用户名称:根据 sendUserType 分别查询普通用户表和员工表
  101. CASE
  102. WHEN ssc.send_user_type = 2 THEN sp_send.personnel_name
  103. WHEN ssc.send_user_type = 1 OR ssc.send_user_type IS NULL THEN lu_send.user_name
  104. ELSE lu_send.user_name
  105. END AS send_user_name,
  106. -- 发送用户头像:根据 sendUserType 分别查询普通用户表和员工表
  107. CASE
  108. WHEN ssc.send_user_type = 2 THEN si_send.img_url
  109. WHEN ssc.send_user_type = 1 OR ssc.send_user_type IS NULL THEN lu_send.user_image
  110. ELSE lu_send.user_image
  111. END AS send_user_avatar,
  112. -- 接收用户名称:根据 receiveUserType 分别查询普通用户表和员工表
  113. CASE
  114. WHEN ssc.receive_user_type = 2 THEN sp_receive.personnel_name
  115. WHEN ssc.receive_user_type = 1 OR ssc.receive_user_type IS NULL THEN lu_receive.user_name
  116. ELSE NULL
  117. END AS receive_user_name,
  118. -- 接收用户头像:根据 receiveUserType 分别查询普通用户表和员工表
  119. CASE
  120. WHEN ssc.receive_user_type = 2 THEN si_receive.img_url
  121. WHEN ssc.receive_user_type = 1 OR ssc.receive_user_type IS NULL THEN lu_receive.user_image
  122. ELSE NULL
  123. END AS receive_user_avatar,
  124. ssc.send_user_type,
  125. ssc.receive_user_type,
  126. ssc.comment_content,
  127. ssc.like_count,
  128. ssc.reply_count,
  129. ssc.head_type,
  130. ssc.head_id,
  131. CASE
  132. WHEN #{currentUserId} IS NOT NULL AND llr.id IS NOT NULL THEN 1
  133. ELSE 0
  134. END AS is_liked,
  135. ssc.created_time
  136. FROM store_staff_comment ssc
  137. -- 发送用户:普通用户表
  138. LEFT JOIN life_user lu_send ON lu_send.id = ssc.send_user_id
  139. AND lu_send.delete_flag = 0
  140. -- 发送用户:员工表
  141. LEFT JOIN store_personnel sp_send ON sp_send.id = ssc.send_user_id
  142. AND sp_send.delete_flag = 0
  143. LEFT JOIN store_img si_send ON si_send.id = sp_send.img_id
  144. AND si_send.delete_flag = 0
  145. -- 接收用户:普通用户表
  146. LEFT JOIN life_user lu_receive ON lu_receive.id = ssc.receive_user_id
  147. AND lu_receive.delete_flag = 0
  148. -- 接收用户:员工表
  149. LEFT JOIN store_personnel sp_receive ON sp_receive.id = ssc.receive_user_id
  150. AND sp_receive.delete_flag = 0
  151. LEFT JOIN store_img si_receive ON si_receive.id = sp_receive.img_id
  152. AND si_receive.delete_flag = 0
  153. LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssc.id, CHAR)
  154. AND llr.type = '10'
  155. AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
  156. AND llr.delete_flag = 0
  157. WHERE ssc.delete_flag = 0
  158. AND ssc.head_id = #{headId}
  159. AND ssc.head_type = 1
  160. ORDER BY ssc.created_time ASC
  161. </select>
  162. <!-- 根据评价ID查询评论数量(只统计首评论) -->
  163. <select id="getCommentCountByReviewId" resultType="java.lang.Integer">
  164. SELECT COUNT(*)
  165. FROM store_staff_comment
  166. WHERE delete_flag = 0
  167. AND review_id = #{reviewId}
  168. AND head_type = 0
  169. </select>
  170. <!-- 根据评价ID查询总评论数量(包括首评论和子评论) -->
  171. <select id="getTotalCommentCountByReviewId" resultType="java.lang.Integer">
  172. SELECT COUNT(*)
  173. FROM store_staff_comment
  174. WHERE delete_flag = 0
  175. AND review_id = #{reviewId}
  176. </select>
  177. </mapper>