Blame view

VodPlayHistoryMapper.xml 4.27 KB
涂亚平 committed
1 2 3 4 5 6
<?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.VodPlayHistoryMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.subsidy.model.VodPlayHistoryDO">
涂亚平 committed
7 8 9 10 11 12 13 14 15
        <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="class_id" property="classId"/>
        <result column="vod_id" property="vodId"/>
        <result column="member_id" property="memberId"/>
        <result column="play_length" property="playLength"/>
        <result column="play_record" property="playRecord"/>
涂亚平 committed
16 17 18 19 20 21 22 23 24
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        create_date,
        update_date,
        delete_date,
        id, class_id, vod_id, member_id, play_length, play_record
    </sql>
邓敏 committed
25 26 27 28
    <delete id="deleteById">
        delete from vod_play_history
        where id = #{id}
    </delete>
涂亚平 committed
29

涂亚平 committed
30
    <select id="studyHistory" parameterType="long" resultType="com.subsidy.vo.vod.StudyHistoryVO">
涂亚平 committed
31 32 33 34 35 36
        SELECT
            t2.id,
            t2.vod_length,
            t2.teacher_name,
            t2.vod_url,
            t2.vod_name,
涂亚平 committed
37
            t3.play_record,
38 39
            round( t3.play_record * 100 / t2.vod_length, 0 ) AS percent,
            t.playDate
涂亚平 committed
40 41 42 43
        FROM
            (
            SELECT
                t.vod_id,
涂亚平 committed
44 45
                t.member_id,
                max( t.create_date ) AS playDate
涂亚平 committed
46 47 48 49 50 51
            FROM
                vod_play_history t
            WHERE
                t.delete_date IS NULL
                AND t.member_id = #{memberId}
            GROUP BY
涂亚平 committed
52 53
                t.vod_id,
                t.member_id
涂亚平 committed
54
            ) t
涂亚平 committed
55 56 57
            LEFT JOIN vod_play_history t3 ON t.playDate = t3.create_date
            AND t.vod_id = t3.vod_id
            AND t.member_id = t3.member_id
涂亚平 committed
58 59 60
            LEFT JOIN vod_dict t2 ON t.vod_id = t2.id
        WHERE
            t2.delete_date IS NULL
61
        order by t.playDate desc
涂亚平 committed
62 63
    </select>

涂亚平 committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
    <select id="getMemberStudyInfo" resultType="com.subsidy.vo.vod.GetMemberStudyInfoVO">
        SELECT
            t.member_id,
            DATE_FORMAT( t.create_date, '%Y-%m-%d' ) as studyDate,
            sum( t.play_length ) as playLength,
            sum(
            IF
                ( t.play_length > t2.vod_length, t2.vod_length, t.play_length )) AS distinctLength
        FROM
            vod_play_history t
        LEFT JOIN vod_dict t2 ON t.vod_id = t2.id
        WHERE
            t.delete_date IS NULL
        AND t2.delete_date IS NULL
        AND t.class_id = #{classId}
        AND t.member_id IN
        <foreach collection="memberIds" item="id" index="index" open="(" close=")" separator=",">
            #{id}
        </foreach>
            AND DATE_FORMAT( t.create_date, '%Y-%m-%d' ) BETWEEN DATE_FORMAT( #{startDate}, '%Y-%m-%d' )
            AND DATE_FORMAT( #{endDate}, '%Y-%m-%d' )
            GROUP BY
            t.member_id,
            DATE_FORMAT( t.create_date, '%Y-%m-%d' )
    </select>

邓敏 committed
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
    <select id="getVodPlayHistory" resultType="com.subsidy.model.VodPlayHistoryDO">
        SELECT
            a.member_id,
            a.class_id,
            a.vod_id,
            a.play_length,
            a.play_count,
            b.play_record
        FROM
            ( SELECT sum( play_length ) as play_length, sum( play_count ) as play_count, member_id, class_id, vod_id FROM vod_play_history GROUP BY member_id, class_id, vod_id ) a
                LEFT JOIN ( SELECT max( create_date ), play_record, member_id, class_id, vod_id FROM vod_play_history GROUP BY member_id, class_id, vod_id ) b ON a.member_id = b.member_id
                AND a.class_id = b.class_id
                AND a.vod_id = b.vod_id
    </select>

涂亚平 committed
105 106 107 108 109 110 111 112 113 114 115
    <select id="memberDailyStudyLength" parameterType="long" resultType="integer">
        SELECT
            	ifnull( sum( t.play_length ), 0 )
        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' )
            AND t.member_id = #{memberId}
    </select>

涂亚平 committed
116
</mapper>