diff --git a/common/service-utils/src/main/java/cn/bunny/common/service/utils/minio/MinioUtil.java b/common/service-utils/src/main/java/cn/bunny/common/service/utils/minio/MinioUtil.java index 7043c42..eacb2b2 100644 --- a/common/service-utils/src/main/java/cn/bunny/common/service/utils/minio/MinioUtil.java +++ b/common/service-utils/src/main/java/cn/bunny/common/service/utils/minio/MinioUtil.java @@ -97,16 +97,14 @@ public class MinioUtil { * @return 文件流对象 */ public byte[] getBucketObjectByte(String objectName) { - // 如果buckName为空,设置为默认的桶 String bucketName = properties.getBucketName(); try { - objectName = objectName.replace("/" + bucketName, ""); GetObjectResponse getObjectResponse = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(objectName).build()); return getObjectResponse.readAllBytes(); } catch (Exception exception) { - exception.getStackTrace(); + exception.printStackTrace(); } throw new BunnyException(ResultCodeEnum.GET_BUCKET_EXCEPTION); } diff --git a/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java b/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java index 5f56477..48370cd 100644 --- a/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java +++ b/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java @@ -29,12 +29,9 @@ public enum ResultCodeEnum { GET_BUCKET_EXCEPTION(201, "获取文件信息失败"), SEND_MAIL_CODE_ERROR(201, "邮件发送失败"), EMAIL_CODE_EMPTY(201, "邮箱验证码过期或不存在"), - DATA_EXIST(201, "数据已存在"), - DATA_NOT_EXIST(201, "数据不存在"), EMAIL_EXIST(201, "邮箱已存在"), REQUEST_IS_EMPTY(201, "请求数据为空"), DATA_TOO_LARGE(201, "请求数据为空"), - USER_IS_EMPTY(201, "用户不存在"), UPDATE_NEW_PASSWORD_SAME_AS_OLD_PASSWORD(201, "新密码与密码相同"), // 数据相关 206 @@ -43,6 +40,10 @@ public enum ResultCodeEnum { DATA_ERROR(206, "数据异常"), EMAIL_USER_TEMPLATE_IS_EMPTY(206, "邮件模板为空"), EMAIL_TEMPLATE_IS_EMPTY(206, "邮件模板为空"), + DATA_EXIST(206, "数据已存在"), + DATA_NOT_EXIST(206, "数据不存在"), + USER_IS_EMPTY(206, "用户不存在"), + FILE_NOT_EXIST(206, "文件不存在"), // 身份过期 208 LOGIN_AUTH(208, "请先登陆"), diff --git a/service/src/main/java/cn/bunny/services/controller/FilesController.java b/service/src/main/java/cn/bunny/services/controller/FilesController.java index 499617a..6866d58 100644 --- a/service/src/main/java/cn/bunny/services/controller/FilesController.java +++ b/service/src/main/java/cn/bunny/services/controller/FilesController.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -51,11 +52,10 @@ public class FilesController { return Mono.just(Result.success(pageResult)); } - @Operation(summary = "添加系统文件表", description = "添加系统文件表") - @PostMapping("addFiles") - public Mono> addFiles(@Valid @RequestBody FilesAddDto dto) { - filesService.addFiles(dto); - return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); + @Operation(summary = "下载文件", description = "下载文件") + @GetMapping("downloadFiles/{fileId}") + public void downloadFiles(@PathVariable Long fileId, HttpServletResponse response) { + filesService.downloadFiles(response, fileId); } @Operation(summary = "更新系统文件表", description = "更新系统文件表") @@ -65,6 +65,13 @@ public class FilesController { return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); } + @Operation(summary = "添加系统文件表", description = "添加系统文件表") + @PostMapping("addFiles") + public Mono> addFiles(@Valid @RequestBody FilesAddDto dto) { + filesService.addFiles(dto); + return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); + } + @Operation(summary = "上传文件", description = "上传文件") @PostMapping("upload") public Result upload(FileUploadDto dto) { diff --git a/service/src/main/java/cn/bunny/services/service/FilesService.java b/service/src/main/java/cn/bunny/services/service/FilesService.java index 66a5924..8b255b1 100644 --- a/service/src/main/java/cn/bunny/services/service/FilesService.java +++ b/service/src/main/java/cn/bunny/services/service/FilesService.java @@ -10,6 +10,7 @@ import cn.bunny.dao.vo.system.files.FileInfoVo; import cn.bunny.dao.vo.system.files.FilesVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import java.util.List; @@ -59,4 +60,12 @@ public interface FilesService extends IService { * @param ids 删除id列表 */ void deleteFiles(List ids); + + /** + * * 下载文件 + * + * @param fileId 文件名 + * @param response response + */ + void downloadFiles(HttpServletResponse response, Long fileId); } diff --git a/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java index ccd4e3e..a580bb2 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java @@ -112,6 +112,9 @@ public class DeptServiceImpl extends ServiceImpl implements De */ @Override public void deleteDept(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + // 删除当前部门 baseMapper.deleteBatchIdsWithPhysics(ids); diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java index 319038a..762e1da 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java @@ -98,6 +98,9 @@ public class EmailTemplateServiceImpl extends ServiceImpl ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + baseMapper.deleteBatchIdsWithPhysics(ids); } diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java index 4a25a05..eb35d7c 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java @@ -110,6 +110,9 @@ public class EmailUsersServiceImpl extends ServiceImpl ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + baseMapper.deleteBatchIdsWithPhysics(ids); } diff --git a/service/src/main/java/cn/bunny/services/service/impl/FilesServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/FilesServiceImpl.java index 699af53..a416765 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/FilesServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/FilesServiceImpl.java @@ -1,25 +1,32 @@ package cn.bunny.services.service.impl; +import cn.bunny.common.service.exception.BunnyException; +import cn.bunny.common.service.utils.minio.MinioUtil; import cn.bunny.dao.dto.system.files.FileUploadDto; import cn.bunny.dao.dto.system.files.FilesAddDto; import cn.bunny.dao.dto.system.files.FilesDto; import cn.bunny.dao.dto.system.files.FilesUpdateDto; import cn.bunny.dao.entity.system.Files; import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.pojo.result.ResultCodeEnum; import cn.bunny.dao.vo.system.files.FileInfoVo; import cn.bunny.dao.vo.system.files.FilesVo; import cn.bunny.services.factory.FileFactory; import cn.bunny.services.mapper.FilesMapper; import cn.bunny.services.service.FilesService; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.SneakyThrows; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.OutputStream; import java.util.List; /** @@ -34,8 +41,12 @@ import java.util.List; public class FilesServiceImpl extends ServiceImpl implements FilesService { private final FileFactory fileFactory; + private final MinioUtil minioUtil; - public FilesServiceImpl(FileFactory fileFactory) {this.fileFactory = fileFactory;} + public FilesServiceImpl(FileFactory fileFactory, MinioUtil minioUtil) { + this.fileFactory = fileFactory; + this.minioUtil = minioUtil; + } /** * * 系统文件表 服务实现类 @@ -111,6 +122,40 @@ public class FilesServiceImpl extends ServiceImpl implements */ @Override public void deleteFiles(List ids) { + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); baseMapper.deleteBatchIdsWithPhysics(ids); } + + /** + * * 下载文件 + * + * @param response response + * @param fileId 文件名 + */ + @Override + public void downloadFiles(HttpServletResponse response, Long fileId) { + // 查询数据库文件信息 + Files files = getOne(Wrappers.lambdaQuery().eq(Files::getId, fileId)); + + // 判断文件是否存在 + if (files == null) throw new BunnyException(ResultCodeEnum.FILE_NOT_EXIST); + + // 从Minio获取文件 + String filepath = files.getFilepath(); + int end = filepath.indexOf("/", 1); + filepath = filepath.substring(end + 1); + byte[] buffer = minioUtil.getBucketObjectByte(filepath); + + // 设置响应头 + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + files.getFilename() + "\""); + + // 写入字节数组到输出流 + try (OutputStream os = response.getOutputStream()) { + os.write(buffer); + os.flush(); + } catch (IOException exception) { + throw new BunnyException(exception.getMessage()); + } + } } diff --git a/service/src/main/java/cn/bunny/services/service/impl/I18nServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/I18nServiceImpl.java index efe81e7..d34eaf8 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/I18nServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/I18nServiceImpl.java @@ -134,9 +134,9 @@ public class I18nServiceImpl extends ServiceImpl implements I1 */ @Override public void deleteI18n(List ids) { - if (ids.isEmpty()) { - throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); - } + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + baseMapper.deleteBatchIdsWithPhysics(ids); } } diff --git a/service/src/main/java/cn/bunny/services/service/impl/I18nTypeServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/I18nTypeServiceImpl.java index 2a1d4d9..cb94e0c 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/I18nTypeServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/I18nTypeServiceImpl.java @@ -103,6 +103,9 @@ public class I18nTypeServiceImpl extends ServiceImpl i */ @Override public void deleteI18nType(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + baseMapper.deleteBatchIdsWithPhysics(ids); } } diff --git a/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java index e06ce99..ddd4a3f 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java @@ -1,10 +1,12 @@ package cn.bunny.services.service.impl; +import cn.bunny.common.service.exception.BunnyException; import cn.bunny.dao.dto.system.menuIcon.MenuIconAddDto; import cn.bunny.dao.dto.system.menuIcon.MenuIconDto; import cn.bunny.dao.dto.system.menuIcon.MenuIconUpdateDto; import cn.bunny.dao.entity.system.MenuIcon; import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.pojo.result.ResultCodeEnum; import cn.bunny.dao.vo.system.MenuIconVo; import cn.bunny.services.mapper.MenuIconMapper; import cn.bunny.services.service.MenuIconService; @@ -90,6 +92,9 @@ public class MenuIconServiceImpl extends ServiceImpl i */ @Override public void deleteMenuIcon(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + baseMapper.deleteBatchIdsWithPhysics(ids); } diff --git a/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java index 8a3f00a..30e521b 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/PowerServiceImpl.java @@ -114,6 +114,9 @@ public class PowerServiceImpl extends ServiceImpl implements */ @Override public void deletePower(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + // 删除权限 baseMapper.deleteBatchIdsWithPhysics(ids); diff --git a/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java index 872d8af..c1a0d00 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java @@ -112,6 +112,9 @@ public class RoleServiceImpl extends ServiceImpl implements Ro */ @Override public void deleteRole(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + // 删除角色 baseMapper.deleteBatchIdsWithPhysics(ids); diff --git a/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java index 7731670..2a740cd 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java @@ -212,6 +212,9 @@ public class RouterServiceImpl extends ServiceImpl impleme */ @Override public void deletedMenuByIds(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + // 查找子级菜单,一起删除 List longList = list(Wrappers.lambdaQuery().in(Router::getParentId, ids)).stream().map(Router::getId).toList(); ids.addAll(longList); diff --git a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java index 4837ba3..1b10e7c 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java @@ -315,7 +315,7 @@ public class UserServiceImpl extends ServiceImpl implemen UserDept userDept = new UserDept(); userDept.setDeptId(deptId); userDept.setUserId(userId); - + // 插入分配后的用户内容 userDeptMapper.insert(userDept); } @@ -359,6 +359,9 @@ public class UserServiceImpl extends ServiceImpl implemen */ @Override public void deleteAdminUser(List ids) { + // 判断数据请求是否为空 + if (ids.isEmpty()) throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + // 删除用户 baseMapper.deleteBatchIdsWithPhysics(ids); diff --git a/service/src/test/java/cn/bunny/services/service/impl/FilesServiceImplTest.java b/service/src/test/java/cn/bunny/services/service/impl/FilesServiceImplTest.java new file mode 100644 index 0000000..da0e303 --- /dev/null +++ b/service/src/test/java/cn/bunny/services/service/impl/FilesServiceImplTest.java @@ -0,0 +1,15 @@ +package cn.bunny.services.service.impl; + +import org.junit.jupiter.api.Test; + +class FilesServiceImplTest { + @Test + void stringTest() { + String filepath = "/auth-admin/avatar/2024/10-04/5a56ad8f-4468-4780-8a61-424e7de54e04.png"; + int end = filepath.indexOf("/", 1); + + filepath = filepath.substring(end + 1); + System.out.println(filepath); + } + +} \ No newline at end of file