<?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="cn.lili.modules.lmk.mapper.ActionRecordMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.ActionRecordVO">
|
<id column="id" property="id"/>
|
<result column="user_id" property="userId" />
|
<result column="session_id" property="sessionId" />
|
<result column="action_type" property="actionType" />
|
<result column="start_time" property="startTime" />
|
<result column="join_type" property="joinType" />
|
<result column="previous_session_id" property="previousSessionId" />
|
<result column="share_id" property="shareId" />
|
<result column="page_code" property="pageCode" />
|
<result column="page_params" property="pageParams" />
|
<result column="page_type" property="pageType" />
|
<result column="page_status" property="pageStatus" />
|
</resultMap>
|
|
|
|
|
|
|
|
<select id="getById" resultMap="BaseResultMap">
|
SELECT
|
LAR.user_id,
|
LAR.session_id,
|
LAR.action_type,
|
LAR.start_time,
|
LAR.join_type,
|
LAR.previous_session_id,
|
LAR.share_id,
|
LAR.page_code,
|
LAR.page_params,
|
LAR.page_type,
|
LAR.page_status,
|
LAR.id
|
FROM
|
lmk_action_record LAR
|
WHERE
|
LAR.id = #{id} AND LAR.delete_flag = 0
|
</select>
|
|
|
<select id="getPage" resultMap="BaseResultMap">
|
SELECT
|
LAR.user_id,
|
LAR.session_id,
|
LAR.action_type,
|
LAR.start_time,
|
LAR.join_type,
|
LAR.previous_session_id,
|
LAR.share_id,
|
LAR.page_code,
|
LAR.page_params,
|
LAR.page_type,
|
LAR.page_status,
|
LAR.id
|
FROM
|
lmk_action_record LAR
|
WHERE
|
LAR.delete_flag = 0
|
</select>
|
|
<select id="getToDayStayTime" resultType="decimal">
|
SELECT SUM(t.stay_seconds)
|
FROM (SELECT user_id,
|
page_code,
|
session_id,
|
MIN(CASE WHEN page_status = 'JOIN' THEN start_time END) AS enter_time,
|
MIN(CASE WHEN page_status = 'LEAVE' THEN start_time END) AS leave_time,
|
TIMESTAMPDIFF(SECOND, MIN(CASE WHEN page_status = 'JOIN' THEN start_time END),
|
MIN(CASE WHEN page_status = 'LEAVE' THEN start_time END)
|
) AS stay_seconds
|
FROM lmk_action_record
|
WHERE action_type = 'PAGE'
|
AND page_status IN ('JOIN', 'LEAVE')
|
AND user_id = #{userId}
|
AND create_time BETWEEN #{begin} AND #{end}
|
GROUP BY user_id, page_code, session_id
|
HAVING enter_time IS NOT NULL
|
AND leave_time IS NOT NULL
|
ORDER BY user_id, session_id, enter_time) t
|
</select>
|
|
</mapper>
|