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