<?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>
|
<resultMap id="userStayListMap" type="cn.lili.modules.lmk.domain.vo.StayActionRecordVO">
|
<result property="userId" column="user_id"/>
|
<result property="nickName" column="nick_name"/>
|
<result property="sessionId" column="session_id"/>
|
<result property="pageCode" column="page_code"/>
|
<result property="pageNameCn" column="page_name_cn"/>
|
<result property="enterTime" column="enter_time"/>
|
<result property="leaveTime" column="leave_time"/>
|
<result property="pageParams" column="page_params"/>
|
</resultMap>
|
<select id="userStayList" resultMap="userStayListMap">
|
SELECT
|
t1.user_id,
|
lm.nick_name,
|
t1.session_id,
|
t1.page_params,
|
t1.page_code,
|
CASE t1.page_code
|
WHEN 'RECOMMEND_VIDEO' THEN '首页推荐视频'
|
WHEN 'HEALTH_VIDEO' THEN '大健康视频'
|
WHEN 'KITCHEN_VIDEO' THEN '神厨视频'
|
WHEN 'RECOMMEND_VIDEO_GOODS' THEN '视频推荐商品页面'
|
WHEN 'RECOMMEND_VIDEO_LEFT_GOODS' THEN '左滑推荐商品'
|
WHEN 'RECOMMEND_VIDEO_RIGHT_VIDEO' THEN '右滑视频页面'
|
WHEN 'FILL_ORDER' THEN '填写订单'
|
WHEN 'PAY_ORDER' THEN '支付订单'
|
WHEN 'PAY_SUCCESS' THEN '支付成功'
|
WHEN 'ORDER_LIST' THEN '订单列表'
|
WHEN 'ORDER_DETAIL' THEN '订单详情'
|
WHEN 'PRIZE_DETAIL' THEN '抽奖活动'
|
WHEN 'CART_LIST' THEN '购物车'
|
WHEN 'TBA_BAR_MY' THEN '我的页面'
|
WHEN 'SHOPPING_SQUARE' THEN '商品广场'
|
WHEN 'ACTIVITY_LIST' THEN '活动列表'
|
WHEN 'ACTIVITY_DETAIL' THEN '活动详情'
|
WHEN 'PUBLISH_VIDEO' THEN '视频发布'
|
WHEN 'SWIPER_GOODS' THEN '滑动商品'
|
WHEN 'COUPON_CENTER' THEN '领卷中心'
|
WHEN 'MY_COUPON' THEN '我的优惠卷'
|
WHEN 'AFTER_SALE' THEN '售后列表'
|
WHEN 'APPLY_SALE' THEN '申请售后'
|
WHEN 'REFUND_ORDER' THEN '退款/退货'
|
WHEN 'GOODS_DETAILS' THEN '商品详情页面'
|
ELSE '未知页面'
|
END AS page_name_cn,
|
t1.start_time AS enter_time,
|
t2.start_time AS leave_time,
|
TIMESTAMPDIFF(SECOND, t1.start_time, t2.start_time) AS stay_seconds
|
FROM
|
lmk_action_record t1
|
JOIN
|
lmk_action_record t2 ON t1.session_id = t2.session_id
|
AND t1.user_id = t2.user_id
|
AND t1.page_code = t2.page_code
|
JOIN li_member lm ON lm.id = t1.user_id
|
WHERE
|
t1.page_status = 'JOIN'
|
AND t2.page_status = 'LEAVE'
|
AND t1.start_time < t2.start_time
|
and t1.start_time between #{req.beginDate} and #{req.endDate}
|
<if test="req.userName != null and req.userName != ''">
|
and lm.nick_name like concat('%',#{req.userName},'%')
|
</if>
|
<if test="req.pageCode != null and req.pageCode != ''">
|
and t1.page_code = #{req.pageCode}
|
</if>
|
<if test="req.userId != null and req.userId != ''">
|
and t1.user_id = #{req.userId}
|
</if>
|
ORDER BY
|
t1.start_time desc
|
|
</select>
|
<resultMap id="userShareMap" type="cn.lili.modules.lmk.domain.vo.ShareActionRecordVO">
|
<result property="userId" column="user_id"/>
|
<result property="nickName" column="nick_name"/>
|
<result property="pageCode" column="page_code"/>
|
<result property="pageNameCn" column="page_name_cn"/>
|
<result property="createTime" column="create_time"/>
|
<result property="shareOption" column="share_option"/>
|
</resultMap>
|
<select id="userShare" resultMap="userShareMap">
|
SELECT
|
lm.nick_name,
|
lsa.page_code,
|
lsa.share_option,
|
lsa.user_id,
|
lsa.create_time,
|
CASE
|
lsa.page_code
|
WHEN 'RECOMMEND_VIDEO' THEN
|
'首页推荐视频'
|
WHEN 'HEALTH_VIDEO' THEN
|
'大健康视频'
|
WHEN 'KITCHEN_VIDEO' THEN
|
'神厨视频'
|
WHEN 'RECOMMEND_VIDEO_GOODS' THEN
|
'视频推荐商品页面'
|
WHEN 'RECOMMEND_VIDEO_LEFT_GOODS' THEN
|
'左滑推荐商品'
|
WHEN 'RECOMMEND_VIDEO_RIGHT_VIDEO' THEN
|
'右滑视频页面'
|
WHEN 'FILL_ORDER' THEN
|
'填写订单'
|
WHEN 'PAY_ORDER' THEN
|
'支付订单'
|
WHEN 'PAY_SUCCESS' THEN
|
'支付成功'
|
WHEN 'ORDER_LIST' THEN
|
'订单列表'
|
WHEN 'ORDER_DETAIL' THEN
|
'订单详情'
|
WHEN 'PRIZE_DETAIL' THEN
|
'抽奖活动'
|
WHEN 'CART_LIST' THEN
|
'购物车'
|
WHEN 'TBA_BAR_MY' THEN
|
'我的页面'
|
WHEN 'SHOPPING_SQUARE' THEN
|
'商品广场'
|
WHEN 'ACTIVITY_LIST' THEN
|
'活动列表'
|
WHEN 'ACTIVITY_DETAIL' THEN
|
'活动详情'
|
WHEN 'PUBLISH_VIDEO' THEN
|
'视频发布'
|
WHEN 'SWIPER_GOODS' THEN
|
'滑动商品'
|
WHEN 'COUPON_CENTER' THEN
|
'领卷中心'
|
WHEN 'MY_COUPON' THEN
|
'我的优惠卷'
|
WHEN 'AFTER_SALE' THEN
|
'售后列表'
|
WHEN 'APPLY_SALE' THEN
|
'申请售后'
|
WHEN 'REFUND_ORDER' THEN
|
'退款/退货'
|
WHEN 'GOODS_DETAILS' THEN
|
'商品详情页面' ELSE '未知页面'
|
END AS page_name_cn
|
FROM
|
lmk_share_action lsa
|
JOIN li_member lm ON lsa.user_id = lm.id
|
WHERE
|
lsa.delete_flag = 0
|
AND lm.delete_flag = 0
|
and lsa.create_time between #{req.beginDate} and #{req.endDate}
|
<if test="req.userName != null and req.userName != ''">
|
and lm.nick_name like concat('%',#{req.userName},'%')
|
</if>
|
<if test="req.pageCode != null and req.pageCode != ''">
|
and lsa.page_code = #{req.pageCode}
|
</if>
|
ORDER BY
|
lsa.create_time desc
|
</select>
|
<resultMap id="userStayListRecordMap" type="cn.lili.modules.lmk.domain.vo.ActionRecordListVO">
|
<id column="id" property="id"/>
|
<result column="user_id" property="userId"/>
|
<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"/>
|
<result column="update_time" property="updateTime"/>
|
<result column="create_by" property="createBy"/>
|
<result column="create_time" property="createTime"/>
|
<result column="update_by" property="updateBy"/>
|
<result column="delete_flag" property="deleteFlag"/>
|
<result column="nick_name" property="nickName"/>
|
</resultMap>
|
<select id="userStayListRecord" resultMap="userStayListRecordMap">
|
SELECT
|
t.id,
|
t.user_id,
|
t.action_type,
|
t.start_time,
|
t.join_type,
|
t.previous_session_id,
|
t.share_id,
|
t.page_code,
|
t.page_params,
|
t.page_type,
|
t.page_status,
|
t.update_time,
|
t.create_by,
|
t.create_time,
|
t.update_by,
|
t.delete_flag,
|
lm.nick_name
|
FROM
|
(
|
SELECT
|
*,
|
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY create_time DESC) AS rn
|
FROM
|
lmk_action_record
|
WHERE
|
user_id IS NOT NULL
|
AND page_status = 'JOIN') t
|
JOIN li_member lm ON lm.id = t.user_id
|
WHERE
|
rn = 1 AND lm.delete_flag = 0
|
and t.create_time between #{req.beginDate} and #{req.endDate}
|
<if test="req.userName != null and req.userName != ''">
|
and lm.nick_name like concat('%',#{req.userName},'%')
|
</if>
|
</select>
|
|
</mapper>
|