<?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="cn.iocoder.yudao.module.system.dal.mysql.downloadLog.DownloadLogMapper">
    <!--
        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
     -->


    <select id="list" resultType="cn.iocoder.yudao.module.system.dal.dataobject.downloadLog.DownloadLogDO">
        select
        sdl.id,
        sdl.`temporary_file`,
        sdl.`name`,
        sdl.`business_no`,
        sdl.`file_name`,
        sdl.`file_suffix`,
        sdl.`type`,
        sdl.`download_url`,
        sdl.`status`,
        sdl.result,
        sdl.num,
        sdl.down_num,
        sdl.create_time,
        sdl.update_time
        from system_download_log sdl
        where sdl.`deleted` = 0
        <if test="query.status != null">
            AND sdl.`status` = #{query.status}
        </if>
        <if test="query.type != null">
            AND sdl.`type` = #{query.type}
        </if>
        <if test="query.userId != null">
            AND sdl.`user_id` = #{query.userId}
        </if>
        <if test="query.userType != null">
            AND sdl.`user_type` = #{query.userType}
        </if>
        <if test="query.name != null and query.name != '' ">
            AND sdl.`name` like("%", #{query.name}, "%")
        </if>
        <if test="query.businessNo != null and query.businessNo != '' ">
            AND sdl.`business_no` like("%", #{query.businessNo}, "%")
        </if>
        <if test="query.fileName != null and query.fileName != '' ">
            AND sdl.`file_name` like("%", #{query.fileName}, "%")
        </if>
        <if test="query.fileSuffix != null and query.fileSuffix != '' ">
            AND sdl.`file_suffix` = #{query.fileSuffix}
        </if>
        <if test="query.beginCreateTime != null and query.endCreateTime != null ">
            AND sdl.`create_time` between #{query.beginCreateTime} and #{query.endCreateTime}
        </if>
        order by sdl.id desc
        limit #{start}, #{size}
    </select>

    <select id="count" resultType="long">
        select
        count(1)
        from system_download_log sdl
        where sdl.`deleted` = 0
        <if test="query.status != null">
            AND sdl.`status` = #{query.status}
        </if>
        <if test="query.type != null">
            AND sdl.`type` = #{query.type}
        </if>
        <if test="query.userId != null">
            AND sdl.`user_id` = #{query.userId}
        </if>
        <if test="query.userType != null">
            AND sdl.`user_type` = #{query.userType}
        </if>
        <if test="query.name != null and query.name != '' ">
            AND sdl.`name` like("%", #{query.name}, "%")
        </if>
        <if test="query.businessNo != null and query.businessNo != '' ">
            AND sdl.`business_no` like("%", #{query.businessNo}, "%")
        </if>
        <if test="query.fileName != null and query.fileName != '' ">
            AND sdl.`file_name` like("%", #{query.fileName}, "%")
        </if>
        <if test="query.fileSuffix != null and query.fileSuffix != '' ">
            AND sdl.`file_suffix` = #{query.fileSuffix}
        </if>
        <if test="query.beginCreateTime != null and query.endCreateTime != null ">
            AND sdl.`create_time` between #{query.beginCreateTime} and #{query.endCreateTime}
        </if>
    </select>

    <select id="markCount" resultType="cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserMarkVO">
        select
           IFNULL(sum(if(sdl.`status` = 0, 1, 0)), 0) as file_make_queuing_count,
           IFNULL(sum(if(sdl.`status` = 1, 1, 0)), 0) as file_make_Progress_count,
           IFNULL(sum(if(sdl.`status` = 2 and sdl.`down_num` = 0, 1, 0)), 0) as file_wait_down_count
        from system_download_log sdl
        where sdl.`deleted` = 0
        and sdl.user_type = #{userType}
        and sdl.user_id = #{userId}
    </select>
</mapper>