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

// AI

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