peng
2025-10-27 2a7b0a64b14b22ec45f8a0f6e4764bc3cd16919c
framework/src/main/resources/mapper/lmk/ActionRecordMapper.xml
@@ -85,5 +85,218 @@
                 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 &lt; 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>