xin
2025-06-25 ff40a2ab1e3dd296da98f16337c709f7fda71666
修改用户头像上传为OBS
6 files modified
47 ■■■■ changed files
oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java 15 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/mapper/BucketStorageMapper.java 4 ●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/service/BucketStorageService.java 6 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
oying-tools/src/main/java/com/oying/service/impl/LocalStorageServiceImpl.java 5 ●●●● patch | view | raw | blame | history
oying-tools/src/main/resources/mapper/BucketStorageMapper.xml 6 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/system/service/impl/UserServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.oying.domain.BucketStorage;
import com.oying.modules.security.service.OnlineUserService;
import com.oying.modules.security.service.UserCacheManager;
import com.oying.modules.system.domain.Job;
@@ -12,6 +13,7 @@
import com.oying.modules.system.mapper.UserMapper;
import com.oying.modules.system.mapper.UserRoleMapper;
import com.oying.modules.system.service.UserService;
import com.oying.service.BucketStorageService;
import com.oying.utils.*;
import lombok.RequiredArgsConstructor;
import com.oying.config.properties.FileProperties;
@@ -20,9 +22,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -43,6 +45,7 @@
    private final RedisUtils redisUtils;
    private final UserCacheManager userCacheManager;
    private final OnlineUserService onlineUserService;
    private final BucketStorageService bucketStorageService;
    @Override
    public PageResult<User> queryAll(UserQueryCriteria criteria, Page<Object> page) {
@@ -215,17 +218,17 @@
        }
        User user = userMapper.findByUsername(SecurityUtils.getCurrentUsername());
        String oldPath = user.getAvatarPath();
        File file = FileUtil.upload(multipartFile, properties.getPath().getAvatar());
        user.setAvatarPath(Objects.requireNonNull(file).getPath());
        user.setAvatarName(file.getName());
        BucketStorage bucketStorage = bucketStorageService.create(null, multipartFile);
        user.setAvatarPath(bucketStorage.getPath());
        user.setAvatarName(bucketStorage.getRealName());
        saveOrUpdate(user);
        if (StringUtils.isNotBlank(oldPath)) {
            FileUtil.del(oldPath);
            bucketStorageService.deleteById(oldPath);
        }
        @NotBlank String username = user.getUsername();
        flushCache(username);
        return new HashMap<String, String>(1) {{
            put("avatar", file.getName());
            put("avatar", bucketStorage.getRealName());
        }};
    }
oying-tools/src/main/java/com/oying/mapper/BucketStorageMapper.java
@@ -2,7 +2,9 @@
import com.oying.domain.BucketStorage;
import com.oying.domain.dto.BucketStorageQueryCriteria;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -19,4 +21,6 @@
    IPage<BucketStorage> findAll(@Param("criteria") BucketStorageQueryCriteria criteria, Page<Object> page);
    List<BucketStorage> findAll(@Param("criteria") BucketStorageQueryCriteria criteria);
    BucketStorage findByPath(@Param("path") String path);
}
oying-tools/src/main/java/com/oying/service/BucketStorageService.java
@@ -48,6 +48,12 @@
    void deleteAll(List<Long> ids);
    /**
     * 删除
     * @param path /
     */
    void deleteById(String path);
    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
oying-tools/src/main/java/com/oying/service/impl/BucketStorageServiceImpl.java
@@ -1,5 +1,6 @@
package com.oying.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.obs.services.model.AccessControlList;
import com.obs.services.model.PutObjectResult;
@@ -80,7 +81,7 @@
        FileUtil.checkSize(fileProperties.getMaxSize(), file.getSize());
        String suffix = FileUtil.getExtensionName(file.getOriginalFilename());
        String type = FileUtil.getFileType(suffix);
        String reaName = System.currentTimeMillis() + "." + suffix;
        String reaName = IdUtil.getSnowflake(1, 1).nextId() + "." + suffix;
        String objectKey = type + "/" + reaName;
        PutObjectResult result = ObsUtils.putObject(properties, FileUtil.toFile(file), objectKey, AccessControlList.REST_CANNED_PUBLIC_READ);
        if (ObjectUtil.isNull(result)) {
@@ -110,6 +111,14 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteById(String path) {
        BucketStorage storage = bucketStorageMapper.findByPath(path);
        ObsUtils.deleteObject(properties, storage.getPath());
        bucketStorageMapper.deleteById(storage.getBucketId());
    }
    @Override
    public void download(List<BucketStorage> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (BucketStorage bucketStorage : all) {
oying-tools/src/main/java/com/oying/service/impl/LocalStorageServiceImpl.java
@@ -16,13 +16,16 @@
import com.oying.service.LocalStorageService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
@@ -49,7 +52,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public LocalStorage create(String name, MultipartFile multipartFile) {
        FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize());
        FileUtil.checkSize(0, multipartFile.getSize());
        String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename());
        String type = FileUtil.getFileType(suffix);
        File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type +  File.separator);
oying-tools/src/main/resources/mapper/BucketStorageMapper.xml
@@ -41,4 +41,10 @@
        </where>
        order by bucket_id desc
    </select>
    <select id="findByPath" resultType="com.oying.domain.BucketStorage">
        select
        <include refid="Base_Column_List"/>
        from tool_bucket_storage
        where path = #{path}
    </select>
</mapper>