同步操作将从 兰德网络O2OA平台软件/O2OA 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//// O2CloudFileManager.swift// O2Platform//// Created by FancyLou on 2019年10月30日.// Copyright © 2019 zoneland. All rights reserved.//import UIKitimport Moyaimport O2OA_Auth_SDKimport Promisesimport CocoaLumberjackclass O2CloudFileManager {static let shared: O2CloudFileManager = {return O2CloudFileManager()}()private init() {}private let cloudFileApi = {return OOMoyaProvider<OOCloudStorageAPI>()}()// MARK: - 工具服务 获取url 本地文件夹路径等等//本地文件存储路径func cloudFileLocalPath(file: OOAttachment) -> URL {let fileName = "\(file.name!).\(file.`extension`!)"if let id = file.id {return O2.cloudFileLocalFolder().appendingPathComponent(id).appendingPathComponent(fileName)}return O2.cloudFileLocalFolder().appendingPathComponent(fileName)}//获取图片地址 根据传入的大小进行比例缩放func scaleImageUrl(id: String, width: Int = 200, height: Int = 200) -> String {let model = O2AuthSDK.shared.o2APIServer(context: .x_file_assemble_control)let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 0)\(model?.context ?? "")"return baseURLString + "/jaxrs/attachment2/\(id)/download/image/width/\(width)/height/\(height)"}//获取源文件下载地址func originFileUrl(id: String) -> String {let model = O2AuthSDK.shared.o2APIServer(context: .x_file_assemble_control)let baseURLString = "\(model?.httpProtocol ?? "http")://\(model?.host ?? ""):\(model?.port ?? 0)\(model?.context ?? "")"return baseURLString + "/jaxrs/attachment2/\(id)/download"}// MARK: - 文件获取相关操作func getFileUrl(fileId: String) -> Promise<URL> {return Promise { fulfill, reject inself.getFileURLFromDB(id: fileId).then({ (path) infulfill(path)}).catch({ (error) inDDLogInfo("本地没有这个文件,去服务器获取一次")DDLogError(error.localizedDescription)self.getFileURLFromDownload(fileId: fileId).then({ (path) infulfill(path)}).catch({ (err) inreject(err)})})}}//获取图片 先从本地文件查找 没找到再从网络下载func getImage(imageId: String) -> Promise<UIImage> {return Promise {fulfill, reject inself.getFileURLFromDB(id: imageId).then({ (path) inif let image = UIImage(contentsOfFile: path.path) {fulfill(image)}else {DDLogError("没有找到本地文件。。。。\(path.path)")reject(O2DBError.EmptyResultError)}}).catch({ error inDDLogError(error.localizedDescription)self.getFileURLFromDownload(fileId: imageId).then({ (path) inif let image = UIImage(contentsOfFile: path.path) {fulfill(image)}else {DDLogError("没有找到本地文件。。。。\(path.path)")reject(O2DBError.EmptyResultError)}}).catch({ (err) inreject(err)})})}}// MARK: - private method//下载文件 存储本地数据 返回本地文件路径private func getFileURLFromDownload(fileId: String) -> Promise<URL> {return Promise {fulfill, reject in//本地没有 去网络下载self.downdloadFile(id: fileId).then({ (file) -> Promise<O2CloudFileInfo> inreturn self.storageFile2DB(file: file)}).then({ (dbFile) inif let filePath = dbFile.filePath, !filePath.isBlank {DDLogDebug("查询到数据 文件路径:\(filePath)")let url = O2.cloudFileLocalFolder().appendingPathComponent(filePath)fulfill(url)}else {reject(O2DBError.EmptyResultError)}}).catch({error inreject(error)})}}//从数据库获取 本地文件路径private func getFileURLFromDB(id: String) -> Promise<URL> {return Promise { fulfill, reject inDBManager.shared.queryCloudFile(fileId: id).then({ (dbFile) inif let filePath = dbFile.filePath, !filePath.isBlank {DDLogDebug("查询到数据 文件路径:\(filePath)")let url = O2.cloudFileLocalFolder().appendingPathComponent(filePath)fulfill(url)}else {reject(O2DBError.EmptyResultError)}}).catch({ (error) inreject(error)})}}//存储附件对象到数据库private func storageFile2DB(file: OOAttachment) -> Promise<O2CloudFileInfo> {return Promise { fulfill, reject inlet info = O2CloudFileInfo()info.fileId = file.id!info.fileName = file.name!let fileName = "\(file.name!).\(file.`extension`!)"let path = "\(file.id!)/\(fileName)"DDLogDebug("保存数据库 path:\(path)")info.filePath = pathinfo.fileExt = file.extension ?? ""DBManager.shared.insertCloudFile(info: info).then({ (result) inif result {fulfill(info)}else {reject(O2DBError.UnkownError)}}).catch({ (error) inDDLogError(error.localizedDescription)reject(error)})}}//网络下载附件private func downdloadFile(id: String) -> Promise<OOAttachment>{return Promise { fulfill, reject inself.cloudFileApi.request(.getFile(id)) { (result) inlet response = OOResult<BaseModelClass<OOAttachment>>(result)if response.isResultSuccess() {if let file = response.model?.data {self.cloudFileApi.request(.downloadFile(file), completion: { (downloadResult) inswitch downloadResult {case .success(_)://下载文件成功 返回附件对象 需要附件的地方根据固定的文件位置去查找fulfill(file)breakcase .failure(let err):reject(err)break}})}else {reject(O2APIError.o2ResponseError("没有查询到附件对象, id: \(id)"))}}else {reject(response.error!)}}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。