xin
2025-06-03 51df6e262c2d625e700a8194cbe0ec1e40b80843
存储桶
3 files modified
67 ■■■■■ changed files
oying-tools/src/main/java/com/oying/domain/BucketStorage.java 9 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/rest/BucketStorageController.java 18 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java 40 ●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/domain/BucketStorage.java
@@ -46,4 +46,13 @@
    public void copy(BucketStorage source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
    public BucketStorage(String realName,String name, String suffix, String path, String type, String size) {
        this.realName = realName;
        this.name = name;
        this.suffix = suffix;
        this.path = path;
        this.type = type;
        this.size = size;
    }
}
oying-tools/src/main/java/com/oying/rest/BucketStorageController.java
@@ -6,17 +6,21 @@
import com.oying.service.BucketStorageService;
import com.oying.domain.dto.BucketStorageQueryCriteria;
import com.oying.utils.FileUtil;
import com.oying.utils.R;
import lombok.RequiredArgsConstructor;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.oying.utils.PageResult;
import org.springframework.web.multipart.MultipartFile;
/**
@@ -25,7 +29,7 @@
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "存储桶")
@Api(tags = "工具:存储桶")
@RequestMapping("/api/bucketStorage")
public class BucketStorageController {
@@ -41,9 +45,9 @@
    @GetMapping
    @ApiOperation("查询存储桶")
    @PreAuthorize("@el.check('bucketStorage:list')")
    public ResponseEntity<PageResult<BucketStorage>> queryBucketStorage(BucketStorageQueryCriteria criteria){
    public ResponseEntity<Object> queryBucketStorage(BucketStorageQueryCriteria criteria) {
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(bucketStorageService.queryAll(criteria,page),HttpStatus.OK);
        return new ResponseEntity<>(R.success(bucketStorageService.queryAll(criteria, page)), HttpStatus.OK);
    }
    @PostMapping
@@ -51,7 +55,7 @@
    @ApiOperation("上传存储桶文件")
    @PreAuthorize("@el.check('bucketStorage:add')")
    public ResponseEntity<Object> create(@RequestParam String name, @RequestParam("file") MultipartFile file) {
        return new ResponseEntity<>(bucketStorageService.create(name, file), HttpStatus.CREATED);
        return new ResponseEntity<>(R.success(bucketStorageService.create(name, file)), HttpStatus.CREATED);
    }
    @PostMapping("/pictures")
@@ -64,7 +68,7 @@
            throw new BadRequestException("只能上传图片");
        }
        BucketStorage bucketStorage = bucketStorageService.create(null, file);
        return new ResponseEntity<>(bucketStorage, HttpStatus.OK);
        return new ResponseEntity<>(R.success(bucketStorage), HttpStatus.OK);
    }
    @DeleteMapping
@@ -73,6 +77,6 @@
    @PreAuthorize("@el.check('bucketStorage:del')")
    public ResponseEntity<Object> deleteBucketStorage(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) {
        bucketStorageService.deleteAll(ids);
        return new ResponseEntity<>(HttpStatus.OK);
        return new ResponseEntity<>(R.success(), HttpStatus.OK);
    }
}
oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java
@@ -1,11 +1,12 @@
package com.oying.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.obs.services.internal.ObsProperties;
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.utils.FileUtil;
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;
@@ -14,7 +15,6 @@
import com.oying.mapper.BucketStorageMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.oying.utils.PageUtil;
import java.io.File;
import java.util.List;
@@ -23,12 +23,12 @@
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import com.oying.utils.PageResult;
import org.springframework.web.multipart.MultipartFile;
/**
* @description 服务实现
* @author lixin
 * @description 服务实现
* @date 2025-06-03
**/
@Service
@@ -36,7 +36,8 @@
public class BucketStorageServiceImpl extends ServiceImpl<BucketStorageMapper, BucketStorage> implements BucketStorageService {
    private final BucketStorageMapper bucketStorageMapper;
    private final ObsProperties
    private final ObsProperties properties;
    private final FileProperties fileProperties;
    @Override
    public PageResult<BucketStorage> queryAll(BucketStorageQueryCriteria criteria, Page<Object> page){
@@ -51,13 +52,12 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public BucketStorage createFile(String name, File file) {
        ObsConfig config = obsConfigService.findById(1L);
        FileUtil.checkSize(properties.getMaxSize(), file.length());
        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(config, file, objectKey, AccessControlList.REST_CANNED_PUBLIC_READ);
        PutObjectResult result = ObsUtils.putObject(properties, file, objectKey, AccessControlList.REST_CANNED_PUBLIC_READ);
        if (ObjectUtil.isNull(result)) {
            throw new BadRequestException("上传失败");
        }
@@ -70,18 +70,19 @@
                type,
                FileUtil.getSize(file.length())
        );
        return bucketStorageRepository.save(bucketStorage);
        bucketStorageMapper.insert(bucketStorage);
        return bucketStorage;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public BucketStorage create(String name, MultipartFile file) {
        FileUtil.checkSize(properties.getMaxSize(), file.getSize());
        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(config, FileUtil.toFile(file), objectKey,AccessControlList.REST_CANNED_PUBLIC_READ);
        PutObjectResult result = ObsUtils.putObject(properties, FileUtil.toFile(file), objectKey, AccessControlList.REST_CANNED_PUBLIC_READ);
        if (ObjectUtil.isNull(result)) {
            throw new BadRequestException("上传失败");
        }
@@ -94,20 +95,17 @@
                type,
                FileUtil.getSize(file.getSize())
        );
        return bucketStorageRepository.save(bucketStorage);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(BucketStorage resources) {
        BucketStorage bucketStorage = getById(resources.getBucketId());
        bucketStorage.copy(resources);
        bucketStorageMapper.updateById(bucketStorage);
        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);
    }