feat: tool模块基础crud

This commit is contained in:
2026-01-28 19:50:22 +08:00
parent d7e48dda08
commit 4ab79d3afa
29 changed files with 1150 additions and 101 deletions

View File

@@ -16,23 +16,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import org.nl.common.annotation.CommonLog;
import org.nl.common.pojo.CommonResult;
import org.nl.dev.api.DevConfigApi;
import org.nl.dev.modular.file.entity.DevFile;
import org.nl.dev.modular.file.enums.DevFileEngineTypeEnum;
import org.nl.dev.modular.file.param.DevFileIdParam;
import org.nl.dev.modular.file.param.DevFileListParam;
import org.nl.dev.modular.file.param.DevFilePageParam;
import org.nl.dev.modular.file.param.DevFileUrlListParam;
import org.nl.dev.modular.file.service.DevFileService;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.nl.common.annotation.CommonLog;
import org.nl.common.pojo.CommonResult;
import org.nl.dev.api.DevConfigApi;
import org.nl.dev.modular.file.service.DevFileService;
import java.io.IOException;
import java.util.List;
@@ -262,4 +263,14 @@ public class DevFileController {
public CommonResult<List<DevFile>> getFileListByUrlList(@RequestBody @Valid DevFileUrlListParam devFileUrlListParam) {
return CommonResult.data(devFileService.getFileListByUrlList(devFileUrlListParam));
}
@Operation(summary = "上传文件")
@PostMapping({"/api/localStorage/upload"})
public CommonResult<Object> upload(@RequestParam MultipartFile file) {
return CommonResult.data(devFileService.upload(file));
}
@GetMapping({"/api/localStorage/download"})
public void download(@RequestParam String storageId , HttpServletResponse response, HttpServletRequest request) throws IOException {
this.devFileService.downloadFile(this.devFileService.getById(storageId),request, response);
}
}

View File

@@ -0,0 +1,40 @@
package org.nl.dev.modular.file.enums;
/**
*
* @author: lyd
* @date: 2026/1/28
*/
public enum ReturnTypeEnum {
/**
* 文件id
*/
FILE_ID("1"),
/**
* 下载地址
*/
DOWNLOAD_URL("2"),
/**
* 文件对象
*/
FILE("3");
private final String code;
ReturnTypeEnum(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static ReturnTypeEnum fromCode(String code) {
for (ReturnTypeEnum type : values()) {
if (type.code.equals(code)) {
return type;
}
}
return FILE; // 默认值
}
}

View File

@@ -14,6 +14,7 @@ package org.nl.dev.modular.file.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.nl.dev.modular.file.entity.DevFile;
import org.nl.dev.modular.file.param.DevFileIdParam;
@@ -104,4 +105,8 @@ public interface DevFileService extends IService<DevFile> {
* @date 2022/4/24 21:18
*/
DevFile queryEntity(String id);
DevFile upload(MultipartFile file);
void downloadFile(DevFile file, HttpServletRequest request, HttpServletResponse response);
}

View File

@@ -27,10 +27,12 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.math3.dfp.DfpField;
import org.nl.dev.modular.file.entity.DevFile;
import org.nl.dev.modular.file.enums.DevFileEngineTypeEnum;
import org.nl.dev.modular.file.enums.ReturnTypeEnum;
import org.nl.dev.modular.file.param.DevFileIdParam;
import org.nl.dev.modular.file.param.DevFileListParam;
import org.nl.dev.modular.file.param.DevFilePageParam;
@@ -67,12 +69,12 @@ public class DevFileServiceImpl extends ServiceImpl<DevFileMapper, DevFile> impl
@Override
public String uploadReturnId(String engine, MultipartFile file) {
return this.storageFile(engine, file, true);
return this.storageFile(engine, file, ReturnTypeEnum.FILE_ID);
}
@Override
public String uploadReturnUrl(String engine, MultipartFile file) {
return this.storageFile(engine, file, false);
return this.storageFile(engine, file, ReturnTypeEnum.DOWNLOAD_URL);
}
@Override
@@ -127,11 +129,11 @@ public class DevFileServiceImpl extends ServiceImpl<DevFileMapper, DevFile> impl
/**
* 存储文件
*
* 默认返回实体
* @author xuyuxiang
* @date 2022/6/16 16:24
**/
private String storageFile(String engine, MultipartFile file, boolean returnFileId) {
private <T> T storageFile(String engine, MultipartFile file, ReturnTypeEnum returnType) {
// 如果引擎为空,默认使用本地
if(ObjectUtil.isEmpty(engine)) {
@@ -218,13 +220,11 @@ public class DevFileServiceImpl extends ServiceImpl<DevFileMapper, DevFile> impl
this.save(devFile);
// 如果是返回id则返回文件id
if(returnFileId) {
return fileId;
} else {
// 否则返回下载地址
return downloadUrl;
}
return switch (returnType) {
case FILE_ID -> (T) fileId;
case DOWNLOAD_URL -> (T) downloadUrl;
case FILE -> (T) devFile;
};
}
/**
@@ -277,6 +277,18 @@ public class DevFileServiceImpl extends ServiceImpl<DevFileMapper, DevFile> impl
return devFile;
}
@Override
public DevFile upload(MultipartFile file) {
return this.storageFile(DevFileEngineTypeEnum.LOCAL.getValue(), file, ReturnTypeEnum.FILE);
}
@Override
public void downloadFile(DevFile file, HttpServletRequest request, HttpServletResponse response) {
String path = file.getStoragePath();
File file2 = new File(path);
org.nl.common.util.FileUtil.downloadFile(request, response, file2, false);
}
/**
* 根据文件后缀判断是否图片
*

View File

@@ -18,15 +18,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;
import org.nl.sys.modular.group.entity.SysGroup;
import org.nl.sys.modular.org.entity.SysOrg;
import org.nl.sys.modular.position.entity.SysPosition;
import org.nl.sys.modular.role.entity.SysRole;
import org.nl.sys.modular.user.entity.SysUser;
import org.nl.sys.modular.user.param.*;
import org.nl.sys.modular.user.result.*;
import org.springframework.web.multipart.MultipartFile;
import org.nl.sys.modular.user.param.*;
import org.nl.sys.modular.user.result.*;
import org.nl.sys.modular.org.entity.SysOrg;
import org.nl.sys.modular.role.entity.SysRole;
import org.nl.sys.modular.user.entity.SysUser;
import java.io.IOException;
import java.util.List;