TaPersonVisitRecordMapper.xml 6.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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.huiju.estateagents.mapper.TaPersonVisitRecordMapper">
  4. <sql id="columnSql">
  5. <trim suffixOverrides=",">
  6. t.record_id,
  7. t.person_id,
  8. t.person_type,
  9. t.visit_time,
  10. t.leave_time,
  11. t.visit_duration,
  12. t.event,
  13. t.data,
  14. t.activity,
  15. t.org_id,
  16. t.building_id,
  17. t.event_type,
  18. t.target_id,
  19. t.consultant_id,
  20. t.share_person_id,
  21. </trim>
  22. </sql>
  23. <select id="visitRecordByPersonId" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
  24. select * from ta_person_visit_record
  25. where person_id = #{personId}
  26. order by visit_time desc
  27. </select>
  28. <select id="selectAll" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
  29. SELECT
  30. tpvr.record_id as recordId,
  31. tpvr.person_id as personId,
  32. tpvr.person_type as personType,
  33. tpvr.building_id as buildingId,
  34. tpvr.activity as activity,
  35. tpvr.event as event,
  36. tpvr.event_type as eventType,
  37. tpvr.visit_duration as visitDuration,
  38. (SELECT MIN(t.visit_time) FROM ta_person_visit_record t WHERE t.person_id = tpvr.person_id and t.event = tpvr.event and t.org_id = #{orgId} ) as visitTime,
  39. (SELECT MAX(t.leave_time) FROM ta_person_visit_record t WHERE t.person_id = tpvr.person_id and t.event = tpvr.event and t.org_id = #{orgId} ) as leaveTime,
  40. ifnull(tp.name, tp.nickname) as userName,
  41. tbe.event_name as eventName,
  42. COUNT(1) as accessCount
  43. FROM
  44. ta_person_visit_record tpvr
  45. LEFT JOIN ta_person tp ON tpvr.person_id = tp.person_id
  46. LEFT JOIN td_biz_event tbe on tpvr.event = tbe.event_code
  47. <trim prefix="where" prefixOverrides="and | or">
  48. tpvr.org_id = #{orgId}
  49. and tp.org_id = #{orgId}
  50. <if test="startDate != null and endDate != null">
  51. and tpvr.visit_time between #{startDate} and #{endDate}
  52. </if>
  53. <if test="buildingId != null and buildingId != ''">
  54. and tpvr.building_id = #{buildingId}
  55. </if>
  56. <if test="eventType != null and eventType != ''">
  57. and tpvr.event_type = #{eventType}
  58. </if>
  59. <if test="event != null and event != ''">
  60. and tpvr.event = #{event}
  61. </if>
  62. <if test="activity != null and activity != ''">
  63. and tpvr.activity = #{activity}
  64. </if>
  65. </trim>
  66. GROUP BY tpvr.person_id, tpvr.event
  67. ORDER BY accessCount DESC,tpvr.visit_time DESC
  68. </select>
  69. <select id="getPersonVisitRecordList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
  70. SELECT
  71. t.*,
  72. b.building_name
  73. FROM
  74. ta_person_visit_record t
  75. LEFT JOIN ta_building b ON t.building_id = b.building_id
  76. WHERE
  77. t.person_id = #{personId}
  78. ORDER BY
  79. t.visit_time DESC
  80. </select>
  81. <select id="getDurationByPersonId" resultType="java.lang.Integer">
  82. select SUM(visit_duration) from ta_person_visit_record where person_id = #{personId}
  83. </select>
  84. <select id="getFirstVisitTimeByPersonId" resultType="java.time.LocalDateTime">
  85. select visit_time from ta_person_visit_record where person_id = #{personId} order by visit_time asc limit 1
  86. </select>
  87. <select id="getWxVisitRecordList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
  88. SELECT
  89. t.* ,
  90. p.`name` as user_name,
  91. p.`nickname` as nickname,
  92. p.avatarurl,
  93. d.name as activity_name,
  94. d.create_date
  95. FROM
  96. ( SELECT * FROM ta_person_visit_record WHERE org_id = #{orgId} and event_type = #{eventType} AND consultant_id = #{userId} and person_id != #{personId} ORDER BY visit_time DESC LIMIT 999) t
  97. left JOIN ta_person p on t.person_id = p.person_id
  98. LEFT join ta_drainage d on t.target_id = d.drainage_id
  99. GROUP BY
  100. t.person_id
  101. ORDER BY
  102. t.visit_time DESC
  103. </select>
  104. <select id="getWxVisitRecordActivityList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
  105. SELECT
  106. t.*,
  107. d.NAME AS activity_name,
  108. d.create_date
  109. FROM
  110. ( SELECT * FROM ta_person_visit_record WHERE event_type = #{eventType} AND consultant_id = #{userId} AND person_id = #{personId} ORDER BY visit_time DESC ) t
  111. LEFT JOIN ta_drainage d ON t.target_id = d.drainage_id
  112. GROUP BY
  113. t.target_id
  114. ORDER BY
  115. t.visit_time DESC
  116. </select>
  117. <select id="getDrainageVisitRecord" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
  118. select * from (
  119. select
  120. <include refid="columnSql"></include>,
  121. b.name as activityName,
  122. b.drainage_id
  123. from ta_person_visit_record t
  124. left join ta_drainage b on t.target_id = b.drainage_id
  125. left join ta_person c on t.share_person_id = c.person_id
  126. where
  127. t.event_type = 'h5'
  128. and t.share_person_id is not null
  129. <if test="orgId != null and orgId != ''">
  130. and t.org_id = #{orgId}
  131. </if>
  132. <if test="drainageId !=null and drainageId != ''">
  133. and b.drainage_Id = #{drainageId}
  134. </if>
  135. <if test="activityName !=null and activityName != ''">
  136. and b.name like concat('%',#{activityName},'%')
  137. </if>
  138. <if test="shareName !=null and shareName != ''">
  139. and c.nickname like concat('%',#{shareName},'%')
  140. </if>
  141. <if test="shareTel !=null and shareTel != ''">
  142. and c.phone = #{shareTel}
  143. </if>
  144. <if test="personBuildingList != null and personBuildingList.size > 0">
  145. AND t.building_id in
  146. <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
  147. #{personBuilding.buildingId}
  148. </foreach>
  149. </if>
  150. order by t.visit_time desc
  151. ) t
  152. group by t.person_id, t.share_person_id
  153. order by t.visit_time desc
  154. </select>
  155. </mapper>