feat: tool模块基础crud
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; // 默认值
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件后缀判断是否图片
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user