Browse Source

Merge branch 'system-zjy' of uskycloud/usky-cloud into master

gez 2 weeks ago
parent
commit
ae0cd217c5

+ 1 - 1
base-modules/service-file/src/main/java/com/ruoyi/file/controller/FileUpdateInfoController.java

@@ -45,7 +45,7 @@ public class FileUpdateInfoController {
             fileUpdateInfoService.performFileUpdate(id);
             return ApiResult.success("文件更新成功");
         } catch (Exception e) {
-            return ApiResult.error("文件更新失败: " + e.getMessage());
+            return ApiResult.error("文件更新失败" + e.getMessage());
         }
     }
 

+ 105 - 6
base-modules/service-file/src/main/java/com/ruoyi/file/controller/FilesController.java

@@ -6,11 +6,17 @@ import com.ruoyi.file.domain.FilesUpload;
 import com.ruoyi.file.service.FilesService;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.security.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import java.net.URL;
 import java.time.LocalDateTime;
+import java.util.Enumeration;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 
 
 @RestController
@@ -21,17 +27,109 @@ public class FilesController {
     private FilesService filesService;
 
     @PostMapping("/upload")
-    public ApiResult<FileUploadResponse> upload(@RequestParam MultipartFile file) {
-        // 获取上传文件
-        FileUploadResponse response = filesService.upload(file);
+    public ApiResult<FileUploadResponse> upload(@RequestParam MultipartFile file, HttpServletRequest request) {
+        // 打印所有请求头,以便调试
+/*        Enumeration<String> headerNames = request.getHeaderNames();
+        while (headerNames.hasMoreElements()) {
+            String headerName = headerNames.nextElement();
+            String headerValue = request.getHeader(headerName);
+            System.out.println(headerName + ": " + headerValue);
+        }*/
+
+        // 从请求头中获取 userid
+        String useridStr = request.getHeader("user_id");
+
+        Long userid = null; // 初始化为 null
+        if (useridStr != null && !useridStr.isEmpty()) {
+            try {
+                // 尝试将 userid 转换为 Long 类型
+                userid = Long.parseLong(useridStr);
+            } catch (NumberFormatException e) {
+                // 如果转换失败,打印错误信息并保持 userid 为 null
+                System.out.println("无法将 user_id 转换为 Long 类型: " + useridStr);
+            }
+        }
+
+        // 从请求头中获取 username
+        String username = request.getHeader("username");
+
+        // 如果用户名为空或解码失败,设置为“未知用户”
+        if (username == null || username.isEmpty()) {
+            username = "未知用户";
+        } else {
+            try {
+                // 使用 URLDecoder 解码用户名
+                username = URLDecoder.decode(username, StandardCharsets.UTF_8.name());
+            } catch (Exception e) {
+                // 如果解码失败,设置为“未知用户”
+                username = "未知用户";
+            }
+        }
+
+        // 从请求头中获取 referer
+        String referer = request.getHeader("referer");
+        String refererPath = "";
+        if (referer != null && !referer.isEmpty()) {
+            try {
+                // 提取 referer 的路径部分
+                URL url = new URL(referer);
+                refererPath = url.getPath();
+            } catch (Exception e) {
+                System.out.println("无法解析 referer URL: " + referer);
+            }
+        }
+
+        // 打印 referer 路径部分
+//        System.out.println("Referer 路径部分: " + refererPath);
+
+        // 继续处理文件上传逻辑
+        FileUploadResponse response = filesService.upload(file, userid, username, refererPath);
         return ApiResult.success(response);
     }
 
 
     @DeleteMapping("/delete/{id}")
-    public ApiResult<String> delete(@PathVariable Integer id) {
+    public ApiResult<String> delete(@PathVariable Integer id, HttpServletRequest request) {
+        // 打印所有请求头,以便调试
+/*        Enumeration<String> headerNames = request.getHeaderNames();
+        while (headerNames.hasMoreElements()) {
+            String headerName = headerNames.nextElement();
+            String headerValue = request.getHeader(headerName);
+            System.out.println(headerName + ": " + headerValue);
+        }*/
+
+        // 从请求头中获取 userid
+        String useridStr = request.getHeader("user_id");
+
+        Long userid = null; // 初始化为 null
+        if (useridStr != null && !useridStr.isEmpty()) {
+            try {
+                // 尝试将 userid 转换为 Long 类型
+                userid = Long.parseLong(useridStr);
+            } catch (NumberFormatException e) {
+                // 如果转换失败,打印错误信息并保持 userid 为 null
+                System.out.println("无法将 user_id 转换为 Long 类型: " + useridStr);
+            }
+        }
+
+        // 从请求头中获取username
+        String username = request.getHeader("username");
+
+        // 如果用户名为空或解码失败,设置为“未知用户”
+        if (username == null || username.isEmpty()) {
+            username = "未知用户";
+        } else {
+            try {
+                // 使用 URLDecoder 解码用户名
+                username = URLDecoder.decode(username, StandardCharsets.UTF_8.name());
+            } catch (Exception e) {
+                // 如果解码失败,设置为“未知用户”
+                username = "未知用户";
+            }
+        }
+
         try {
-            filesService.deleteFile(id);
+            filesService.deleteFile(id, userid, username);
             return ApiResult.success("删除成功");
         } catch (Exception e) {
             return ApiResult.error("删除失败"); // 删除失败,返回错误信息
@@ -45,11 +143,12 @@ public class FilesController {
             @RequestParam(required = false) LocalDateTime endTime,
             @RequestParam(required = false) Boolean isDeleted,
             @RequestParam(required = false) String fileType,
+            @RequestParam(required = false) String userName,
             @RequestParam int current,
             @RequestParam int size) {
 
         // 调用服务层方法
-        CommonPage<FilesUpload> resultPage = filesService.queryFiles(filesName, startTime, endTime, isDeleted, fileType, current, size);
+        CommonPage<FilesUpload> resultPage = filesService.queryFiles(filesName, startTime, endTime, isDeleted, fileType, userName, current, size);
 
         // 返回封装好的分页结果
         return R.ok(resultPage);

+ 6 - 0
base-modules/service-file/src/main/java/com/ruoyi/file/domain/FilesUpload.java

@@ -26,16 +26,22 @@ public class FilesUpload implements Serializable {
 
     private String url;//下载链接
 
+    private  String refererPath;//引用路径
+
     private Boolean enable;//链接是否可用(1:是 0:否)
 
     private String createBy;//创建者
 
+    private Long createId;//创建者ID
+
     @TableField(fill = FieldFill.INSERT)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;//创建时间
 
     private String updateBy;//更新者
 
+    private Long updateId;//更新者ID
+
     @TableField(fill = FieldFill.INSERT_UPDATE)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;//更新时间

+ 3 - 3
base-modules/service-file/src/main/java/com/ruoyi/file/service/FilesService.java

@@ -9,11 +9,11 @@ import java.time.LocalDateTime;
 
 public interface FilesService extends IService<FilesUpload> {
     // 修改返回类型为 FileUploadResponse
-    FileUploadResponse upload(MultipartFile file);
+    FileUploadResponse upload(MultipartFile file, Long userid, String userName, String refererPath);
 
     // 删除文件
-    void deleteFile(Integer id);
+    void deleteFile(Integer id, Long userid, String userName);
 
     // 查询方法
-    CommonPage<FilesUpload> queryFiles(String filesName, LocalDateTime startTime, LocalDateTime endTime, Boolean isDeleted, String fileType, int current, int size);
+    CommonPage<FilesUpload> queryFiles(String filesName, LocalDateTime startTime, LocalDateTime endTime, Boolean isDeleted, String fileType, String userName, int current, int size);
 }

+ 7 - 7
base-modules/service-file/src/main/java/com/ruoyi/file/service/impl/FileUpdateInfoServiceImpl.java

@@ -129,7 +129,7 @@ public class FileUpdateInfoServiceImpl implements FileUpdateInfoService {
             if (!backupDir.exists()) {
                 boolean created = backupDir.mkdirs();
                 if (!created) {
-                    throw new IOException("无法创建备份目录: " + backupDirPath);
+                    throw new IOException("无法创建备份目录");
                 }
             }
 
@@ -163,11 +163,11 @@ public class FileUpdateInfoServiceImpl implements FileUpdateInfoService {
             controlApplication(fileName, "restart");
 
         } catch (FileNotFoundException e) {
-            throw new Exception("文件未找到: " + localFilePath + ",原因: " + e.getMessage(), e);
+            throw new Exception("原因: " + e.getMessage(), e);
         } catch (IOException e) {
-            throw new Exception("文件写入失败: " + localFilePath + ",原因: " + e.getMessage(), e);
+            throw new Exception("原因: " + e.getMessage(), e);
         } catch (Exception e) {
-            throw new Exception("文件更新失败: " + localFilePath + ",原因: " + e.getMessage(), e);
+            throw new Exception("原因: 远程仓库未找到服务包");
         }
     }
 
@@ -176,10 +176,10 @@ public class FileUpdateInfoServiceImpl implements FileUpdateInfoService {
         Path path = Paths.get(localFilePath);
         try {
             Files.copy(url.openStream(), path, StandardCopyOption.REPLACE_EXISTING);
-            System.out.println("文件下载成功: " + localFilePath);
+            System.out.println("文件下载成功");
         } catch (IOException e) {
-            System.err.println("文件下载失败: " + localFilePath + ",原因: " + e.getMessage());
-            throw new Exception("文件下载失败: " + localFilePath, e);
+            System.err.println("文件下载失败" + ",原因: " + e.getMessage());
+            throw new Exception("文件下载失败");
         }
     }
 

+ 15 - 13
base-modules/service-file/src/main/java/com/ruoyi/file/service/impl/FilesServiceImpl.java

@@ -32,10 +32,10 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
 
 
     @Override
-    public FileUploadResponse upload(MultipartFile file) {
+    public FileUploadResponse upload(MultipartFile file, Long userid, String userName, String refererPath) {
 
         // 获取当前登录用户昵称(如果可用)
-        String userName = SecurityUtils.getUsername();
+//        String userName = SecurityUtils.getUsername();
 
         // 文件夹路径名称
         String originalFilename = file.getOriginalFilename();
@@ -86,8 +86,11 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
             saveFile.setUrl(url);
             saveFile.setEnable(true);
             saveFile.setIsDelete(0);
+            saveFile.setRefererPath(refererPath);
+            saveFile.setCreateId(userid);
             saveFile.setCreateBy(userName);
             saveFile.setCreateTime(LocalDateTime.now());
+            saveFile.setUpdateId(null);
             saveFile.setUpdateBy(null);
             saveFile.setUpdateTime(null);
             // 保存操作
@@ -128,7 +131,7 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
     }
 
     @Override
-    public void deleteFile(Integer id) {
+    public void deleteFile(Integer id, Long userid, String userName) {
         try {
             // 根据 id 查询文件信息
             FilesUpload file = getById(id);
@@ -156,9 +159,12 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
             updateFile.setUrl(file.getUrl());
             updateFile.setEnable(false);
             updateFile.setIsDelete(1); // 设置为已删除
+            updateFile.setRefererPath(file.getRefererPath());
+            updateFile.setCreateId(file.getCreateId());
             updateFile.setCreateBy(file.getCreateBy());
             updateFile.setCreateTime(file.getCreateTime()); // 保留原始的 createTime
-            updateFile.setUpdateBy(file.getUpdateBy());
+            updateFile.setUpdateId(userid);
+            updateFile.setUpdateBy(userName);
             updateFile.setUpdateTime(LocalDateTime.now());
 
             // 提交更新到数据库
@@ -169,7 +175,7 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
     }
 
     @Override
-    public CommonPage<FilesUpload> queryFiles(String filesName, LocalDateTime startTime, LocalDateTime endTime, Boolean isDeleted, String fileType, int current, int size) {
+    public CommonPage<FilesUpload> queryFiles(String filesName, LocalDateTime startTime, LocalDateTime endTime, Boolean isDeleted, String fileType, String userName, int current, int size) {
         QueryWrapper<FilesUpload> queryWrapper = new QueryWrapper<>();
 
         // 默认查询未删除的文件
@@ -196,6 +202,10 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
             queryWrapper.eq("type", fileType);
         }
 
+        if (userName != null && !userName.isEmpty()) {
+            queryWrapper.like("create_by", userName);
+        }
+
         // 按照创建时间倒序排列
         queryWrapper.orderByDesc("create_time");
 
@@ -215,12 +225,4 @@ public class FilesServiceImpl extends ServiceImpl<FilesMapper, FilesUpload> impl
         return commonPage;
     }
 
-    private String getUserNameFromSecurityContext() {
-        try {
-            return SecurityUtils.getUsername();
-        } catch (Exception e) {
-            // 如果无法获取用户信息,记录日志并返回默认值或抛出自定义异常
-            return "未知用户";
-        }
-    }
 }