Commit 0f15b34f authored by Alex朱枝文's avatar Alex朱枝文

续签文书分享文件到微信

parent 68dc6fbe
...@@ -28,6 +28,7 @@ enum YHCertificateEditType:Int { ...@@ -28,6 +28,7 @@ enum YHCertificateEditType:Int {
case cancel = 4 case cancel = 4
case reupload = 5 case reupload = 5
case sendEmail = 6 case sendEmail = 6
case sendToWechat = 7
} }
class YHCertificateEditItem { class YHCertificateEditItem {
......
...@@ -568,20 +568,101 @@ extension YHResignDocumentDetailViewController { ...@@ -568,20 +568,101 @@ extension YHResignDocumentDetailViewController {
} }
downloadEvent = { [weak self] in downloadEvent = { [weak self] in
let items = [YHCertificateEditItem(type:.sendEmail, title:"发送至邮箱"), let items = [YHCertificateEditItem(type:.sendToWechat, title:"分享至微信"),
YHCertificateEditItem(type:.sendEmail, title:"发送至邮箱"),
YHCertificateEditItem(type:.cancel, title:"取消")] YHCertificateEditItem(type:.cancel, title:"取消")]
YHCertificateEditSheetView.sheetView(items:items,sheetTitle: "请选择下载方式") { YHCertificateEditSheetView.sheetView(items:items,sheetTitle: "请选择下载方式") {
[weak self] editType in [weak self] editType in
guard let self = self else { return } guard let self = self else { return }
IQKeyboardManager.shared.isEnabled = false
if editType == .sendEmail { if editType == .sendEmail {
IQKeyboardManager.shared.isEnabled = false
self.emailInputView.textField.text = "" self.emailInputView.textField.text = ""
self.emailInputView.textField.becomeFirstResponder() self.emailInputView.textField.becomeFirstResponder()
} else if editType == .sendToWechat {
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.previewResginDocument(docId: model.docId) { [weak self] model, error in
YHHUD.hide()
guard let self = self else {
return
}
// 全部是私域链接,转公域处理
if let urlString = model?.url, urlString.count > 0 {
YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getPublicImageUrl(urlString) { [weak self] success, error in
YHHUD.hide()
guard let self = self else {
return
}
if let success = success, let url = URL(string: success) {
//self.previewFile(url)
//YHShareManager.shared.sendLinkContent(self.name, "", UIImage(), link: success)
self.downloadRemoteFile(url: url) { [weak self] destination in
guard let self = self else {
return
}
if let destination = destination, !destination.absoluteString.isEmpty {
DispatchQueue.main.async {
YHShareManager.shared.shareFileToWeChat(fileUrl: destination, filename: self.name + "." + destination.pathExtension.lowercased(), ext: destination.pathExtension.lowercased())
}
}
}
} else {
var errorMsg = "文书正在生成中,请稍后再试"
if let error = error, error.errorMsg.count > 0 {
errorMsg = error.errorMsg
}
YHHUD.flash(message: errorMsg)
}
}
} else {
var errorMsg = "文书正在生成中,请稍后再试"
if let error = error, error.errorMsg.count > 0 {
errorMsg = error.errorMsg
}
YHHUD.flash(message: errorMsg)
}
}
} }
}.show() }.show()
} }
} }
private func downloadRemoteFile(url: URL, completiton: @escaping (_ destination: URL?) -> Void) {
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
DispatchQueue.main.async {
YHHUD.show(.progress(message: "加载文件中..."))
}
let task = session.downloadTask(with: url) { (tempLocalUrl, response, error) in
DispatchQueue.main.async {
YHHUD.hide()
}
if let tempLocalUrl = tempLocalUrl, error == nil {
// 下载完成,尝试打开文件
let fileManager = FileManager.default
let destination = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(response?.suggestedFilename ?? UUID().uuidString)
do {
if fileManager.fileExists(atPath: destination.path) {
try fileManager.removeItem(at: destination)
}
try fileManager.moveItem(at: tempLocalUrl, to: destination)
completiton(destination)
} catch {
completiton(nil)
DispatchQueue.main.async {
YHHUD.flash(message: "下载文件失败")
}
}
} else {
completiton(nil)
DispatchQueue.main.async {
YHHUD.flash(message: "下载文件失败")
}
}
}
task.resume()
}
private func getFileExtenion(_ fileUrl: String) -> String { private func getFileExtenion(_ fileUrl: String) -> String {
var extenion = "" var extenion = ""
if let url = URL(string: fileUrl) { if let url = URL(string: fileUrl) {
...@@ -903,6 +984,8 @@ private extension YHCertificateEditType { ...@@ -903,6 +984,8 @@ private extension YHCertificateEditType {
return "重传" return "重传"
case .sendEmail: case .sendEmail:
return "发送到邮箱" return "发送到邮箱"
case .sendToWechat:
return "分享至微信"
} }
} }
} }
......
...@@ -206,6 +206,51 @@ extension YHShareManager { ...@@ -206,6 +206,51 @@ extension YHShareManager {
} }
} }
/*
分享文件到微信
*/
func shareFileToWeChat(fileUrl: URL, filename: String, ext: String) {
// 检查微信是否安装
guard WXApi.isWXAppInstalled() else {
YHHUD.flash(message: "未安装微信App")
return
}
guard let fileData = try? Data(contentsOf: fileUrl) else {
YHHUD.flash(message: "本地不存在该文件")
return
}
// 文件大小检查
let fileSize = fileData.count / 1024 / 1024 // MB
guard fileSize <= 10 else { // 微信限制10MB
YHHUD.flash(message: "文件超过10MB")
return
}
// 创建文件对象
let fileObject = WXFileObject()
fileObject.fileData = fileData
fileObject.fileExtension = ext
// 创建消息体
let message = WXMediaMessage()
message.title = filename
message.description = ""
// message.thumbData = UIImage(named: "pdf_thumb")?.pngData() // 缩略图,不超过32KB
message.mediaObject = fileObject
// 创建发送请求
let req = SendMessageToWXReq()
req.bText = false
req.message = message
req.scene = Int32(WXSceneSession.rawValue) // 发送到会话
// 发送请求
WXApi.send(req) { success in
if !success {
YHHUD.flash(message: "发送失败")
}
}
}
/* /*
分享到微信小程序 分享到微信小程序
*/ */
......
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