TechnicianMomentMapper.xml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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.ylx.massage.mapper.TechnicianMomentMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.ylx.massage.domain.TechnicianMoment">
  6. <id column="id" property="id"/>
  7. <result column="technician_id" property="technicianId"/>
  8. <result column="title" property="title"/>
  9. <result column="content" property="content"/>
  10. <result column="media_type" property="mediaType"/>
  11. <result column="cover_url" property="coverUrl"/>
  12. <result column="view_count" property="viewCount"/>
  13. <result column="publish_time" property="publishTime"/>
  14. <result column="city_code" property="cityCode"/>
  15. <result column="latitude" property="latitude"/>
  16. <result column="longitude" property="longitude"/>
  17. <result column="create_time" property="createTime"/>
  18. <result column="update_time" property="updateTime"/>
  19. <result column="audit_status" property="auditStatus"/>
  20. <result column="reject_reason" property="rejectReason"/>
  21. <result column="is_recommend" property="isRecommend"/>
  22. <result column="is_list" property="isList"/>
  23. <result column="address" property="address"/>
  24. </resultMap>
  25. <!-- 查询推荐动态:只展示后台标记推荐的公开审核通过动态 -->
  26. <select id="selectRecommendedMoments" resultMap="BaseResultMap">
  27. SELECT
  28. tm.*
  29. FROM
  30. t_technician_moment tm
  31. WHERE
  32. tm.status = 1
  33. AND tm.audit_status = 2
  34. AND tm.visible_range = 1
  35. AND tm.is_recommend = 1
  36. AND tm.is_list = 1
  37. ORDER BY
  38. tm.view_count DESC,
  39. tm.publish_time DESC
  40. </select>
  41. <!-- 查询同城动态:按城市和发布时间倒序展示 -->
  42. <select id="selectSameCityMoments" resultMap="BaseResultMap">
  43. SELECT
  44. tm.*
  45. FROM
  46. t_technician_moment tm
  47. WHERE
  48. tm.status = 1
  49. AND tm.audit_status = 2
  50. AND tm.visible_range = 1
  51. AND tm.is_list = 1
  52. AND tm.city_code = #{cityCode}
  53. ORDER BY
  54. tm.publish_time DESC
  55. </select>
  56. <!-- 查询附近动态:10km内,按日期倒序,同一天按距离排序 -->
  57. <select id="selectNearbyMoments" resultMap="BaseResultMap">
  58. SELECT
  59. tm.*,
  60. ST_Distance_Sphere(
  61. POINT(tm.longitude, tm.latitude),
  62. POINT(#{longitude}, #{latitude})
  63. ) / 1000 AS distance
  64. FROM
  65. t_technician_moment tm
  66. WHERE
  67. tm.status = 1
  68. AND tm.audit_status = 2
  69. AND tm.visible_range = 1
  70. AND tm.is_list = 1
  71. AND tm.latitude IS NOT NULL
  72. AND tm.longitude IS NOT NULL
  73. AND ST_Distance_Sphere(
  74. POINT(tm.longitude, tm.latitude),
  75. POINT(#{longitude}, #{latitude})
  76. ) / 1000 &lt;= 10
  77. ORDER BY
  78. distance ASC,
  79. tm.publish_time DESC
  80. </select>
  81. <!-- 增加浏览量 -->
  82. <update id="incrementViewCount">
  83. UPDATE
  84. t_technician_moment
  85. SET
  86. view_count = view_count + 1
  87. WHERE
  88. id = #{momentId} and is_delete = 0 and audit_status = 2
  89. </update>
  90. <!-- 更新动态推荐状态 -->
  91. <update id="updateRecommendStatus">
  92. UPDATE
  93. t_technician_moment
  94. SET
  95. is_recommend = #{isRecommend},
  96. update_time = NOW()
  97. WHERE
  98. id = #{momentId}
  99. AND is_delete = 0
  100. </update>
  101. <!-- 更新动态上架状态 -->
  102. <update id="updateListStatus">
  103. UPDATE
  104. t_technician_moment
  105. SET
  106. is_list = #{isList},
  107. update_time = NOW()
  108. WHERE
  109. id = #{momentId}
  110. AND is_delete = 0
  111. </update>
  112. <!-- 查询后台动态管理审核状态统计 -->
  113. <select id="selectManageAuditStatusCount" resultType="com.ylx.massage.domain.vo.MomentAuditStatusCountVO">
  114. SELECT
  115. COALESCE(SUM(CASE WHEN audit_status = 1 THEN 1 ELSE 0 END), 0) AS pendingCount,
  116. COALESCE(SUM(CASE WHEN audit_status = 2 THEN 1 ELSE 0 END), 0) AS approvedCount,
  117. COALESCE(SUM(CASE WHEN audit_status = 3 THEN 1 ELSE 0 END), 0) AS rejectedCount
  118. FROM
  119. t_technician_moment
  120. WHERE
  121. is_delete = 0
  122. AND audit_status IN (1, 2, 3)
  123. </select>
  124. <!-- 根据动态ID查询动态简要详情(包含媒体URL列表) -->
  125. <select id="selectMomentSimpleDetail" resultType="java.util.HashMap">
  126. SELECT
  127. a.id,
  128. a.title,
  129. a.content,
  130. a.media_type,
  131. a.audit_status,
  132. a.reject_reason,
  133. GROUP_CONCAT(b.media_url ORDER BY b.sort_order SEPARATOR ',') as media_urls
  134. FROM
  135. t_technician_moment a
  136. LEFT JOIN t_moment_media b ON a.id = b.moment_id AND IFNULL(b.is_delete, 0) = 0
  137. WHERE
  138. a.id = #{momentId}
  139. GROUP BY
  140. a.id, a.title, a.content, a.media_type
  141. </select>
  142. <select id="getMerchantProject" resultType="com.ylx.merchant.domain.vo.MomentVO">
  143. SELECT
  144. id,
  145. title,
  146. content,
  147. media_type AS mediaType,
  148. cover_url AS coverUrl,
  149. view_count AS viewCount,
  150. publish_time AS publishTime
  151. FROM t_technician_moment
  152. WHERE technician_id = #{dto.id}
  153. AND status = 1 -- 仅查询正常状态的动态
  154. AND audit_status = 2 -- 仅查询审核通过的动态
  155. AND visible_range = 1 -- 仅查询可见范围的动态
  156. AND is_list = 1 -- 仅查询已上架的动态
  157. ORDER BY publish_time DESC
  158. </select>
  159. </mapper>