// // HomeViewController.m // LekangGuard // // Created by ecell on 2022/9/27. // #import "HomeViewController.h" #import "ScanCodeViewController.h" #import "HomeTableViewCell.h" #import "HomeHeaderView.h" #import "HAndTViewController.h" #import "JCManager.h" #import "BRManager.h" #import "TihuManager.h" #import @interface HomeViewController () @property (nonatomic ,strong) CommonTableView *homeTable; @property (nonatomic ,strong) HomeHeaderView *headerView; /// 设备列表Arr @property (nonatomic ,strong) NSMutableArray *deviceListArr; @property (nonatomic ,strong) NSMutableArray *cellMenuArr; @property (nonatomic ,strong) LatestLocationModel *laloModel; @end @implementation HomeViewController - (void)viewDidLoad { [super viewDidLoad]; self.zx_navStatusBarStyle = ZXNavStatusBarStyleDefault; self.zx_navLeftBtn.titleLabel.font = FontBoldADA_(18); [self.zx_navLeftBtn setTitleColor:KKWhiteColorColor forState:0]; UIImageView *bgImg = [UICommon ui_imageView:self.view.frame fileName:@"home_bg"]; self.ImgType = HomeNoWhat; self.emptyTitle = GJText(@"您还没有绑定设备"); self.emptyText = GJText(@"赶快去绑定一个设备体验一下吧!"); self.buttonTitle = GJText(@"添加设备"); self.buttonImg = ImageName_(@"home_addBtn"); [self.view addSubview:bgImg]; self.zx_navRightBtn.zx_fixImageSize = ImageName_(@"home_icon_add").size; self.zx_navRightBtn.zx_fixWidth = 40; self.zx_navRightBtn.zx_fixHeight = 40; [self zx_setRightBtnWithImg:ImageName_(@"home_icon_add") clickedBlock:^(ZXNavItemBtn * _Nonnull btn) { [self isShowMenu]; }]; [self zx_setSubRightBtnWithImgName:@"home_nav_sign" clickedBlock:^(ZXNavItemBtn * _Nonnull btn) { // SingViewController *vc = [[SingViewController alloc] init]; // [self.navigationController pushViewController:vc animated:YES]; }]; [self setTotal]; [self QueryMsg]; [self GetBannerList]; [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UPDATA_DeviceList object:nil] subscribeNext:^(NSNotification *x) { [self GetDeviceList]; }]; [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"updateBatteryAndLocation" object:nil] subscribeNext:^(NSNotification *x) { [self GetLatest:APIManager.sharedManager.deviceModel.imei]; }]; [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"deviceNowLocation" object:nil] subscribeNext:^(NSNotification *x) { [self GetLatest:APIManager.sharedManager.deviceModel.imei]; }]; [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"XIAOHONGHUA" object:nil] subscribeNext:^(NSNotification *x) { [self getHomeWorkCount]; [self getReadFlowerCount]; }]; [self.view addSubview:self.homeTable]; [self.homeTable mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(iPhoneX_NavHeight); make.left.right.equalTo(self.view); make.bottom.equalTo(self.view.mas_bottom); }]; } /// 收到推送聊天信息 - (void)pusChatMessage:(NSDictionary *)chatModel { [self.headerView GetUnreadTotal]; } - (CommonTableView *)homeTable { if (!_homeTable) { kWeakSelf(self) _homeTable = [[CommonTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain cellHeight:0 cellRow:0 isAdaptive:NO isLine:NO commonCell:HomeTableViewCell.class createCell:^(ZZTableViewCell * _Nonnull cells, NSIndexPath * _Nonnull indexPath) { HomeTableViewCell *cell = (HomeTableViewCell *)cells; if (indexPath.row < weakself.cellMenuArr.count) { cell.titleStr = weakself.cellMenuArr[indexPath.row]; cell.laLoModel = self.laloModel; } } selectedCell:^(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) { NSString *title = self.cellMenuArr[indexPath.row]; HAndTViewController *vc = [HAndTViewController new]; vc.type = [title isEqualToString:GJText(@"心率")] ? 1 : 2; [self.navigationController pushViewController:vc animated:YES]; } DidscrollView:^(UIScrollView * _Nonnull scrollView) { }]; _homeTable.tableHeaderView = self.headerView; _homeTable.tableHeaderView.height = Adapted(170)+230+25+28; _homeTable.backgroundColor = KKClearColor; [_homeTable bindHeadRefreshHandler:^{ [self GetDeviceList]; [self GetBannerList]; } themeColor:KKMainColor refreshStyle:KafkaRefreshStyleReplicatorWoody]; } return _homeTable; } - (HomeHeaderView *)headerView { if (!_headerView) { _headerView = [HomeHeaderView new]; _headerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, Adapted(170)+230+25+28); } return _headerView; } - (void)isShowMenu { kWeakSelf(self) [DeviceSwitchover.sharedManager showMenuViewWithAdd:YES]; [DeviceSwitchover.sharedManager setSwitchDevice:^(NSInteger index) { if (index == 0) { ScanCodeViewController *vc = [ScanCodeViewController new]; [weakself.navigationController pushViewController:vc animated:YES]; } else { DeviceModel *model = weakself.deviceListArr[index-1]; [weakself GetDeviceMenu:model]; } }]; } #pragma mark 获取设备列表 /// 获取设备列表 - (void)GetDeviceList { kWeakSelf(self) [UICommon MessageUpload:@"加载中"]; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:BindDevice_URL parameters:parameters resultClass:nil] subscribeNext:^(NSArray *arr) { [UICommon HidenLoading]; [self.homeTable.headRefreshControl endRefreshing]; [self.deviceListArr removeAllObjects]; self.deviceListArr = APIManager.sharedManager.deviceList; if (arr.count > 0) { weakself.homeTable.emptyDataSetSource = nil; weakself.homeTable.emptyDataSetDelegate = nil; if (STRINGHASVALUE(APIManager.sharedManager.deviceModel.imei)) { [self.deviceListArr enumerateObjectsUsingBlock:^(DeviceModel *obj, NSUInteger idx, BOOL * _Nonnull stop) { if ([obj.imei isEqualToString:APIManager.sharedManager.deviceModel.imei]) [self GetDeviceMenu:obj]; }]; } else { DeviceModel *model = [DeviceModel yy_modelWithJSON:arr[0]]; [self GetDeviceMenu:model]; } } else { [self GetDeviceMenu:[DeviceModel new]]; weakself.homeTable.emptyDataSetSource = self; weakself.homeTable.emptyDataSetDelegate = self; } self.homeTable.tableHeaderView.height = arr.count == 0 ? Adapted(170) : Adapted(170)+230+25+28; self.headerView.isDev = arr.count == 0 ? YES : NO; } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; [self.homeTable.headRefreshControl endRefreshing]; }]; } #pragma mark 动态显示设备功能列 /// 动态显示设备功能列 - (void)GetDeviceMenu:(DeviceModel *)model { APIManager.sharedManager.deviceModel = model; [APIManager.sharedManager.cache setObject:model forKey:sDeviceKey]; [self.zx_navLeftBtn setTitle:model.name forState:0]; self.headerView.devicemodel = model; [self GetLatest:model.imei]; [self GetLatestInstructions:model.imei]; [self.homeTable reloadData]; /// 视频类型名称(0.不支持,1.菊风,2.声网,3.佰锐,4.鹈鹕) if (model.videoModelName == 1) { // 拥有菊风的设备,需要登录 账号 (调试时期暂时停止) if(![JCManager shared].client) { // if([[JCManager shared] initializeWithAPPKey:model.appKey]) // { // JCClientLoginParam* loginParam = [[JCClientLoginParam alloc] init]; // //loginParam.directConnectEnable = YES; // [[JCManager shared].client setServerAddress:@"http:cn.router.justalkcloud.com:8080"]; // [[JCManager shared].client login:APIManager.sharedManager.loginModel.openid password:@"test" loginParam:nil]; // [JCManager shared].gMianVC = self; // NSLog(@"菊风账号是:%@", APIManager.sharedManager.loginModel.openid); // } } } else if (model.videoModelName == 3) { // 拥有佰锐的设备,需要登录 账号 if (![[BRManager shared] isUserLogin]) { [[BRManager shared] initialize]; [BRManager shared].gMianVC = self; [[BRManager shared] login:model.baiRuiId nick:model.name]; } else { NSLog(@"====================>佰锐视频账号已经登录"); } } else if (model.videoModelName == 2) { } else if (model.videoModelName == 4) { // 拥有鹈鹕的设备,需要登录账号 if (![[TihuManager shared] isUserLogin]) { [[TihuManager shared] initialize]; [TihuManager shared].gMianVC = self; [[TihuManager shared] login:APIManager.sharedManager.loginModel.openid pwd:@"123456"]; NSLog(@"鹈鹕账号是:%@", APIManager.sharedManager.loginModel.openid); } else { NSLog(@"====>鹈鹕视频账号已经登录"); } } } #pragma mark 获取banner图 /// 获取banner图 - (void)GetBannerList { [UICommon MessageUpload:GJText(@"加载中")]; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APPOST:Home_banner_URL parameters:parameters isJson:YES resultClass:nil] subscribeNext:^(NSArray *x) { [UICommon HidenLoading]; if (ARRAYHASVALUE(x)) { NSMutableArray *bannerArr = [NSMutableArray new]; for (NSDictionary *dic in x) { BannerModel *model = [BannerModel yy_modelWithJSON:dic]; [bannerArr addObject:model.banner]; } self.headerView.bannerArr = bannerArr; } } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } #pragma mark 获取设备最新位置信息 /// 获取设备最新位置信息 - (void)GetLatest:(NSString *)imei { NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:F(@"%@/%@", Latest_location_app_URL,imei) parameters:parameters resultClass:LatestLocationModel.class] subscribeNext:^(LatestLocationModel *model) { [UICommon HidenLoading]; self.laloModel = model; self.headerView.laLoModel = model; [self.homeTable reloadData]; NSLog(@"-->%@",model); } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } #pragma mark 主动请求位置下发 /// 主动请求位置下发 - (void)GetLatestInstructions:(NSString *)imei { [UICommon MessageUpload:@"加载中"]; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:F(@"%@/%@", Latest_location_app_instructions_URL,imei) parameters:parameters resultClass:nil] subscribeNext:^(id _Nullable x) { [UICommon HidenLoading]; NSLog(@"-->%@",x); } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } #pragma mark 查看个人资料 /// 查看个人资料 - (void)QueryMsg { [UICommon MessageUpload:@"加载中"]; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [parameters setValue:APIManager.sharedManager.deviceModel.imei forKey:@"imei"]; [[[APIManager sharedManager] APGET:QueryMsg_URL parameters:parameters resultClass:MyUserMsgModel.class] subscribeNext:^(MyUserMsgModel *model) { [UICommon HidenLoading]; } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } #pragma mark 用户活跃度统计上传 /// 用户活跃度统计上传 - (void)setTotal { // NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; // NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; // [parameters setValue:@"lekangshouhu" forKey:@"channelName"]; // [parameters setValue:version forKey:@"version"]; // [[[APIManager sharedManager] APGET:Total_URL parameters:parameters resultClass:MyUserMsgModel.class] subscribeNext:^(MyUserMsgModel *model) { // [UICommon HidenLoading]; // // } error:^(NSError * _Nullable error) { // NSDictionary *dic = error.userInfo; // [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; // }]; } #pragma mark 查询未读作业总数 /// 查询未读作业总数 - (void)getHomeWorkCount { kWeakSelf(self) NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:HomeWorkCount_GET_URL parameters:parameters resultClass:nil] subscribeNext:^(id _Nullable x) { [UICommon HidenLoading]; // NSNumber *campusCount = x[@"campusCount"]; self.headerView.homeWokeCount = x[@"homeWokeCount"]; [weakself.homeTable reloadData]; } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } #pragma mark 查询小红花未读总数 /// 查询小红花未读总数 - (void)getReadFlowerCount { kWeakSelf(self) NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; [[[APIManager sharedManager] APGET:ReadFlowerCount_GET_URL parameters:parameters resultClass:nil] subscribeNext:^(id _Nullable x) { [UICommon HidenLoading]; weakself.headerView.redTotalCount = x[@"totalCount"]; [weakself.homeTable reloadData]; } error:^(NSError * _Nullable error) { NSDictionary *dic = error.userInfo; [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]]; }]; } - (NSMutableArray *)deviceListArr { if (!_deviceListArr) _deviceListArr = [NSMutableArray new]; return _deviceListArr; } - (NSMutableArray *)cellMenuArr { if (!_cellMenuArr) _cellMenuArr = [NSMutableArray new]; return _cellMenuArr; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self GetDeviceList]; [self getHomeWorkCount]; [self getReadFlowerCount]; } - (void)updateAllMessage { [self GetDeviceList]; } - (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button { ScanCodeViewController *vc = [ScanCodeViewController new]; [self.navigationController pushViewController:vc animated:YES]; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end