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>