peng
2025-10-15 c40f30d375d4108c8514eed49b372cbb7d80bb57
framework/src/main/resources/mapper/lmk/ActionRecordMapper.xml
@@ -65,4 +65,179 @@
            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 &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>
        ORDER BY
        t1.user_id,
        t1.start_time
    </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>
</mapper>