peng
6 天以前 745af316b6f14cc97f6cb64d56eda4cb68960c3e
framework/src/main/resources/mapper/lmk/VideoMapper.xml
@@ -11,8 +11,57 @@
        <result column="video_file_key" property="videoFileKey" />
        <result column="video_fit" property="videoFit" />
        <result column="title" property="title" />
        <result column="goods_id" property="goodsId" />
        <result column="video_duration" property="videoDuration" />
        <result column="recommend" property="recommend" />
        <result column="status" property="status" />
        <result column="play_num" property="playNum" />
        <result column="collect_num" property="collectNum" />
        <result column="comment_num" property="commentNum" />
        <result column="weight" property="weight" />
        <result column="audit_pass_time" property="auditPassTime" />
        <result column="update_time" property="updateTime" />
        <result column="video_content_type" property="videoContentType" />
        <result column="video_type" property="videoType" />
        <result column="video_imgs" property="videoImgs" />
        <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/>
    </resultMap>
    <resultMap id="VideoGoodsMap" type="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO">
        <result column="goods_id" property="goodsId"/>
        <result column="goods_num" property="goodsNum"/>
        <result column="goods_name" property="goodsName"/>
        <result column="thumbnail" property="thumbnail"/>
        <result column="price" property="price"/>
    </resultMap>
    <select id="getVideoGoods" parameterType="string" resultMap="VideoGoodsMap">
        SELECT
               LVG.goods_id,
               LVG.goods_num,
               LVG.order_num,
               LG.goods_name,
               LG.thumbnail,
               LG.price
        FROM
             lmk_video_goods LVG
             INNER JOIN li_goods LG ON LVG.goods_id = LG.id AND LG.market_enable = 'UPPER' AND LG.delete_flag = 0
        WHERE
             LVG.video_id = #{id} AND LVG.delete_flag = 0
        ORDER BY
            LVG.order_num ASC
    </select>
    <!-- 通用查询映射结果 -->
    <resultMap id="KitchenVideoMap" type="cn.lili.modules.lmk.domain.vo.KitchenVideoVO">
        <id column="id" property="id"/>
        <result column="author_id" property="authorId" />
        <result column="authorName" property="authorName" />
        <result column="cover_url" property="coverUrl" />
        <result column="video_file_key" property="videoFileKey" />
        <result column="video_fit" property="videoFit" />
        <result column="title" property="title" />
        <result column="goods_view_num" property="goodsViewNum" />
        <result column="video_duration" property="videoDuration" />
        <result column="goods_order_num" property="goodsOrderNum" />
        <result column="recommend" property="recommend" />
        <result column="status" property="status" />
@@ -22,6 +71,9 @@
        <result column="weight" property="weight" />
        <result column="audit_pass_time" property="auditPassTime" />
        <result column="update_time" property="updateTime" />
        <result column="video_content_type" property="videoContentType" />
        <result column="video_type" property="videoType" />
        <result column="video_imgs" property="videoImgs" />
    </resultMap>
    <!-- 微信推荐视频 -->
@@ -30,12 +82,17 @@
        <result column="author_id" property="authorId" />
        <result column="authorName" property="authorName" />
        <result column="authorAvatar" property="authorAvatar" />
        <result column="cover_url" property="coverUrl" />
        <result column="cover_url" property="coverFileKey" />
        <result column="video_file_key" property="videoFileKey" />
        <result column="video_fit" property="videoFit" />
        <result column="title" property="title" />
        <result column="collect_num" property="collectNum" />
        <result column="comment_num" property="commentNum" />
        <result column="status" property="status" />
        <result column="video_content_type" property="videoContentType" />
        <result column="video_type" property="videoType" />
        <result column="video_imgs" property="videoImgs" />
        <collection property="goodsList" column="id" select="getVideoGoods" ofType="cn.lili.modules.lmk.domain.vo.VideoGoodsDetailVO"/>
    </resultMap>
@@ -44,9 +101,9 @@
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_id,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
@@ -57,6 +114,9 @@
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LM.nick_name as authorName
        FROM
@@ -72,21 +132,24 @@
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_id,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.collect_num,
            LV.comment_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LM.nick_name as authorName,
            (SELECT COUNT(*) FROM lmk_my_collect WHERE ref_id = LV.id AND collect_type = 'video' AND delete_flag = 0) as collect_num
            LM.nick_name as authorName
        FROM
            lmk_video LV
                LEFT JOIN li_member LM ON LV.author_id = LM.id
@@ -100,21 +163,24 @@
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_id,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.collect_num,
            LV.comment_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LM.nick_name as authorName,
            (SELECT COUNT(*) FROM lmk_my_collect WHERE ref_id = LV.id AND collect_type = 'video' AND delete_flag = 0) as collect_num
            LM.nick_name as authorName
        FROM
            lmk_video LV
                LEFT JOIN li_member LM ON LV.author_id = LM.id
@@ -127,7 +193,7 @@
                ) AS LVT ON LV.id = LVT.video_id
            </if>
        WHERE
            LV.delete_flag = 0
            LV.delete_flag = 0 AND LV.video_type = #{query.videoType}
            <if test="query.title != null and query.title != ''">AND LV.title LIKE CONCAT('%', #{query.title}, '%')</if>
            <if test="query.authorId != null and query.authorId != ''">AND LV.author_id = #{query.authorId}</if>
            <if test="query.status != null and query.status != ''">AND LV.status = #{query.status}</if>
@@ -139,27 +205,61 @@
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_id,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.comment_num,
            LV.collect_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LM.nick_name as authorName,
            LM.face as authorAvatar,
            (SELECT COUNT(*) FROM lmk_my_collect WHERE ref_id = LV.id AND collect_type = 'video' AND delete_flag = 0) as collect_num
            LM.face as authorAvatar
        FROM
            lmk_video LV
            LEFT JOIN li_member LM ON LV.author_id = LM.id
        WHERE
            LV.delete_flag = 0 AND LV.status = '1'
            LV.delete_flag = 0 AND LV.status = '1' AND LV.video_type = #{query.videoType}
    </select>
    <select id="recommendHealthVideo" resultMap="WxResultMap">
        SELECT
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.comment_num,
            LV.collect_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LAU.nick_name AS authorName,
            LAU.avatar AS authorAvatar
        FROM
            lmk_video LV
            LEFT JOIN li_admin_user LAU ON LV.author_id = LAU.id
        WHERE
            LV.delete_flag = 0 AND LV.status = '1' AND LV.video_type = #{query.videoType}
        AND LV.video_content_type = 'video'
    </select>
@@ -167,7 +267,7 @@
        UPDATE lmk_video
        SET collect_num = CASE id
        <foreach collection="list" item="video">
            WHEN #{video.id} THEN #{video.collectNum}
            WHEN #{video.id} THEN #{video.countNum}
        </foreach>
        ELSE collect_num
        END
@@ -177,4 +277,240 @@
        </foreach>
    </update>
    <update id="updateCommentNumBatch">
        UPDATE lmk_video
        SET comment_num = CASE id
        <foreach collection="list" item="video">
            WHEN #{video.id} THEN #{video.countNum}
        </foreach>
        ELSE comment_num
        END
        WHERE id IN
        <foreach collection="list" item="video" open="(" separator="," close=")">
            #{video.id}
        </foreach>
    </update>
    <select id="getAuthorInfo" resultType="cn.lili.modules.lmk.domain.vo.VideoAccountVO">
        SELECT
               LM.id as userId,
               LM.nick_name as nickName,
               LM.face as avatar,
               LVA.motto,
               (SELECT COUNT(*) FROM lmk_my_subscribe WHERE subscribe_user_id = #{authorId} AND delete_flag = 0) as fansNum,
               (SELECT COUNT(*) FROM lmk_my_subscribe WHERE user_id = #{authorId} AND delete_flag = 0) as subNum,
               (SELECT CASE
                           WHEN id IS NOT NULL THEN 1
                           ELSE 0
                           END
               FROM lmk_my_subscribe WHERE user_id = #{currentUserId} AND subscribe_user_id = #{authorId} AND delete_flag = 0) as hasSub
        FROM
             li_member LM
                 LEFT JOIN lmk_video_account LVA ON LM.id = LVA.user_id
        WHERE
              LM.id = #{authorId} AND LM.delete_flag = 0
    </select>
    <select id="getVideoIdsByAuthor" parameterType="string" resultType="string">
        SELECT id FROM lmk_video WHERE author_id = #{authorId} AND delete_flag = 0 AND status = '1'
    </select>
    <select id="countAuthorVideoCollectNum" resultType="long">
        SELECT COUNT(*) FROM lmk_my_collect WHERE collect_type = 'video' AND delete_flag = 0 AND ref_id IN <foreach
            collection="videoIds" open="(" close=")" separator="," item="videoId">#{videoId}</foreach>
    </select>
    <select id="getAuthorVideoPage" resultMap="WxResultMap">
        SELECT
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.comment_num,
            LV.collect_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LM.nick_name as authorName,
            LM.face as authorAvatar
        FROM
            lmk_video LV
                LEFT JOIN li_member LM ON LV.author_id = LM.id
        WHERE
            LV.delete_flag = 0
            <if test="!query.authorSelf">
                AND LV.status = '1'
            </if>
            AND LV.author_id = #{query.authorId}
            AND LV.video_type = #{query.videoType}
        ORDER BY
            LV.collect_num DESC
    </select>
    <select id="getAuthorCollectVideoPage" resultMap="WxResultMap">
        SELECT
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.comment_num,
            LV.collect_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id,
            LM.nick_name as authorName,
            LM.face as authorAvatar
        FROM
            lmk_my_collect LMC
                INNER JOIN lmk_video LV ON LMC.ref_id = LV.id AND LV.delete_flag = 0 AND LV.status = '1'
                LEFT JOIN li_member LM ON LV.author_id = LM.id
        WHERE
            LMC.delete_flag = 0 AND LMC.user_id = #{query.authorId} AND LMC.collect_type = 'video' AND LV.video_type = #{query.videoType}
        ORDER BY
            LMC.create_time DESC
    </select>
    <!-- 微信视频编辑详情 -->
    <resultMap id="WxEditResultMap" type="cn.lili.modules.lmk.domain.vo.WxEditVideoVO">
        <id column="id" property="id"/>
        <result column="cover_url" property="coverFileKey" />
        <result column="video_file_key" property="videoFileKey" />
        <result column="video_fit" property="videoFit" />
        <result column="title" property="title" />
        <result column="video_duration" property="videoDuration" />
    </resultMap>
    <select id="wxDetail" resultMap="WxEditResultMap">
        SELECT
            LV.author_id,
            LV.cover_url,
            LV.video_fit,
            LV.video_duration,
            LV.video_file_key,
            LV.title,
            LV.goods_view_num,
            LV.goods_order_num,
            LV.recommend,
            LV.status,
            LV.play_num,
            LV.comment_num,
            LV.collect_num,
            LV.weight,
            LV.audit_pass_time,
            LV.update_time,
            LV.video_content_type,
            LV.video_type,
            LV.video_imgs,
            LV.id
        FROM
            lmk_video LV
        WHERE
            LV.delete_flag = 0 AND LV.id = #{id}
    </select>
    <select id="healthPage" resultMap="BaseResultMap">
        SELECT
        LV.author_id,
        LV.cover_url,
        LV.video_fit,
        LV.video_duration,
        LV.video_file_key,
        LV.title,
        LV.goods_view_num,
        LV.goods_order_num,
        LV.recommend,
        LV.status,
        LV.play_num,
        LV.collect_num,
        LV.comment_num,
        LV.weight,
        LV.audit_pass_time,
        LV.update_time,
        LV.video_content_type,
        LV.video_type,
        LV.video_imgs,
        LV.id,
        LM.nick_name as authorName
        FROM
        lmk_video LV
        LEFT JOIN li_member LM ON LV.author_id = LM.id
        <if test="query.tagList != null and query.tagList.size > 0">
            INNER JOIN (
            SELECT DISTINCT video_id
            FROM lmk_video_tag_ref
            WHERE video_tag_id IN
            <foreach collection="query.tagList" open="(" item="tagId" close=")" separator=",">#{tagId}</foreach>
            ) AS LVT ON LV.id = LVT.video_id
        </if>
        WHERE
        LV.delete_flag = 0 AND LV.video_type = #{query.videoType}
        <if test="query.title != null and query.title != ''">AND LV.title LIKE CONCAT('%', #{query.title}, '%')</if>
        <if test="query.authorId != null and query.authorId != ''">AND LV.author_id = #{query.authorId}</if>
        <if test="query.status != null and query.status != ''">AND LV.status = #{query.status}</if>
    </select>
    <select id="kitchenPage" resultMap="KitchenVideoMap">
        SELECT
        LV.author_id,
        LV.cover_url,
        LV.video_fit,
        LV.video_duration,
        LV.video_file_key,
        LV.title,
        LV.goods_view_num,
        LV.goods_order_num,
        LV.recommend,
        LV.status,
        LV.play_num,
        LV.collect_num,
        LV.comment_num,
        LV.weight,
        LV.audit_pass_time,
        LV.update_time,
        LV.video_content_type,
        LV.video_type,
        LV.video_imgs,
        LV.id,
        LM.nick_name as authorName
        FROM
        lmk_video LV
        LEFT JOIN li_member LM ON LV.author_id = LM.id
        <if test="query.typeList != null and query.typeList.size > 0">
            INNER JOIN (
            SELECT DISTINCT video_id
            FROM lmk_kitchen_video_type_ref
            WHERE kitchen_type_id IN
            <foreach collection="query.typeList" open="(" item="tagId" close=")" separator=",">#{tagId}</foreach>
            ) AS LVT ON LV.id = LVT.video_id
        </if>
        WHERE
        LV.delete_flag = 0 AND LV.video_type = #{query.videoType}
        <if test="query.title != null and query.title != ''">AND LV.title LIKE CONCAT('%', #{query.title}, '%')</if>
        <if test="query.authorId != null and query.authorId != ''">AND LV.author_id = #{query.authorId}</if>
        <if test="query.status != null and query.status != ''">AND LV.status = #{query.status}</if>
    </select>
</mapper>