From d79daa5f520947f63a92791012de0f8e18f76850 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 06 三月 2026 16:05:04 +0800
Subject: [PATCH] feat: 附件上传无ID接口及根据ID集合查询信息

---
 src/main/java/com/ruoyi/basic/controller/CustomerFollowUpController.java    |   25 +++++++
 src/main/java/com/ruoyi/basic/service/CustomerFollowUpService.java          |   10 ++
 src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpServiceImpl.java |   62 ++++++++++++++++++--
 src/main/java/com/ruoyi/basic/dto/CustomerFollowUpFileDto.java              |   26 ++++++++
 4 files changed, 111 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/controller/CustomerFollowUpController.java b/src/main/java/com/ruoyi/basic/controller/CustomerFollowUpController.java
index d863c8a..2b70438 100644
--- a/src/main/java/com/ruoyi/basic/controller/CustomerFollowUpController.java
+++ b/src/main/java/com/ruoyi/basic/controller/CustomerFollowUpController.java
@@ -15,6 +15,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+import com.ruoyi.basic.dto.CustomerFollowUpFileDto;
+import com.ruoyi.common.utils.SecurityUtils;
 
 import java.util.List;
 
@@ -86,8 +88,27 @@
     @PostMapping("/upload/{followUpId}")
     @Log(title = "瀹㈡埛璺熻繘-涓婁紶闄勪欢", businessType = BusinessType.INSERT)
     public AjaxResult uploadFiles(@RequestParam("files") List<MultipartFile> files, @PathVariable Integer followUpId) {
-        customerFollowUpService.addFollowUpFiles(files, followUpId);
-        return AjaxResult.success();
+        return AjaxResult.success(customerFollowUpService.addFollowUpFiles(files, followUpId));
+    }
+
+    /**
+     * 涓婁紶璺熻繘闄勪欢锛堝鐢紝鏃營D锛�
+     */
+    @ApiOperation("涓婁紶闄勪欢(澶嶇敤)")
+    @PostMapping("/upload")
+    @Log(title = "涓婁紶闄勪欢(澶嶇敤)", businessType = BusinessType.INSERT)
+    public AjaxResult uploadFiles(@RequestParam("files") List<MultipartFile> files, @RequestParam(required = false) String name) {
+        List<CustomerFollowUpFileDto> uploadedFiles = customerFollowUpService.addFollowUpFiles(files, null);
+        return AjaxResult.success(uploadedFiles);
+    }
+
+    /**
+     * 鎵归噺鏌ヨ闄勪欢鍒楄〃
+     */
+    @ApiOperation("鎵归噺鏌ヨ闄勪欢鍒楄〃")
+    @PostMapping("/file/list")
+    public AjaxResult getFileList(@RequestBody List<Long> ids) {
+        return AjaxResult.success(customerFollowUpService.getFollowUpFilesByIds(ids));
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/basic/dto/CustomerFollowUpFileDto.java b/src/main/java/com/ruoyi/basic/dto/CustomerFollowUpFileDto.java
new file mode 100644
index 0000000..1440428
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/CustomerFollowUpFileDto.java
@@ -0,0 +1,26 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.pojo.CustomerFollowUpFile;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 瀹㈡埛璺熻繘闄勪欢DTO
+ * 
+ * @author deslrey
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CustomerFollowUpFileDto extends CustomerFollowUpFile {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婁紶鑰呭鍚�
+     */
+    private String createUserName;
+
+    /**
+     * 淇敼鑰呭鍚�
+     */
+    private String updateUserName;
+}
diff --git a/src/main/java/com/ruoyi/basic/service/CustomerFollowUpService.java b/src/main/java/com/ruoyi/basic/service/CustomerFollowUpService.java
index 25b5809..561ef33 100644
--- a/src/main/java/com/ruoyi/basic/service/CustomerFollowUpService.java
+++ b/src/main/java/com/ruoyi/basic/service/CustomerFollowUpService.java
@@ -3,7 +3,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.basic.dto.CustomerFollowUpDto;
 import com.ruoyi.basic.pojo.CustomerFollowUp;
-import org.springframework.transaction.annotation.Transactional;
+import com.ruoyi.basic.dto.CustomerFollowUpFileDto;
+import com.ruoyi.basic.pojo.CustomerFollowUpFile;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -41,7 +42,7 @@
     /**
      * 娣诲姞璺熻繘闄勪欢
      */
-    void addFollowUpFiles(List<MultipartFile> files, Integer followUpId);
+    List<CustomerFollowUpFileDto> addFollowUpFiles(List<MultipartFile> files, Integer followUpId);
 
     /**
      * 鍒犻櫎璺熻繘闄勪欢
@@ -49,6 +50,11 @@
     void deleteFollowUpFile(Integer fileId);
 
     /**
+     * 鏍规嵁闄勪欢ID闆嗗悎鑾峰彇闄勪欢鍒楄〃
+     */
+    List<CustomerFollowUpFile> getFollowUpFilesByIds(List<Long> fileIds);
+
+    /**
      * 鑾峰彇璺熻繘璇︽儏
      */
     CustomerFollowUpDto getFollowUpWithFiles(Integer id);
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpServiceImpl.java
index 9f452ac..4fd252c 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerFollowUpServiceImpl.java
@@ -8,10 +8,12 @@
 import com.ruoyi.basic.pojo.CustomerFollowUpFile;
 import com.ruoyi.basic.service.CustomerFollowUpFileService;
 import com.ruoyi.basic.service.CustomerFollowUpService;
-import com.ruoyi.basic.service.ICustomerService;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.basic.dto.CustomerFollowUpFileDto;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
 
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.beans.BeanUtils;
@@ -28,7 +30,6 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
@@ -49,6 +50,9 @@
 
     @Value("${file.upload-dir}")
     private String uploadDir;
+
+    @Autowired
+    private ISysUserService sysUserService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -78,8 +82,8 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void addFollowUpFiles(List<MultipartFile> files, Integer followUpId) {
-        handleFollowUpFiles(files, followUpId);
+    public List<CustomerFollowUpFileDto> addFollowUpFiles(List<MultipartFile> files, Integer followUpId) {
+        return handleFollowUpFiles(files, followUpId);
     }
 
     @Override
@@ -136,14 +140,27 @@
         }
     }
 
-    private void handleFollowUpFiles(List<MultipartFile> multipartFiles, Integer followUpId) {
+    @Override
+    public List<CustomerFollowUpFile> getFollowUpFilesByIds(List<Long> fileIds) {
+        if (fileIds == null || fileIds.isEmpty()) {
+            return new ArrayList<>(0);
+        }
+
+        LambdaQueryWrapper<CustomerFollowUpFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(CustomerFollowUpFile::getId, fileIds)
+                .select(CustomerFollowUpFile::getId, CustomerFollowUpFile::getFileUrl, CustomerFollowUpFile::getFileName);
+        return customerFollowUpFileService.list(queryWrapper);
+    }
+
+    private List<CustomerFollowUpFileDto> handleFollowUpFiles(List<MultipartFile> multipartFiles, Integer followUpId) {
+        List<CustomerFollowUpFile> fileList = new ArrayList<>();
+        List<CustomerFollowUpFileDto> dtoList = new ArrayList<>();
         if (multipartFiles == null || multipartFiles.isEmpty()) {
-            return;
+            return dtoList;
         }
 
         Long currentUserId = SecurityUtils.getUserId();
         Long currentTenantId = SecurityUtils.getLoginUser().getTenantId();
-        List<CustomerFollowUpFile> fileList = new ArrayList<>();
 
         for (MultipartFile file : multipartFiles) {
             if (file == null || file.isEmpty()) {
@@ -159,7 +176,8 @@
 
                 String originalFilename = file.getOriginalFilename();
                 String fileExtension = FilenameUtils.getExtension(originalFilename);
-                String formalFilename = followUpId + "_" +
+                String prefix = (followUpId != null) ? followUpId.toString() : "temp";
+                String formalFilename = prefix + "_" +
                         System.currentTimeMillis() + "_" +
                         UUID.randomUUID().toString().substring(0, 8) +
                         (StringUtils.hasText(fileExtension) ? "." + fileExtension : "");
@@ -184,7 +202,35 @@
         }
         if (!fileList.isEmpty()) {
             customerFollowUpFileService.saveBatch(fileList);
+            return convertToDtoList(fileList);
         }
+        return dtoList;
+    }
+
+    private List<CustomerFollowUpFileDto> convertToDtoList(List<CustomerFollowUpFile> fileList) {
+        List<CustomerFollowUpFileDto> dtoList = new ArrayList<>();
+        if (fileList == null || fileList.isEmpty()) {
+            return dtoList;
+        }
+        for (CustomerFollowUpFile entity : fileList) {
+            CustomerFollowUpFileDto dto = new CustomerFollowUpFileDto();
+            BeanUtils.copyProperties(entity, dto);
+
+            if (entity.getCreateUser() != null) {
+                SysUser createUser = sysUserService.selectUserById(entity.getCreateUser());
+                if (createUser != null) {
+                    dto.setCreateUserName(createUser.getNickName());
+                }
+            }
+            if (entity.getUpdateUser() != null) {
+                SysUser updateUser = sysUserService.selectUserById(entity.getUpdateUser());
+                if (updateUser != null) {
+                    dto.setUpdateUserName(updateUser.getNickName());
+                }
+            }
+            dtoList.add(dto);
+        }
+        return dtoList;
     }
 
     private void validateFollowUp(CustomerFollowUp followUp) {

--
Gitblit v1.9.3