diff --git a/app/helper/aliyun.py b/app/helper/aliyun.py index 83d5eefd..40c5c99b 100644 --- a/app/helper/aliyun.py +++ b/app/helper/aliyun.py @@ -49,6 +49,8 @@ class AliyunHelper: rename_file_url = "https://api.aliyundrive.com/v3/file/update" # 获取下载链接 download_url = "https://api.aliyundrive.com/v2/file/get_download_url" + # 移动文件 + move_file_url = "https://api.aliyundrive.com/v3/file/move" def __init__(self): self.systemconfig = SystemConfigOper() @@ -373,13 +375,13 @@ class AliyunHelper: break return ret_items - def create_folder(self, parent_file_id: str, name: str) -> bool: + def create_folder(self, parent_file_id: str, name: str) -> Optional[dict]: """ 创建目录 """ params = self.get_access_params() if not params: - return False + return None headers = self.get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.create_folder_url, json={ "drive_id": params.get("resourceDriveId"), @@ -389,10 +391,28 @@ class AliyunHelper: "type": "folder" }) if res: - return True + """ + { + "parent_file_id": "root", + "type": "folder", + "file_id": "6673f2c8a88344741bd64ad192d7512b92087719", + "domain_id": "bj29", + "drive_id": "39146740", + "file_name": "test", + "encrypt_mode": "none" + } + """ + result = res.json() + return { + "file_id": result.get("file_id"), + "drive_id": result.get("drive_id"), + "parent_file_id": result.get("parent_file_id"), + "type": result.get("type"), + "name": result.get("file_name") + } else: self.__handle_error(res, "创建目录") - return False + return None def delete_file(self, file_id: str) -> bool: """ @@ -467,3 +487,23 @@ class AliyunHelper: else: self.__handle_error(res, "获取下载链接") return None + + def move(self, drive_id: str, file_id: str, target_id: str) -> bool: + """ + 移动文件 + """ + params = self.get_access_params() + if not params: + return False + headers = self.get_headers(params) + res = RequestUtils(headers=headers, timeout=10).post_res(self.move_file_url, json={ + "drive_id": drive_id, + "file_id": file_id, + "to_parent_file_id": target_id, + "check_name_mode": "refuse" + }) + if res: + return True + else: + self.__handle_error(res, "移动文件") + return False diff --git a/app/helper/u115.py b/app/helper/u115.py index e592399a..dd3e55a1 100644 --- a/app/helper/u115.py +++ b/app/helper/u115.py @@ -9,7 +9,6 @@ from app.db.systemconfig_oper import SystemConfigOper from app.log import logger from app.schemas.types import SystemConfigKey from app.utils.singleton import Singleton -from app.utils.system import SystemUtils class U115Helper(metaclass=Singleton): @@ -136,18 +135,17 @@ class U115Helper(metaclass=Singleton): logger.error(f"浏览115文件失败:{str(e)}") return None - def create_folder(self, parent_file_id: str, name: str) -> bool: + def create_folder(self, parent_file_id: str, name: str) -> Optional[File]: """ 创建目录 """ if not self.__init_cloud(): - return False + return None try: - self.cloud.storage().make_dir(parent_file_id, name) - return True + return self.cloud.storage().make_dir(parent_file_id, name) except Exception as e: logger.error(f"创建115目录失败:{str(e)}") - return False + return None def delete_file(self, file_id: str) -> bool: """ @@ -162,12 +160,6 @@ class U115Helper(metaclass=Singleton): logger.error(f"删除115文件失败:{str(e)}") return False - def get_file_detail(self, file_id: str) -> Optional[dict]: - """ - 获取文件详情 - """ - pass - def rename_file(self, file_id: str, name: str) -> bool: """ 重命名文件 @@ -204,3 +196,16 @@ class U115Helper(metaclass=Singleton): except Exception as e: logger.error(f"获取115存储空间失败:{str(e)}") return None + + def move(self, file_id: str, target_id: str) -> bool: + """ + 移动文件 + """ + if not self.__init_cloud(): + return False + try: + self.cloud.storage().move(file_id, target_id) + return True + except Exception as e: + logger.error(f"移动115文件失败:{str(e)}") + return False