Commit 550eeaa9 authored by Steven杜宇's avatar Steven杜宇

// AI

parent 688401e5
...@@ -14,6 +14,8 @@ class YHAIRequestManager: NSObject { ...@@ -14,6 +14,8 @@ class YHAIRequestManager: NSObject {
static let sessionKey = "YINHE_SESSION_KEY" static let sessionKey = "YINHE_SESSION_KEY"
static let subrobotConversationConfigKey = "subrobot_conversation_config_key"
var sessionId: String = "" var sessionId: String = ""
let prefix_id = "id:" let prefix_id = "id:"
...@@ -240,29 +242,48 @@ extension YHAIRequestManager { ...@@ -240,29 +242,48 @@ extension YHAIRequestManager {
completion?(sessionId) completion?(sessionId)
return return
} }
self.viewModel.requestConversationId { success, error in self.viewModel.requestConversationId { sessionId in
let sessionId = self.viewModel.sessionId
self.saveGlobalConverastionId(sessionId) self.saveGlobalConverastionId(sessionId)
completion?(self.viewModel.sessionId) completion?(sessionId)
} }
} }
func saveGlobalConverastionId(_ conversationId: String) { func saveGlobalConverastionId(_ conversationId: String) {
UserDefaults.standard.set(conversationId, forKey: YHAIRequestManager.sessionKey) let userId = YHLoginManager.shared.userModel?.id ?? ""
UserDefaults.standard.synchronize() let key = Self.sessionKey + userId
} UserDefaults.standard.set(conversationId, forKey: key)
func clearGlobalConversationId() {
UserDefaults.standard.set(nil, forKey: YHAIRequestManager.sessionKey)
UserDefaults.standard.synchronize() UserDefaults.standard.synchronize()
} }
func getLocalGlobalConverastionId() -> String { func getLocalGlobalConverastionId() -> String {
if let sessionId = UserDefaults.standard.value(forKey: YHAIRequestManager.sessionKey) as? String, !sessionId.isEmpty { let userId = YHLoginManager.shared.userModel?.id ?? ""
let key = Self.sessionKey + userId
if let sessionId = UserDefaults.standard.value(forKey: key) as? String, !sessionId.isEmpty {
return sessionId return sessionId
} }
return "" return ""
} }
func getSubRobotChatConversationId(robotId: String, completion:((String)->())?) {
let userId = YHLoginManager.shared.userModel?.id ?? ""
let key = Self.subrobotConversationConfigKey + userId
var dict:[String : Any] = [:]
if let config = UserDefaults.standard.dictionary(forKey: key) {
dict = config
}
if let conversationId = dict["\(robotId)"] as? String, !conversationId.isEmpty {
completion?(conversationId)
return
}
self.viewModel.requestConversationId { sessionId in
dict["\(robotId)"] = sessionId
UserDefaults.standard.set(dict, forKey: key)
UserDefaults.standard.synchronize()
completion?(sessionId)
}
}
} }
...@@ -206,9 +206,8 @@ class YHAIRobotChatViewController: YHBaseViewController { ...@@ -206,9 +206,8 @@ class YHAIRobotChatViewController: YHBaseViewController {
@objc func didCleanButtonClicked() { @objc func didCleanButtonClicked() {
self.viewModel.requestConversationId { success, error in self.viewModel.requestConversationId { sessionId in
if success { if !sessionId.isEmpty {
let sessionId = self.viewModel.sessionId
self.conversationId = sessionId self.conversationId = sessionId
self.manager.saveGlobalConverastionId(sessionId) self.manager.saveGlobalConverastionId(sessionId)
self.messages.removeAll() self.messages.removeAll()
......
...@@ -140,16 +140,13 @@ extension YHAIServiceListViewController: UICollectionViewDelegate, UICollectionV ...@@ -140,16 +140,13 @@ extension YHAIServiceListViewController: UICollectionViewDelegate, UICollectionV
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if 0 <= indexPath.item && indexPath.item < serviceArr.count { if 0 <= indexPath.item && indexPath.item < serviceArr.count {
let model = serviceArr[indexPath.item] let model = serviceArr[indexPath.item]
YHHUD.show(.progress(message: "加载中...")) self.manager.getSubRobotChatConversationId(robotId: model.botId) {
self.manager.getMainChatConversationId {
sesseionId in sesseionId in
YHHUD.hide()
let vc = YHAIRobotChatViewController() let vc = YHAIRobotChatViewController()
vc.robotId = model.botId vc.robotId = model.botId
vc.conversationId = sesseionId vc.conversationId = sesseionId
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
} }
} }
} }
......
...@@ -13,7 +13,6 @@ import UIKit ...@@ -13,7 +13,6 @@ import UIKit
class YHAIViewModel: NSObject { class YHAIViewModel: NSObject {
var listModel: YHAIListModel = YHAIListModel() var listModel: YHAIListModel = YHAIListModel()
var sessionId: String = ""
var historyMessages: [YHAIHistoryMessage] = [] var historyMessages: [YHAIHistoryMessage] = []
var lastHistroyMsgId: String = "" var lastHistroyMsgId: String = ""
...@@ -44,31 +43,29 @@ class YHAIViewModel: NSObject { ...@@ -44,31 +43,29 @@ class YHAIViewModel: NSObject {
} }
} }
func requestConversationId(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) { func requestConversationId(callBackBlock:@escaping (_ sessionId: String)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.AIChat.getAIChatSessionId let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.AIChat.getAIChatSessionId
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in let _ = YHNetRequest.getRequest(url: strUrl) { json, code in
//1. json字符串 转 对象 //1. json字符串 转 对象
guard let self = self else { return }
printLog("model 是 ==> \(json)") printLog("model 是 ==> \(json)")
if json.code == 200 { if json.code == 200 {
guard let dic = json.data?.peel as? [String : Any], let sessionId = dic["conversationId"] as? String else { guard let dic = json.data?.peel as? [String : Any], let sessionId = dic["conversationId"] as? String else {
let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description()) let err = YHErrorModel(errorCode: YHErrorCode.dictParseError.rawValue, errorMsg: YHErrorCode.dictParseError.description())
callBackBlock(false, err) callBackBlock("")
return return
} }
self.sessionId = sessionId callBackBlock(sessionId)
callBackBlock(true,nil)
} else { } else {
let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg) let err = YHErrorModel(errorCode: Int32(json.code), errorMsg: json.msg.isEmpty ? "" : json.msg)
callBackBlock(false,err) callBackBlock("")
} }
} failBlock: { err in } failBlock: { err in
callBackBlock(false,err) callBackBlock("")
} }
} }
......
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