ProdCommMapper.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  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.yami.shop.dao.ProdCommMapper">
  4. <resultMap id="BaseResultMap" type="com.yami.shop.bean.model.ProdComm">
  5. <id column="prod_comm_id" jdbcType="BIGINT" property="prodCommId"/>
  6. <result property="prodId" column="prod_id"/>
  7. <result property="orderNumber" column="order_number"/>
  8. <result property="userId" column="user_id"/>
  9. <result property="content" column="content"/>
  10. <result property="replyContent" column="reply_content"/>
  11. <result property="recTime" column="rec_time"/>
  12. <result property="replyTime" column="reply_time"/>
  13. <result property="replySts" column="reply_sts"/>
  14. <result property="postip" column="postip"/>
  15. <result property="score" column="score"/>
  16. <result property="usefulCounts" column="useful_counts"/>
  17. <result property="pics" column="pics"/>
  18. <result property="isAnonymous" column="is_anonymous"/>
  19. <result property="status" column="status"/>
  20. <result property="evaluate" column="evaluate"/>
  21. <result property="nickName" column="nick_name"/>
  22. <result property="avatar" column="avatar"/>
  23. </resultMap>
  24. <select id="getProdCommDataByProdId" resultType="com.yami.shop.bean.app.dto.ProdCommDataDto">
  25. SELECT count(1) AS number,
  26. count(CASE WHEN evaluate = 0 THEN 1 ELSE null END) AS praise_number,
  27. count(CASE WHEN evaluate = 1 THEN 1 ELSE null END) AS secondary_number,
  28. count(CASE WHEN evaluate = 2 THEN 1 ELSE null END) AS negative_number,
  29. count(CASE WHEN score = 1 THEN 1 ELSE null END) AS scoreNumber1,
  30. count(CASE WHEN score = 2 THEN 1 ELSE null END) AS scoreNumber2,
  31. count(CASE WHEN score = 3 THEN 1 ELSE null END) AS scoreNumber3,
  32. count(CASE WHEN score = 4 THEN 1 ELSE null END) AS scoreNumber4,
  33. count(CASE WHEN score = 5 THEN 1 ELSE null END) AS scoreNumber5,
  34. count(CASE WHEN pics is not null THEN 1 ELSE null END) AS pic_number
  35. FROM tz_prod_comm
  36. WHERE prod_id = #{prodId}
  37. and (status = 1)
  38. </select>
  39. <sql id="ProdCommDto_SQL">
  40. pc
  41. .
  42. prod_comm_id
  43. ,
  44. pc.reply_content,
  45. pc.rec_time,
  46. pc.score,
  47. pc.is_anonymous,
  48. pc.pics,
  49. pc.user_id,
  50. pc.reply_sts,
  51. pc.evaluate,
  52. pc.content,
  53. u.nick_name,
  54. u.pic
  55. </sql>
  56. <resultMap id="ProdCommDto" type="com.yami.shop.bean.app.dto.ProdCommDto">
  57. <id column="prod_comm_id" jdbcType="BIGINT" property="prodCommId"/>
  58. <result column="reply_content" jdbcType="VARCHAR" property="replyContent"/>
  59. <result column="rec_time" jdbcType="TIMESTAMP" property="recTime"/>
  60. <result column="reply_time" jdbcType="TIMESTAMP" property="replyTime"/>
  61. <result column="score" jdbcType="TINYINT" property="score"/>
  62. <result column="is_anonymous" jdbcType="INTEGER" property="isAnonymous"/>
  63. <result column="pics" jdbcType="VARCHAR" property="pics"/>
  64. <result column="nick_name" jdbcType="VARCHAR" property="nickName"/>
  65. <result column="pic" jdbcType="VARCHAR" property="pic"/>
  66. <result column="reply_sts" jdbcType="VARCHAR" property="replySts"/>
  67. <result property="evaluate" jdbcType="TINYINT" column="evaluate"/>
  68. <result property="content" jdbcType="VARCHAR" column="content"/>
  69. </resultMap>
  70. <select id="getProdCommDtoPageByProdId" resultMap="ProdCommDto">
  71. select
  72. <include refid="ProdCommDto_SQL"/>
  73. from
  74. tz_prod_comm pc
  75. left join tz_user u on u.user_id=pc.user_id
  76. where pc.prod_id = #{prodId} and (pc.status = 1)
  77. <if test="evaluate != -1 and evaluate != 3">
  78. and pc.evaluate = #{evaluate}
  79. </if>
  80. <if test="evaluate == 3">
  81. and pc.pics is not null
  82. </if>
  83. </select>
  84. <select id="getProdCommDtoPageByUserId" resultMap="ProdCommDto">
  85. select
  86. <include refid="ProdCommDto_SQL"/>
  87. from
  88. tz_prod_comm pc
  89. left join tz_user u on u.user_id=pc.user_id
  90. where pc.user_id = #{userId} and pc.status = 1
  91. </select>
  92. <!--评论管理-->
  93. <resultMap id="ProdComm_Prod_User" type="com.yami.shop.bean.model.ProdComm">
  94. <id column="prod_comm_id" jdbcType="BIGINT" property="prodCommId"/>
  95. <result property="prodId" column="prod_id"/>
  96. <result property="orderNumber" column="order_number"/>
  97. <result property="userId" column="user_id"/>
  98. <result property="content" column="content"/>
  99. <result property="replyContent" column="reply_content"/>
  100. <result property="recTime" column="rec_time"/>
  101. <result property="replyTime" column="reply_time"/>
  102. <result property="replySts" column="reply_sts"/>
  103. <result property="postip" column="postip"/>
  104. <result property="score" column="score"/>
  105. <result property="usefulCounts" column="useful_counts"/>
  106. <result property="pics" column="pics"/>
  107. <result property="isAnonymous" column="is_anonymous"/>
  108. <result property="status" column="status"/>
  109. <result property="prodName" column="prod_name"/>
  110. <result property="evaluate" column="evaluate"/>
  111. <association property="user" javaType="com.yami.shop.bean.vo.UserVO">
  112. <id column="user_id" jdbcType="VARCHAR" property="userId"/>
  113. <result column="nick_name" jdbcType="VARCHAR" property="nickName"/>
  114. <result column="user_mobile" jdbcType="VARCHAR" property="userMobile"/>
  115. </association>
  116. </resultMap>
  117. <select id="getProdCommPage" resultMap="ProdComm_Prod_User">
  118. select
  119. pc.prod_comm_id,
  120. pc.score,
  121. pc.is_anonymous,
  122. pc.status,
  123. pc.rec_time,
  124. pc.reply_time,
  125. pc.evaluate,
  126. u.nick_name,
  127. u.user_mobile,
  128. p.prod_name
  129. from
  130. tz_prod_comm pc
  131. left join tz_prod p on p.prod_id=pc.prod_id
  132. left join tz_user u on pc.user_id=u.user_id
  133. <where>
  134. <if test="prodComm.status!=null">
  135. and pc.status=#{prodComm.status}
  136. </if>
  137. <if test="prodComm.status!=null">
  138. and pc.status=#{prodComm.status}
  139. </if>
  140. <if test="shopId!=null">
  141. and p.shop_id=#{shopId}
  142. </if>
  143. <if test="prodComm.prodName!=null and prodComm.prodName!= ''">
  144. and p.prod_name like concat('%',#{prodComm.prodName},'%')
  145. </if>
  146. </where>
  147. order by pc.prod_comm_id desc
  148. </select>
  149. <select id="commList" resultMap="BaseResultMap">
  150. SELECT b.nick_name,b.pic avatar,a.*
  151. FROM tz_prod_comm a
  152. LEFT JOIN tz_user b on a.user_id=b.user_id
  153. WHERE a.order_number in (SELECT a.order_number FROM tz_order_item a
  154. LEFT JOIN tz_order b on a.order_number=b.order_number
  155. WHERE a.prod_id = #{prodId} and a.shop_id = #{shopId} and b.channel_id=#{channelId}) and a.`status`=1
  156. <choose>
  157. <when test="commStatus == 3">
  158. and !ISNULL(a.pics)
  159. </when>
  160. <otherwise>
  161. and a.evaluate = #{commStatus}
  162. </otherwise>
  163. </choose>
  164. ORDER BY a.rec_time desc
  165. </select>
  166. <select id="commentCount" resultType="integer">
  167. SELECT COUNT(1)
  168. FROM tz_prod_comm
  169. WHERE order_number in (SELECT a.order_number FROM tz_order_item a
  170. LEFT JOIN tz_order b on a.order_number=b.order_number
  171. WHERE a.prod_id = #{prodId} and a.shop_id = #{shopId} and b.channel_id=#{channelId})
  172. and `status` = 1
  173. <if test="evaluate!=null">
  174. and evaluate = #{evaluate}
  175. </if>
  176. </select>
  177. <select id="picCount" resultType="integer">
  178. SELECT COUNT(1)
  179. FROM tz_prod_comm
  180. WHERE order_number in (SELECT a.order_number
  181. FROM tz_order_item a
  182. LEFT JOIN tz_order b on a.order_number = b.order_number
  183. WHERE a.prod_id = #{prodId}
  184. and a.shop_id = #{shopId}
  185. and b.channel_id = #{channelId})
  186. and `status` = 1
  187. and TRIM(pics) > ''
  188. </select>
  189. <select id="goodRate" resultType="string">
  190. SELECT IFNULL(CONCAT(CAST(SUM(CASE WHEN pc.evaluate = 0 AND pc.`status` = 1 THEN 1 ELSE 0 END) * 100.0 /
  191. COUNT(*) AS DECIMAL(5, 2)), '%'), '100%') AS rate
  192. FROM tz_prod_comm pc
  193. WHERE pc.order_number in (SELECT a.order_number
  194. FROM tz_order_item a
  195. LEFT JOIN tz_order b on a.order_number = b.order_number
  196. WHERE a.prod_id = #{prodId}
  197. and a.shop_id = #{shopId}
  198. and b.channel_id = #{channelId})
  199. </select>
  200. <select id="myCommList" resultMap="BaseResultMap">
  201. SELECT b.nick_name, b.pic avatar, a.*
  202. FROM tz_prod_comm a
  203. LEFT JOIN tz_user b on a.user_id = b.user_id
  204. WHERE a.user_id = #{userId}
  205. ORDER BY a.rec_time desc, a.prod_comm_id desc
  206. </select>
  207. <select id="getShopName" resultType="string">
  208. SELECT shop_name
  209. FROM tz_shop_detail
  210. WHERE shop_id = (SELECT shop_id FROM tz_order WHERE order_number = #{orderNumber})
  211. </select>
  212. <select id="backendCommList" resultMap="BaseResultMap">
  213. SELECT b.nick_name,b.pic avatar,a.*
  214. FROM tz_prod_comm a
  215. LEFT JOIN tz_user b on a.user_id=b.user_id
  216. LEFT JOIN tz_order c on a.order_number =c.order_number
  217. <where>
  218. <if test="po.score != null">
  219. and a.score=#{po.score}
  220. </if>
  221. <if test="po.score != null">
  222. and a.status=#{po.status}
  223. </if>
  224. <if test="po.replySts != null">
  225. and a.reply_sts=#{po.replySts}
  226. </if>
  227. <if test="po.shopId != null">
  228. and c.shop_id=#{po.shopId}
  229. </if>
  230. <if test="po.startTime != null and po.startTime != ''">
  231. AND a.rec_time &gt;= str_to_date(#{po.startTime},'%Y-%m-%d %H:%i:%s')
  232. </if>
  233. <if test="po.endTime != null and po.endTime != ''">
  234. AND a.rec_time &lt;= str_to_date(#{po.endTime},'%Y-%m-%d %H:%i:%s')
  235. </if>
  236. </where>
  237. ORDER BY a.rec_time desc,a.prod_comm_id desc
  238. </select>
  239. </mapper>