Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
e6c0d9f1
Commit
e6c0d9f1
authored
Sep 30, 2025
by
Alex朱枝文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
腾讯IM消息处理逻辑剥离成类
parent
c2dff21e
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
258 additions
and
139 deletions
+258
-139
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+4
-0
YHTXIMMessageHandler.swift
...les/ButlerServiceManager(银河管家)/YHTXIMMessageHandler.swift
+231
-0
YHResourceViewController.swift
...mmunity(社区)/Resource(资源)/C/YHResourceViewController.swift
+13
-2
YHMessageListVC.swift
...alaxy/Classes/Modules/Message(消息)/C/YHMessageListVC.swift
+10
-137
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
e6c0d9f1
...
...
@@ -1180,6 +1180,7 @@
047A96902D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
047A968B2D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift */
;
};
047A96932D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
047A96922D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift */
;
};
0487C1C72E8940D000CE6472
/* YHCustomSearchView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0487C1C62E8940D000CE6472
/* YHCustomSearchView.swift */
;
};
0487C1D82E8B78B600CE6472
/* YHTXIMMessageHandler.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0487C1D72E8B78B600CE6472
/* YHTXIMMessageHandler.swift */
;
};
048D6ADB2D5E00DE00BC6F4C
/* YHMemberCenterViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADA2D5E00DE00BC6F4C
/* YHMemberCenterViewController.swift */
;
};
048D6ADD2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADC2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift */
;
};
048D6ADF2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADE2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift */
;
};
...
...
@@ -2550,6 +2551,7 @@
047A968B2D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHGCIncomeRecordWorkExperienceViewController.swift
;
sourceTree
=
"<group>"
;
};
047A96922D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHInfoQuestionSelectionCell.swift
;
sourceTree
=
"<group>"
;
};
0487C1C62E8940D000CE6472
/* YHCustomSearchView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHCustomSearchView.swift
;
sourceTree
=
"<group>"
;
};
0487C1D72E8B78B600CE6472
/* YHTXIMMessageHandler.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHTXIMMessageHandler.swift
;
sourceTree
=
"<group>"
;
};
048D6ADA2D5E00DE00BC6F4C
/* YHMemberCenterViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterViewController.swift
;
sourceTree
=
"<group>"
;
};
048D6ADC2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterHeaderView.swift
;
sourceTree
=
"<group>"
;
};
048D6ADE2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterHeaderBannerCell.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -3185,6 +3187,7 @@
045C0A612D12CA5E00BD2DC0
/* VM */
,
045C0A622D12CA5E00BD2DC0
/* YHButlerMessageReportHandler.swift */
,
045C0A632D12CA5E00BD2DC0
/* YHButlerServiceManager.swift */
,
0487C1D72E8B78B600CE6472
/* YHTXIMMessageHandler.swift */
,
045C0A642D12CA5E00BD2DC0
/* YHButlerServiceMessageHandler.swift */
,
043F0EB02DE85717003354EB
/* YHTencentDeskManager.swift */
,
043F0EB12DE85717003354EB
/* YHTUIMessageListManager.swift */
,
...
...
@@ -8516,6 +8519,7 @@
045C12A42D12CA5F00BD2DC0
/* YHEducationInfoCell.swift in Sources */
,
045C12A52D12CA5F00BD2DC0
/* YHTravelHKDLGuideSheetView.swift in Sources */
,
045C12A62D12CA5F00BD2DC0
/* YHTravelDocsPreparationTipsCell.swift in Sources */
,
0487C1D82E8B78B600CE6472
/* YHTXIMMessageHandler.swift in Sources */
,
04AFEF592D6C8CE00007A011
/* YHVipLevelRightHeaderView.swift in Sources */
,
045C12A72D12CA5F00BD2DC0
/* YHMainInfoPreviewModel.swift in Sources */
,
045C12A82D12CA5F00BD2DC0
/* YHActivityTravelitemView.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Modules/ButlerServiceManager(银河管家)/YHTXIMMessageHandler.swift
0 → 100644
View file @
e6c0d9f1
// YHIMMessageHandler.swift
import
UIKit
import
SafariServices
import
TUIConversation
import
TUIChat
import
IQKeyboardManagerSwift
class
YHIMMessageHandler
:
NSObject
{
weak
var
viewController
:
UIViewController
?
weak
var
navigationController
:
UINavigationController
?
private
lazy
var
previewFileTool
:
YHFilePreviewTool
=
{
guard
let
vc
=
viewController
else
{
fatalError
(
"ViewController不能为空"
)
}
return
YHFilePreviewTool
(
targetVC
:
vc
)
}()
init
(
viewController
:
UIViewController
,
navigationController
:
UINavigationController
?)
{
self
.
viewController
=
viewController
self
.
navigationController
=
navigationController
super
.
init
()
}
}
// MARK: - TUIYHCustomCellClickDelegate
extension
YHIMMessageHandler
:
TUIYHCustomCellClickDelegate
{
func
didTap
(
inFileCell
cellData
:
TUIFileMessageCellData
)
{
var
isExist
:
ObjCBool
=
false
let
path
=
cellData
.
getFilePath
(
&
isExist
)
if
isExist
.
boolValue
{
let
url
=
URL
(
fileURLWithPath
:
path
)
previewFileTool
.
openXLSXFile
(
at
:
url
,
fileName
:
cellData
.
fileName
)
}
else
{
cellData
.
downloadFile
()
}
}
func
didTapCustomOrderCell
(
_
cellData
:
TUIOrderCellData
)
{
let
linkAddress
=
cellData
.
link
??
""
// 处理普通URL
if
linkAddress
.
count
>
0
,
linkAddress
.
isValidHttpUrl
||
linkAddress
.
isValidHttpsUrl
||
linkAddress
.
isValidFileUrl
,
let
url
=
URL
(
string
:
linkAddress
)
{
showSafari
(
url
:
url
)
return
}
// 处理自定义消息
handleCustomMessage
(
linkAddress
)
}
private
func
handleCustomMessage
(
_
content
:
String
?)
{
guard
let
dicData
=
content
,
!
dicData
.
isEmpty
,
let
data
=
dicData
.
data
(
using
:
.
utf8
),
let
jsonObject
=
try
?
JSONSerialization
.
jsonObject
(
with
:
data
)
as?
[
String
:
Any
],
!
jsonObject
.
isEmpty
else
{
printLog
(
"消息解析失败"
)
return
}
let
msgType
=
jsonObject
[
"msg_type"
]
as?
String
??
""
let
navH5Url
=
jsonObject
[
"nav_h5_url"
]
as?
String
??
""
let
orderID
=
jsonObject
[
"order_id"
]
as?
Int
??
-
1
let
type
=
jsonObject
[
"type"
]
as?
Int
??
-
1
let
batchId
=
jsonObject
[
"batch_id"
]
as?
Int
??
0
if
msgType
==
"card_msg"
,
navH5Url
.
count
>
0
{
let
title
=
jsonObject
[
"title"
]
as?
String
??
""
showH5Page
(
baseUrl
:
navH5Url
,
title
:
title
)
}
else
if
orderID
>
-
1
,
type
>
-
1
{
showOrderMessage
(
type
:
type
,
orderId
:
orderID
,
batchId
:
batchId
)
}
}
}
// MARK: - 公开方法
extension
YHIMMessageHandler
{
/// 处理IM消息点击
/// - Parameter conversationData: 会话数据
@MainActor
func
handleIMMessageTap
(
conversationData
:
TUIConversationCellData
)
{
updateNavigateBarBeforeEnterChatVC
()
let
params
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
conversationData
.
title
,
TUICore_TUIChatObjectFactory_ChatViewController_UserID
:
conversationData
.
userID
,
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
:
conversationData
.
groupID
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarImage
:
conversationData
.
avatarImage
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
conversationData
.
faceUrl
,
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
:
conversationData
.
conversationID
,
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
conversationData
.
atTipsStr
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
conversationData
.
atMsgSeqs
,
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
conversationData
.
draftText
]
pushToChatViewController
(
with
:
params
)
}
/// 处理远程通知
/// - Parameter userInfo: 通知数据
@MainActor
func
handleRemoteNotification
(
_
userInfo
:
[
AnyHashable
:
Any
])
{
let
extString
=
userInfo
[
"ext"
]
as?
String
??
"{}"
let
extData
=
extString
.
data
(
using
:
.
utf8
)
??
Data
()
let
ext
=
(
try
?
JSONSerialization
.
jsonObject
(
with
:
extData
,
options
:
[]))
as?
[
String
:
Any
]
??
[:]
let
entity
=
ext
[
"entity"
]
as?
[
String
:
Any
]
??
[:]
let
chatType
=
entity
[
"chatType"
]
as?
Int
??
0
let
senderID
=
entity
[
"sender"
]
as?
String
??
""
let
nickName
=
entity
[
"nickname"
]
as?
String
??
""
let
aps
=
userInfo
[
"aps"
]
as?
[
String
:
Any
]
??
[:]
let
alert
=
aps
[
"alert"
]
as?
[
String
:
Any
]
??
[:]
let
title
=
alert
[
"title"
]
as?
String
??
nickName
guard
senderID
.
count
>
0
else
{
return
}
updateNavigateBarBeforeEnterChatVC
()
var
param
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
title
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
[],
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
""
]
if
chatType
==
2
{
// 群聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"group_
\(
senderID
)
"
}
else
{
// 单聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_UserID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"c2c_
\(
senderID
)
"
}
pushToChatViewController
(
with
:
param
)
}
@MainActor
func
gotoChatVC
(
senderID
:
String
,
isGroupChat
:
Bool
=
false
)
{
guard
senderID
.
count
>
0
else
{
return
}
updateNavigateBarBeforeEnterChatVC
()
var
param
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
[],
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
""
]
if
isGroupChat
{
// 群聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"group_
\(
senderID
)
"
}
else
{
// 单聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_UserID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"c2c_
\(
senderID
)
"
}
pushToChatViewController
(
with
:
param
)
}
}
// MARK: - 私有方法
extension
YHIMMessageHandler
{
/// 跳转到聊天页面(统一方法)
private
func
pushToChatViewController
(
with
params
:
[
String
:
Any
])
{
let
vc
=
navigationController
?
.
push
(
TUICore_TUIChatObjectFactory_ChatViewController_Classic
,
param
:
params
,
forResult
:
nil
)
if
let
chatVC
=
vc
as?
TUIBaseChatViewController
{
chatVC
.
navigationItem
.
rightBarButtonItem
=
nil
chatVC
.
navigationItem
.
rightBarButtonItems
=
nil
chatVC
.
yhCustomCellClickDelegate
=
self
}
}
/// 更新导航栏配置
@MainActor
private
func
updateNavigateBarBeforeEnterChatVC
()
{
IQKeyboardManager
.
shared
.
isEnabled
=
false
navigationController
?
.
gk_hideNavigationBar
=
false
navigationController
?
.
isNavigationBarHidden
=
false
let
appearance
=
UINavigationBarAppearance
()
appearance
.
backgroundColor
=
.
white
appearance
.
shadowImage
=
UIImage
()
appearance
.
shadowColor
=
.
clear
navigationController
?
.
navigationBar
.
tintColor
=
.
black
navigationController
?
.
navigationBar
.
standardAppearance
=
appearance
navigationController
?
.
navigationBar
.
scrollEdgeAppearance
=
appearance
}
/// 显示Safari浏览器
private
func
showSafari
(
url
:
URL
)
{
let
safariVC
=
SFSafariViewController
(
url
:
url
)
safariVC
.
dismissButtonStyle
=
.
close
safariVC
.
modalPresentationStyle
=
.
fullScreen
viewController
?
.
present
(
safariVC
,
animated
:
true
)
}
/// 显示H5页面(带Token)
private
func
showH5Page
(
baseUrl
:
String
,
title
:
String
)
{
var
finalUrl
=
baseUrl
if
YHLoginManager
.
shared
.
isLogin
()
{
let
token
=
YHLoginManager
.
shared
.
h5Token
let
separator
=
baseUrl
.
contains
(
"?"
)
?
"&"
:
"?"
finalUrl
=
baseUrl
+
separator
+
"param="
+
token
}
let
webVC
=
YHH5WebViewVC
()
webVC
.
isFullScreenFlag
=
false
webVC
.
navTitle
=
title
webVC
.
url
=
finalUrl
navigationController
?
.
pushViewController
(
webVC
)
}
/// 显示订单消息页面
private
func
showOrderMessage
(
type
:
Int
,
orderId
:
Int
,
batchId
:
Int
)
{
YHServiceOrderListViewController
.
jumpToMessageController
(
type
:
type
,
orderId
:
orderId
,
batchId
)
}
}
galaxy/galaxy/Classes/Modules/Community(社区)/Resource(资源)/C/YHResourceViewController.swift
View file @
e6c0d9f1
...
...
@@ -20,6 +20,14 @@ class YHResourceViewController: YHBaseViewController {
return
viewModel
}()
// 消息处理器
private
lazy
var
messageHandler
:
YHIMMessageHandler
=
{
return
YHIMMessageHandler
(
viewController
:
self
,
navigationController
:
navigationController
)
}()
// 筛选条件
var
selectedCategories
:
[
YHResourceCategory
]
=
[]
...
...
@@ -464,8 +472,11 @@ private extension YHResourceViewController {
return
}
YHGrayCommonAlertView
.
show
(
"需联系银河管家进行发布信息"
,
"联系银河管家发布企业服务与企业需求,快来与我们联系吧~"
,
"返回"
,
"前往联系"
,
fullGuestureEnable
:
false
)
{
//
YHGrayCommonAlertView
.
show
(
"需联系银河管家进行发布信息"
,
"联系银河管家发布企业服务与企业需求,快来与我们联系吧~"
,
"返回"
,
"前往联系"
,
fullGuestureEnable
:
false
)
{
[
weak
self
]
in
guard
let
self
=
self
else
{
return
}
self
.
messageHandler
.
gotoChatVC
(
senderID
:
""
)
}
callBack
:
{
//
}
...
...
galaxy/galaxy/Classes/Modules/Message(消息)/C/YHMessageListVC.swift
View file @
e6c0d9f1
...
...
@@ -29,9 +29,12 @@ class YHMessageListVC: YHBaseViewController {
var
isNotifyEnabled
=
false
private
lazy
var
previewFileTool
:
YHFilePreviewTool
=
{
let
tool
=
YHFilePreviewTool
(
targetVC
:
self
)
return
tool
// 消息处理器
private
lazy
var
messageHandler
:
YHIMMessageHandler
=
{
return
YHIMMessageHandler
(
viewController
:
self
,
navigationController
:
navigationController
)
}()
lazy
var
tableView
:
UITableView
=
{
...
...
@@ -465,46 +468,7 @@ extension YHMessageListVC {
}
func
handleRemoteNotification
(
_
userInfo
:
[
AnyHashable
:
Any
])
{
let
extString
=
userInfo
[
"ext"
]
as?
String
??
"{}"
let
extData
=
extString
.
data
(
using
:
.
utf8
)
??
Data
()
let
ext
=
(
try
?
JSONSerialization
.
jsonObject
(
with
:
extData
,
options
:
[]))
as?
[
String
:
Any
]
??
[:]
let
entity
=
ext
[
"entity"
]
as?
[
String
:
Any
]
??
[:]
let
chatType
=
entity
[
"chatType"
]
as?
Int
??
0
// 1: 单聊, 2: 群聊
let
senderID
=
entity
[
"sender"
]
as?
String
??
""
let
nickName
=
entity
[
"nickname"
]
as?
String
??
""
let
aps
=
userInfo
[
"aps"
]
as?
[
String
:
Any
]
??
[:]
let
alert
=
aps
[
"alert"
]
as?
[
String
:
Any
]
??
[:]
let
title
=
alert
[
"title"
]
as?
String
??
nickName
// 备用昵称
guard
senderID
.
count
>
0
else
{
return
}
updateNavigateBarBeforeEnterChatVC
()
var
param
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
title
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
""
,
// 通知无头像 URL
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
""
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
[],
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
""
]
// 5. 区分单聊/群聊
if
chatType
==
2
{
// 群聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"group_
\(
senderID
)
"
}
else
{
// 单聊
param
[
TUICore_TUIChatObjectFactory_ChatViewController_UserID
]
=
senderID
param
[
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
]
=
"c2c_
\(
senderID
)
"
}
// 3. 跳转
let
vc
=
navigationController
?
.
push
(
TUICore_TUIChatObjectFactory_ChatViewController_Classic
,
param
:
param
,
forResult
:
nil
)
if
let
vc
=
vc
as?
TUIBaseChatViewController
{
vc
.
navigationItem
.
rightBarButtonItem
=
nil
vc
.
navigationItem
.
rightBarButtonItems
=
nil
vc
.
yhCustomCellClickDelegate
=
self
}
messageHandler
.
handleRemoteNotification
(
userInfo
)
}
private
func
updateNavigateBarBeforeEnterChatVC
()
{
...
...
@@ -566,29 +530,12 @@ extension YHMessageListVC: UITableViewDelegate, UITableViewDataSource {
}
return
}
else
if
msgItem
.
type
==
YHMessageType
.
txIM
.
rawValue
{
let
item
=
msgArr
[
indexPath
.
row
]
guard
let
data
=
messageListManager
.
getMessageList
()
.
first
(
where
:
{
$0
.
conversationID
==
i
tem
.
conversationID
})
else
{
guard
let
data
=
messageListManager
.
getMessageList
()
.
first
(
where
:
{
$0
.
conversationID
==
msgI
tem
.
conversationID
})
else
{
return
}
updateNavigateBarBeforeEnterChatVC
()
let
param
:
[
String
:
Any
]
=
[
TUICore_TUIChatObjectFactory_ChatViewController_Title
:
data
.
title
,
TUICore_TUIChatObjectFactory_ChatViewController_UserID
:
data
.
userID
,
TUICore_TUIChatObjectFactory_ChatViewController_GroupID
:
data
.
groupID
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarImage
:
data
.
avatarImage
,
TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl
:
data
.
faceUrl
,
TUICore_TUIChatObjectFactory_ChatViewController_ConversationID
:
data
.
conversationID
,
TUICore_TUIChatObjectFactory_ChatViewController_AtTipsStr
:
data
.
atTipsStr
,
TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs
:
data
.
atMsgSeqs
,
TUICore_TUIChatObjectFactory_ChatViewController_Draft
:
data
.
draftText
]
let
vc
=
navigationController
?
.
push
(
TUICore_TUIChatObjectFactory_ChatViewController_Classic
,
param
:
param
,
forResult
:
nil
)
if
let
vc
=
vc
as?
TUIBaseChatViewController
{
vc
.
navigationItem
.
rightBarButtonItem
=
nil
vc
.
navigationItem
.
rightBarButtonItems
=
nil
vc
.
yhCustomCellClickDelegate
=
self
}
messageHandler
.
handleIMMessageTap
(
conversationData
:
data
)
return
}
...
...
@@ -722,77 +669,3 @@ extension YHMessageListVC: YHMessageListDelegate {
}
}
extension
YHMessageListVC
:
TUIYHCustomCellClickDelegate
{
func
didTap
(
inFileCell
cellData
:
TUIFileMessageCellData
)
{
var
isExist
:
ObjCBool
=
false
let
path
=
cellData
.
getFilePath
(
&
isExist
)
if
isExist
.
boolValue
{
let
url
=
URL
(
fileURLWithPath
:
path
)
previewFileTool
.
openXLSXFile
(
at
:
url
,
fileName
:
cellData
.
fileName
)
}
else
{
cellData
.
downloadFile
()
}
}
func
didTapCustomOrderCell
(
_
cellData
:
TUIOrderCellData
)
{
let
linkAddress
=
cellData
.
link
??
""
guard
linkAddress
.
count
>
0
,
linkAddress
.
isValidHttpUrl
||
linkAddress
.
isValidHttpsUrl
||
linkAddress
.
isValidFileUrl
,
let
url
=
URL
(
string
:
linkAddress
)
else
{
handelMessageType
(
linkAddress
)
return
}
let
safariViewController
=
SFSafariViewController
(
url
:
url
)
safariViewController
.
dismissButtonStyle
=
.
close
safariViewController
.
modalPresentationStyle
=
.
fullScreen
UIViewController
.
current
?
.
present
(
safariViewController
,
animated
:
true
,
completion
:
nil
)
}
private
func
handelMessageType
(
_
content
:
String
?)
{
if
let
dicData
=
content
,
dicData
.
count
>
0
,
let
data
=
dicData
.
data
(
using
:
.
utf8
)
{
do
{
if
let
jsonObject
=
try
JSONSerialization
.
jsonObject
(
with
:
data
,
options
:
[])
as?
[
String
:
Any
]
{
// 转换成功,jsonObject 是一个字典
printLog
(
"JSON字符串转换为字典成功:
\(
jsonObject
)
"
)
/*
"{\"order_id\":151824,\"type\":27}"
*/
if
!
jsonObject
.
isEmpty
{
let
msgType
:
String
=
jsonObject
[
"msg_type"
]
as?
String
??
""
let
navH5Url
:
String
=
jsonObject
[
"nav_h5_url"
]
as?
String
??
""
let
orderID
:
Int
=
jsonObject
[
"order_id"
]
as?
Int
??
-
1
let
type
:
Int
=
jsonObject
[
"type"
]
as?
Int
??
-
1
let
batchId
:
Int
=
jsonObject
[
"batch_id"
]
as?
Int
??
0
if
msgType
==
"card_msg"
,
navH5Url
.
count
>
0
{
let
title
=
jsonObject
[
"title"
]
as?
String
??
""
var
url
=
""
if
YHLoginManager
.
shared
.
isLogin
()
{
let
token
=
YHLoginManager
.
shared
.
h5Token
if
navH5Url
.
contains
(
"?"
)
{
url
=
navH5Url
+
"¶m="
+
token
}
else
{
url
=
navH5Url
+
"?param="
+
token
}
}
else
{
url
=
navH5Url
}
let
vc
=
YHH5WebViewVC
()
vc
.
isFullScreenFlag
=
false
vc
.
navTitle
=
title
vc
.
url
=
url
UIViewController
.
current
?
.
navigationController
?
.
pushViewController
(
vc
)
}
else
if
orderID
>
-
1
,
type
>
-
1
{
YHServiceOrderListViewController
.
jumpToMessageController
(
type
:
type
,
orderId
:
orderID
,
batchId
)
}
}
else
{
printLog
(
"ddddd"
)
}
}
else
{
printLog
(
"JSON字符串不是有效的字典格式"
)
}
}
catch
{
printLog
(
"JSON解析错误:
\(
error
)
"
)
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment