Commit b44d61c4 authored by Steven杜宇's avatar Steven杜宇

// OSS优化

parent 3c44964c
...@@ -208,7 +208,7 @@ extension YHCertificateListVC { ...@@ -208,7 +208,7 @@ extension YHCertificateListVC {
} }
} }
func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, callBack:((Bool)->())?) { func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, callBack:((Bool, YHContentUrl?)->())?) {
// 先OSS上传得到URL // 先OSS上传得到URL
self.viewModel.uploadImage(img) { self.viewModel.uploadImage(img) {
...@@ -226,15 +226,10 @@ extension YHCertificateListVC { ...@@ -226,15 +226,10 @@ extension YHCertificateListVC {
model.name = imageName model.name = imageName
model.url = url model.url = url
model.suffix = suffix model.suffix = suffix
callBack?(true, model)
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { } else {
success, error in callBack?(false, nil)
self.requestList(status: self.status)
callBack?(success)
}
return
} }
callBack?(false)
} }
} }
...@@ -260,7 +255,7 @@ extension YHCertificateListVC { ...@@ -260,7 +255,7 @@ extension YHCertificateListVC {
model.url = successUrl model.url = successUrl
model.suffix = suffixName model.suffix = suffixName
YHHUD.show(.progress(message: "上传中...")) YHHUD.show(.progress(message: "上传中..."))
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModels:[model], operation: "add", rename: "") {
success, error in success, error in
YHHUD.hide() YHHUD.hide()
self.requestList(status:self.status) self.requestList(status:self.status)
...@@ -311,49 +306,58 @@ extension YHCertificateListVC { ...@@ -311,49 +306,58 @@ extension YHCertificateListVC {
} }
} }
sheetView.uploadImageBlock = { sheetView.uploadImageBlock = {
[weak self] imgArr in [weak self] targetImgArr in
guard let self = self else { return } guard let self = self else { return }
var successArr:[YHSelectImageItem] = [] let ossGroup = DispatchGroup()
var failArr:[YHSelectImageItem] = [] var ossArr:[YHContentUrl] = []
let group = DispatchGroup()
YHHUD.show(.progress(message: "上传中...")) YHHUD.show(.progress(message: "上传中..."))
for item in imgArr { // 先将所有图片组上传到OSS
for item in targetImgArr {
if let image = item.data { if let image = item.data {
group.enter() ossGroup.enter()
uploadImage(image, imageName:item.name, supplementInfo: supplementInfo) { uploadImage(image, imageName:item.name, supplementInfo: supplementInfo) {
success in success, urlModel in
if success { if success, let model = urlModel {
successArr.append(item) ossArr.append(model)
} else {
failArr.append(item)
} }
group.leave() ossGroup.leave()
} }
} }
} }
// 等待所有任务完成 // 再将OSS上传信息组上传到服务器
group.notify(queue: .main) { ossGroup.notify(queue: .main) {
if ossArr.count <= 0 {
YHHUD.hide() YHHUD.hide()
// 所有任务完成,回到主线程继续执行 YHHUD.flash(message: "上传失败")
print("所有任务完成") return
if imgArr.count == successArr.count { }
YHHUD.flash(message: "上传成功")
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModels:ossArr, operation: "add", rename: "") {
[weak self] success, error in
guard let self = self else { return }
YHHUD.hide()
if success {
if ossArr.count == targetImgArr.count {
YHHUD.flash(message: "上传成功")
} else { } else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败") YHHUD.flash(message: "\(ossArr.count)张照片上传成功\n\(targetImgArr.count-ossArr.count)张照片上传失败")
} }
if successArr.count > 0 {
let vc = YHCertificateUploadContentListVC() let vc = YHCertificateUploadContentListVC()
vc.orderId = self.orderId vc.orderId = self.orderId
vc.categoryInfo = self.categoryInfo vc.categoryInfo = self.categoryInfo
vc.supplementInfo = supplementInfo vc.supplementInfo = supplementInfo
self.navigationController?.pushViewController(vc) self.navigationController?.pushViewController(vc)
} else {
YHHUD.flash(message: "上传失败")
}
} }
} }
} }
sheetView.show() sheetView.show()
} }
} }
...@@ -223,7 +223,7 @@ extension YHCertificateSearchViewController { ...@@ -223,7 +223,7 @@ extension YHCertificateSearchViewController {
} }
} }
func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, callBack:((Bool)->())?) { func uploadImage(_ img: UIImage, imageName:String, supplementInfo:YHSupplementInfo, callBack:((Bool, YHContentUrl?)->())?) {
// 先OSS上传得到URL // 先OSS上传得到URL
self.viewModel.uploadImage(img) { self.viewModel.uploadImage(img) {
...@@ -235,21 +235,16 @@ extension YHCertificateSearchViewController { ...@@ -235,21 +235,16 @@ extension YHCertificateSearchViewController {
if !suffixName.isEmpty { if !suffixName.isEmpty {
suffix = suffixName suffix = suffixName
} }
// 再调用业务接口
let model = YHContentUrl() let model = YHContentUrl()
model.name = imageName model.name = imageName
model.url = url model.url = url
model.suffix = suffix model.suffix = suffix
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { callBack?(true, model)
success, error in
self.requestList(keyWord: self.searchBar.textField.text) } else {
callBack?(success) callBack?(false, nil)
} }
return
}
callBack?(false)
} }
} }
...@@ -273,7 +268,7 @@ extension YHCertificateSearchViewController { ...@@ -273,7 +268,7 @@ extension YHCertificateSearchViewController {
model.url = successUrl model.url = successUrl
model.suffix = suffixName model.suffix = suffixName
YHHUD.show(.progress(message: "上传中...")) YHHUD.show(.progress(message: "上传中..."))
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModels:[model], operation: "add", rename: "") {
success, error in success, error in
YHHUD.hide() YHHUD.hide()
if success { if success {
...@@ -325,46 +320,56 @@ extension YHCertificateSearchViewController { ...@@ -325,46 +320,56 @@ extension YHCertificateSearchViewController {
} }
sheetView.uploadImageBlock = { sheetView.uploadImageBlock = {
[weak self] imgArr in [weak self] targetImgArr in
guard let self = self else { return } guard let self = self else { return }
var successArr:[YHSelectImageItem] = [] let ossGroup = DispatchGroup()
var failArr:[YHSelectImageItem] = [] var ossArr:[YHContentUrl] = []
let group = DispatchGroup()
YHHUD.show(.progress(message: "上传中...")) YHHUD.show(.progress(message: "上传中..."))
for item in imgArr { // 先将所有图片组上传到OSS
for item in targetImgArr {
if let image = item.data { if let image = item.data {
group.enter() ossGroup.enter()
uploadImage(image, imageName:item.name, supplementInfo: supplementInfo) { uploadImage(image, imageName:item.name, supplementInfo: supplementInfo) {
success in success, urlModel in
if success { if success, let model = urlModel {
successArr.append(item) ossArr.append(model)
} else {
failArr.append(item)
} }
group.leave() ossGroup.leave()
} }
} }
} }
// 等待所有任务完成 // 再将OSS上传信息组上传到服务器
group.notify(queue: .main) { ossGroup.notify(queue: .main) {
// 所有任务完成,回到主线程继续执行 if ossArr.count <= 0 {
print("所有任务完成")
YHHUD.hide() YHHUD.hide()
if imgArr.count == successArr.count { YHHUD.flash(message: "上传失败")
YHHUD.flash(message: "上传成功") return
} else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败")
} }
if successArr.count > 0 { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModels:ossArr, operation: "add", rename: "") {
[weak self] success, error in
guard let self = self else { return }
YHHUD.hide()
if success {
let vc = YHCertificateUploadContentListVC() let vc = YHCertificateUploadContentListVC()
vc.orderId = self.orderId vc.orderId = self.orderId
vc.categoryInfo = self.categoryInfo vc.categoryInfo = self.categoryInfo
vc.supplementInfo = supplementInfo vc.supplementInfo = supplementInfo
self.navigationController?.pushViewController(vc) self.navigationController?.pushViewController(vc)
if ossArr.count == targetImgArr.count {
YHHUD.flash(message: "上传成功")
} else {
YHHUD.flash(message: "\(ossArr.count)张照片上传成功\n\(targetImgArr.count-ossArr.count)张照片上传失败")
}
} else {
YHHUD.flash(message: "上传失败")
}
} }
} }
} }
......
...@@ -107,7 +107,7 @@ class YHCertificateUploadContentListVC: YHBaseViewController { ...@@ -107,7 +107,7 @@ class YHCertificateUploadContentListVC: YHBaseViewController {
// 重命名 // 重命名
text = text + "." + selectEditItem.getFileSuffixName() text = text + "." + selectEditItem.getFileSuffixName()
YHHUD.show(.progress(message: "重命名中...")) YHHUD.show(.progress(message: "重命名中..."))
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:selectEditItem, operation: "rename", rename: text) { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModels:[selectEditItem], operation: "rename", rename: text) {
success, error in success, error in
YHHUD.hide() YHHUD.hide()
if success { if success {
...@@ -145,39 +145,51 @@ class YHCertificateUploadContentListVC: YHBaseViewController { ...@@ -145,39 +145,51 @@ class YHCertificateUploadContentListVC: YHBaseViewController {
uploadFile(fileUrl) uploadFile(fileUrl)
} }
sheetView.uploadImageBlock = { sheetView.uploadImageBlock = {
[weak self] imgArr in [weak self] targetImgArr in
guard let self = self else { return } guard let self = self else { return }
let group = DispatchGroup() let ossGroup = DispatchGroup()
var successArr:[YHSelectImageItem] = [] var ossArr:[YHContentUrl] = []
var failArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message: "上传中...")) YHHUD.show(.progress(message: "上传中..."))
for item in imgArr { // 先将所有图片组上传到OSS
for item in targetImgArr {
if let image = item.data { if let image = item.data {
group.enter() ossGroup.enter()
uploadImage(image, imageName:item.name) { uploadImage(image, imageName:item.name) {
success in success, urlModel in
if success { if success, let model = urlModel {
successArr.append(item) ossArr.append(model)
} else { }
failArr.append(item) ossGroup.leave()
} }
group.leave()
} }
} }
// 再将OSS上传信息组上传到服务器
ossGroup.notify(queue: .main) {
if ossArr.count <= 0 {
YHHUD.hide()
YHHUD.flash(message: "上传失败")
return
} }
// 等待所有任务完成 self.viewModel.updateCertificateItem(supplementsId:self.supplementInfo.id, urlModels:ossArr, operation: "add", rename: "") {
group.notify(queue: .main) { [weak self] success, error in
// 所有任务完成,回到主线程继续执行 guard let self = self else { return }
print("所有任务完成")
if imgArr.count == successArr.count { YHHUD.hide()
self.requestList()
if success {
if ossArr.count == targetImgArr.count {
YHHUD.flash(message: "上传成功") YHHUD.flash(message: "上传成功")
} else {
YHHUD.flash(message: "\(ossArr.count)张照片上传成功\n\(targetImgArr.count-ossArr.count)张照片上传失败")
}
} else { } else {
YHHUD.flash(message: "\(successArr.count)张照片上传成功\n\(failArr.count)张照片上传失败") YHHUD.flash(message: "上传失败")
}
} }
YHHUD.hide()
} }
} }
sheetView.show() sheetView.show()
...@@ -279,7 +291,7 @@ extension YHCertificateUploadContentListVC: UITableViewDelegate, UITableViewData ...@@ -279,7 +291,7 @@ extension YHCertificateUploadContentListVC: UITableViewDelegate, UITableViewData
if !sure { return } if !sure { return }
// 删除 // 删除
YHHUD.show(.progress(message: "删除中...")) YHHUD.show(.progress(message: "删除中..."))
self.viewModel.updateCertificateItem(supplementsId:self.supplementInfo.id, urlModel:contentItem, operation: "del", rename:"") { self.viewModel.updateCertificateItem(supplementsId:self.supplementInfo.id, urlModels:[contentItem], operation: "del", rename:"") {
success, error in success, error in
YHHUD.hide() YHHUD.hide()
if success { if success {
...@@ -639,7 +651,7 @@ extension YHCertificateUploadContentListVC { ...@@ -639,7 +651,7 @@ extension YHCertificateUploadContentListVC {
func uploadImage(_ img: UIImage, imageName:String, callBack:((Bool)->())?) { func uploadImage(_ img: UIImage, imageName:String, callBack:((Bool, YHContentUrl?)->())?) {
// 先OSS上传得到URL // 先OSS上传得到URL
self.viewModel.uploadImage(img) { self.viewModel.uploadImage(img) {
...@@ -651,21 +663,15 @@ extension YHCertificateUploadContentListVC { ...@@ -651,21 +663,15 @@ extension YHCertificateUploadContentListVC {
if !suffixName.isEmpty { if !suffixName.isEmpty {
suffix = suffixName suffix = suffixName
} }
// 再调用业务接口
let model = YHContentUrl() let model = YHContentUrl()
model.name = imageName model.name = imageName
model.url = url model.url = url
model.suffix = suffix model.suffix = suffix
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { callBack?(true, model)
success, error in
callBack?(success) } else {
self.requestList() callBack?(false, nil)
}
return
} }
callBack?(false)
} }
} }
...@@ -692,7 +698,7 @@ extension YHCertificateUploadContentListVC { ...@@ -692,7 +698,7 @@ extension YHCertificateUploadContentListVC {
model.url = successUrl model.url = successUrl
model.suffix = suffixName model.suffix = suffixName
YHHUD.show(.progress(message: "上传中...")) YHHUD.show(.progress(message: "上传中..."))
self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModel:model, operation: "add", rename: "") { self.viewModel.updateCertificateItem(supplementsId:supplementInfo.id, urlModels:[model], operation: "add", rename: "") {
success, error in success, error in
YHHUD.hide() YHHUD.hide()
if success { if success {
......
...@@ -478,10 +478,9 @@ extension YHCertificateUploadSheetView: PHPickerViewControllerDelegate { ...@@ -478,10 +478,9 @@ extension YHCertificateUploadSheetView: PHPickerViewControllerDelegate {
} }
let group = DispatchGroup() let group = DispatchGroup()
let queue = DispatchQueue.global()
var imageArr:[YHSelectImageItem] = [] var imageArr:[YHSelectImageItem] = []
YHHUD.show(.progress(message:"加载中...")) YHHUD.show(.progress(message:"上传中..."))
for result in results { for result in results {
group.enter() group.enter()
// 此方法是异步操作 // 此方法是异步操作
......
...@@ -211,20 +211,21 @@ class YHCertificateViewModel: YHBaseViewModel { ...@@ -211,20 +211,21 @@ class YHCertificateViewModel: YHBaseViewModel {
// 更改证件 // 更改证件
// operation参数必填,必须是:add(上传)、del(删除)、rename(重命名) // operation参数必填,必须是:add(上传)、del(删除)、rename(重命名)
func updateCertificateItem(supplementsId:Int, urlModel: YHContentUrl, operation:String, rename:String, callBack:((Bool, YHErrorModel?)->())?) { func updateCertificateItem(supplementsId:Int, urlModels: [YHContentUrl], operation:String, rename:String, callBack:((Bool, YHErrorModel?)->())?) {
var name = urlModel.name var files:[[String: Any]] = []
if operation == "rename" { for model in urlModels {
name = rename
}
let dic:[String : Any] = [ let dic:[String : Any] = [
"id" : supplementsId, "id" : supplementsId,
"content_url": [ "content_url": [
"name": name, "name": operation == "rename" ? rename: model.name,
"url": urlModel.url, "url": model.url,
"suffix": urlModel.suffix]] "suffix": model.suffix]]
files.append(dic)
}
let params: [String: Any] = [ let params: [String: Any] = [
"file_info" : [dic], "file_info" : files,
"operation" : operation, "operation" : operation,
] ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment