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
2f5db187
Commit
2f5db187
authored
Dec 03, 2024
by
Steven杜宇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
// AI
parent
de123c79
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
282 additions
and
214 deletions
+282
-214
Podfile
galaxy/Podfile
+0
-3
project.pbxproj
galaxy/galaxy.xcodeproj/project.pbxproj
+8
-0
AppDelegate.swift
galaxy/galaxy/AppDelegate.swift
+1
-7
YHAIChatConfiguration.swift
...odules/AI/AI-Dialogue(AI对话)/C/YHAIChatConfiguration.swift
+5
-11
YHAIMainChatViewController.swift
...s/AI/AI-Dialogue(AI对话)/C/YHAIMainChatViewController.swift
+0
-4
YHAIRobotChatViewController.swift
.../AI/AI-Dialogue(AI对话)/C/YHAIRobotChatViewController.swift
+23
-9
YHAIHistoryMessage.swift
...s/Modules/AI/AI-Dialogue(AI对话)/M/YHAIHistoryMessage.swift
+40
-0
YHAIMessageModel.swift
...ses/Modules/AI/AI-Dialogue(AI对话)/M/YHAIMessageModel.swift
+23
-111
YHAIViewModel.swift
...lasses/Modules/AI/AI-Dialogue(AI对话)/M/YHAIViewModel.swift
+35
-0
YHAICardItemView.swift
...ses/Modules/AI/AI-Dialogue(AI对话)/V/YHAICardItemView.swift
+96
-0
YHAIChatCustomFlowLayout.swift
...les/AI/AI-Dialogue(AI对话)/V/YHAIChatCustomFlowLayout.swift
+0
-1
YHCardMessageCell.swift
...es/Modules/AI/AI-Dialogue(AI对话)/V/YHCardMessageCell.swift
+38
-56
YHFixProductItemView.swift
...Modules/AI/AI-Dialogue(AI对话)/V/YHFixProductItemView.swift
+3
-3
YHFixProductMessageCell.swift
...ules/AI/AI-Dialogue(AI对话)/V/YHFixProductMessageCell.swift
+3
-3
YHProductItemView.swift
...es/Modules/AI/AI-Dialogue(AI对话)/V/YHProductItemView.swift
+3
-3
YHProductListMessageCell.swift
...les/AI/AI-Dialogue(AI对话)/V/YHProductListMessageCell.swift
+3
-3
YHAllApiName.swift
galaxy/galaxy/Classes/Tools/NetWork/YHAllApiName.swift
+1
-0
No files found.
galaxy/Podfile
View file @
2f5db187
...
...
@@ -110,9 +110,6 @@ target 'galaxy' do
#Realm
pod
'RealmSwift'
,
'20.0.0'
pod
'Realm'
,
'20.0.0'
#调试工具
pod
'LLDebugToolSwift'
,
'1.3.8.1'
,
:configurations
=>
[
'Debug'
]
end
...
...
galaxy/galaxy.xcodeproj/project.pbxproj
View file @
2f5db187
...
...
@@ -687,6 +687,8 @@
04BE394E2CFD92C100BD31DB
/* YHAIChatInputShadowView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04BE394D2CFD92C100BD31DB
/* YHAIChatInputShadowView.swift */
;
};
04BE39502CFD9B5900BD31DB
/* YHAIChatDataBaseManager.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04BE394F2CFD9B5800BD31DB
/* YHAIChatDataBaseManager.swift */
;
};
04BE39522CFDA19000BD31DB
/* YHAIChatDataBaseModel.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04BE39512CFDA19000BD31DB
/* YHAIChatDataBaseModel.swift */
;
};
04BE39542CFEA62000BD31DB
/* YHAICardItemView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04BE39532CFEA62000BD31DB
/* YHAICardItemView.swift */
;
};
04BE39582CFED3F700BD31DB
/* YHAIHistoryMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04BE39572CFED3F700BD31DB
/* YHAIHistoryMessage.swift */
;
};
04C693622B723AB8004C1758
/* YHMySettingViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04C693612B723AB8004C1758
/* YHMySettingViewController.swift */
;
};
04C693642B723B56004C1758
/* YHMySettingCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04C693632B723B56004C1758
/* YHMySettingCell.swift */
;
};
04C85DDF2C364FE9008B20D6
/* YHAboutUsCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
04C85DDE2C364FE9008B20D6
/* YHAboutUsCell.swift */
;
};
...
...
@@ -1756,6 +1758,8 @@
04BE394D2CFD92C100BD31DB
/* YHAIChatInputShadowView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAIChatInputShadowView.swift
;
sourceTree
=
"<group>"
;
};
04BE394F2CFD9B5800BD31DB
/* YHAIChatDataBaseManager.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAIChatDataBaseManager.swift
;
sourceTree
=
"<group>"
;
};
04BE39512CFDA19000BD31DB
/* YHAIChatDataBaseModel.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAIChatDataBaseModel.swift
;
sourceTree
=
"<group>"
;
};
04BE39532CFEA62000BD31DB
/* YHAICardItemView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAICardItemView.swift
;
sourceTree
=
"<group>"
;
};
04BE39572CFED3F700BD31DB
/* YHAIHistoryMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAIHistoryMessage.swift
;
sourceTree
=
"<group>"
;
};
04C693612B723AB8004C1758
/* YHMySettingViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMySettingViewController.swift
;
sourceTree
=
"<group>"
;
};
04C693632B723B56004C1758
/* YHMySettingCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHMySettingCell.swift
;
sourceTree
=
"<group>"
;
};
04C85DDE2C364FE9008B20D6
/* YHAboutUsCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
YHAboutUsCell.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -3994,6 +3998,7 @@
045F28492CF6F5B100520F19
/* YHAIViewModel.swift */
,
045F284B2CF6F65200520F19
/* YHAIListModel.swift */
,
04BE39272CF848F300BD31DB
/* YHAIMessageModel.swift */
,
04BE39572CFED3F700BD31DB
/* YHAIHistoryMessage.swift */
,
04BE39512CFDA19000BD31DB
/* YHAIChatDataBaseModel.swift */
,
04BE394F2CFD9B5800BD31DB
/* YHAIChatDataBaseManager.swift */
,
);
...
...
@@ -4013,6 +4018,7 @@
045F28472CF6EF9800520F19
/* YHAIGreetCollectionReusableView.swift */
,
04BE39292CF85F8900BD31DB
/* YHAITabIndicatorView.swift */
,
04BE392F2CF964F800BD31DB
/* YHProductItemView.swift */
,
04BE39532CFEA62000BD31DB
/* YHAICardItemView.swift */
,
04BE39352CF9AFF200BD31DB
/* YHFixProductItemView.swift */
,
04BE39432CFAB46100BD31DB
/* YHAIChatBannerView.swift */
,
04BE39452CFAB5F100BD31DB
/* YHAIChatBannerItemCell.swift */
,
...
...
@@ -5921,6 +5927,7 @@
04F2434B2C9BB70300DF2C74
/* YHHKRecordsSummaryItemCell.swift in Sources */
,
046A95312C6EFB980059326A
/* YHFamilyMemberRiskWarningAlertView.swift in Sources */
,
A5ACE9292B4564F7002C94D2
/* YHSmsCodeInputView.swift in Sources */
,
04BE39582CFED3F700BD31DB
/* YHAIHistoryMessage.swift in Sources */
,
A5ACE9452B4564F7002C94D2
/* YHHUDContainerView.swift in Sources */
,
04912F642CB6885D00CC3105
/* YHResignFamilyMemberInfoCell.swift in Sources */
,
045EEEFD2B9F171A0022A143
/* YHSheetPickerViewType.swift in Sources */
,
...
...
@@ -6379,6 +6386,7 @@
04CE1AD72C2AD91F001CB80A
/* YHActivityDetailViewController.swift in Sources */
,
045EEE9E2B9F171A0022A143
/* YHWorkExampleModel.swift in Sources */
,
045EEE8A2B9F171A0022A143
/* YHPreviewOtherInformationViewController.swift in Sources */
,
04BE39542CFEA62000BD31DB
/* YHAICardItemView.swift in Sources */
,
04F2433B2C9ACED700DF2C74
/* YHHKRecordsSummaryVC.swift in Sources */
,
044F39402CB7CB6B007CA277
/* YHVisaRenewalTroubleshootingGuideVC.swift in Sources */
,
043D2C8A2C0EEF3F00172438
/* YHOrderSearchViewController.swift in Sources */
,
...
...
galaxy/galaxy/AppDelegate.swift
View file @
2f5db187
...
...
@@ -17,8 +17,6 @@ import SensorsAnalyticsSDK
import
AGConnectCore
import
AGConnectCredential
import
AGConnectAppLinking
import
LLDebugToolSwift
import
LLDebugTool
@main
class
AppDelegate
:
UIResponder
,
UIApplicationDelegate
,
WXApiDelegate
{
...
...
@@ -27,10 +25,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {
Thread
.
sleep
(
forTimeInterval
:
0.5
)
// 应产品同学Nick要求 启动页时间展示长点
#if DEBUG
LLDebugTool
.
shared
()
.
startWorking
()
#else
#endif
setupAudionConfig
()
//初始化 神策sdk
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/C/YHAIChatConfiguration.swift
View file @
2f5db187
...
...
@@ -46,29 +46,23 @@ class YHAIChatConfiguration {
}
else
if
msgType
==
.
productList
{
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHProductListMessageCell
.
cellReuseIdentifier
,
for
:
indexPath
)
as!
YHProductListMessageCell
if
let
listModel
=
msg
.
body
.
getProductList
()
{
if
let
listModel
=
msg
.
body
.
cardsInfo
{
cell
.
listModel
=
listModel
}
return
cell
}
else
if
msgType
==
.
fixProductList
{
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHFixProductListMessageCell
.
cellReuseIdentifier
,
for
:
indexPath
)
as!
YHFixProductListMessageCell
if
let
listModel
=
msg
.
body
.
getFixProductList
()
{
if
let
listModel
=
msg
.
body
.
cardsInfo
{
cell
.
listModel
=
listModel
}
return
cell
}
else
if
msgType
==
.
cardList
{
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHCardMessageCell
.
cellReuseIdentifier
,
for
:
indexPath
)
as!
YHCardMessageCell
return
cell
}
else
{
print
(
"无法识别该消息,请升级APP版本"
)
print
(
"contentType:
\(
msg
)
"
)
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
YHAITextMessageCell
.
cellReuseIdentifier
,
for
:
indexPath
)
as!
YHAITextMessageCell
msg
.
body
.
contentType
=
YHMessageType
.
none
.
rawValue
msg
.
body
.
contentText
=
"无法识别该消息,请升级APP版本"
cell
.
message
=
msg
if
let
listModel
=
msg
.
body
.
cardsInfo
{
cell
.
cardListModel
=
listModel
}
return
cell
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/C/YHAIMainChatViewController.swift
View file @
2f5db187
...
...
@@ -126,10 +126,6 @@ class YHAIMainChatViewController: YHBaseViewController {
if
done
{
print
(
"RESPONSE-DONE"
)
self
.
bottomInputView
.
status
=
self
.
bottomInputView
.
textView
.
text
.
isEmpty
?
.
disableSend
:
.
enableSend
let
dbMsgs
=
messages
.
map
{
return
YHAIChatDBMessage
.
createMessage
(
$0
)
}
YHAIChatDataBaseManager
.
shared
.
addDBMessages
(
dbMsgs
)
}
self
.
scrollToBottom
()
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/C/YHAIRobotChatViewController.swift
View file @
2f5db187
...
...
@@ -15,8 +15,10 @@ class YHAIRobotChatViewController: YHBaseViewController {
var
robotId
:
String
=
""
var
conversationId
:
String
=
""
var
messages
:[
YHAIChatMessage
]
=
[]
var
historyLastMessageId
:
String
=
""
let
manager
=
YHAIRequestManager
()
let
viewModel
=
YHAIViewModel
()
lazy
var
tableView
:
UITableView
=
{
...
...
@@ -33,6 +35,9 @@ class YHAIRobotChatViewController: YHBaseViewController {
tableView
.
delegate
=
self
tableView
.
dataSource
=
self
YHAIChatConfiguration
.
defaultConfig
.
registerMessageGroupCells
(
tableView
)
tableView
.
es
.
addYHPullToRefresh
{
self
.
getHistoryMessages
(
false
)
}
return
tableView
}()
...
...
@@ -81,8 +86,6 @@ class YHAIRobotChatViewController: YHBaseViewController {
IQKeyboardManager
.
shared
.
enable
=
false
view
.
backgroundColor
=
.
clear
view
.
addSubview
(
bgImgView
)
let
historyMsgs
=
YHAIChatDataBaseManager
.
shared
.
readHistoryUIMessages
()
messages
.
append
(
contentsOf
:
historyMsgs
)
gk_navTitle
=
"新港生活规划师"
gk_navTitleColor
=
.
mainTextColor
...
...
@@ -109,6 +112,8 @@ class YHAIRobotChatViewController: YHBaseViewController {
bottomInputView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
bottom
.
equalToSuperview
()
}
getHistoryMessages
(
true
)
}
func
scrollToBottom
()
{
...
...
@@ -135,16 +140,25 @@ class YHAIRobotChatViewController: YHBaseViewController {
if
done
{
print
(
"RESPONSE-DONE"
)
self
.
bottomInputView
.
status
=
self
.
bottomInputView
.
textView
.
text
.
isEmpty
?
.
disableSend
:
.
enableSend
let
dbMsgs
=
messages
.
map
{
return
YHAIChatDBMessage
.
createMessage
(
$0
)
}
messages
.
map
{
print
(
"-----------------7"
)
print
(
"
\(
$0
)
"
)
self
.
scrollToBottom
()
}
// YHAIChatDataBaseManager.shared.addDBMessages(dbMsgs)
}
self
.
scrollToBottom
()
func
getHistoryMessages
(
_
isLoading
:
Bool
)
{
if
isLoading
{
YHHUD
.
show
(
.
progress
(
message
:
"加载中..."
))
}
viewModel
.
getHistoryChatMessages
(
boltId
:
robotId
,
conversationId
:
conversationId
,
messageId
:
historyLastMessageId
)
{
[
weak
self
]
success
,
error
in
YHHUD
.
hide
()
guard
let
self
=
self
else
{
return
}
messages
.
removeAll
()
let
results
=
self
.
viewModel
.
historyMessages
.
map
{
return
$0
.
convertToChatMessage
()
}
messages
.
append
(
contentsOf
:
results
)
self
.
tableView
.
reloadData
()
}
}
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/M/YHAIHistoryMessage.swift
0 → 100644
View file @
2f5db187
//
// YHAIHistoryMessage.swift
// galaxy
//
// Created by Dufet on 2024/12/3.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
import
SmartCodable
class
YHAIHistoryMessage
:
SmartCodable
{
var
botId
:
String
=
""
var
chatId
:
String
=
""
var
contentText
:
String
=
""
var
contentType
:
Int
=
0
var
messageId
:
String
=
""
var
role
:
String
=
""
var
type
:
String
=
""
required
init
()
{
}
func
convertToChatMessage
()
->
YHAIChatMessage
{
let
msg
=
YHAIChatMessage
()
msg
.
uuid
=
self
.
messageId
let
body
=
YHAIMessageBody
()
body
.
contentType
=
self
.
contentType
body
.
contentText
=
self
.
contentText
body
.
botId
=
self
.
botId
body
.
chatId
=
self
.
chatId
body
.
type
=
self
.
type
msg
.
body
=
body
msg
.
setFinished
()
msg
.
updateBodyToData
()
return
msg
}
}
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/M/YHAIMessageModel.swift
View file @
2f5db187
...
...
@@ -99,7 +99,6 @@ class YHAIChatMessage: CustomStringConvertible {
}
func
dicToJSONString
(
dict
:
[
String
:
Any
])
->
String
{
if
let
jsonData
=
try
?
JSONSerialization
.
data
(
withJSONObject
:
dict
,
options
:
.
prettyPrinted
)
{
return
String
(
data
:
jsonData
,
encoding
:
.
utf8
)
??
""
...
...
@@ -148,19 +147,19 @@ class YHAIChatMessage: CustomStringConvertible {
}
var
description
:
String
{
return
"uudi:
\(
uuid
)\n
, id:
\(
id
)\n
, event:
\(
event
)\n
, data:
\(
data
)\n
dataDict:
\(
dataDict
)\n
dataBody:
\(
body
)\n
\n
"
return
"uudi:
\(
uuid
)\n
id:
\(
id
)\n
event:
\(
event
)\n
data:
\(
data
)\n
\n
"
}
}
class
YHAIMessageBody
:
SmartCodable
,
CustomStringConvertible
{
class
YHAIMessageBody
:
SmartCodable
{
// {"contentType":1, "contentText":"11月爆款楼盘。", "botId":"7441190609433755702", "status":"delta", "type":"answer", "chatId":"7442585762052194356"
var
contentType
:
Int
=
0
var
contentText
:
String
=
""
var
chatId
:
String
=
""
var
botId
:
String
=
""
var
status
:
String
=
""
var
type
:
String
=
""
var
c
hatId
:
String
=
""
var
c
ardsInfo
:
YHAIListinfoModel
?
func
isStart
()
->
Bool
{
if
status
==
"start"
{
...
...
@@ -176,89 +175,43 @@ class YHAIMessageBody: SmartCodable, CustomStringConvertible {
return
false
}
var
productListModel
:
YHProductListModel
=
YHProductListModel
()
func
getProductList
()
->
YHProductListModel
?
{
do
{
if
let
jsonData
=
contentText
.
data
(
using
:
.
utf8
)
{
let
dataDict
=
try
JSONSerialization
.
jsonObject
(
with
:
jsonData
,
options
:
[])
as?
[
String
:
Any
]
let
dict
=
dataDict
??
[:]
if
contentType
==
YHAIMessageType
.
productList
.
rawValue
{
if
let
productList
=
YHProductListModel
.
deserialize
(
from
:
dict
)
{
return
productList
}
}
}
}
catch
{
}
return
nil
}
func
getFixProductList
()
->
YHFixProductListModel
?
{
do
{
if
let
jsonData
=
contentText
.
data
(
using
:
.
utf8
)
{
let
dataDict
=
try
JSONSerialization
.
jsonObject
(
with
:
jsonData
,
options
:
[])
as?
[
String
:
Any
]
let
dict
=
dataDict
??
[:]
if
contentType
==
YHAIMessageType
.
fixProductList
.
rawValue
{
if
let
productList
=
YHFixProductListModel
.
deserialize
(
from
:
dict
)
{
return
productList
}
}
}
}
catch
{
}
return
nil
}
func
getCardList
()
->
YHFixProductListModel
?
{
do
{
if
let
jsonData
=
contentText
.
data
(
using
:
.
utf8
)
{
let
dataDict
=
try
JSONSerialization
.
jsonObject
(
with
:
jsonData
,
options
:
[])
as?
[
String
:
Any
]
let
dict
=
dataDict
??
[:]
if
contentType
==
YHAIMessageType
.
cardList
.
rawValue
{
if
let
productList
=
YHFixProductListModel
.
deserialize
(
from
:
dict
)
{
return
productList
}
}
}
}
catch
{
}
return
nil
}
required
init
()
{
}
var
description
:
String
{
return
"contentType:
\(
contentType
)\n
, contentText:
\(
contentText
)\n
, type:
\(
type
)\n
,
status:
\(
status
)
)
\n
"
}
//
var description: String {
// return "contentType:\(contentType)\n contentText: \(contentText)\n type: \(type)\n
status: \(status))\n"
//
}
}
class
YH
ProductList
Model
:
SmartCodable
{
class
YH
AIListinfo
Model
:
SmartCodable
{
var
icon
:
String
=
""
var
title
:
String
=
""
var
icon
:
String
=
""
var
description
:
String
=
""
var
btn_text
:
String
=
""
var
redirect_mode
:
Int
=
0
var
redirect_path
:
String
=
""
var
list
:
[
YHProductItemModel
]
=
[]
var
btnText
:
String
=
""
var
list
:
[
YHAIListItemModel
]
=
[]
var
redirectMode
:
Int
=
0
var
redirectPath
:
String
=
""
var
businessType
:
String
=
""
// 是否是测评
func
isEvaluation
()
->
Bool
{
return
businessType
==
"evaluation"
}
required
init
()
{
}
}
class
YH
Produc
tItemModel
:
SmartCodable
{
class
YH
AILis
tItemModel
:
SmartCodable
{
var
title
:
String
=
""
var
cover
:
String
=
""
var
redirect_mode
:
Int
=
0
var
redirect_path
:
String
=
""
var
description
:
String
=
""
var
redirectMode
:
Int
=
0
var
redirectPath
:
String
=
""
var
tags
:
[
YHProductTag
]
=
[]
var
original_price
:
Int
=
0
var
discount_price
:
Int
=
0
...
...
@@ -278,48 +231,7 @@ class YHProductTag: SmartCodable {
}
}
class
YHFixProductListModel
:
SmartCodable
{
var
icon
:
String
=
""
var
title
:
String
=
""
var
description
:
String
=
""
var
btn_text
:
String
=
""
var
redirect_mode
:
Int
=
0
var
redirect_path
:
String
=
""
var
list
:
[
YHFixProductItemModel
]
=
[]
required
init
()
{
}
}
class
YHCardListModel
:
SmartCodable
{
var
icon
:
String
=
""
var
title
:
String
=
""
var
description
:
String
=
""
var
btn_text
:
String
=
""
var
redirect_mode
:
Int
=
0
var
redirect_path
:
String
=
""
var
list
:
[
YHFixProductItemModel
]
=
[]
required
init
()
{
}
}
class
YHFixProductItemModel
:
SmartCodable
{
var
title
:
String
=
""
var
cover
:
String
=
""
var
description
:
String
=
""
var
redirect_mode
:
Int
=
0
var
redirect_path
:
String
=
""
required
init
()
{
}
}
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/M/YHAIViewModel.swift
View file @
2f5db187
...
...
@@ -14,6 +14,7 @@ class YHAIViewModel: NSObject {
var
listModel
:
YHAIListModel
=
YHAIListModel
()
var
sessionId
:
String
=
""
var
historyMessages
:
[
YHAIHistoryMessage
]
=
[]
func
getAIEntranceList
(
callBackBlock
:
@escaping
(
_
success
:
Bool
,
_
error
:
YHErrorModel
?)
->
())
{
...
...
@@ -70,4 +71,38 @@ class YHAIViewModel: NSObject {
}
}
func
getHistoryChatMessages
(
boltId
:
String
,
conversationId
:
String
,
messageId
:
String
,
callBackBlock
:
@escaping
(
_
success
:
Bool
,
_
error
:
YHErrorModel
?)
->
())
{
let
strUrl
=
YHBaseUrlManager
.
shared
.
curURL
()
+
YHAllApiName
.
AIChat
.
chatHistory
let
params
:[
String
:
Any
]
=
[
"boltId"
:
boltId
,
"conversationId"
:
conversationId
,
"messageId"
:
messageId
]
let
_
=
YHNetRequest
.
getRequest
(
url
:
strUrl
,
params
:
params
)
{
[
weak
self
]
json
,
code
in
//1. json字符串 转 对象
guard
let
self
=
self
else
{
return
}
printLog
(
"model 是 ==>
\(
json
)
"
)
if
json
.
code
==
200
{
guard
let
dic
=
json
.
data
?
.
peel
as?
[
Any
],
let
arr
=
[
YHAIHistoryMessage
]
.
deserialize
(
from
:
dic
)
else
{
let
err
=
YHErrorModel
(
errorCode
:
YHErrorCode
.
dictParseError
.
rawValue
,
errorMsg
:
YHErrorCode
.
dictParseError
.
description
())
callBackBlock
(
false
,
err
)
return
}
self
.
historyMessages
=
arr
callBackBlock
(
true
,
nil
)
}
else
{
let
err
=
YHErrorModel
(
errorCode
:
Int32
(
json
.
code
),
errorMsg
:
json
.
msg
.
isEmpty
?
""
:
json
.
msg
)
callBackBlock
(
false
,
err
)
}
}
failBlock
:
{
err
in
callBackBlock
(
false
,
err
)
}
}
}
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHAICardItemView.swift
0 → 100644
View file @
2f5db187
//
// YHAICardItemView.swift
// galaxy
//
// Created by Dufet on 2024/12/3.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import
UIKit
class
YHAICardItemView
:
UIView
{
var
cardModel
=
YHAIListItemModel
()
{
didSet
{
cardImgView
.
sd_setImage
(
with
:
URL
(
string
:
cardModel
.
cover
),
placeholderImage
:
UIImage
(
named
:
"global_default_image"
))
cardTitleLabel
.
text
=
cardModel
.
title
describeLabel
.
text
=
cardModel
.
description
}
}
lazy
var
lineView
:
UIView
=
{
let
v
=
UIView
()
v
.
backgroundColor
=
.
init
(
hex
:
0xE9ECF0
)
return
v
}()
lazy
var
cardImgView
:
UIImageView
=
{
let
v
=
UIImageView
(
image
:
UIImage
(
named
:
"global_default_image"
))
return
v
}()
lazy
var
cardTitleLabel
:
UILabel
=
{
let
lable
=
UILabel
()
lable
.
textColor
=
UIColor
.
mainTextColor
lable
.
textAlignment
=
.
left
lable
.
font
=
UIFont
.
PFSC_B
(
ofSize
:
16
)
lable
.
numberOfLines
=
0
lable
.
text
=
"卡片标题"
return
lable
}()
lazy
var
describeLabel
:
UILabel
=
{
let
lable
=
UILabel
()
lable
.
textColor
=
UIColor
.
init
(
hex
:
0x8993A2
)
lable
.
textAlignment
=
.
left
lable
.
font
=
UIFont
.
PFSC_R
(
ofSize
:
12
)
lable
.
numberOfLines
=
0
lable
.
text
=
"卡片描述文字"
return
lable
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
createUI
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
func
createUI
()
{
self
.
addSubview
(
lineView
)
self
.
addSubview
(
cardImgView
)
self
.
addSubview
(
cardTitleLabel
)
self
.
addSubview
(
describeLabel
)
lineView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
make
.
top
.
equalTo
(
0
)
make
.
height
.
equalTo
(
0.5
)
}
cardImgView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
make
.
top
.
equalTo
(
lineView
.
snp
.
bottom
)
.
offset
(
16
)
make
.
height
.
equalTo
(
303
)
}
cardTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
cardImgView
.
snp
.
bottom
)
.
offset
(
10
)
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
}
describeLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
cardTitleLabel
.
snp
.
bottom
)
.
offset
(
4
)
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
make
.
bottom
.
equalTo
(
-
16
)
}
}
}
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHAIChatCustomFlowLayout.swift
View file @
2f5db187
...
...
@@ -89,7 +89,6 @@ class YHAIChatCustomFlowLayout: UICollectionViewFlowLayout {
guard
let
_
=
collectionView
else
{
return
.
zero
}
let
width
=
max
(
firstLineX
,
secondLineX
)
let
size
=
CGSize
(
width
:
width
,
height
:
cellHeight
*
2.0
+
verticalGap
)
print
(
"XXXX:
\(
size
)
"
)
return
size
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHCardMessageCell.swift
View file @
2f5db187
...
...
@@ -12,6 +12,38 @@ class YHCardMessageCell: UITableViewCell {
static
let
cellReuseIdentifier
=
"YHCardMessageCell"
var
cardListModel
=
YHAIListinfoModel
()
{
didSet
{
iconImgView
.
sd_setImage
(
with
:
URL
(
string
:
cardListModel
.
icon
))
titleLabel
.
text
=
cardListModel
.
title
subtitleLabel
.
text
=
cardListModel
.
description
bottomBtn
.
setTitle
(
cardListModel
.
title
,
for
:
.
normal
)
listView
.
removeSubviews
()
var
lastItemView
:
YHAICardItemView
?
=
nil
for
(
index
,
item
)
in
cardListModel
.
list
.
enumerated
()
{
let
productView
=
YHAICardItemView
()
productView
.
cardModel
=
item
listView
.
addSubview
(
productView
)
productView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
equalToSuperview
()
if
let
lastItemView
=
lastItemView
{
make
.
top
.
equalTo
(
lastItemView
.
snp
.
bottom
)
}
else
{
make
.
top
.
equalTo
(
0
)
}
if
index
==
cardListModel
.
list
.
count
-
1
{
make
.
bottom
.
equalTo
(
0
)
}
}
lastItemView
=
productView
}
self
.
setNeedsLayout
()
self
.
layoutIfNeeded
()
}
}
var
whiteContentView
:
UIView
=
{
let
v
=
UIView
()
v
.
backgroundColor
=
.
white
...
...
@@ -43,40 +75,14 @@ class YHCardMessageCell: UITableViewCell {
return
lable
}()
lazy
var
li
ne
View
:
UIView
=
{
lazy
var
li
st
View
:
UIView
=
{
let
v
=
UIView
()
v
.
backgroundColor
=
.
init
(
hex
:
0xE9ECF0
)
return
v
}()
lazy
var
cardImgView
:
UIImageView
=
{
let
v
=
UIImageView
(
image
:
UIImage
(
named
:
""
))
return
v
}()
lazy
var
cardTitleLabel
:
UILabel
=
{
let
lable
=
UILabel
()
lable
.
textColor
=
UIColor
.
mainTextColor
lable
.
textAlignment
=
.
left
lable
.
font
=
UIFont
.
PFSC_B
(
ofSize
:
16
)
lable
.
numberOfLines
=
0
lable
.
text
=
"深圳银河湾体验中心"
return
lable
}()
lazy
var
describeLabel
:
UILabel
=
{
let
lable
=
UILabel
()
lable
.
textColor
=
UIColor
.
init
(
hex
:
0x8993A2
)
lable
.
textAlignment
=
.
left
lable
.
font
=
UIFont
.
PFSC_R
(
ofSize
:
12
)
lable
.
numberOfLines
=
0
lable
.
text
=
"位于深圳市福田区沙头街道本元大厦26B,周一至周六 9:30-19:00开放预约(法定节假日除外)"
return
lable
}()
lazy
var
bottomBtn
:
UIButton
=
{
let
btn
=
UIButton
()
btn
.
setTitle
(
"
预约到访
"
,
for
:
.
normal
)
btn
.
setTitle
(
""
,
for
:
.
normal
)
btn
.
setTitleColor
(
UIColor
.
white
,
for
:
.
normal
)
btn
.
backgroundColor
=
.
brandMainColor
btn
.
titleLabel
?
.
font
=
.
PFSC_M
(
ofSize
:
14
)
...
...
@@ -114,10 +120,7 @@ class YHCardMessageCell: UITableViewCell {
whiteContentView
.
addSubview
(
iconImgView
)
whiteContentView
.
addSubview
(
titleLabel
)
whiteContentView
.
addSubview
(
subtitleLabel
)
whiteContentView
.
addSubview
(
lineView
)
whiteContentView
.
addSubview
(
cardImgView
)
whiteContentView
.
addSubview
(
cardTitleLabel
)
whiteContentView
.
addSubview
(
describeLabel
)
whiteContentView
.
addSubview
(
listView
)
whiteContentView
.
addSubview
(
bottomBtn
)
shadowView
.
snp
.
makeConstraints
{
make
in
...
...
@@ -152,34 +155,13 @@ class YHCardMessageCell: UITableViewCell {
make
.
right
.
equalTo
(
-
16
)
}
lineView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
listView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
equalToSuperview
()
make
.
top
.
equalTo
(
subtitleLabel
.
snp
.
bottom
)
.
offset
(
10
)
make
.
height
.
equalTo
(
0.5
)
}
cardImgView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
make
.
top
.
equalTo
(
lineView
.
snp
.
bottom
)
.
offset
(
16
)
make
.
height
.
equalTo
(
303
)
}
cardTitleLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
cardImgView
.
snp
.
bottom
)
.
offset
(
10
)
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
}
describeLabel
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
cardTitleLabel
.
snp
.
bottom
)
.
offset
(
4
)
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
}
bottomBtn
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
describeLabel
.
snp
.
bottom
)
.
offset
(
16
)
make
.
top
.
equalTo
(
listView
.
snp
.
bottom
)
.
offset
(
0
)
make
.
left
.
equalTo
(
16
)
make
.
right
.
equalTo
(
-
16
)
make
.
bottom
.
equalTo
(
-
16
)
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHFixProductItemView.swift
View file @
2f5db187
...
...
@@ -10,7 +10,7 @@ import AttributedString
class
YHFixProductItemView
:
UIView
{
var
productModel
=
YH
FixProduc
tItemModel
()
{
var
productModel
=
YH
AILis
tItemModel
()
{
didSet
{
iconImgView
.
sd_setImage
(
with
:
URL
(
string
:
productModel
.
cover
),
placeholderImage
:
UIImage
(
named
:
""
))
titleLabel
.
text
=
productModel
.
title
...
...
@@ -59,10 +59,10 @@ class YHFixProductItemView: UIView {
}
@objc
func
didClickProductItem
()
{
if
!
productModel
.
redirect
_p
ath
.
isEmpty
{
if
!
productModel
.
redirect
P
ath
.
isEmpty
{
let
vc
=
YHH5WebViewVC
()
vc
.
isFullScreenFlag
=
false
vc
.
url
=
productModel
.
redirect
_p
ath
vc
.
url
=
productModel
.
redirect
P
ath
UIViewController
.
current
?
.
navigationController
?
.
pushViewController
(
vc
)
}
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHFixProductMessageCell.swift
View file @
2f5db187
...
...
@@ -11,7 +11,7 @@ class YHFixProductListMessageCell: UITableViewCell {
static
let
cellReuseIdentifier
=
"YHFixProductMessageCell"
var
listModel
=
YH
FixProductList
Model
()
{
var
listModel
=
YH
AIListinfo
Model
()
{
didSet
{
iconImgView
.
sd_setImage
(
with
:
URL
(
string
:
listModel
.
icon
))
titleLabel
.
text
=
listModel
.
title
...
...
@@ -110,10 +110,10 @@ class YHFixProductListMessageCell: UITableViewCell {
@objc
func
didMoreButtonClicked
()
{
if
!
listModel
.
redirect
_p
ath
.
isEmpty
{
if
!
listModel
.
redirect
P
ath
.
isEmpty
{
let
vc
=
YHH5WebViewVC
()
vc
.
isFullScreenFlag
=
false
vc
.
url
=
listModel
.
redirect
_p
ath
vc
.
url
=
listModel
.
redirect
P
ath
UIViewController
.
current
?
.
navigationController
?
.
pushViewController
(
vc
)
}
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHProductItemView.swift
View file @
2f5db187
...
...
@@ -11,7 +11,7 @@ import AttributedString
class
YHProductItemView
:
UIView
{
var
productModel
=
YH
Produc
tItemModel
()
{
var
productModel
=
YH
AILis
tItemModel
()
{
didSet
{
iconImgView
.
sd_setImage
(
with
:
URL
(
string
:
productModel
.
cover
),
placeholderImage
:
UIImage
(
named
:
"global_default_image"
))
titleLabel
.
text
=
productModel
.
title
...
...
@@ -87,10 +87,10 @@ class YHProductItemView: UIView {
}
@objc
func
didClickProductItem
()
{
if
!
productModel
.
redirect
_p
ath
.
isEmpty
{
if
!
productModel
.
redirect
P
ath
.
isEmpty
{
let
vc
=
YHH5WebViewVC
()
vc
.
isFullScreenFlag
=
false
vc
.
url
=
productModel
.
redirect
_p
ath
vc
.
url
=
productModel
.
redirect
P
ath
UIViewController
.
current
?
.
navigationController
?
.
pushViewController
(
vc
)
}
}
...
...
galaxy/galaxy/Classes/Modules/AI/AI-Dialogue(AI对话)/V/YHProductListMessageCell.swift
View file @
2f5db187
...
...
@@ -12,7 +12,7 @@ class YHProductListMessageCell: UITableViewCell {
static
let
cellReuseIdentifier
=
"YHProductListMessageCell"
var
listModel
=
YH
ProductList
Model
()
{
var
listModel
=
YH
AIListinfo
Model
()
{
didSet
{
iconImgView
.
sd_setImage
(
with
:
URL
(
string
:
listModel
.
icon
))
titleLabel
.
text
=
listModel
.
title
...
...
@@ -111,10 +111,10 @@ class YHProductListMessageCell: UITableViewCell {
@objc
func
didMoreButtonClicked
()
{
if
!
listModel
.
redirect
_p
ath
.
isEmpty
{
if
!
listModel
.
redirect
P
ath
.
isEmpty
{
let
vc
=
YHH5WebViewVC
()
vc
.
isFullScreenFlag
=
false
vc
.
url
=
listModel
.
redirect
_p
ath
vc
.
url
=
listModel
.
redirect
P
ath
UIViewController
.
current
?
.
navigationController
?
.
pushViewController
(
vc
)
}
}
...
...
galaxy/galaxy/Classes/Tools/NetWork/YHAllApiName.swift
View file @
2f5db187
...
...
@@ -665,6 +665,7 @@ class YHAllApiName {
static
let
agentChat
=
"super-app/ai/agent/chat"
static
let
getAIChatSessionId
=
"super-app/ai/agent/conversation"
static
let
cancelAIChat
=
"super-app/ai/agent/chat-cancel"
static
let
chatHistory
=
"super-app/ai/agent/chat-details"
}
}
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