Commit 1bc9df77 authored by Steven杜宇's avatar Steven杜宇

// AI

parent 1bf98a4b
...@@ -12,6 +12,7 @@ import JXSegmentedView ...@@ -12,6 +12,7 @@ import JXSegmentedView
class YHAIRobotChatViewController: YHBaseViewController { class YHAIRobotChatViewController: YHBaseViewController {
var myTitle: String = ""
var robotId: String = "" var robotId: String = ""
var conversationId: String = "" var conversationId: String = ""
var messages:[YHAIChatMessage] = [] var messages:[YHAIChatMessage] = []
...@@ -97,7 +98,7 @@ class YHAIRobotChatViewController: YHBaseViewController { ...@@ -97,7 +98,7 @@ class YHAIRobotChatViewController: YHBaseViewController {
view.backgroundColor = .clear view.backgroundColor = .clear
view.addSubview(bgImgView) view.addSubview(bgImgView)
gk_navTitle = "新港生活规划师" gk_navTitle = myTitle
gk_navTitleColor = .mainTextColor gk_navTitleColor = .mainTextColor
gk_navigationBar.addSubview(cleanBtn) gk_navigationBar.addSubview(cleanBtn)
...@@ -221,6 +222,20 @@ class YHAIRobotChatViewController: YHBaseViewController { ...@@ -221,6 +222,20 @@ class YHAIRobotChatViewController: YHBaseViewController {
} }
} }
} }
func getFlowMessages() -> [String] {
if myTitle == "房产" {
return ["大学升学", "银河教育服务", "DES分数和Alevel的换算关系", "银河教育插班成功率如何?"]
} else if myTitle == "教育" {
return []
} else if myTitle == "销售" {
return []
}
return []
}
} }
extension YHAIRobotChatViewController: UITableViewDelegate, UITableViewDataSource { extension YHAIRobotChatViewController: UITableViewDelegate, UITableViewDataSource {
...@@ -316,10 +331,35 @@ extension YHAIRobotChatViewController: UITableViewDelegate, UITableViewDataSourc ...@@ -316,10 +331,35 @@ extension YHAIRobotChatViewController: UITableViewDelegate, UITableViewDataSourc
} }
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = YHAIChatBannerView() let view = YHAIChatBannerView()
let arr:[YHBannerModel] = [YHBannerModel(), YHBannerModel(), YHBannerModel()] let arr:[YHAIChatBannerItem] = [YHAIChatBannerItem(id: 0, title: "了解银河集团", desc: "香港身份生活一站式服务平台"),
YHAIChatBannerItem(id: 1, title: "香港身份智能评估", desc: "60s快速评估,了解自身条件是否符合"),
YHAIChatBannerItem(id: 2, title: "银河产品矩阵", desc: "香港身份、生活多样产品"),]
view.dataArr = arr view.dataArr = arr
view.items = ["阿萨法吉林师范", "阿萨法阿基德拉屎就发了阿基德拉屎就发了阿基德拉屎就发了阿基德拉屎就发了阿基德拉屎就发了阿基德拉屎就发了阿基德拉屎就发了", "啊设计立卡", "啊积", "阿基德拉屎就发了", "asfasf", "阿萨法", "啊设计立卡", "啊积", "阿基德拉屎就发了"] view.items = getFlowMessages()
view.selectFlowMsgBlock = {
[weak self] text in
guard let self = self else { return }
self.sendMessage(text)
}
view.selectBannerItemBlock = {
[weak self] model in
guard let self = self else { return }
var text = ""
if model.id == 0 {
text = "银河集团,能够为我提供什么?"
} else if model.id == 1 {
text = "开始身份办理评估"
} else if model.id == 2 {
text = "介绍一下银河的产品"
}
self.sendMessage(text)
}
return view return view
} }
......
...@@ -143,6 +143,7 @@ extension YHAIServiceListViewController: UICollectionViewDelegate, UICollectionV ...@@ -143,6 +143,7 @@ extension YHAIServiceListViewController: UICollectionViewDelegate, UICollectionV
self.manager.getSubRobotChatConversationId(robotId: model.botId) { self.manager.getSubRobotChatConversationId(robotId: model.botId) {
sesseionId in sesseionId in
let vc = YHAIRobotChatViewController() let vc = YHAIRobotChatViewController()
vc.myTitle = model.title
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)
......
...@@ -212,6 +212,11 @@ class YHAIMessageBody: SmartCodable { ...@@ -212,6 +212,11 @@ class YHAIMessageBody: SmartCodable {
// } // }
} }
enum YHAIJumpPageType: String {
case customerHeart = "customerVoice" // APP客户心声
case galaxySelect = "productList" // APP-首页银河甄选
}
class YHAIListinfoModel: SmartCodable { class YHAIListinfoModel: SmartCodable {
var title: String = "" var title: String = ""
...@@ -219,10 +224,12 @@ class YHAIListinfoModel: SmartCodable { ...@@ -219,10 +224,12 @@ class YHAIListinfoModel: SmartCodable {
var description: String = "" var description: String = ""
var btnText: String = "" var btnText: String = ""
var list: [YHAIListItemModel] = [] var list: [YHAIListItemModel] = []
var redirectMode: Int = 0 var redirectMode: Int = 0 // 跳转模式 0: 不跳转 1:web页面跳转 2:APP跳转 3:Agent跳转
// customerVoice -> APP客户心声 productList -> APP-首页银河甄选
var redirectPath: String = "" var redirectPath: String = ""
var businessType: String = "" var businessType: String = ""
// 是否是测评 // 是否是测评
func isEvaluation() -> Bool { func isEvaluation() -> Bool {
return businessType == "evaluation" return businessType == "evaluation"
...@@ -241,8 +248,8 @@ class YHAIListItemModel: SmartCodable { ...@@ -241,8 +248,8 @@ class YHAIListItemModel: SmartCodable {
var redirectMode: Int = 0 var redirectMode: Int = 0
var redirectPath: String = "" var redirectPath: String = ""
var tags: [YHProductTag] = [] var tags: [YHProductTag] = []
var original_price: Int = 0 var originalPrice: Int = 0
var discount_price: Int = 0 var discountPrice: Int = 0
required init() { required init() {
......
...@@ -12,6 +12,13 @@ import VisualEffectView ...@@ -12,6 +12,13 @@ import VisualEffectView
class YHAIChatBannerItemCell: FSPagerViewCell { class YHAIChatBannerItemCell: FSPagerViewCell {
var model = YHAIChatBannerItem() {
didSet {
titleLabel.text = model.title
subtitleLabel.text = model.desc
}
}
static let cellReuseIdentifier = "YHAIChatBannerItemCell" static let cellReuseIdentifier = "YHAIChatBannerItemCell"
lazy var effectView:VisualEffectView = { lazy var effectView:VisualEffectView = {
...@@ -22,14 +29,6 @@ class YHAIChatBannerItemCell: FSPagerViewCell { ...@@ -22,14 +29,6 @@ class YHAIChatBannerItemCell: FSPagerViewCell {
return visualEffectView return visualEffectView
}() }()
lazy var bannerImagV: UIImageView = {
let imagV : UIImageView = UIImageView()
imagV.contentMode = .scaleAspectFill
imagV.clipsToBounds = true
imagV.image = UIImage(named: "global_default_image")
return imagV
}()
lazy var titleLabel: UILabel = { lazy var titleLabel: UILabel = {
let lable = UILabel() let lable = UILabel()
lable.font = UIFont.PFSC_B(ofSize: 14) lable.font = UIFont.PFSC_B(ofSize: 14)
...@@ -62,11 +61,6 @@ class YHAIChatBannerItemCell: FSPagerViewCell { ...@@ -62,11 +61,6 @@ class YHAIChatBannerItemCell: FSPagerViewCell {
contentView.layer.shadowOpacity = 0 contentView.layer.shadowOpacity = 0
contentView.layer.shadowOffset = .zero contentView.layer.shadowOffset = .zero
contentView.addSubview(bannerImagV)
bannerImagV.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
contentView.addSubview(effectView) contentView.addSubview(effectView)
effectView.snp.makeConstraints { make in effectView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview() make.bottom.left.right.equalToSuperview()
......
...@@ -9,10 +9,25 @@ ...@@ -9,10 +9,25 @@
import UIKit import UIKit
import FSPagerView import FSPagerView
class YHAIChatBannerItem {
var id: Int = 0
var title: String = ""
var desc: String = ""
required init(id: Int = 0, title: String = "", desc: String = "") {
self.id = id
self.title = title
self.desc = desc
}
}
class YHAIChatBannerView: UIView { class YHAIChatBannerView: UIView {
static let bannerHeight = 242.0 static let viewHeight = 242.0
static let bannersHeight = 95.0
let cellHeight: CGFloat = 33.0 // 单元格的固定高度 let cellHeight: CGFloat = 33.0 // 单元格的固定高度
var selectFlowMsgBlock:((String)->())?
var selectBannerItemBlock:((YHAIChatBannerItem)->())?
var items:[String] = [] { var items:[String] = [] {
didSet { didSet {
...@@ -20,8 +35,24 @@ class YHAIChatBannerView: UIView { ...@@ -20,8 +35,24 @@ class YHAIChatBannerView: UIView {
collectionView.reloadData() collectionView.reloadData()
} }
} }
lazy var bgImgV: UIImageView = {
let imagV : UIImageView = UIImageView()
imagV.contentMode = .scaleAspectFill
imagV.clipsToBounds = true
imagV.image = UIImage(named: "ai_chat_header_bg")
return imagV
}()
lazy var rolerImgV: UIImageView = {
let imagV : UIImageView = UIImageView()
imagV.contentMode = .scaleAspectFill
imagV.clipsToBounds = true
imagV.image = UIImage(named: "ai_chat_header_role")
return imagV
}()
var dataArr: [YHBannerModel] = [] { var dataArr: [YHAIChatBannerItem] = [] {
didSet { didSet {
// 设置为0是先停掉自动滑动定时器 // 设置为0是先停掉自动滑动定时器
bannerView.automaticSlidingInterval = 0 bannerView.automaticSlidingInterval = 0
...@@ -46,7 +77,7 @@ class YHAIChatBannerView: UIView { ...@@ -46,7 +77,7 @@ class YHAIChatBannerView: UIView {
view.isInfinite = true view.isInfinite = true
view.automaticSlidingInterval = bannerSildingInterval view.automaticSlidingInterval = bannerSildingInterval
view.register(YHAIChatBannerItemCell.self, forCellWithReuseIdentifier: YHAIChatBannerItemCell.cellReuseIdentifier) view.register(YHAIChatBannerItemCell.self, forCellWithReuseIdentifier: YHAIChatBannerItemCell.cellReuseIdentifier)
view.itemSize = CGSizeMake(KScreenWidth-40.0, YHAIChatBannerView.bannerHeight)//FSPagerView.automaticSize view.itemSize = CGSizeMake(KScreenWidth-40.0, YHAIChatBannerView.bannersHeight)//FSPagerView.automaticSize
return view return view
}() }()
...@@ -84,15 +115,34 @@ class YHAIChatBannerView: UIView { ...@@ -84,15 +115,34 @@ class YHAIChatBannerView: UIView {
} }
func createUI() { func createUI() {
self.backgroundColor = .white
addSubview(bgImgV)
addSubview(rolerImgV)
addSubview(bannerView) addSubview(bannerView)
bannerView.addSubview(indicatorView)
bgImgV.snp.makeConstraints { make in
make.top.equalTo(0)
make.left.equalTo(20)
make.right.equalTo(-20)
make.bottom.equalTo(0)
}
rolerImgV.snp.makeConstraints { make in
make.top.equalTo(0)
make.right.equalTo(-10)
make.width.equalTo(200)
make.height.equalTo(180)
}
bannerView.snp.makeConstraints { make in bannerView.snp.makeConstraints { make in
make.top.equalTo(10) make.top.equalTo(10)
make.left.equalTo(20) make.left.equalTo(20)
make.right.equalTo(-20) make.right.equalTo(-20)
make.height.equalTo(YHAIChatBannerView.bannerHeight) make.height.equalTo(YHAIChatBannerView.bannersHeight)
} }
bannerView.addSubview(indicatorView)
indicatorView.snp.makeConstraints { make in indicatorView.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
make.height.equalTo(2) make.height.equalTo(2)
...@@ -129,6 +179,8 @@ extension YHAIChatBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -129,6 +179,8 @@ extension YHAIChatBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: YHAIChatBannerItemCell.cellReuseIdentifier, at: index) as! YHAIChatBannerItemCell let cell = pagerView.dequeueReusableCell(withReuseIdentifier: YHAIChatBannerItemCell.cellReuseIdentifier, at: index) as! YHAIChatBannerItemCell
if index < dataArr.count { if index < dataArr.count {
let model = dataArr[index]
cell.model = model
} }
return cell return cell
} }
...@@ -137,7 +189,9 @@ extension YHAIChatBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -137,7 +189,9 @@ extension YHAIChatBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) { func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
pagerView.deselectItem(at: index, animated: true) pagerView.deselectItem(at: index, animated: true)
pagerView.scrollToItem(at: index, animated: true) pagerView.scrollToItem(at: index, animated: true)
if index >= dataArr.count { if 0 <= index, index < dataArr.count {
let model = dataArr[index]
selectBannerItemBlock?(model)
return return
} }
} }
...@@ -177,6 +231,7 @@ extension YHAIChatBannerView: UICollectionViewDelegate, UICollectionViewDataSour ...@@ -177,6 +231,7 @@ extension YHAIChatBannerView: UICollectionViewDelegate, UICollectionViewDataSour
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if 0 <= indexPath.item && indexPath.item < items.count { if 0 <= indexPath.item && indexPath.item < items.count {
let text = items[indexPath.item] let text = items[indexPath.item]
selectFlowMsgBlock?(text)
} }
} }
} }
...@@ -16,9 +16,9 @@ class YHProductItemView: UIView { ...@@ -16,9 +16,9 @@ class YHProductItemView: UIView {
iconImgView.sd_setImage(with: URL(string: productModel.cover), placeholderImage: UIImage(named: "global_default_image")) iconImgView.sd_setImage(with: URL(string: productModel.cover), placeholderImage: UIImage(named: "global_default_image"))
titleLabel.text = productModel.title titleLabel.text = productModel.title
let aa: ASAttributedString = .init("¥", .font(UIFont(name: "DINAlternate-Bold", size: 14)!),.foreground(UIColor.mainTextColor)) let aa: ASAttributedString = .init("¥", .font(UIFont(name: "DINAlternate-Bold", size: 14)!),.foreground(UIColor.mainTextColor))
let bb: ASAttributedString = .init("\(productModel.discount_price)", .font(UIFont(name: "DINAlternate-Bold", size: 20)!),.foreground(UIColor.mainTextColor)) let bb: ASAttributedString = .init("\(productModel.discountPrice)", .font(UIFont(name: "DINAlternate-Bold", size: 20)!),.foreground(UIColor.mainTextColor))
let cc: ASAttributedString = .init(" ", .font(UIFont(name: "DINAlternate-Bold", size: 14)!),.foreground(UIColor.init(hex: 0xB9C1CC))) let cc: ASAttributedString = .init(" ", .font(UIFont(name: "DINAlternate-Bold", size: 14)!),.foreground(UIColor.init(hex: 0xB9C1CC)))
let dd: ASAttributedString = .init("¥\(productModel.original_price)", .font(UIFont(name: "DINAlternate-Bold", size: 14)!),.foreground(UIColor.init(hex: 0xB9C1CC)), .strikethrough(.single)) let dd: ASAttributedString = .init("¥\(productModel.originalPrice)", .font(UIFont(name: "DINAlternate-Bold", size: 14)!),.foreground(UIColor.init(hex: 0xB9C1CC)), .strikethrough(.single))
priceLabel.attributed.text = aa+bb+cc+dd priceLabel.attributed.text = aa+bb+cc+dd
tagContentView.removeSubviews() tagContentView.removeSubviews()
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Mask group@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Mask group@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Remove-bg.ai_1732537885367 1.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Remove-bg.ai_1732537885367 1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
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