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
27ebf5e4
Commit
27ebf5e4
authored
Sep 30, 2025
by
Steven杜宇
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev_1013' of
http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS
into dev_1013
parents
7edbff6c
e6c0d9f1
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
312 additions
and
223 deletions
+312
-223
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+4
-0
YHTXIMMessageHandler.swift
...les/ButlerServiceManager(银河管家)/YHTXIMMessageHandler.swift
+231
-0
YHResourceViewController.swift
...mmunity(社区)/Resource(资源)/C/YHResourceViewController.swift
+16
-6
YHResourceListModel.swift
...es/Community(社区)/Resource(资源)/M/YHResourceListModel.swift
+13
-45
YHResourceCategoryView.swift
...Community(社区)/Resource(资源)/V/YHResourceCategoryView.swift
+4
-4
YHResourceTableViewCell.swift
...ommunity(社区)/Resource(资源)/V/YHResourceTableViewCell.swift
+32
-26
YHResourceViewModel.swift
...s/Community(社区)/Resource(资源)/VM/YHResourceViewModel.swift
+0
-3
YHMessageListVC.swift
...alaxy/Classes/Modules/Message(消息)/C/YHMessageListVC.swift
+12
-139
No files found.
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
27ebf5e4
...
@@ -1180,6 +1180,7 @@
...
@@ -1180,6 +1180,7 @@
047A96902D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
047A968B2D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift */
;
};
047A96902D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
047A968B2D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift */
;
};
047A96932D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
047A96922D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift */
;
};
047A96932D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
047A96922D16C0900033BB4E
/* YHInfoQuestionSelectionCell.swift */
;
};
0487C1C72E8940D000CE6472
/* YHCustomSearchView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
0487C1C62E8940D000CE6472
/* YHCustomSearchView.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 */
;
};
048D6ADB2D5E00DE00BC6F4C
/* YHMemberCenterViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADA2D5E00DE00BC6F4C
/* YHMemberCenterViewController.swift */
;
};
048D6ADD2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADC2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift */
;
};
048D6ADD2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADC2D5EF0A900BC6F4C
/* YHMemberCenterHeaderView.swift */
;
};
048D6ADF2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADE2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift */
;
};
048D6ADF2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
048D6ADE2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift */
;
};
...
@@ -2550,6 +2551,7 @@
...
@@ -2550,6 +2551,7 @@
047A968B2D16AA410033BB4E
/* YHGCIncomeRecordWorkExperienceViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHGCIncomeRecordWorkExperienceViewController.swift
;
sourceTree
=
"<group>"
;
};
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>"
;
};
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>"
;
};
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>"
;
};
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>"
;
};
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>"
;
};
048D6ADE2D5F0FBE00BC6F4C
/* YHMemberCenterHeaderBannerCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMemberCenterHeaderBannerCell.swift
;
sourceTree
=
"<group>"
;
};
...
@@ -3185,6 +3187,7 @@
...
@@ -3185,6 +3187,7 @@
045C0A612D12CA5E00BD2DC0
/* VM */
,
045C0A612D12CA5E00BD2DC0
/* VM */
,
045C0A622D12CA5E00BD2DC0
/* YHButlerMessageReportHandler.swift */
,
045C0A622D12CA5E00BD2DC0
/* YHButlerMessageReportHandler.swift */
,
045C0A632D12CA5E00BD2DC0
/* YHButlerServiceManager.swift */
,
045C0A632D12CA5E00BD2DC0
/* YHButlerServiceManager.swift */
,
0487C1D72E8B78B600CE6472
/* YHTXIMMessageHandler.swift */
,
045C0A642D12CA5E00BD2DC0
/* YHButlerServiceMessageHandler.swift */
,
045C0A642D12CA5E00BD2DC0
/* YHButlerServiceMessageHandler.swift */
,
043F0EB02DE85717003354EB
/* YHTencentDeskManager.swift */
,
043F0EB02DE85717003354EB
/* YHTencentDeskManager.swift */
,
043F0EB12DE85717003354EB
/* YHTUIMessageListManager.swift */
,
043F0EB12DE85717003354EB
/* YHTUIMessageListManager.swift */
,
...
@@ -8516,6 +8519,7 @@
...
@@ -8516,6 +8519,7 @@
045C12A42D12CA5F00BD2DC0
/* YHEducationInfoCell.swift in Sources */
,
045C12A42D12CA5F00BD2DC0
/* YHEducationInfoCell.swift in Sources */
,
045C12A52D12CA5F00BD2DC0
/* YHTravelHKDLGuideSheetView.swift in Sources */
,
045C12A52D12CA5F00BD2DC0
/* YHTravelHKDLGuideSheetView.swift in Sources */
,
045C12A62D12CA5F00BD2DC0
/* YHTravelDocsPreparationTipsCell.swift in Sources */
,
045C12A62D12CA5F00BD2DC0
/* YHTravelDocsPreparationTipsCell.swift in Sources */
,
0487C1D82E8B78B600CE6472
/* YHTXIMMessageHandler.swift in Sources */
,
04AFEF592D6C8CE00007A011
/* YHVipLevelRightHeaderView.swift in Sources */
,
04AFEF592D6C8CE00007A011
/* YHVipLevelRightHeaderView.swift in Sources */
,
045C12A72D12CA5F00BD2DC0
/* YHMainInfoPreviewModel.swift in Sources */
,
045C12A72D12CA5F00BD2DC0
/* YHMainInfoPreviewModel.swift in Sources */
,
045C12A82D12CA5F00BD2DC0
/* YHActivityTravelitemView.swift in Sources */
,
045C12A82D12CA5F00BD2DC0
/* YHActivityTravelitemView.swift in Sources */
,
...
...
galaxy/galaxy/Classes/Modules/ButlerServiceManager(银河管家)/YHTXIMMessageHandler.swift
0 → 100644
View file @
27ebf5e4
// 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 @
27ebf5e4
...
@@ -20,6 +20,14 @@ class YHResourceViewController: YHBaseViewController {
...
@@ -20,6 +20,14 @@ class YHResourceViewController: YHBaseViewController {
return
viewModel
return
viewModel
}()
}()
// 消息处理器
private
lazy
var
messageHandler
:
YHIMMessageHandler
=
{
return
YHIMMessageHandler
(
viewController
:
self
,
navigationController
:
navigationController
)
}()
// 筛选条件
// 筛选条件
var
selectedCategories
:
[
YHResourceCategory
]
=
[]
var
selectedCategories
:
[
YHResourceCategory
]
=
[]
...
@@ -279,11 +287,6 @@ private extension YHResourceViewController {
...
@@ -279,11 +287,6 @@ private extension YHResourceViewController {
}
}
if
!
result
.
isEmpty
{
if
!
result
.
isEmpty
{
// 计算每个模型的高度参数
for
item
in
result
{
item
.
calHeightParam
()
}
self
.
viewModel
.
arrResourceData
=
result
self
.
viewModel
.
arrResourceData
=
result
self
.
updateUI
()
self
.
updateUI
()
}
}
...
@@ -469,7 +472,14 @@ private extension YHResourceViewController {
...
@@ -469,7 +472,14 @@ private extension YHResourceViewController {
return
return
}
}
//
YHGrayCommonAlertView
.
show
(
"需联系银河管家进行发布信息"
,
"联系银河管家发布企业服务与企业需求,快来与我们联系吧~"
,
"返回"
,
"前往联系"
,
fullGuestureEnable
:
false
)
{
[
weak
self
]
in
guard
let
self
=
self
else
{
return
}
self
.
messageHandler
.
gotoChatVC
(
senderID
:
""
)
}
callBack
:
{
//
}
}
}
func
selectFilterType
(
_
type
:
YHResourceFilterType
)
{
func
selectFilterType
(
_
type
:
YHResourceFilterType
)
{
...
...
galaxy/galaxy/Classes/Modules/Community(社区)/Resource(资源)/M/YHResourceListModel.swift
View file @
27ebf5e4
...
@@ -14,6 +14,8 @@ class YHResourceListModel: SmartCodable {
...
@@ -14,6 +14,8 @@ class YHResourceListModel: SmartCodable {
required
init
()
{}
required
init
()
{}
var
needNewLine
:
Bool
?
// MARK: - 基本信息
// MARK: - 基本信息
var
id
:
String
=
""
var
id
:
String
=
""
var
title
:
String
=
""
var
title
:
String
=
""
...
@@ -162,54 +164,20 @@ class YHResourceListModel: SmartCodable {
...
@@ -162,54 +164,20 @@ class YHResourceListModel: SmartCodable {
}
}
// MARK: - 计算Cell高度方法
// MARK: - 计算Cell高度方法
func
calHeightParam
()
{
func
didFinishMapping
()
{
let
screenWidth
=
KScreenWidth
if
needNewLine
==
nil
{
let
cellWidth
=
(
screenWidth
-
47
)
/
2
needNewLine
=
calculateNeedNewLine
()
var
totalHeight
:
CGFloat
=
60
+
20
+
44
// 基础高度
// 标题高度
if
!
title
.
isEmpty
{
let
titleFont
=
UIFont
.
PFSC_M
(
ofSize
:
16
)
??
UIFont
.
systemFont
(
ofSize
:
16
)
let
maxSize
=
CGSize
(
width
:
cellWidth
-
24
,
height
:
CGFloat
.
greatestFiniteMagnitude
)
let
titleRect
=
title
.
boundingRect
(
with
:
maxSize
,
options
:
[
.
usesLineFragmentOrigin
,
.
usesFontLeading
],
attributes
:
[
.
font
:
titleFont
],
context
:
nil
)
totalHeight
+=
ceil
(
titleRect
.
height
)
+
8
}
}
// 内容高度
}
if
!
content
.
isEmpty
{
let
contentFont
=
UIFont
.
PFSC_R
(
ofSize
:
13
)
??
UIFont
.
systemFont
(
ofSize
:
13
)
func
calculateNeedNewLine
()
->
Bool
{
let
maxSize
=
CGSize
(
width
:
cellWidth
-
24
,
height
:
CGFloat
.
greatestFiniteMagnitude
)
let
company
=
company_name
.
count
>
0
?
company_name
:
"-"
let
textRect
=
content
.
boundingRect
(
let
categoryName
=
category_name
.
count
>
0
?
category_name
:
"-"
with
:
maxSize
,
options
:
[
.
usesLineFragmentOrigin
,
.
usesFontLeading
],
attributes
:
[
.
font
:
contentFont
],
context
:
nil
)
totalHeight
+=
min
(
ceil
(
textRect
.
height
),
40
)
+
8
// 限制最大高度为2行
}
// 图片高度
if
!
images
.
isEmpty
{
let
imageHeight
:
CGFloat
=
100
totalHeight
+=
imageHeight
+
8
}
// 标签高度
if
!
tags
.
isEmpty
{
totalHeight
+=
20
+
8
}
// 底部信息高度
totalHeight
+=
30
self
.
cell_width
=
cellWidth
let
companyWidth
=
YHResourceTableViewCell
.
getLabelWidth
(
company
)
self
.
cell_height
=
max
(
totalHeight
,
160
)
// 最小高度160
let
categoryNameWidth
=
YHResourceTableViewCell
.
getLabelWidth
(
categoryName
)
return
companyWidth
+
categoryNameWidth
>=
KScreenWidth
-
YHResourceTableViewCell
.
logoWidth
-
YHResourceTableViewCell
.
logoToRight
-
YHResourceTableViewCell
.
arrowWidth
-
2
*
YHResourceTableViewCell
.
marginX
-
YHResourceTableViewCell
.
widthVLine
-
YHResourceTableViewCell
.
marginBetweenVLine
*
2
}
}
// MARK: - 便利方法
// MARK: - 便利方法
...
...
galaxy/galaxy/Classes/Modules/Community(社区)/Resource(资源)/V/YHResourceCategoryView.swift
View file @
27ebf5e4
...
@@ -267,10 +267,10 @@ extension YHResourceCategoryView: UICollectionViewDataSource, UICollectionViewDe
...
@@ -267,10 +267,10 @@ extension YHResourceCategoryView: UICollectionViewDataSource, UICollectionViewDe
selectedCategories
.
append
(
category
)
selectedCategories
.
append
(
category
)
}
}
// 如果没有选中任何分类,自动选中"全部行业"
//
// 如果没有选中任何分类,自动选中"全部行业"
if
selectedCategories
.
isEmpty
{
//
if selectedCategories.isEmpty {
selectedCategories
.
append
(
categories
.
first
!
)
//
selectedCategories.append(categories.first!)
}
//
}
}
}
collectionView
.
reloadData
()
collectionView
.
reloadData
()
...
...
galaxy/galaxy/Classes/Modules/Community(社区)/Resource(资源)/V/YHResourceTableViewCell.swift
View file @
27ebf5e4
...
@@ -12,13 +12,13 @@ import Kingfisher
...
@@ -12,13 +12,13 @@ import Kingfisher
class
YHResourceTableViewCell
:
UITableViewCell
{
class
YHResourceTableViewCell
:
UITableViewCell
{
static
let
labelFont
=
UIFont
.
PFSC_R
(
ofSize
:
14
)
static
let
labelFont
=
UIFont
.
PFSC_R
(
ofSize
:
14
)
static
let
labelHeight
:
CGFloat
=
20.0
static
let
labelHeight
:
CGFloat
=
20.0
private
let
marginX
:
CGFloat
=
20.0
static
let
marginX
:
CGFloat
=
20.0
private
let
logoWidth
:
CGFloat
=
60.0
static
let
logoWidth
:
CGFloat
=
60.0
private
let
logoToRight
:
CGFloat
=
10.0
static
let
logoToRight
:
CGFloat
=
10.0
private
let
marginBetweenVLine
:
CGFloat
=
6.0
static
let
marginBetweenVLine
:
CGFloat
=
6.0
private
let
widthVLine
:
CGFloat
=
1
static
let
widthVLine
:
CGFloat
=
1
private
let
arrowWidth
:
CGFloat
=
24
static
let
arrowWidth
:
CGFloat
=
24
private
let
arrowToLeft
:
CGFloat
=
24
static
let
arrowToLeft
:
CGFloat
=
24
static
let
cellReuseIdentifier
=
"YHResourceTableViewCell"
static
let
cellReuseIdentifier
=
"YHResourceTableViewCell"
...
@@ -106,9 +106,9 @@ class YHResourceTableViewCell: UITableViewCell {
...
@@ -106,9 +106,9 @@ class YHResourceTableViewCell: UITableViewCell {
}
}
// MARK: - 私有方法
// MARK: - 私有方法
private
extension
YHResourceTableViewCell
{
extension
YHResourceTableViewCell
{
func
setupUI
()
{
private
func
setupUI
()
{
backgroundColor
=
.
white
backgroundColor
=
.
white
selectionStyle
=
.
none
selectionStyle
=
.
none
...
@@ -124,17 +124,17 @@ private extension YHResourceTableViewCell {
...
@@ -124,17 +124,17 @@ private extension YHResourceTableViewCell {
setupConstraints
()
setupConstraints
()
}
}
func
setupConstraints
()
{
private
func
setupConstraints
()
{
// LOGO约束
// LOGO约束
logoImageView
.
snp
.
makeConstraints
{
make
in
logoImageView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
marginX
)
make
.
left
.
equalToSuperview
()
.
offset
(
YHResourceTableViewCell
.
marginX
)
make
.
top
.
equalToSuperview
()
.
offset
(
24
)
make
.
top
.
equalToSuperview
()
.
offset
(
24
)
make
.
width
.
height
.
equalTo
(
logoWidth
)
make
.
width
.
height
.
equalTo
(
YHResourceTableViewCell
.
logoWidth
)
}
}
// 右上角标签约束
// 右上角标签约束
typeTagIcon
.
snp
.
makeConstraints
{
make
in
typeTagIcon
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
logoImageView
.
snp
.
right
)
.
offset
(
logoToRight
)
make
.
left
.
equalTo
(
logoImageView
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
logoToRight
)
make
.
top
.
equalTo
(
logoImageView
)
make
.
top
.
equalTo
(
logoImageView
)
make
.
height
.
equalTo
(
16
)
make
.
height
.
equalTo
(
16
)
make
.
width
.
equalTo
(
52
)
make
.
width
.
equalTo
(
52
)
...
@@ -142,14 +142,14 @@ private extension YHResourceTableViewCell {
...
@@ -142,14 +142,14 @@ private extension YHResourceTableViewCell {
// 主标题约束
// 主标题约束
titleLabel
.
snp
.
makeConstraints
{
make
in
titleLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
logoImageView
.
snp
.
right
)
.
offset
(
logoToRight
)
make
.
left
.
equalTo
(
logoImageView
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
logoToRight
)
make
.
right
.
equalTo
(
rightArrow
.
snp
.
left
)
make
.
right
.
equalTo
(
rightArrow
.
snp
.
left
)
make
.
top
.
equalTo
(
typeTagIcon
.
snp
.
bottom
)
.
offset
(
4
)
make
.
top
.
equalTo
(
typeTagIcon
.
snp
.
bottom
)
.
offset
(
4
)
}
}
rightArrow
.
snp
.
makeConstraints
{
make
in
rightArrow
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalToSuperview
()
.
offset
(
-
marginX
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
YHResourceTableViewCell
.
marginX
)
make
.
width
.
height
.
equalTo
(
arrowWidth
)
make
.
width
.
height
.
equalTo
(
YHResourceTableViewCell
.
arrowWidth
)
make
.
top
.
equalTo
(
titleLabel
)
make
.
top
.
equalTo
(
titleLabel
)
}
}
...
@@ -160,7 +160,7 @@ private extension YHResourceTableViewCell {
...
@@ -160,7 +160,7 @@ private extension YHResourceTableViewCell {
}
}
vSeparatorLine
.
snp
.
makeConstraints
{
make
in
vSeparatorLine
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
companyLabel
.
snp
.
right
)
.
offset
(
marginBetweenVLine
)
make
.
left
.
equalTo
(
companyLabel
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
marginBetweenVLine
)
make
.
centerY
.
equalTo
(
companyLabel
)
make
.
centerY
.
equalTo
(
companyLabel
)
make
.
width
.
equalTo
(
1
)
make
.
width
.
equalTo
(
1
)
make
.
height
.
equalTo
(
8
)
make
.
height
.
equalTo
(
8
)
...
@@ -168,7 +168,7 @@ private extension YHResourceTableViewCell {
...
@@ -168,7 +168,7 @@ private extension YHResourceTableViewCell {
// 行业标签约束
// 行业标签约束
industryLabel
.
snp
.
makeConstraints
{
make
in
industryLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
vSeparatorLine
.
snp
.
right
)
.
offset
(
marginBetweenVLine
)
make
.
left
.
equalTo
(
vSeparatorLine
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
marginBetweenVLine
)
make
.
right
.
lessThanOrEqualTo
(
rightArrow
.
snp
.
left
)
make
.
right
.
lessThanOrEqualTo
(
rightArrow
.
snp
.
left
)
make
.
top
.
equalTo
(
companyLabel
)
make
.
top
.
equalTo
(
companyLabel
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
32
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
32
)
...
@@ -182,13 +182,13 @@ private extension YHResourceTableViewCell {
...
@@ -182,13 +182,13 @@ private extension YHResourceTableViewCell {
}
}
}
}
private
func
getLabelWidth
(
_
text
:
String
)
->
CGFloat
{
static
func
getLabelWidth
(
_
text
:
String
)
->
CGFloat
{
let
attrString
=
NSAttributedString
(
string
:
text
,
attributes
:
[
.
font
:
YHResourceTableViewCell
.
labelFont
])
let
attrString
=
NSAttributedString
(
string
:
text
,
attributes
:
[
.
font
:
YHResourceTableViewCell
.
labelFont
])
let
width
=
attrString
.
yh_width
(
containerHeight
:
YHResourceTableViewCell
.
labelHeight
)
let
width
=
attrString
.
yh_width
(
containerHeight
:
YHResourceTableViewCell
.
labelHeight
)
return
width
return
width
}
}
func
updateUI
()
{
private
func
updateUI
()
{
guard
let
model
=
resourceModel
else
{
return
}
guard
let
model
=
resourceModel
else
{
return
}
// 设置基本信息
// 设置基本信息
...
@@ -198,16 +198,22 @@ private extension YHResourceTableViewCell {
...
@@ -198,16 +198,22 @@ private extension YHResourceTableViewCell {
titleLabel
.
text
=
title
titleLabel
.
text
=
title
companyLabel
.
text
=
company
companyLabel
.
text
=
company
industryLabel
.
text
=
categoryName
industryLabel
.
text
=
categoryName
let
companyWidth
=
getLabelWidth
(
company
)
var
needNext
=
false
let
categoryNameWidth
=
getLabelWidth
(
categoryName
)
if
let
needNewLine
=
model
.
needNewLine
{
if
companyWidth
+
categoryNameWidth
<
KScreenWidth
-
logoWidth
-
logoToRight
-
arrowWidth
-
2
*
marginX
-
widthVLine
-
marginBetweenVLine
*
2
{
needNext
=
needNewLine
}
else
{
let
needNewLine
=
model
.
calculateNeedNewLine
()
model
.
needNewLine
=
needNewLine
needNext
=
needNewLine
}
if
!
needNext
{
companyLabel
.
snp
.
remakeConstraints
{
make
in
companyLabel
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
equalTo
(
titleLabel
)
make
.
left
.
equalTo
(
titleLabel
)
make
.
top
.
equalTo
(
titleLabel
.
snp
.
bottom
)
.
offset
(
4
)
make
.
top
.
equalTo
(
titleLabel
.
snp
.
bottom
)
.
offset
(
4
)
}
}
vSeparatorLine
.
snp
.
remakeConstraints
{
make
in
vSeparatorLine
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
equalTo
(
companyLabel
.
snp
.
right
)
.
offset
(
marginBetweenVLine
)
make
.
left
.
equalTo
(
companyLabel
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
marginBetweenVLine
)
make
.
centerY
.
equalTo
(
companyLabel
)
make
.
centerY
.
equalTo
(
companyLabel
)
make
.
width
.
equalTo
(
1
)
make
.
width
.
equalTo
(
1
)
make
.
height
.
equalTo
(
8
)
make
.
height
.
equalTo
(
8
)
...
@@ -215,7 +221,7 @@ private extension YHResourceTableViewCell {
...
@@ -215,7 +221,7 @@ private extension YHResourceTableViewCell {
// 行业标签约束
// 行业标签约束
industryLabel
.
snp
.
remakeConstraints
{
make
in
industryLabel
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
equalTo
(
vSeparatorLine
.
snp
.
right
)
.
offset
(
marginBetweenVLine
)
make
.
left
.
equalTo
(
vSeparatorLine
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
marginBetweenVLine
)
make
.
right
.
lessThanOrEqualTo
(
rightArrow
.
snp
.
left
)
make
.
right
.
lessThanOrEqualTo
(
rightArrow
.
snp
.
left
)
make
.
top
.
equalTo
(
companyLabel
)
make
.
top
.
equalTo
(
companyLabel
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
32
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
32
)
...
@@ -236,7 +242,7 @@ private extension YHResourceTableViewCell {
...
@@ -236,7 +242,7 @@ private extension YHResourceTableViewCell {
// 行业标签约束
// 行业标签约束
industryLabel
.
snp
.
remakeConstraints
{
make
in
industryLabel
.
snp
.
remakeConstraints
{
make
in
make
.
left
.
equalTo
(
vSeparatorLine
.
snp
.
right
)
.
offset
(
marginBetweenVLine
)
make
.
left
.
equalTo
(
vSeparatorLine
.
snp
.
right
)
.
offset
(
YHResourceTableViewCell
.
marginBetweenVLine
)
make
.
right
.
lessThanOrEqualTo
(
rightArrow
.
snp
.
left
)
make
.
right
.
lessThanOrEqualTo
(
rightArrow
.
snp
.
left
)
make
.
top
.
equalTo
(
companyLabel
.
snp
.
bottom
)
.
offset
(
4
)
make
.
top
.
equalTo
(
companyLabel
.
snp
.
bottom
)
.
offset
(
4
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
32
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
32
)
...
...
galaxy/galaxy/Classes/Modules/Community(社区)/Resource(资源)/VM/YHResourceViewModel.swift
View file @
27ebf5e4
...
@@ -72,9 +72,6 @@ class YHResourceViewModel: NSObject {
...
@@ -72,9 +72,6 @@ class YHResourceViewModel: NSObject {
self
.
arrResourceData
?
.
append
(
contentsOf
:
mockData
)
self
.
arrResourceData
?
.
append
(
contentsOf
:
mockData
)
}
}
// 计算每个模型的高度参数
self
.
arrResourceData
?
.
forEach
{
$0
.
calHeightParam
()
}
self
.
currentPage
+=
1
self
.
currentPage
+=
1
self
.
hasMoreForResource
=
self
.
currentPage
<=
5
// 模拟5页数据
self
.
hasMoreForResource
=
self
.
currentPage
<=
5
// 模拟5页数据
...
...
galaxy/galaxy/Classes/Modules/Message(消息)/C/YHMessageListVC.swift
View file @
27ebf5e4
...
@@ -28,10 +28,13 @@ class YHMessageListVC: YHBaseViewController {
...
@@ -28,10 +28,13 @@ class YHMessageListVC: YHBaseViewController {
private
let
serviceCenterViewModel
=
YHServiceCenterViewModel
()
private
let
serviceCenterViewModel
=
YHServiceCenterViewModel
()
var
isNotifyEnabled
=
false
var
isNotifyEnabled
=
false
private
lazy
var
previewFileTool
:
YHFilePreviewTool
=
{
// 消息处理器
let
tool
=
YHFilePreviewTool
(
targetVC
:
self
)
private
lazy
var
messageHandler
:
YHIMMessageHandler
=
{
return
tool
return
YHIMMessageHandler
(
viewController
:
self
,
navigationController
:
navigationController
)
}()
}()
lazy
var
tableView
:
UITableView
=
{
lazy
var
tableView
:
UITableView
=
{
...
@@ -465,46 +468,7 @@ extension YHMessageListVC {
...
@@ -465,46 +468,7 @@ extension YHMessageListVC {
}
}
func
handleRemoteNotification
(
_
userInfo
:
[
AnyHashable
:
Any
])
{
func
handleRemoteNotification
(
_
userInfo
:
[
AnyHashable
:
Any
])
{
let
extString
=
userInfo
[
"ext"
]
as?
String
??
"{}"
messageHandler
.
handleRemoteNotification
(
userInfo
)
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
}
}
}
private
func
updateNavigateBarBeforeEnterChatVC
()
{
private
func
updateNavigateBarBeforeEnterChatVC
()
{
...
@@ -566,29 +530,12 @@ extension YHMessageListVC: UITableViewDelegate, UITableViewDataSource {
...
@@ -566,29 +530,12 @@ extension YHMessageListVC: UITableViewDelegate, UITableViewDataSource {
}
}
return
return
}
else
if
msgItem
.
type
==
YHMessageType
.
txIM
.
rawValue
{
}
else
if
msgItem
.
type
==
YHMessageType
.
txIM
.
rawValue
{
let
item
=
msgArr
[
indexPath
.
row
]
guard
let
data
=
messageListManager
.
getMessageList
()
guard
let
data
=
messageListManager
.
getMessageList
()
.
first
(
where
:
{
$0
.
conversationID
==
i
tem
.
conversationID
})
else
{
.
first
(
where
:
{
$0
.
conversationID
==
msgI
tem
.
conversationID
})
else
{
return
return
}
}
updateNavigateBarBeforeEnterChatVC
()
let
param
:
[
String
:
Any
]
=
[
messageHandler
.
handleIMMessageTap
(
conversationData
:
data
)
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
}
return
return
}
}
...
@@ -721,78 +668,4 @@ extension YHMessageListVC: YHMessageListDelegate {
...
@@ -721,78 +668,4 @@ extension YHMessageListVC: YHMessageListDelegate {
return
nil
return
nil
}
}
}
}
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