AmStatisticsMapper.xml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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="cn.xyh.amActivity.mapper.AmStatisticsMapper">
  6. <resultMap type="cn.xyh.amActivity.domain.AmStatistics" id="AmStatisticsResult">
  7. <result property="amId" column="am_id"/>
  8. <result property="sourceId" column="source_id"/>
  9. <result property="sourceType" column="source_type"/>
  10. <result property="readStatus" column="read_status"/>
  11. <result property="starStatus" column="star_status"/>
  12. <result property="favoriteStatus" column="favorite_status"/>
  13. <result property="createBy" column="create_by"/>
  14. <result property="createTime" column="create_time"/>
  15. <result property="updateBy" column="update_by"/>
  16. <result property="updateTime" column="update_time"/>
  17. <result property="remark" column="remark"/>
  18. </resultMap>
  19. <select id="selectAmStatisticsData" resultType="cn.xyh.amActivity.domain.vo.AmStatisticsDataVo">
  20. SELECT ams.source_id,
  21. IFNULL(commentCount, 0) as comment_count,
  22. IFNULL(readCount, 0) as read_count,
  23. IFNULL(starCount, 0) as star_count,
  24. IFNULL(favoriteCount, 0) as favorite_count
  25. FROM (SELECT source_id,
  26. SUM(read_status) AS readCount,
  27. SUM(star_status) AS starCount,
  28. SUM(favorite_status) AS favoriteCount
  29. FROM am_statistics
  30. GROUP BY source_id) AS ams
  31. LEFT JOIN (SELECT source_id, COUNT(source_id) AS commentCount
  32. FROM am_comment
  33. GROUP BY source_id) AS amc ON amc.source_id = ams.source_id
  34. WHERE ams.source_id = #{sourceId}
  35. </select>
  36. <select id="selectStatisticsSource" resultType="cn.xyh.amActivity.domain.vo.AmStatisticsSourceVo">
  37. SELECT
  38. ams.am_id,
  39. ams.source_id,
  40. ams.source_type,
  41. ams.favorite_time,
  42. a.category,
  43. a.title,
  44. a.content,
  45. <if test="map.sourceType=='activity'">
  46. a.activity_date as date,
  47. a.is_sys,
  48. </if>
  49. <if test="map.sourceType=='help'">
  50. a.expiry_date as date,
  51. a.is_sys,
  52. </if>
  53. <if test=" map.sourceType=='news'">
  54. a.date,
  55. </if>
  56. a.create_by ,
  57. a.is_hot,
  58. a.is_head,
  59. a.images,
  60. a.create_time,
  61. u.nick_name as createdBy,
  62. IFNULL(amcc.commentCount, 0) as comment_count,
  63. IFNULL(amsc.readCount, 0) as read_count,
  64. IFNULL(amsc.starCount, 0) as star_count,
  65. IFNULL(amsc.favoriteCount, 0) as favorite_count
  66. FROM am_statistics AS ams
  67. <if test="map.sourceType=='activity'">
  68. LEFT JOIN am_activity AS a ON a.activity_id = ams.source_id
  69. </if>
  70. <if test="map.sourceType=='help'">
  71. LEFT JOIN am_help AS a ON a.help_id = ams.source_id
  72. </if>
  73. <if test="map.sourceType=='news'">
  74. LEFT JOIN am_news AS a ON a.news_id = ams.source_id
  75. </if>
  76. LEFT JOIN (SELECT source_id,
  77. SUM(read_status) AS readCount,
  78. SUM(star_status) AS starCount,
  79. SUM(favorite_status) AS favoriteCount
  80. FROM am_statistics
  81. GROUP BY source_id) AS amsc ON amsc.source_id = ams.source_id
  82. LEFT JOIN (SELECT source_id, COUNT(source_id) AS commentCount
  83. FROM am_comment
  84. GROUP BY source_id) AS amcc ON amcc.source_id = ams.source_id
  85. LEFT JOIN sys_user AS u ON u.user_name = a.create_by
  86. WHERE 1=1
  87. <if test="map.sourceType!=null">
  88. AND ams.source_type = #{map.sourceType}
  89. </if>
  90. <if test="map.amId!=null">
  91. AND ams.am_id = #{map.amId}
  92. </if>
  93. <if test="map.favoriteStatus!=null">
  94. AND ams.favorite_status = #{map.favoriteStatus}
  95. </if>
  96. <if test="map.starStatus!=null">
  97. AND ams.star_status = #{map.starStatus}
  98. </if>
  99. <if test="map.beginDate!=null and map.endDate!=null">
  100. AND a.creat_time between #{map.beginDate} AND #{map.endDate}
  101. </if>
  102. </select>
  103. </mapper>