开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 4K

micoder/O2OA

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (6)
标签 (42)
master
wrdp
develop
release
dependabot/maven/o2server/org.quartz-scheduler-quartz-2.3.2
dependabot/npm_and_yarn/o2server/mixin-deep-1.3.2
6.0.2
6.0.1
6.0.0
5.4.1
wrdp-5.4.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
wrdp-5.3.0
wrdp-5.2.6
wrdp-5.2.5
wrdp-5.2.4
wrdp-5.2.3
5.2.5
wrdp-5.2
5.2.4
master
分支 (6)
标签 (42)
master
wrdp
develop
release
dependabot/maven/o2server/org.quartz-scheduler-quartz-2.3.2
dependabot/npm_and_yarn/o2server/mixin-deep-1.3.2
6.0.2
6.0.1
6.0.0
5.4.1
wrdp-5.4.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
wrdp-5.3.0
wrdp-5.2.6
wrdp-5.2.5
wrdp-5.2.4
wrdp-5.2.3
5.2.5
wrdp-5.2
5.2.4
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (6)
标签 (42)
master
wrdp
develop
release
dependabot/maven/o2server/org.quartz-scheduler-quartz-2.3.2
dependabot/npm_and_yarn/o2server/mixin-deep-1.3.2
6.0.2
6.0.1
6.0.0
5.4.1
wrdp-5.4.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
wrdp-5.3.0
wrdp-5.2.6
wrdp-5.2.5
wrdp-5.2.4
wrdp-5.2.3
5.2.5
wrdp-5.2
5.2.4
O2OA
/
o2ios
/
O2Platform
/
Manager
/
O2CloudFileManager.swift
O2OA
/
o2ios
/
O2Platform
/
Manager
/
O2CloudFileManager.swift
O2CloudFileManager.swift 7.25 KB
一键复制 编辑 原始数据 按行查看 历史
fancylou 提交于 2020年07月21日 15:05 +08:00 . 修复任务列表图标随机变化的bug
//
// O2CloudFileManager.swift
// O2Platform
//
// Created by FancyLou on 2019年10月30日.
// Copyright © 2019 zoneland. All rights reserved.
//
import UIKit
import Moya
import O2OA_Auth_SDK
import Promises
import CocoaLumberjack
class 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 in
self.getFileURLFromDB(id: fileId).then({ (path) in
fulfill(path)
}).catch({ (error) in
DDLogInfo("本地没有这个文件,去服务器获取一次")
DDLogError(error.localizedDescription)
self.getFileURLFromDownload(fileId: fileId).then({ (path) in
fulfill(path)
}).catch({ (err) in
reject(err)
})
})
}
}
//获取图片 先从本地文件查找 没找到再从网络下载
func getImage(imageId: String) -> Promise<UIImage> {
return Promise {fulfill, reject in
self.getFileURLFromDB(id: imageId).then({ (path) in
if let image = UIImage(contentsOfFile: path.path) {
fulfill(image)
}else {
DDLogError("没有找到本地文件。。。。\(path.path)")
reject(O2DBError.EmptyResultError)
}
}).catch({ error in
DDLogError(error.localizedDescription)
self.getFileURLFromDownload(fileId: imageId).then({ (path) in
if let image = UIImage(contentsOfFile: path.path) {
fulfill(image)
}else {
DDLogError("没有找到本地文件。。。。\(path.path)")
reject(O2DBError.EmptyResultError)
}
}).catch({ (err) in
reject(err)
})
})
}
}
// MARK: - private method
//下载文件 存储本地数据 返回本地文件路径
private func getFileURLFromDownload(fileId: String) -> Promise<URL> {
return Promise {fulfill, reject in
//本地没有 去网络下载
self.downdloadFile(id: fileId).then({ (file) -> Promise<O2CloudFileInfo> in
return self.storageFile2DB(file: file)
}).then({ (dbFile) in
if let filePath = dbFile.filePath, !filePath.isBlank {
DDLogDebug("查询到数据 文件路径:\(filePath)")
let url = O2.cloudFileLocalFolder().appendingPathComponent(filePath)
fulfill(url)
}else {
reject(O2DBError.EmptyResultError)
}
}).catch({error in
reject(error)
})
}
}
//从数据库获取 本地文件路径
private func getFileURLFromDB(id: String) -> Promise<URL> {
return Promise { fulfill, reject in
DBManager.shared.queryCloudFile(fileId: id).then({ (dbFile) in
if let filePath = dbFile.filePath, !filePath.isBlank {
DDLogDebug("查询到数据 文件路径:\(filePath)")
let url = O2.cloudFileLocalFolder().appendingPathComponent(filePath)
fulfill(url)
}else {
reject(O2DBError.EmptyResultError)
}
}).catch({ (error) in
reject(error)
})
}
}
//存储附件对象到数据库
private func storageFile2DB(file: OOAttachment) -> Promise<O2CloudFileInfo> {
return Promise { fulfill, reject in
let 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 = path
info.fileExt = file.extension ?? ""
DBManager.shared.insertCloudFile(info: info).then({ (result) in
if result {
fulfill(info)
}else {
reject(O2DBError.UnkownError)
}
}).catch({ (error) in
DDLogError(error.localizedDescription)
reject(error)
})
}
}
//网络下载附件
private func downdloadFile(id: String) -> Promise<OOAttachment>{
return Promise { fulfill, reject in
self.cloudFileApi.request(.getFile(id)) { (result) in
let response = OOResult<BaseModelClass<OOAttachment>>(result)
if response.isResultSuccess() {
if let file = response.model?.data {
self.cloudFileApi.request(.downloadFile(file), completion: { (downloadResult) in
switch downloadResult {
case .success(_):
//下载文件成功 返回附件对象 需要附件的地方根据固定的文件位置去查找
fulfill(file)
break
case .failure(let err):
reject(err)
break
}
})
}else {
reject(O2APIError.o2ResponseError("没有查询到附件对象, id: \(id)"))
}
}else {
reject(response.error!)
}
}
}
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

开源OA系统 - 码云GVP|Java开源oa|企业OA办公平台|企业OA|协同办公OA|流程平台OA|O2OA|OA,支持国产麒麟操作系统和国产数据库(达梦、人大金仓),政务OA,军工信息化OA
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/micoder/O2OA.git
git@gitee.com:micoder/O2OA.git
micoder
O2OA
O2OA
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /