123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.huiju.estateagents.mapper.TaPersonVisitRecordMapper">
-
- <sql id="columnSql">
- <trim suffixOverrides=",">
- t.record_id,
- t.person_id,
- t.person_type,
- t.visit_time,
- t.leave_time,
- t.visit_duration,
- t.event,
- t.data,
- t.activity,
- t.org_id,
- t.building_id,
- t.event_type,
- t.target_id,
- t.consultant_id,
- t.share_person_id,
- </trim>
- </sql>
-
- <select id="visitRecordByPersonId" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
- select * from ta_person_visit_record
- where person_id = #{personId}
- order by visit_time desc
- </select>
-
- <select id="selectAll" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
- SELECT
- tpvr.record_id as recordId,
- tpvr.person_id as personId,
- tpvr.person_type as personType,
- tpvr.building_id as buildingId,
- tpvr.activity as activity,
- tpvr.event as event,
- tpvr.event_type as eventType,
- tpvr.visit_duration as visitDuration,
- (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,
- (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,
- ifnull(tp.name, tp.nickname) as userName,
- tbe.event_name as eventName,
- COUNT(1) as accessCount
- FROM
- ta_person_visit_record tpvr
- LEFT JOIN ta_person tp ON tpvr.person_id = tp.person_id
- LEFT JOIN td_biz_event tbe on tpvr.event = tbe.event_code
- <trim prefix="where" prefixOverrides="and | or">
- tpvr.org_id = #{orgId}
- and tp.org_id = #{orgId}
- <if test="startDate != null and endDate != null">
- and tpvr.visit_time between #{startDate} and #{endDate}
- </if>
- <if test="buildingId != null and buildingId != ''">
- and tpvr.building_id = #{buildingId}
- </if>
- <if test="eventType != null and eventType != ''">
- and tpvr.event_type = #{eventType}
- </if>
- <if test="event != null and event != ''">
- and tpvr.event = #{event}
- </if>
- <if test="activity != null and activity != ''">
- and tpvr.activity = #{activity}
- </if>
- </trim>
-
- GROUP BY tpvr.person_id, tpvr.event
- ORDER BY accessCount DESC,tpvr.visit_time DESC
- </select>
- <select id="getPersonVisitRecordList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
- SELECT
- t.*,
- b.building_name
- FROM
- ta_person_visit_record t
- LEFT JOIN ta_building b ON t.building_id = b.building_id
- WHERE
- t.person_id = #{personId}
- ORDER BY
- t.visit_time DESC
- </select>
-
- <select id="getDurationByPersonId" resultType="java.lang.Integer">
- select SUM(visit_duration) from ta_person_visit_record where person_id = #{personId}
- </select>
-
- <select id="getFirstVisitTimeByPersonId" resultType="java.time.LocalDateTime">
- select visit_time from ta_person_visit_record where person_id = #{personId} order by visit_time asc limit 1
- </select>
- <select id="getWxVisitRecordList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
- SELECT
- t.* ,
- p.`name` as user_name,
- p.`nickname` as nickname,
- p.avatarurl,
- d.name as activity_name,
- d.create_date
- FROM
- ( 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
- left JOIN ta_person p on t.person_id = p.person_id
- LEFT join ta_drainage d on t.target_id = d.drainage_id
- GROUP BY
- t.person_id
- ORDER BY
- t.visit_time DESC
- </select>
- <select id="getWxVisitRecordActivityList" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
- SELECT
- t.*,
- d.NAME AS activity_name,
- d.create_date
- FROM
- ( SELECT * FROM ta_person_visit_record WHERE event_type = #{eventType} AND consultant_id = #{userId} AND person_id = #{personId} ORDER BY visit_time DESC ) t
- LEFT JOIN ta_drainage d ON t.target_id = d.drainage_id
- GROUP BY
- t.target_id
- ORDER BY
- t.visit_time DESC
- </select>
-
- <select id="getDrainageVisitRecord" resultType="com.huiju.estateagents.entity.TaPersonVisitRecord">
- select * from (
- select
- <include refid="columnSql"></include>,
- b.name as activityName,
- b.drainage_id
- from ta_person_visit_record t
- left join ta_drainage b on t.target_id = b.drainage_id
- left join ta_person c on t.share_person_id = c.person_id
- where
- t.event_type = 'h5'
- and t.share_person_id is not null
- <if test="orgId != null and orgId != ''">
- and t.org_id = #{orgId}
- </if>
- <if test="drainageId !=null and drainageId != ''">
- and b.drainage_Id = #{drainageId}
- </if>
- <if test="activityName !=null and activityName != ''">
- and b.name like concat('%',#{activityName},'%')
- </if>
- <if test="shareName !=null and shareName != ''">
- and c.nickname like concat('%',#{shareName},'%')
- </if>
- <if test="shareTel !=null and shareTel != ''">
- and c.phone = #{shareTel}
- </if>
- <if test="personBuildingList != null and personBuildingList.size > 0">
- AND t.building_id in
- <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
- #{personBuilding.buildingId}
- </foreach>
- </if>
- order by t.visit_time desc
- ) t
- group by t.person_id, t.share_person_id
- order by t.visit_time desc
- </select>
-
- </mapper>
|