OprMemDictMapper.xml 8.2 KB
<?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.subsidy.mapper.OprMemDictMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.subsidy.model.OprMemDictDO">
        <id column="id" property="id"/>
        <result column="create_date" property="createDate"/>
        <result column="update_date" property="updateDate"/>
        <result column="delete_date" property="deleteDate"/>
        <result column="user_id" property="userId"/>
        <result column="opr_type" property="oprType"/>
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        create_date,
        update_date,
        delete_date,
        id, user_id, opr_type
    </sql>


    <select id="getHistory" resultType="com.subsidy.vo.opr.GetHistoryVO">
        SELECT
        t.id,
        t2.user_name,
        t3.company_name,
        t.opr_type,
        t.create_date,
        t.result
        FROM
        opr_mem_dict t
        LEFT JOIN member t2 ON t.user_id = t2.id
        LEFT JOIN company_dict t3 ON t2.company_id = t3.id
        WHERE
        t.delete_date IS NULL
        AND t2.delete_date IS NULL
        AND t3.delete_date IS NULL
        <if test="userName != null and userName !=''">
            and t2.user_name like concat('%',#{userName} ,'%')
        </if>
        AND DATE_FORMAT( t.create_date, '%Y-%m-%d' ) BETWEEN DATE_FORMAT( #{startDate}, '%Y-%m-%d' )
        AND DATE_FORMAT( #{endDate}, '%Y-%m-%d' )
        ORDER BY
        t.create_date DESC
    </select>

    <select id="getRecordByDate" resultType="com.subsidy.model.OprMemDictDO">
        SELECT
            *
        FROM
            opr_mem_dict
        WHERE
            create_date &lt; (NOW() -interval 1 day)
    </select>

    <select id="getLatestLoginInfo" parameterType="long" resultType="com.subsidy.model.OprMemDictDO">
        SELECT t.id,
            t.ip_address,
            t.opr_type,
            t.result,
            t.user_id,
            t.create_date
        FROM
            opr_mem_dict t
        WHERE
            t.delete_date IS NULL
            AND t.result = 1
            AND t.user_id = #{userId}
            and DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
            order by t.id desc
            limit 1
    </select>

    <select id="getLatestLogoutInfo" parameterType="long" resultType="com.subsidy.model.OprMemDictDO">
        SELECT t.id,
            t.ip_address,
            t.opr_type,
            t.result,
            t.user_id,
            t.create_date
        FROM
            opr_mem_dict t
        WHERE
            t.delete_date IS NULL
            AND t.result = 1
            AND t.user_id =#{userId}
            and t.opr_type = '登出'
            and DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
            order by t.id desc
            limit 1
    </select>


    <!--    <update id="deleteData" parameterType="com.subsidy.model.OprMemDictDO">-->
    <!--        DELETE-->
    <!--        FROM-->
    <!--            opr_mem_dict-->
    <!--        WHERE-->
    <!--            delete_date IS NULL-->
    <!--            AND id = #{id}-->
    <!--    </update>-->

    <select id="onlineUsers" resultType="long">
        SELECT
        distinct t1.user_id
        FROM
        (
        SELECT
        user_id,
        opr_type,
        max( create_date ) AS time1
        FROM
        opr_mem_dict
        WHERE
        DATE_FORMAT( create_date, '%Y-%m-%d ' ) = DATE_FORMAT( now(), '%Y-%m-%d ' )
        AND result = 1
        AND opr_type = "登录"
        and delete_date IS NULL
        GROUP BY
        user_id
        ORDER BY
        create_date DESC
        ) t1
        LEFT JOIN (
        SELECT
        user_id,
        opr_type,
        max( create_date ) AS time2
        FROM
        opr_mem_dict
        WHERE
        DATE_FORMAT( create_date, '%Y-%m-%d ' ) = DATE_FORMAT( now(), '%Y-%m-%d ' )
        AND result = 1
        AND opr_type = "登出"
        and delete_date is null
        GROUP BY
        user_id
        ORDER BY
        create_date DESC
        ) t2 ON t1.user_id = t2.user_id
        WHERE
         t2.time2 &lt; t1.time1
    </select>

    <select id="insertLastStudyRecord" resultType="com.subsidy.vo.opr.InsertLastStudyRecordVO">
      SELECT
     t1.member_id,
     t1.sign_in_date,
     t1.ip_address,
     DATE_ADD(t2.mt,INTERVAL FLOOR(RAND()*100) SECOND) as mt
 FROM
     (
     SELECT DISTINCT
         t.sign_in_date,
         t.member_id,
         t.ip_address
     FROM
         sign_in_record t
     WHERE
         t.delete_date IS NULL
     AND DATE_FORMAT( t.sign_in_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )) t1
     LEFT JOIN (
     SELECT
         t1.member_id,
         max( t1.maxtime ) AS mt
     FROM
         (
         SELECT
             member_id,
             max( create_date ) AS maxtime
         FROM
             vod_play_history
         WHERE
             delete_date IS NULL
             AND DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
         GROUP BY
             member_id UNION ALL
         SELECT
             member_id,
             max( create_date ) AS maxtime
         FROM
             exercise_done_result
         WHERE
             delete_date IS NULL
             AND DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
         GROUP BY
             member_id UNION ALL
         SELECT
             ask_id,
             max( create_date ) AS maxtime
         FROM
             answering_question
         WHERE
             delete_date IS NULL
             AND DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
         GROUP BY
             ask_id UNION ALL
      SELECT member_id,
            max( create_date ) AS maxtime
     from
         activity_detection
     where delete_date is null
     and DATE_FORMAT( create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
     GROUP BY member_id
         ) t1
     GROUP BY
     t1.member_id
     ) t2 ON t1.member_id = t2.member_id
    </select>

    <select id="shutdownUser" resultType="long">
        SELECT
        t1.user_id
        FROM
        (
        SELECT
        t.user_id,
        max( t.create_date ) AS log_out
        FROM
        opr_mem_dict t
        WHERE
        t.delete_date IS NULL
        AND DATE_FORMAT( t.create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
        AND t.opr_type = '登出'
        GROUP BY
        t.user_id
        ) t1
        LEFT JOIN (
        SELECT
        t.member_id,
        max( t.create_date ) AS play_time
        FROM
        vod_play_history t
        WHERE
        t.delete_date IS NULL
        AND DATE_FORMAT( t.create_date, '%Y-%m-%d' ) = DATE_FORMAT( now(), '%Y-%m-%d' )
        GROUP BY
        t.member_id
        ) t2 ON t1.user_id = t2.member_id
        WHERE
        t2.member_id IS NOT NULL
        AND t1.log_out &lt; t2.play_time
    </select>

    <insert id="insertOrUpdate">
        insert into opr_mem_dict(user_id,opr_type,result,ip_address,create_date)
        values (#{userId},#{oprType},#{result},#{ipAddress},#{createDate})
        on duplicate key update
        user_id=values(user_id),
        opr_type=values(opr_type),
        result=values(result),
        ip_address=values(ip_address),
        create_date=values(create_date)
    </insert>

    <select id="getLoginInfo" parameterType="long" resultType="com.subsidy.model.OprMemDictDO">
        SELECT
           *
        FROM
            (
            SELECT
                *
            FROM
                opr_mem_dict t
                where t.delete_date is null
                and t.user_id  = #{userId}
                and DATE_FORMAT(t.create_date,'%Y-%m-%d') =DATE_FORMAT(now(), '%Y-%m-%d')
                and TIMESTAMPDIFF(SECOND,t.create_date,now()) &lt;= 300
            ORDER BY
            t.create_date DESC
            LIMIT 5)t2
    </select>

    <select id="clearTodayLoginData" parameterType="long">
        DELETE
        FROM
            opr_mem_dict
        WHERE
            delete_date IS NULL
            AND user_id = #{userId}
            AND DATE_FORMAT( create_date, '%Y-%m-%d' ) = CURRENT_DATE
    </select>

</mapper>