From 51df6e262c2d625e700a8194cbe0ec1e40b80843 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Tue, 03 Jun 2025 19:23:31 +0800 Subject: [PATCH] 存储桶 --- oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 131 insertions(+), 0 deletions(-) diff --git a/oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java b/oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java new file mode 100644 index 0000000..8e652c7 --- /dev/null +++ b/oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java @@ -0,0 +1,131 @@ +package com.oying.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.obs.services.model.AccessControlList; +import com.obs.services.model.PutObjectResult; +import com.oying.config.properties.FileProperties; +import com.oying.domain.BucketStorage; +import com.oying.exception.BadRequestException; +import com.oying.utils.*; +import lombok.RequiredArgsConstructor; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.oying.service.BucketStorageService; +import com.oying.domain.dto.BucketStorageQueryCriteria; +import com.oying.mapper.BucketStorageMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.File; +import java.util.List; +import java.util.Map; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.LinkedHashMap; + +import org.springframework.web.multipart.MultipartFile; + +/** + * @author lixin + * @description 服务实现 + * @date 2025-06-03 + **/ +@Service +@RequiredArgsConstructor +public class BucketStorageServiceImpl extends ServiceImpl<BucketStorageMapper, BucketStorage> implements BucketStorageService { + + private final BucketStorageMapper bucketStorageMapper; + private final ObsProperties properties; + private final FileProperties fileProperties; + + @Override + public PageResult<BucketStorage> queryAll(BucketStorageQueryCriteria criteria, Page<Object> page) { + return PageUtil.toPage(bucketStorageMapper.findAll(criteria, page)); + } + + @Override + public List<BucketStorage> queryAll(BucketStorageQueryCriteria criteria) { + return bucketStorageMapper.findAll(criteria); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public BucketStorage createFile(String name, File file) { + FileUtil.checkSize(fileProperties.getMaxSize(), file.length()); + String suffix = FileUtil.getExtensionName(file.getName()); + String type = FileUtil.getFileType(suffix); + String reaName = System.currentTimeMillis() + "." + suffix; + String objectKey = type + "/" + reaName; + PutObjectResult result = ObsUtils.putObject(properties, file, objectKey, AccessControlList.REST_CANNED_PUBLIC_READ); + if (ObjectUtil.isNull(result)) { + throw new BadRequestException("上传失败"); + } + name = StringUtils.isBlank(name) ? FileUtil.getFileNameNoEx(reaName) : name; + BucketStorage bucketStorage = new BucketStorage( + reaName, + name, + suffix, + objectKey, + type, + FileUtil.getSize(file.length()) + ); + bucketStorageMapper.insert(bucketStorage); + return bucketStorage; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public BucketStorage create(String name, MultipartFile file) { + FileUtil.checkSize(fileProperties.getMaxSize(), file.getSize()); + String suffix = FileUtil.getExtensionName(file.getOriginalFilename()); + String type = FileUtil.getFileType(suffix); + String reaName = System.currentTimeMillis() + "." + suffix; + String objectKey = type + "/" + reaName; + PutObjectResult result = ObsUtils.putObject(properties, FileUtil.toFile(file), objectKey, AccessControlList.REST_CANNED_PUBLIC_READ); + if (ObjectUtil.isNull(result)) { + throw new BadRequestException("上传失败"); + } + name = StringUtils.isBlank(name) ? FileUtil.getFileNameNoEx(reaName) : name; + BucketStorage bucketStorage = new BucketStorage( + reaName, + name, + suffix, + objectKey, + type, + FileUtil.getSize(file.getSize()) + ); + bucketStorageMapper.insert(bucketStorage); + return bucketStorage; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(List<Long> ids) { + for(Long id : ids) { + BucketStorage storage = bucketStorageMapper.selectById(id); + ObsUtils.deleteObject(properties, storage.getPath()); + } + bucketStorageMapper.deleteBatchIds(ids); + } + + @Override + public void download(List<BucketStorage> all, HttpServletResponse response) throws IOException { + List<Map<String, Object>> list = new ArrayList<>(); + for (BucketStorage bucketStorage : all) { + Map<String, Object> map = new LinkedHashMap<>(); + map.put("文件真实的名称", bucketStorage.getRealName()); + map.put("文件名", bucketStorage.getName()); + map.put("后缀", bucketStorage.getSuffix()); + map.put("路径", bucketStorage.getPath()); + map.put("类型", bucketStorage.getType()); + map.put("大小", bucketStorage.getSize()); + map.put("创建人", bucketStorage.getCreateBy()); + map.put("创建时间", bucketStorage.getCreateTime()); + map.put("修改者", bucketStorage.getUpdateBy()); + map.put("修改时间", bucketStorage.getUpdateTime()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } +} -- Gitblit v1.9.3