package im.zhaojun.onedrive.service; import im.zhaojun.common.config.GlobalScheduleTask; import im.zhaojun.common.exception.NotExistFileException; import im.zhaojun.common.model.StorageConfig; import im.zhaojun.common.model.constant.StorageConfigConstant; import im.zhaojun.common.model.dto.FileItemDTO; import im.zhaojun.common.model.enums.StorageTypeEnum; import im.zhaojun.common.service.AbstractFileService; import im.zhaojun.common.service.FileService; import im.zhaojun.common.service.StorageConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * @author zhaojun * @date 2020/1/12 13:53 */ @Service @Slf4j public class OneDriveServiceImpl extends AbstractFileService implements FileService { public static final String SYSTEM_ONEDRIVE_CACHE_PREFIX = "zfile-onedrive-cache:"; public static final String SYSTEM_ONEDRIVE_CACHE_ASSESS_TOKEN_KEY = "accessToken"; public static final String SYSTEM_ONEDRIVE_CACHE_REFRESH_TOKEN_KEY = "refreshToken"; @Resource private GlobalScheduleTask globalScheduleTask; @Resource private StorageConfigService storageConfigService; @Resource private OneDriveService oneDriveService; @Override public void init() { try { Map stringStorageConfigMap = storageConfigService.selectStorageConfigMapByKey(StorageTypeEnum.ONE_DRIVE); String accessToken = stringStorageConfigMap.get(StorageConfigConstant.ACCESS_TOKEN_KEY).getValue(); String refreshToken = stringStorageConfigMap.get(StorageConfigConstant.REFRESH_TOKEN_KEY).getValue(); if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(refreshToken)) { log.debug("初始化存储策略 [{}] 失败: 参数不完整", getStorageTypeEnum().getDescription()); isInitialized = false; } else { globalScheduleTask.refreshOneDriveToken(); isInitialized = testConnection(); } } catch (Exception e) { log.debug(getStorageTypeEnum().getDescription() + " 初始化异常, 已跳过"); } } @Override public List fileList(String path) { return oneDriveService.list(path); } @Override public String getDownloadUrl(String path) { return null; } @Override public StorageTypeEnum getStorageTypeEnum() { return StorageTypeEnum.ONE_DRIVE; } @Override public FileItemDTO getFileItem(String path) { List list = fileList(path); if (list == null || list.size() == 0) { throw new NotExistFileException(); } return list.get(0); } }