Commit 7bf0a0bb authored by David黄金龙's avatar David黄金龙

完善 首页逻辑

parent 22724ec7
......@@ -449,6 +449,7 @@
A5A89FD12C254B5C005A71DD /* YHActivityTravelitemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A89FD02C254B5C005A71DD /* YHActivityTravelitemView.swift */; };
A5A89FD32C25518B005A71DD /* YHActivityApplyInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A89FD22C25518B005A71DD /* YHActivityApplyInfoView.swift */; };
A5A89FD52C255250005A71DD /* YHActivityTwoItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A89FD42C255250005A71DD /* YHActivityTwoItemView.swift */; };
A5A89FD72C256B94005A71DD /* YHHomeLastMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A89FD62C256B94005A71DD /* YHHomeLastMessageModel.swift */; };
A5ACE9282B4564F7002C94D2 /* YHSmsCodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE8DE2B4564F7002C94D2 /* YHSmsCodeView.swift */; };
A5ACE9292B4564F7002C94D2 /* YHSmsCodeInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE8E02B4564F7002C94D2 /* YHSmsCodeInputView.swift */; };
A5ACE92C2B4564F7002C94D2 /* YHLoginStyleButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE8E42B4564F7002C94D2 /* YHLoginStyleButton.swift */; };
......@@ -492,6 +493,8 @@
A5ACE9552B4564F7002C94D2 /* YHTabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9222B4564F7002C94D2 /* YHTabBarViewController.swift */; };
A5ACE9562B4564F7002C94D2 /* YHBouncesContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9242B4564F7002C94D2 /* YHBouncesContentView.swift */; };
A5ACE9572B4564F7002C94D2 /* YHBasicContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9252B4564F7002C94D2 /* YHBasicContentView.swift */; };
A5B6ED762C2593A1001B6732 /* YHSignerInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5B6ED752C2593A1001B6732 /* YHSignerInfoModel.swift */; };
A5B6ED782C27FC0B001B6732 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5B6ED772C27FC0B001B6732 /* Int+Extension.swift */; };
A5C382CA2B5E1F4C00C5E65C /* YHLoginTipsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C382C92B5E1F4C00C5E65C /* YHLoginTipsView.swift */; };
A5C382CC2B5EA11800C5E65C /* YHContractCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C382CB2B5EA11800C5E65C /* YHContractCell.swift */; };
A5C382CF2B5F9A9100C5E65C /* YHServiceCenterMainViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C382CE2B5F9A9100C5E65C /* YHServiceCenterMainViewModel.swift */; };
......@@ -1008,6 +1011,7 @@
A5A89FD02C254B5C005A71DD /* YHActivityTravelitemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityTravelitemView.swift; sourceTree = "<group>"; };
A5A89FD22C25518B005A71DD /* YHActivityApplyInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityApplyInfoView.swift; sourceTree = "<group>"; };
A5A89FD42C255250005A71DD /* YHActivityTwoItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHActivityTwoItemView.swift; sourceTree = "<group>"; };
A5A89FD62C256B94005A71DD /* YHHomeLastMessageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeLastMessageModel.swift; sourceTree = "<group>"; };
A5ACE8DE2B4564F7002C94D2 /* YHSmsCodeView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHSmsCodeView.swift; sourceTree = "<group>"; };
A5ACE8E02B4564F7002C94D2 /* YHSmsCodeInputView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHSmsCodeInputView.swift; sourceTree = "<group>"; };
A5ACE8E42B4564F7002C94D2 /* YHLoginStyleButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHLoginStyleButton.swift; sourceTree = "<group>"; };
......@@ -1052,6 +1056,8 @@
A5ACE9222B4564F7002C94D2 /* YHTabBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHTabBarViewController.swift; sourceTree = "<group>"; };
A5ACE9242B4564F7002C94D2 /* YHBouncesContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHBouncesContentView.swift; sourceTree = "<group>"; };
A5ACE9252B4564F7002C94D2 /* YHBasicContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHBasicContentView.swift; sourceTree = "<group>"; };
A5B6ED752C2593A1001B6732 /* YHSignerInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSignerInfoModel.swift; sourceTree = "<group>"; };
A5B6ED772C27FC0B001B6732 /* Int+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Extension.swift"; sourceTree = "<group>"; };
A5C382C92B5E1F4C00C5E65C /* YHLoginTipsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHLoginTipsView.swift; sourceTree = "<group>"; };
A5C382CB2B5EA11800C5E65C /* YHContractCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHContractCell.swift; sourceTree = "<group>"; };
A5C382CE2B5F9A9100C5E65C /* YHServiceCenterMainViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceCenterMainViewModel.swift; sourceTree = "<group>"; };
......@@ -2415,6 +2421,8 @@
A567E5702BD7643D00D5D5A0 /* YHBannerModel.swift */,
A567E5712BD7643D00D5D5A0 /* YHHomeKingKongBlockModel.swift */,
A567E5722BD7643D00D5D5A0 /* YHWebModel.swift */,
A5A89FD62C256B94005A71DD /* YHHomeLastMessageModel.swift */,
A5B6ED752C2593A1001B6732 /* YHSignerInfoModel.swift */,
);
path = M;
sourceTree = "<group>";
......@@ -2639,6 +2647,7 @@
A5ACE9032B4564F7002C94D2 /* UILable+Extension.swift */,
A5ACE9042B4564F7002C94D2 /* Array+Extension.swift */,
04754A942B96FF3D00F8ADCA /* UITextField+Extension.swift */,
A5B6ED772C27FC0B001B6732 /* Int+Extension.swift */,
);
path = Extention;
sourceTree = "<group>";
......@@ -3081,6 +3090,7 @@
045EEEBD2B9F171A0022A143 /* YHWorkExampleTypeView.swift in Sources */,
049AB5EE2C0EF68700155DDF /* YHOrderTipsView.swift in Sources */,
045EEEB12B9F171A0022A143 /* YHClipperView.swift in Sources */,
A5B6ED762C2593A1001B6732 /* YHSignerInfoModel.swift in Sources */,
A567E5962BD7643D00D5D5A0 /* YHConfigModel.swift in Sources */,
04FD85722C21786900BEF9C5 /* YHNameCardInfoView.swift in Sources */,
044D0C182C22AB7300C5CF5E /* YHEditBaseInfoFootView.swift in Sources */,
......@@ -3329,6 +3339,7 @@
A5FD63BF2B6250BC00D1D9DA /* YHInformationPerfectCell.swift in Sources */,
045EEE942B9F171A0022A143 /* YHPreviewInfoQuestionAndAnswerItemView.swift in Sources */,
04F5F86A2C1A95BB004A463C /* YHOtherServiceViewController.swift in Sources */,
A5B6ED782C27FC0B001B6732 /* Int+Extension.swift in Sources */,
045EEED32B9F171A0022A143 /* YHScoreItemCell.swift in Sources */,
045EEEEE2B9F171A0022A143 /* YHCertificateUploadVC.swift in Sources */,
04EA37742BEA0A3400DBAF64 /* YHShareManager.swift in Sources */,
......@@ -3514,6 +3525,7 @@
A5EF21312BA6DF94005027E6 /* YHMineSchemeViewController.swift in Sources */,
045EEE872B9F171A0022A143 /* YHPreviewControllerHoldViewController.swift in Sources */,
04AAA8DC2BF5E5A200FE9FD5 /* YHEmptyDataView.swift in Sources */,
A5A89FD72C256B94005A71DD /* YHHomeLastMessageModel.swift in Sources */,
045EEF172B9F171A0022A143 /* YHSelectCountryViewController.swift in Sources */,
044CF8D62BBA57DC00008CE8 /* YHFailPromptView.swift in Sources */,
A5ACE9562B4564F7002C94D2 /* YHBouncesContentView.swift in Sources */,
......
......@@ -98,19 +98,51 @@ class YHHomePageViewController: YHBaseViewController {
// 请求订单数据
func requestOrder() {
serviceCenterMainReqVM.getContactList {
[weak self] success, error in
guard let self = self else { return }
let isShow = self.serviceCenterMainReqVM.arrContactList.count > 0
DispatchQueue.main.async {
self.showOrderTipsView(isShow)
DispatchQueue.global().async {
self.serviceCenterMainReqVM.getContactList {
[weak self] success, error in
guard let self = self else { return }
let isShow = self.serviceCenterMainReqVM.arrContactList.count > 0
if isShow {
self.viewModel.getBasicInfoForSigner { success, error in
if success {
self.homeHeaderView.orderTipsView.dataModelForBasicInfo = self.viewModel.signerModel
} else {
}
DispatchQueue.main.async {
self.showOrderTipsView(isShow)
}
}
self.viewModel.getLastTwoMessagesForSigner { success, error in
if success {
self.homeHeaderView.orderTipsView.arrLastTwoMessage = self.viewModel.arrLastTwoMessages
} else {
}
DispatchQueue.main.async {
self.showOrderTipsView(isShow)
}
}
} else {
DispatchQueue.main.async {
self.showOrderTipsView(isShow)
}
}
}
}
}
// 是否展示订单提示视图
func showOrderTipsView(_ show:Bool) {
homeHeaderViewHeight = show ? YHHomeHeadView.viewHWithOrderTips : YHHomeHeadView.fixViewH
homeHeaderViewHeight = show ? homeHeaderView.homeHeadViewH : YHHomeHeadView.fixViewH
homeHeaderView.frame = CGRect(x: 20, y: -homeHeaderViewHeight, width: KScreenWidth - 40, height: homeHeaderViewHeight)
homeHeaderView.isNeedHideOrderTipsView = !show
homeCollectView.contentInset = UIEdgeInsets(top: homeHeaderViewHeight, left: 0, bottom: 0, right: 0)
......
//
// YHHomeLastMessageModel.swift
// galaxy
//
// Created by davidhuangA on 2024/6/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import HandyJSON
class YHHomeLastMessageModel: HandyJSON {
var id: String = ""
var content: Int = 0
var time: Int64 = -1
var type: Int64 = -1 //消息类型:1-资料填写;2-证件上传;3-文书定稿;4-文件签字; 5-资料递交
required init() {
}
}
//
// YHSignerInfoModel.swift
// galaxy
//
// Created by davidhuangA on 2024/6/21.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import SmartCodable
class YHSignerInfoModel: SmartCodable {
var name: String = ""
var sex: Int = 0 //0未知 1男 2女
var registration_timestamp: Int64 = -1
required init() {
}
}
......@@ -13,7 +13,11 @@ class YHHomeHeadView: UIView {
static let fixViewH : CGFloat = (YHHomeBannerView.viewH) + (20 + YHHkLifeAndIdView.viewH) + (20 + YHHomeKingKongBlockView.viewH) + (20 + 1) + (20 + YHAiRadarAreaView.viewH) + (20 + YHHomeSalonAreaView.viewH) + (20 + 1) + 20
// 包含订单提示视图的总高度
static let viewHWithOrderTips: CGFloat = YHHomeHeadView.fixViewH + (20 + YHOrderTipsView.viewH)
// private static let viewHWithOrderTips: CGFloat = YHHomeHeadView.fixViewH + (20 + YHOrderTipsView.viewH)
var homeHeadViewH : CGFloat {
return YHHomeHeadView.fixViewH + (20 + self.orderTipsView.tipViewH)
}
override init(frame: CGRect) {
super.init(frame: frame)
......@@ -85,7 +89,7 @@ class YHHomeHeadView: UIView {
didSet {
self.orderTipsView.isHidden = isNeedHideOrderTipsView
self.aiRadarArea.snp.updateConstraints { make in
let topMargin = isNeedHideOrderTipsView ? 20.0 : 20.0 + YHOrderTipsView.viewH + 20.0
let topMargin = isNeedHideOrderTipsView ? 20.0 : 20.0 + orderTipsView.tipViewH + 20.0
make.top.equalTo(bannerLineTop.snp.bottom).offset(topMargin)
}
self.setNeedsLayout()
......@@ -140,7 +144,7 @@ private extension YHHomeHeadView {
orderTipsView.snp.makeConstraints { make in
make.top.equalTo(bannerLineTop.snp.bottom).offset(20)
make.left.right.equalToSuperview()
make.height.equalTo(YHOrderTipsView.viewH)
make.height.equalTo(orderTipsView.tipViewH)
}
......
......@@ -11,29 +11,56 @@ import AttributedString
class YHOrderTipsView: UIView {
// static let viewH = 91.0
static let viewH = 226.0
static let viewH2 = 162.0
static let viewH3 = 226.0
private static let viewH : CGFloat = 91.0
private static let viewH2 : CGFloat = 162.0
private static let viewH3 : CGFloat = 226.0
var tipViewH : CGFloat {
guard let arr = arrLastTwoMessage else {
return YHOrderTipsView.viewH
}
if arr.count > 1 {
return YHOrderTipsView.viewH3
} else if arr.count == 1 {
return YHOrderTipsView.viewH2
}
return YHOrderTipsView.viewH
}
override init(frame: CGRect) {
super.init(frame: frame)
setupUI()
let tap : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapButton(gestureRecognizer:)))
addGestureRecognizer(tap)
}
var dataModelForBasicInfo : YHSignerInfoModel? {
didSet {
updateBasicInfo()
}
}
var arrLastTwoMessage : [YHHomeLastMessageModel]? {
didSet {
updateLastTwoMessges()
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
lazy var bkgImageV: UIImageView = {
let imgV : UIImageView = UIImageView()
imgV.contentMode = .scaleAspectFill
imgV.image = UIImage(named: "home_order_tips_bkg")
imgV.clipsToBounds = true
return imgV
}()
......@@ -55,10 +82,34 @@ class YHOrderTipsView: UIView {
override func layoutSubviews() {
super.layoutSubviews()
// addSubview(bkgImageV)
// bkgImageV.snp.updateConstraints { make in
// make.edges.equalToSuperview()
// }
bkgImageV.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
if let arr = arrLastTwoMessage {
if arr.count > 1 {
firstItem.snp.makeConstraints { make in
make.top.equalTo(lableName.snp.bottom).offset(20)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(YHOrderTipsItemView.viewH)
}
secondItem.snp.makeConstraints { make in
make.top.equalTo(firstItem.snp.bottom).offset(12)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(YHOrderTipsItemView.viewH)
}
} else if arr.count == 1 {
firstItem.snp.makeConstraints { make in
make.top.equalTo(lableName.snp.bottom).offset(20)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(YHOrderTipsItemView.viewH)
}
}
}
}
......@@ -115,17 +166,73 @@ class YHOrderTipsView: UIView {
lazy var firstItem: YHOrderTipsItemView = {
let itemView : YHOrderTipsItemView = YHOrderTipsItemView()
itemView.isHidden = true
return itemView
}()
lazy var secondItem: YHOrderTipsItemView = {
let itemView : YHOrderTipsItemView = YHOrderTipsItemView()
itemView.isHidden = true
return itemView
}()
}
private extension YHOrderTipsView {
func timeName() -> String {
let now = Date()
let hour = Calendar.current.component(.hour, from: now)
var name = ""
if hour < 12 {
name = "上午"
} else if hour < 18 {
name = "下午"
} else {
name = "晚上"
}
return name
}
extension YHOrderTipsView {
func updateBasicInfo() {
guard let model = dataModelForBasicInfo else {
return
}
lableName.text = timeName() + "好," + model.name + model.sex.sexDescribe()
let now = Date()
let timestamp = now.timeIntervalSince1970
print("当前时间戳:\(timestamp)")
let offsetSecond = CGFloat(model.registration_timestamp - Int64(timestamp))
if offsetSecond > 0 {
let roundedUp = Int(ceil(offsetSecond / 24 * 60 * 60))
lableDays.text = "银河港生活陪伴您的第" + String(roundedUp) + "天"
} else {
lableDays.text = "银河港生活陪伴在您的身边"
}
}
func updateLastTwoMessges() {
guard let arr = arrLastTwoMessage else {
firstItem.isHidden = true
secondItem.isHidden = true
return
}
if arr.count > 1 {
firstItem.isHidden = false
secondItem.isHidden = false
} else if arr.count == 1 {
firstItem.isHidden = false
secondItem.isHidden = true
} else {
firstItem.isHidden = true
secondItem.isHidden = true
}
}
@objc func tapButton(gestureRecognizer:UITapGestureRecognizer) {
goTabBarBy(tabType: .service)
}
......@@ -133,13 +240,15 @@ extension YHOrderTipsView {
func setupUI() {
backgroundColor = UIColor(hex: 0xF8FAFB)
// addSubview(bkgImageV)
// bkgImageV.snp.makeConstraints { make in
// make.left.top.equalToSuperview()
// make.width.equalTo(KScreenWidth - 40)
// make.height.equalTo(YHOrderTipsView.viewH)
// }
backgroundColor = UIColor.pageBkgColor
clipsToBounds = true
addSubview(bkgImageV)
bkgImageV.snp.makeConstraints { make in
make.left.top.equalToSuperview()
make.width.equalTo(KScreenWidth - 40)
make.height.equalTo(YHOrderTipsView.viewH)
}
addSubview(topImageV)
topImageV.snp.makeConstraints { make in
......@@ -218,20 +327,9 @@ extension YHOrderTipsView {
addSubview(firstItem)
firstItem.snp.makeConstraints { make in
make.top.equalTo(lableName.snp.bottom).offset(20)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(YHOrderTipsItemView.viewH)
}
addSubview(secondItem)
secondItem.snp.makeConstraints { make in
make.top.equalTo(firstItem.snp.bottom).offset(12)
make.left.equalTo(kMargin)
make.right.equalTo(-kMargin)
make.height.equalTo(YHOrderTipsItemView.viewH)
}
layoutIfNeeded()
setNeedsLayout()
}
}
......@@ -27,10 +27,62 @@ class YHHomePageViewModel : YHBaseViewModel {
// 搜索
let searchPageSize: Int = 20
//首页 签约用户的最新数据
var arrLastTwoMessages : [YHHomeLastMessageModel] = []
//首页 签约用户信息
var signerModel : YHSignerInfoModel?
}
//接口
extension YHHomePageViewModel {
//获取签约用户信息
func getBasicInfoForSigner(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
//super-app/infoflow/latest-unread-messages
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Home.signerInfoApi
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
let dic = json.data
guard let resultModel = YHSignerInfoModel.deserialize(dict: dic as? [AnyHashable : Any]) else {
callBackBlock(false,nil)
return
}
self.signerModel = resultModel
callBackBlock(true,nil)
} failBlock: { err in
callBackBlock(false,err)
}
}
//签约用户 获取最新的两条提示信息
func getLastTwoMessagesForSigner(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Home.lastUnreadMessageApi
let param = ["qty" : 2]
let _ = YHNetRequest.getRequest(url: strUrl,params: param) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
let dic = json.data
guard let result = [YHHomeLastMessageModel].deserialize(from: dic as? [Any]) else {
self.arrLastTwoMessages = []
callBackBlock(false,nil)
return
}
arrLastTwoMessages = result as? [YHHomeLastMessageModel] ?? []
callBackBlock(true,nil)
} failBlock: { err in
self.arrLastTwoMessages = []
callBackBlock(false,err)
}
}
//请求配置
func getHomeConfig(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.homeConfigApi
......
//
// Int+Extension.swift
// galaxy
//
// Created by davidhuangA on 2024/6/23.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
extension Int {
public func sexDescribe() -> String {
//0未知 1男 2女
switch self {
case 1:
return "男"
case 2:
return "女"
default:
return "未知"
}
}
}
......@@ -8,6 +8,17 @@
class YHAllApiName {
//首页界面相关接口
struct Home {
//获取签约用户的 最新信息提醒
static let lastUnreadMessageApi = "super-app/infoflow/latest-unread-messages"
//获取签约用户信息
static let signerInfoApi = "super-app/infoflow/signer/info"
}
//接口 模块名 Common
struct Common {
//首页配置接口
......@@ -36,6 +47,9 @@ class YHAllApiName {
static let likeCollect = "infoflow/article/myArticleRecord"
}
//order 模块
struct Order {
//合同列表
......
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