Search in sources :

Example 1 with Result

use of com.albedo.java.common.core.util.Result in project albedo by somowhere.

the class RoleMenuServiceImpl method saveRoleMenus.

/**
 * @param roleMenuDto 角色菜单
 */
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveRoleMenus(RoleMenuDto roleMenuDto) {
    this.remove(Wrappers.<RoleMenuDo>query().lambda().eq(RoleMenuDo::getRoleId, roleMenuDto.getRoleId()));
    List<RoleMenuDo> roleMenuDoList = roleMenuDto.getMenuIdList().stream().map(menuId -> {
        RoleMenuDo roleMenuDo = new RoleMenuDo();
        roleMenuDo.setRoleId(roleMenuDto.getRoleId());
        roleMenuDo.setMenuId(menuId);
        return roleMenuDo;
    }).collect(Collectors.toList());
    this.saveBatch(roleMenuDoList);
    SysCacheUtil.delRoleCaches(roleMenuDto.getRoleId());
    return Result.buildOk("操作成功");
}
Also used : Wrappers(com.baomidou.mybatisplus.core.toolkit.Wrappers) Result(com.albedo.java.common.core.util.Result) RoleMenuDo(com.albedo.java.modules.sys.domain.RoleMenuDo) BaseServiceImpl(com.albedo.java.plugins.database.mybatis.service.impl.BaseServiceImpl) Collectors(java.util.stream.Collectors) RoleMenuService(com.albedo.java.modules.sys.service.RoleMenuService) SysCacheUtil(com.albedo.java.modules.sys.util.SysCacheUtil) List(java.util.List) Service(org.springframework.stereotype.Service) RoleMenuRepository(com.albedo.java.modules.sys.repository.RoleMenuRepository) RoleMenuDto(com.albedo.java.modules.sys.domain.dto.RoleMenuDto) AllArgsConstructor(lombok.AllArgsConstructor) Transactional(org.springframework.transaction.annotation.Transactional) RoleMenuDo(com.albedo.java.modules.sys.domain.RoleMenuDo) Transactional(org.springframework.transaction.annotation.Transactional)

Example 2 with Result

use of com.albedo.java.common.core.util.Result in project albedo by somowhere.

the class AbstractFileChunkStrategy method chunksMerge.

private Result<File> chunksMerge(FileChunksMergeDto info, String fileName) {
    String path = FileTypeUtil.getUploadPathPrefix(fileProperties.getLocal().getStoragePath());
    int chunks = info.getChunks();
    String folder = info.getName();
    String md5 = info.getMd5();
    int chunksNum = this.getChunksNum(Paths.get(path, folder).toString());
    log.info("chunks={}, chunksNum={}", chunks, chunksNum);
    // 检查是否满足合并条件:分片数量是否足够
    if (chunks == chunksNum) {
        // 同步指定合并的对象
        Lock lock = FileLock.getLock(folder);
        lock.lock();
        try {
            // 检查是否满足合并条件:分片数量是否足够
            List<java.io.File> files = new ArrayList<>(Arrays.asList(this.getChunks(Paths.get(path, folder).toString())));
            if (chunks == files.size()) {
                // 按照名称排序文件,这里分片都是按照数字命名的
                // 这里存放的文件名一定是数字
                files.sort(Comparator.comparingInt(f -> Convert.toInt(f.getName(), 0)));
                Result<File> result = merge(files, path, fileName, info);
                files = null;
                // 清理:文件夹,tmp文件
                this.cleanSpace(folder, path);
                return result;
            }
        } catch (Exception ex) {
            log.error("数据分片合并失败", ex);
            return Result.buildFail("数据分片合并失败");
        } finally {
            // 解锁
            lock.unlock();
            // 清理锁对象
            FileLock.removeLock(folder);
        }
    }
    // 去持久层查找对应md5签名,直接返回对应path
    File file = this.md5Check(md5);
    if (file == null) {
        log.error("文件[签名:" + md5 + "]数据不完整,可能该文件正在合并中");
        return Result.buildFail("数据不完整,可能该文件正在合并中, 也有可能是上传过程中某些分片丢失");
    }
    return Result.buildOkData(file);
}
Also used : FileChunkStrategy(com.albedo.java.modules.file.strategy.FileChunkStrategy) Wrappers(com.baomidou.mybatisplus.core.toolkit.Wrappers) Arrays(java.util.Arrays) Result(com.albedo.java.common.core.util.Result) RequiredArgsConstructor(lombok.RequiredArgsConstructor) LocalDateTime(java.time.LocalDateTime) FileUtils(org.apache.commons.io.FileUtils) IOException(java.io.IOException) StrPool(com.albedo.java.common.core.util.StrPool) CommonConstants(com.albedo.java.common.core.constant.CommonConstants) File(com.albedo.java.modules.file.domain.File) FileChunksMergeDto(com.albedo.java.modules.file.domain.dto.FileChunksMergeDto) FileServerProperties(com.albedo.java.modules.file.properties.FileServerProperties) FileTypeUtil(com.albedo.java.modules.file.utils.FileTypeUtil) ArrayList(java.util.ArrayList) FileLock(com.albedo.java.modules.file.strategy.FileLock) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) Lock(java.util.concurrent.locks.Lock) Paths(java.nio.file.Paths) Convert(cn.hutool.core.convert.Convert) FileRepository(com.albedo.java.modules.file.repository.FileRepository) Comparator(java.util.Comparator) ArrayList(java.util.ArrayList) File(com.albedo.java.modules.file.domain.File) IOException(java.io.IOException) FileLock(com.albedo.java.modules.file.strategy.FileLock) Lock(java.util.concurrent.locks.Lock)

Aggregations

Result (com.albedo.java.common.core.util.Result)2 Wrappers (com.baomidou.mybatisplus.core.toolkit.Wrappers)2 List (java.util.List)2 Convert (cn.hutool.core.convert.Convert)1 CommonConstants (com.albedo.java.common.core.constant.CommonConstants)1 StrPool (com.albedo.java.common.core.util.StrPool)1 File (com.albedo.java.modules.file.domain.File)1 FileChunksMergeDto (com.albedo.java.modules.file.domain.dto.FileChunksMergeDto)1 FileServerProperties (com.albedo.java.modules.file.properties.FileServerProperties)1 FileRepository (com.albedo.java.modules.file.repository.FileRepository)1 FileChunkStrategy (com.albedo.java.modules.file.strategy.FileChunkStrategy)1 FileLock (com.albedo.java.modules.file.strategy.FileLock)1 FileTypeUtil (com.albedo.java.modules.file.utils.FileTypeUtil)1 RoleMenuDo (com.albedo.java.modules.sys.domain.RoleMenuDo)1 RoleMenuDto (com.albedo.java.modules.sys.domain.dto.RoleMenuDto)1 RoleMenuRepository (com.albedo.java.modules.sys.repository.RoleMenuRepository)1 RoleMenuService (com.albedo.java.modules.sys.service.RoleMenuService)1 SysCacheUtil (com.albedo.java.modules.sys.util.SysCacheUtil)1 BaseServiceImpl (com.albedo.java.plugins.database.mybatis.service.impl.BaseServiceImpl)1 IOException (java.io.IOException)1