From 40934da83d6c4e2ecbabb521b8bb54a903070e7c Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 23 Sep 2023 16:48:12 +0800
Subject: [PATCH] 媒体文件添加条件查询

---
 src/main/java/com/dji/sample/media/dao/IFileMapper.xml               |   37 ++++++++++++++++++
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java |   17 +++++---
 src/main/java/com/dji/sample/media/model/MediaFileQueryParam.java    |   31 +++++++++++++++
 src/main/java/com/dji/sample/media/controller/FileController.java    |    9 +++-
 src/main/java/com/dji/sample/media/service/IFileService.java         |    3 +
 src/main/java/com/dji/sample/media/dao/IFileMapper.java              |    4 ++
 6 files changed, 91 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/dji/sample/media/controller/FileController.java b/src/main/java/com/dji/sample/media/controller/FileController.java
index 8a378f5..aaa400d 100644
--- a/src/main/java/com/dji/sample/media/controller/FileController.java
+++ b/src/main/java/com/dji/sample/media/controller/FileController.java
@@ -3,6 +3,7 @@
 import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.common.model.ResponseResult;
 import com.dji.sample.media.model.MediaFileDTO;
+import com.dji.sample.media.model.MediaFileQueryParam;
 import com.dji.sample.media.service.IFileService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -25,14 +26,16 @@
 
     /**
      * Get information about all the media files in this workspace based on the workspace id.
+     * 根据工作空间id获取有关此工作空间中所有媒体文件的信息。
      * @param workspaceId
      * @return
      */
     @GetMapping("/{workspace_id}/files")
     public ResponseResult<PaginationData<MediaFileDTO>> getFilesList(@RequestParam(defaultValue = "1") Long page,
-                               @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
-                               @PathVariable(name = "workspace_id") String workspaceId) {
-        PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize);
+                                                                     @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
+                                                                     @PathVariable(name = "workspace_id") String workspaceId,
+                                                                     MediaFileQueryParam mediaFileQueryParam) {
+        PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize,mediaFileQueryParam);
         return ResponseResult.success(filesList);
     }
 
diff --git a/src/main/java/com/dji/sample/media/dao/IFileMapper.java b/src/main/java/com/dji/sample/media/dao/IFileMapper.java
index ec01af1..6b39bd5 100644
--- a/src/main/java/com/dji/sample/media/dao/IFileMapper.java
+++ b/src/main/java/com/dji/sample/media/dao/IFileMapper.java
@@ -1,7 +1,10 @@
 package com.dji.sample.media.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dji.sample.media.model.MediaFileEntity;
+import com.dji.sample.media.model.MediaFileQueryParam;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author sean
@@ -9,4 +12,5 @@
  * @date 2021/12/9
  */
 public interface IFileMapper extends BaseMapper<MediaFileEntity> {
+    Page<MediaFileEntity> getPage(@Param("page") Page<MediaFileEntity> mediaFileEntityPage, @Param("workspaceId") String workspaceId,@Param("query") MediaFileQueryParam mediaFileQueryParam);
 }
diff --git a/src/main/java/com/dji/sample/media/dao/IFileMapper.xml b/src/main/java/com/dji/sample/media/dao/IFileMapper.xml
new file mode 100644
index 0000000..7bafea2
--- /dev/null
+++ b/src/main/java/com/dji/sample/media/dao/IFileMapper.xml
@@ -0,0 +1,37 @@
+<?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.dji.sample.media.dao.IFileMapper">
+
+
+    <select id="getPage" resultType="com.dji.sample.media.model.MediaFileEntity">
+
+    SELECT * FROM media_file WHERE workspace_id = #{workspaceId}
+
+        <if test="query.startTime !=null and query.endTime !=null">
+            AND DATE_FORMAT(FROM_UNIXTIME(create_time/1000,'%Y-%m-%d'),'%Y-%m-%d')  &gt;=  DATE_FORMAT(#{query.startTime},'%Y-%m-%d')
+        </if>
+
+        <if test="query.endTime !=null and query.endTime !=null">
+            AND DATE_FORMAT(FROM_UNIXTIME(create_time/1000,'%Y-%m-%d'),'%Y-%m-%d')   &lt;= DATE_FORMAT(#{query.endTime},'%Y-%m-%d')
+        </if>
+
+        <if test="query.name !=null and query.name !=null">
+            AND file_name LIKE CONCAT('%',#{query.name},'%')
+        </if>
+
+        <if test="query.fileSubType != null and query.fileSubType !='' ">
+            AND sub_file_type in
+            <foreach collection="query.fileSubType.split(',')" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        <if test="query.payload != null and query.payload !='' ">
+            AND sub_file_type in
+            <foreach collection="query.payload.split(',')" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+    </select>
+</mapper>
diff --git a/src/main/java/com/dji/sample/media/model/MediaFileQueryParam.java b/src/main/java/com/dji/sample/media/model/MediaFileQueryParam.java
new file mode 100644
index 0000000..02da8f2
--- /dev/null
+++ b/src/main/java/com/dji/sample/media/model/MediaFileQueryParam.java
@@ -0,0 +1,31 @@
+package com.dji.sample.media.model;
+
+/**
+ * 文件查询参数
+ */
+public class MediaFileQueryParam {
+    /**
+     * 文件类型(逗号分隔字符串)
+     */
+    private String subFileType;
+
+    /**
+     * 负载类型(逗号分隔字符串)
+     */
+    private String payload;
+
+    /**
+     * 文件名
+     */
+    private String name;
+
+    //开始时间
+    private String startTime;
+
+    //结束时间
+    private String endTime;
+
+
+
+
+}
diff --git a/src/main/java/com/dji/sample/media/service/IFileService.java b/src/main/java/com/dji/sample/media/service/IFileService.java
index d3fd9c8..f3577a6 100644
--- a/src/main/java/com/dji/sample/media/service/IFileService.java
+++ b/src/main/java/com/dji/sample/media/service/IFileService.java
@@ -3,6 +3,7 @@
 import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.media.model.FileUploadDTO;
 import com.dji.sample.media.model.MediaFileDTO;
+import com.dji.sample.media.model.MediaFileQueryParam;
 
 import java.net.URL;
 import java.util.List;
@@ -44,7 +45,7 @@
      * @param pageSize
      * @return
      */
-    PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize);
+    PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize, MediaFileQueryParam mediaFileQueryParam);
 
     /**
      * Get the download address of the file.
diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index 6d73a24..497ad84 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -13,7 +13,9 @@
 import com.dji.sample.media.model.FileUploadDTO;
 import com.dji.sample.media.model.MediaFileDTO;
 import com.dji.sample.media.model.MediaFileEntity;
+import com.dji.sample.media.model.MediaFileQueryParam;
 import com.dji.sample.media.service.IFileService;
+import com.dji.sample.wayline.model.entity.WaylineJobEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -83,12 +85,15 @@
     }
 
     @Override
-    public PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize) {
-        Page<MediaFileEntity> pageData = mapper.selectPage(
-                new Page<MediaFileEntity>(page, pageSize),
-                new LambdaQueryWrapper<MediaFileEntity>()
-                        .eq(MediaFileEntity::getWorkspaceId, workspaceId)
-                        .orderByDesc(MediaFileEntity::getId));
+    public PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize, MediaFileQueryParam mediaFileQueryParam) {
+//        Page<MediaFileEntity> pageData = mapper.selectPage(
+//                new Page<MediaFileEntity>(page, pageSize),
+//                new LambdaQueryWrapper<MediaFileEntity>()
+//                        .eq(MediaFileEntity::getWorkspaceId, workspaceId)
+//                        .orderByDesc(MediaFileEntity::getId));
+
+        Page<MediaFileEntity> pageData = mapper.getPage(new Page<MediaFileEntity>(page, pageSize),workspaceId,mediaFileQueryParam);
+
         List<MediaFileDTO> records = pageData.getRecords()
                 .stream()
                 .map(this::entityConvertToDto)

--
Gitblit v1.9.3