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

// 优化弹出上传文件弹窗逻辑

parent ca5d1189
......@@ -233,3 +233,153 @@ class YHCertificateViewModel: YHBaseViewModel {
}
}
}
extension YHCertificateViewModel {
func showUploadSheetView(orderId:Int, categoryId:Int, supplementId: Int, completion:(()->())?) {
let sheetView = YHCertificateUploadSheetView.sheetView()
sheetView.maxSelectCount = 9
sheetView.uploadFilesBlock = {
[weak self] fileUrl in
guard let self = self else { return }
print(fileUrl)
uploadFile(fileUrl, supplementId: supplementId) {
completion?()
}
}
sheetView.uploadImageBlock = {
[weak self] targetImgArr in
guard let self = self else { return }
uploadImageArr(targetImgArr, supplementId: supplementId) {
completion?()
}
}
sheetView.show()
}
func uploadFile(_ fileUrl:URL, supplementId:Int, successBlock:(()->())?) {
if let fileData = try? Data(contentsOf: fileUrl) {
// 将文件数据上传到服务器
let size = String(format: "%.2fM", Double(fileData.count)/(1024.0 * 1024.0))
print("\(size)")
// 先OSS上传得到URL
YHHUD.show(.progress(message: "上传中..."))
self.uploadFile(fileUrl.absoluteString) {
[weak self] successUrl, error in
guard let self = self else { return }
YHHUD.hide()
// 再调用业务接口
if let successUrl = successUrl, !successUrl.isEmpty {
let fileName = successUrl.lastPathComponent
let suffixName = successUrl.pathExtension.lowercased()
let model = YHContentUrl()
model.name = fileName
model.url = successUrl
model.suffix = suffixName
YHHUD.show(.progress(message: "上传中..."))
self.updateCertificateItem(supplementsId:supplementId, urlModels:[model], operation: "add", rename: "") {
success, error in
YHHUD.hide()
if success {
YHHUD.flash(message: "上传成功")
} else {
var msg = "上传失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message:msg)
}
successBlock?()
}
return
}
var msg = "上传图片失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg
}
YHHUD.flash(message: msg)
}
} else {
YHHUD.flash(message: "识别文件失败")
}
}
func uploadImageArr(_ targetImgArr:[YHSelectImageItem], supplementId:Int, successBlock:(()->())?) {
let ossGroup = DispatchGroup()
var ossArr:[YHContentUrl] = []
YHHUD.show(.progress(message: "上传中..."))
// 先将所有图片组上传到OSS
for item in targetImgArr {
if let image = item.data {
ossGroup.enter()
uploadImage(image, imageName:item.name) {
success, urlModel in
if success, let model = urlModel {
ossArr.append(model)
}
ossGroup.leave()
}
}
}
// 再将OSS上传信息组上传到服务器
ossGroup.notify(queue: .main) {
if ossArr.count <= 0 {
YHHUD.hide()
YHHUD.flash(message: "上传失败")
return
}
self.updateCertificateItem(supplementsId:supplementId, 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 {
YHHUD.flash(message: "\(ossArr.count)张照片上传成功\n\(targetImgArr.count-ossArr.count)张照片上传失败")
}
successBlock?()
} else {
YHHUD.flash(message: "上传失败")
}
}
}
}
func uploadImage(_ img: UIImage, imageName:String, callBack:((Bool, YHContentUrl?)->())?) {
// 先OSS上传得到URL
self.uploadImage(img) {
[weak self] url, error in
guard let self = self else { return }
if let url = url, !url.isEmpty {
var suffix = "jpg"
let suffixName = url.pathExtension.lowercased()
if !suffixName.isEmpty {
suffix = suffixName
}
// 再调用业务接口
let model = YHContentUrl()
model.name = imageName
model.url = url
model.suffix = suffix
callBack?(true, model)
} else {
callBack?(false, nil)
}
}
}
}
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