|
|
@@ -0,0 +1,746 @@
|
|
|
+//
|
|
|
+// QunzuController.m
|
|
|
+// AIIM
|
|
|
+//
|
|
|
+// Created by gan on 2025/4/21.
|
|
|
+//
|
|
|
+
|
|
|
+#import <Foundation/Foundation.h>
|
|
|
+#import "QunzuController.h"
|
|
|
+#import "FriendNetApi.h"
|
|
|
+#import <SDWebImage/UIImageView+WebCache.h>
|
|
|
+#import "ChatController.h"
|
|
|
+#import "ChatListStore.h"
|
|
|
+
|
|
|
+#import "NewQunzuController.h"
|
|
|
+#import "QuncyController.h"
|
|
|
+
|
|
|
+#import "ChatHistoryController.h"
|
|
|
+
|
|
|
+
|
|
|
+@interface QunzuController()<UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource>
|
|
|
+@property (weak, nonatomic) IBOutlet UICollectionView *collView;
|
|
|
+@property (weak, nonatomic) IBOutlet UITableView *tableView;
|
|
|
+@property (weak, nonatomic) IBOutlet UIScrollView *ctScrollView;
|
|
|
+@property (weak, nonatomic) IBOutlet UILabel *bartitleLb;
|
|
|
+@property (weak, nonatomic) IBOutlet UIButton *rightBt;
|
|
|
+
|
|
|
+
|
|
|
+@property (nonatomic,strong) NSMutableArray *cellDatas;
|
|
|
+@property (nonatomic,strong) NSMutableArray *collDatas;
|
|
|
+@property (nonatomic,strong) NSString *master;
|
|
|
+@property (nonatomic) BOOL ismaster;
|
|
|
+@property (nonatomic) BOOL reloadMsg;
|
|
|
+@property (nonatomic, strong) NSDictionary * noDisturbDict;
|
|
|
+@end
|
|
|
+
|
|
|
+@implementation QunzuController
|
|
|
+
|
|
|
+-(void)viewDidLoad{
|
|
|
+ [super viewDidLoad];
|
|
|
+ [self.navigationController setNavigationBarHidden:YES animated:NO];
|
|
|
+ _bartitleLb.text = @"";
|
|
|
+ _reloadMsg=NO;
|
|
|
+ _cellDatas = [[NSMutableArray alloc] init];
|
|
|
+ _collDatas = [[NSMutableArray alloc] init];
|
|
|
+ _rightBt.alpha = 0;
|
|
|
+ if(self.groupMsg){
|
|
|
+ [self initData];
|
|
|
+ [self getNoDiturbSettingData];
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if(self.groupId){
|
|
|
+ [self getNetGroupMsg];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ [self initSubView];
|
|
|
+}
|
|
|
+
|
|
|
+-(void)viewWillAppear:(BOOL)animated{
|
|
|
+ [super viewWillAppear:YES];
|
|
|
+ if(_reloadMsg){
|
|
|
+ [self getNetGroupMsg];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+-(void)viewDidDisappear:(BOOL)animated{
|
|
|
+ [super viewDidDisappear:YES];
|
|
|
+ _reloadMsg=YES;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+-(void)initData{
|
|
|
+
|
|
|
+ _ismaster=NO;
|
|
|
+
|
|
|
+ if (self.groupMsg) {
|
|
|
+ _master = self.groupMsg[@"master"]?:@"";
|
|
|
+ _groupId =self.groupMsg[@"id"];
|
|
|
+ NSString *userId = [UDManager.shareInstance getSDManager:dkuserId];
|
|
|
+ if ([_master isEqualToString:userId]) {
|
|
|
+ _ismaster=YES;
|
|
|
+ _rightBt.alpha = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _bartitleLb.text = self.groupMsg[@"name"];
|
|
|
+
|
|
|
+ NSDictionary *d1 =@{
|
|
|
+ @"name":@"GroupCtr-xiaoximdr",
|
|
|
+ @"image":@"noDisturb_chat_icon",
|
|
|
+ };
|
|
|
+ NSDictionary *d2 =@{
|
|
|
+ @"name":@"GroupCtr-ruquanshe",
|
|
|
+ @"image":@"check_group_icon",
|
|
|
+ };
|
|
|
+ NSDictionary *d3 =@{
|
|
|
+ @"name":@"GroupCtr-zhuanrangq",
|
|
|
+ @"image":@"transfer_group_icon",
|
|
|
+ };
|
|
|
+ NSDictionary *d4 =@{
|
|
|
+ @"name":@"GroupCtr-liaotianjl",
|
|
|
+ @"image":@"record_chat_icon",
|
|
|
+ };
|
|
|
+ NSDictionary *d5 =@{
|
|
|
+ @"name":@"GroupCtr-gonggao",
|
|
|
+ @"image":@"announce_group_icon",
|
|
|
+ };
|
|
|
+ NSDictionary *d6 =@{
|
|
|
+ @"name":@"GroupCtr-liaotian",
|
|
|
+ @"image":@"wzhuxiaozz",
|
|
|
+ };
|
|
|
+
|
|
|
+ NSString *d7name = @"GroupCtr-tuichuql";
|
|
|
+ if(_ismaster){
|
|
|
+ d7name = @"GroupCtr-jiesanquz";
|
|
|
+ }
|
|
|
+
|
|
|
+ NSDictionary *d7 =@{
|
|
|
+ @"name":d7name,
|
|
|
+ @"image":@"wzhuxiaozz",
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ [_cellDatas removeAllObjects];
|
|
|
+
|
|
|
+ if(_ismaster){
|
|
|
+ [_cellDatas addObject:d2];
|
|
|
+ [_cellDatas addObject:d3];
|
|
|
+ }
|
|
|
+ [_cellDatas addObject:d4];
|
|
|
+ [_cellDatas addObject:d5];
|
|
|
+ [_cellDatas addObject:d1];
|
|
|
+ [_cellDatas addObject:d6];
|
|
|
+ [_cellDatas addObject:d7];
|
|
|
+
|
|
|
+
|
|
|
+ [self getGroupUsers];
|
|
|
+}
|
|
|
+
|
|
|
+-(void)getNetGroupMsg{
|
|
|
+ [FriendNetApi getGroupInfo:self.groupId succ:^(int code, NSDictionary * res) {
|
|
|
+ NSLog(@"res:%@",res);
|
|
|
+ self.groupMsg = [self replaceNullsWithEmptyStringInDictionary:res[@"data"]];
|
|
|
+ [self initData];
|
|
|
+ [self getNoDiturbSettingData];
|
|
|
+ [self.tableView reloadData];
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+-(void)getNoDiturbSettingData{
|
|
|
+ [FriendNetApi getNoDisturbSetting:self.groupMsg[@"id"] succ:^(int code, NSDictionary * _Nullable result) {
|
|
|
+ NSLog(@"noDisturbSetting:-----%@",result);
|
|
|
+ NSArray * dataArray = result[@"data"];
|
|
|
+ if (dataArray.count!=0) {
|
|
|
+ self.noDisturbDict = dataArray[0];
|
|
|
+ }
|
|
|
+ [self.tableView reloadData];
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)saveNoDisturbSetting{
|
|
|
+ NSDictionary * param = @{
|
|
|
+ @"userId":self.groupMsg[@"id"],
|
|
|
+ @"chatId":self.groupMsg[@"id"]
|
|
|
+ };
|
|
|
+ [FriendNetApi saveNoDisturbSetting:param succ:^(int code, NSDictionary * _Nullable result) {
|
|
|
+ [MBProgressHUD showWithText:result[@"msg"]];
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)cancelNoDisturbSetting{
|
|
|
+ [FriendNetApi cancelNoDisturbSettingWithUserId:self.groupMsg[@"id"] chatId:self.groupMsg[@"id"] succ:^(int code, NSDictionary * _Nullable result) {
|
|
|
+ [MBProgressHUD showWithText:result[@"msg"]];
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+-(void)initSubView{
|
|
|
+ [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellT"];
|
|
|
+ [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellTT"];
|
|
|
+ [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellTT3"];
|
|
|
+ _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
|
|
+ _tableView.backgroundColor = [UIColor clearColor];
|
|
|
+ _tableView.delegate = self;
|
|
|
+ _tableView.dataSource = self;
|
|
|
+ _tableView.scrollEnabled = NO;
|
|
|
+
|
|
|
+ UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
|
|
+ layout.scrollDirection = UICollectionViewScrollDirectionVertical; // 设置垂直流布局
|
|
|
+ CGFloat width = _collView.frame.size.width;
|
|
|
+ width=(width-20)/3;
|
|
|
+ layout.itemSize = CGSizeMake(width, width); // 设置每个item的大小
|
|
|
+ layout.minimumInteritemSpacing = 5; // 设置单元格之间的间距
|
|
|
+ [_collView setCollectionViewLayout:layout];
|
|
|
+ [_collView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collT"];
|
|
|
+ [_collView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collTT"];
|
|
|
+ _collView.dataSource = self;
|
|
|
+ _collView.delegate = self;
|
|
|
+ _collView.backgroundColor = [UIColor clearColor];
|
|
|
+ _ctScrollView.showsVerticalScrollIndicator =NO;
|
|
|
+ _ctScrollView.backgroundColor = [UIColor clearColor];
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+-(void)resetframe{
|
|
|
+ NSLog(@"_ismaster");
|
|
|
+ CGFloat tableH = _cellDatas.count*62;
|
|
|
+ NSInteger row =_collDatas.count/3;
|
|
|
+
|
|
|
+ if(_ismaster){
|
|
|
+ NSLog(@"_ismaster11-----");
|
|
|
+ row =(_collDatas.count+2)/3;
|
|
|
+ if((_collDatas.count+2)>row*3) {
|
|
|
+ row=row+1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ NSString *openInvite = self.groupMsg[@"openInvite"];
|
|
|
+ if(openInvite.intValue==1){
|
|
|
+ row =(_collDatas.count+1)/3;
|
|
|
+ if((_collDatas.count+1)>row*3) {
|
|
|
+ row=row+1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ row =_collDatas.count/3;
|
|
|
+ if(_collDatas.count>row*3) {
|
|
|
+ row=row+1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ CGFloat width = _collView.frame.size.width;
|
|
|
+ width=(width-20)/3;
|
|
|
+
|
|
|
+ CGFloat collVH = row*(width+10);
|
|
|
+
|
|
|
+ CGRect r = _collView.frame;
|
|
|
+ r.origin.x =0.0f;
|
|
|
+ r.origin.y = 0.0f;
|
|
|
+ r.size.height = collVH;
|
|
|
+ _collView.frame = r;
|
|
|
+
|
|
|
+ CGRect t = _tableView.frame;
|
|
|
+ t.origin.x =0.0f;
|
|
|
+ t.origin.y = collVH +10.0f;
|
|
|
+ t.size.height = tableH;
|
|
|
+ _tableView.frame = t;
|
|
|
+
|
|
|
+ _ctScrollView.contentSize = CGSizeMake(_ctScrollView.frame.size.width, tableH+collVH+20);
|
|
|
+ [_collView reloadData];
|
|
|
+ [_tableView reloadData];
|
|
|
+}
|
|
|
+
|
|
|
+- (IBAction)gotoBack:(id)sender {
|
|
|
+ [self dismissViewControllerAnimated:YES completion:nil];
|
|
|
+}
|
|
|
+- (IBAction)rightBt:(id)sender {
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
|
|
|
+ NewQunzuController *groupctr = [board instantiateViewControllerWithIdentifier:@"NewQunzuController"];
|
|
|
+ groupctr.groupMsg = self.groupMsg;
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:groupctr];
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)switchAction:(id)sender {
|
|
|
+ UISwitch *switchButton = (UISwitch*)sender;
|
|
|
+ BOOL isButtonOn = [switchButton isOn];
|
|
|
+ if (isButtonOn) {
|
|
|
+ // 处理开关打开的情况
|
|
|
+ NSLog(@"isButtonOn");
|
|
|
+ [self saveNoDisturbSetting];
|
|
|
+ } else {
|
|
|
+ // 处理开关关闭的情况
|
|
|
+ NSLog(@"isButtonOff");
|
|
|
+ [self cancelNoDisturbSetting];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark UICollectionViewDelegate
|
|
|
+
|
|
|
+-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
+-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
|
|
+ if(_ismaster){
|
|
|
+ return self.collDatas.count +2;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ NSString *openInvite = self.groupMsg[@"openInvite"];
|
|
|
+ if(openInvite.intValue==1){
|
|
|
+ return self.collDatas.count +1;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ return self.collDatas.count;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
|
|
+
|
|
|
+ // 配置cell的内容
|
|
|
+ if(indexPath.row==self.collDatas.count){
|
|
|
+ UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collTT" forIndexPath:indexPath];
|
|
|
+ CGFloat width = cell.frame.size.width;
|
|
|
+ UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"jiaqun"]];
|
|
|
+ [cell addSubview:img];
|
|
|
+ img.contentMode = UIViewContentModeScaleAspectFill;
|
|
|
+ img.frame = CGRectMake(20, 0, width-40, width-40);
|
|
|
+ img.layer.cornerRadius = (width-40)/2;
|
|
|
+ img.layer.masksToBounds = YES;
|
|
|
+ img.backgroundColor=[UIColor lightGrayColor];
|
|
|
+ cell.backgroundColor=[UIColor clearColor];
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+ else if(indexPath.row==self.collDatas.count+1){
|
|
|
+ UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collTT" forIndexPath:indexPath];
|
|
|
+ CGFloat width = cell.frame.size.width;
|
|
|
+ UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tichuqun"]];
|
|
|
+ [cell addSubview:img];
|
|
|
+ img.contentMode = UIViewContentModeScaleAspectFill;
|
|
|
+ img.frame = CGRectMake(20, 0, width-40, width-40);
|
|
|
+ img.layer.cornerRadius = (width-40)/2;
|
|
|
+ img.layer.masksToBounds = YES;
|
|
|
+ img.backgroundColor=[UIColor lightGrayColor];
|
|
|
+ cell.backgroundColor=[UIColor clearColor];
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+
|
|
|
+ UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collT" forIndexPath:indexPath];
|
|
|
+
|
|
|
+ NSArray *array = cell.contentView.subviews;
|
|
|
+ for (id sbv in array) {
|
|
|
+ [sbv removeFromSuperview];
|
|
|
+ }
|
|
|
+ NSDictionary *dic = self.collDatas[indexPath.row];
|
|
|
+ CGFloat width = cell.frame.size.width;
|
|
|
+ UIImageView *img = [[UIImageView alloc] init];
|
|
|
+ [cell.contentView addSubview:img];
|
|
|
+ [img sd_setImageWithURL:[NSURL URLWithString:dic[@"avatar"]] placeholderImage:[UIImage imageNamed:@"Avatar"]];
|
|
|
+ img.contentMode = UIViewContentModeScaleAspectFill;
|
|
|
+ img.frame = CGRectMake(20, 0, width-40, width-40);
|
|
|
+ img.layer.cornerRadius = (width-40)/2;
|
|
|
+ img.layer.masksToBounds = YES;
|
|
|
+ img.backgroundColor=[UIColor lightGrayColor];
|
|
|
+
|
|
|
+ UILabel *name = [[UILabel alloc] init];
|
|
|
+ name.text = dic[@"name"];
|
|
|
+ [cell.contentView addSubview:name];
|
|
|
+ name.frame = CGRectMake(0, width-40, width, 30.0f);
|
|
|
+ name.textAlignment = NSTextAlignmentCenter;
|
|
|
+ if([_master isEqualToString:dic[@"id"]]){
|
|
|
+ name.textColor = globalColor(GCTypeOrangeR);
|
|
|
+ name.font = [UIFont systemFontOfSize:15.0f];
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ name.textColor = [UIColor whiteColor];
|
|
|
+ name.font = [UIFont systemFontOfSize:14.0f];
|
|
|
+ }
|
|
|
+ cell.backgroundColor=[UIColor clearColor];
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+ return nil;
|
|
|
+}
|
|
|
+
|
|
|
+-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
|
|
+ if(indexPath.row==self.collDatas.count){//邀请加入群
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
|
|
|
+ QuncyController *chatctr = [board instantiateViewControllerWithIdentifier:@"QuncyController"];
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+ chatctr.editType = 3;
|
|
|
+ chatctr.groupId = self.groupMsg[@"id"];
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+
|
|
|
+ }else if(indexPath.row==self.collDatas.count+1){//踢出群
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
|
|
|
+ QuncyController *chatctr = [board instantiateViewControllerWithIdentifier:@"QuncyController"];
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+ chatctr.editType = 4;
|
|
|
+ chatctr.groupId = self.groupMsg[@"id"];
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+ }
|
|
|
+
|
|
|
+ NSLog(@"");
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+#pragma mark UITableViewDelegate
|
|
|
+
|
|
|
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
|
+
|
|
|
+ NSInteger section =indexPath.section;
|
|
|
+ NSDictionary *time =_cellDatas[section];
|
|
|
+ NSString *cellT =@"cellT";
|
|
|
+ if(section>_cellDatas.count-3){
|
|
|
+ cellT =@"cellTT";
|
|
|
+ UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellT forIndexPath:indexPath];
|
|
|
+ if(cell==nil){
|
|
|
+ cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellT];
|
|
|
+ }
|
|
|
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
|
|
+ cell.backgroundColor = [UIColor clearColor];
|
|
|
+ cell.contentView.layer.borderWidth = 0.5f;
|
|
|
+ cell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
|
|
|
+ cell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
|
|
|
+ if(section==_cellDatas.count-1){
|
|
|
+ cell.contentView.backgroundColor = globalColor(GCTypeOrangeR);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ cell.contentView.backgroundColor = globalColor(GCTypeGreen);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ cell.textLabel.text =NSLocalizedString(time[@"name"], @"");
|
|
|
+ cell.textLabel.textAlignment = NSTextAlignmentCenter;
|
|
|
+
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+ else if(indexPath.section == self.cellDatas.count-3){
|
|
|
+ cellT =@"cellTT3";
|
|
|
+ UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellT forIndexPath:indexPath];
|
|
|
+ if(cell==nil){
|
|
|
+ cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellT];
|
|
|
+ }
|
|
|
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
|
|
+ cell.backgroundColor = [UIColor clearColor];
|
|
|
+ NSString *title = NSLocalizedString(time[@"name"], @"");
|
|
|
+
|
|
|
+ cell.imageView.image = [UIImage imageNamed:time[@"image"]];
|
|
|
+ cell.textLabel.text =title;
|
|
|
+ cell.textLabel.textColor = [UIColor whiteColor];
|
|
|
+ CGRect ctfrm = cell.contentView.frame;
|
|
|
+ UISwitch * stateSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(ctfrm.size.width-66, 10, 20, 10)];
|
|
|
+ stateSwitch.onImage = kImageMake(@"switch_on");
|
|
|
+ stateSwitch.offImage = kImageMake(@"switch_off");
|
|
|
+
|
|
|
+ if (self.noDisturbDict && [self.noDisturbDict jk_hasKey:@"id"]) {
|
|
|
+ [stateSwitch setOn:YES];
|
|
|
+ }else{
|
|
|
+ [stateSwitch setOn:NO];
|
|
|
+ }
|
|
|
+ [stateSwitch addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
|
|
|
+ [cell.contentView addSubview:stateSwitch];
|
|
|
+ cell.contentView.layer.borderWidth = 0.5f;
|
|
|
+ cell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
|
|
|
+ cell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellT forIndexPath:indexPath];
|
|
|
+ if(cell==nil){
|
|
|
+ cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellT];
|
|
|
+ }
|
|
|
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
|
|
+ cell.backgroundColor = [UIColor clearColor];
|
|
|
+ NSString *title = NSLocalizedString(time[@"name"], @"");
|
|
|
+
|
|
|
+ cell.imageView.image = [UIImage imageNamed:time[@"image"]];
|
|
|
+ cell.textLabel.text =title;
|
|
|
+ cell.textLabel.textColor = [UIColor whiteColor];
|
|
|
+ CGRect ctfrm = cell.contentView.frame;
|
|
|
+ UIImageView *right = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow-right"]];
|
|
|
+ right.frame = CGRectMake(ctfrm.size.width-30, 21, 20, 20);
|
|
|
+ [cell.contentView addSubview:right];
|
|
|
+ cell.contentView.layer.borderWidth = 0.5f;
|
|
|
+ cell.contentView.layer.borderColor = [UIColor lightGrayColor].CGColor; //globalColor(GCTypeGreen);
|
|
|
+ cell.contentView.layer.cornerRadius = 8.0f; // 可选,设置圆角
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
|
|
|
+
|
|
|
+ if(_ismaster){//群主
|
|
|
+ if(indexPath.section == 0){
|
|
|
+ [self gotoRuqunshenhe];
|
|
|
+ }
|
|
|
+ if(indexPath.section == 1){
|
|
|
+ [self zhuanrangqun];
|
|
|
+ }
|
|
|
+ if(indexPath.section == 2){
|
|
|
+ [self gotoLiaotianjilu];
|
|
|
+ }
|
|
|
+ if(indexPath.section == 3){
|
|
|
+ [self gotoGonggao];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(indexPath.section == 5){
|
|
|
+ [self gotoChart];
|
|
|
+ }
|
|
|
+ if(indexPath.section == 6){
|
|
|
+ [self jiesanqun];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{//非群主
|
|
|
+ if(indexPath.section == 0){
|
|
|
+ [self gotoLiaotianjilu];
|
|
|
+ }
|
|
|
+ if(indexPath.section == 1){
|
|
|
+ [self gotoGonggao];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(indexPath.section == 3){
|
|
|
+ [self gotoChart];
|
|
|
+ }
|
|
|
+ if(indexPath.section == 4){
|
|
|
+ [self tuichuqun];
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
+-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
|
|
|
+ return _cellDatas.count;
|
|
|
+}
|
|
|
+
|
|
|
+-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
|
|
+ return 52.0;
|
|
|
+}
|
|
|
+
|
|
|
+-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
|
|
|
+ CGFloat height =10.0;
|
|
|
+ if(section==0){
|
|
|
+ height =0.0;
|
|
|
+ }
|
|
|
+ return height;
|
|
|
+}
|
|
|
+
|
|
|
+-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
|
|
|
+ CGFloat height =10.0;
|
|
|
+ if(section==0){
|
|
|
+ height =0.0;
|
|
|
+ }
|
|
|
+ UIView *view =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, height)];
|
|
|
+ view.backgroundColor = [UIColor clearColor];
|
|
|
+ return view;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+-(void)getGroupUsers{
|
|
|
+ NSLog(@"self.groupMsg:%@",self.groupMsg);
|
|
|
+ if (self.groupMsg) {
|
|
|
+ [FriendNetApi getGroupUserList:self.groupMsg[@"id"] succ:^(int code, NSDictionary *res) {
|
|
|
+ NSLog(@"res:%@",res);
|
|
|
+ self.collDatas = [NSMutableArray arrayWithArray:[self replaceNullsWithEmptyStringInArray:res[@"data"]]];
|
|
|
+ [self resetframe];
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+ NSLog(@"errer");
|
|
|
+ }];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 入群审核
|
|
|
+-(void)gotoRuqunshenhe{
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"qunStoryboard" bundle:[NSBundle mainBundle]];
|
|
|
+ QuncyController *chatctr = [board instantiateViewControllerWithIdentifier:@"QuncyController"];
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+ chatctr.editType = 1;
|
|
|
+ chatctr.groupId = self.groupMsg[@"id"];
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+}
|
|
|
+#pragma mark 转让群
|
|
|
+-(void)zhuanrangqun{
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"qunStoryboard" bundle:[NSBundle mainBundle]];
|
|
|
+ QuncyController *chatctr = [board instantiateViewControllerWithIdentifier:@"QuncyController"];
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+ chatctr.editType = 2;
|
|
|
+ chatctr.groupId = self.groupMsg[@"id"];
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 聊天记录
|
|
|
+-(void)gotoLiaotianjilu{
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"ChatHistory" bundle:[NSBundle mainBundle]];
|
|
|
+ ChatHistoryController *chatctr = [board instantiateViewControllerWithIdentifier:@"ChatHistoryController"];
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+ chatctr.chatId = self.groupMsg[@"id"];
|
|
|
+ chatctr.type = 1;
|
|
|
+ chatctr.titlename = self.groupMsg[@"name"];
|
|
|
+ chatctr.avatar = self.groupMsg[@"avatar"];
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+}
|
|
|
+#pragma mark 公告
|
|
|
+-(void)gotoGonggao{
|
|
|
+// UIStoryboard *board = [UIStoryboard storyboardWithName:@"groupstory" bundle:[NSBundle mainBundle]];
|
|
|
+// GroupGonggaoController *chatctr = [board instantiateViewControllerWithIdentifier:@"GroupGonggaoController"];
|
|
|
+// UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+// uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+// chatctr.groupId = self.groupMsg[@"id"];
|
|
|
+// chatctr.gonggao =self.groupMsg[@"announcement"];
|
|
|
+// if(_ismaster){
|
|
|
+// chatctr.editType = 1;
|
|
|
+// }
|
|
|
+// else{
|
|
|
+// chatctr.editType = 2;
|
|
|
+// }
|
|
|
+//
|
|
|
+// [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 消息免打扰
|
|
|
+-(void)changeXiaoximdr{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+#pragma mark 聊天
|
|
|
+-(void)gotoChart{
|
|
|
+ UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
|
|
|
+
|
|
|
+ ChatController *chatctr = [board instantiateViewControllerWithIdentifier:@"ChatController"];
|
|
|
+
|
|
|
+ UINavigationController *uiNavC = [[UINavigationController alloc] initWithRootViewController:chatctr];
|
|
|
+
|
|
|
+ uiNavC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
|
+
|
|
|
+ chatctr.chatId = self.groupMsg[@"id"];
|
|
|
+ chatctr.type = 1;
|
|
|
+ ChatListStore.shareInstance.chatId =self.groupMsg[@"id"];
|
|
|
+ chatctr.titlename = self.groupMsg[@"name"];
|
|
|
+ chatctr.avatar = self.groupMsg[@"avatar"];
|
|
|
+ [self presentViewController :uiNavC animated:YES completion:nil];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 退出群
|
|
|
+-(void)tuichuqun{
|
|
|
+ // 创建弹框询问
|
|
|
+ UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
|
|
|
+ message:@"是否确认退出群?"
|
|
|
+ preferredStyle:UIAlertControllerStyleAlert];
|
|
|
+ // 创建取消按钮和确定按钮,并添加到弹框中
|
|
|
+ UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
|
|
|
+ NSLog(@"用户点击了取消");
|
|
|
+ }];
|
|
|
+ UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
|
|
|
+ NSLog(@"用户点击了确定");
|
|
|
+ [FriendNetApi exitGroup:self.groupId succ:^(int code, NSDictionary * res) {
|
|
|
+ NSString *coder = res[@"code"];
|
|
|
+ if(coder.intValue==200){
|
|
|
+ [self dismissViewControllerAnimated:YES completion:nil];
|
|
|
+ }
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+
|
|
|
+ }];
|
|
|
+ }];
|
|
|
+ [alert addAction:cancelAction];
|
|
|
+ [alert addAction:okAction];
|
|
|
+ // 显示弹框
|
|
|
+ [self presentViewController:alert animated:YES completion:nil];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 解散群
|
|
|
+-(void)jiesanqun{
|
|
|
+ // 创建弹框询问
|
|
|
+ UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
|
|
|
+ message:@"是否确认解散群?"
|
|
|
+ preferredStyle:UIAlertControllerStyleAlert];
|
|
|
+ // 创建取消按钮和确定按钮,并添加到弹框中
|
|
|
+ UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
|
|
|
+ NSLog(@"用户点击了取消");
|
|
|
+ }];
|
|
|
+ UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
|
|
|
+ NSLog(@"用户点击了确定");
|
|
|
+ [FriendNetApi deleteGroup:self.groupId succ:^(int code, NSDictionary * res) {
|
|
|
+ NSString *coder = res[@"code"];
|
|
|
+ if(coder.intValue==200){
|
|
|
+ [self dismissViewControllerAnimated:YES completion:nil];
|
|
|
+ }
|
|
|
+ } fail:^(NSError * _Nonnull error) {
|
|
|
+
|
|
|
+ }];
|
|
|
+ }];
|
|
|
+ [alert addAction:cancelAction];
|
|
|
+ [alert addAction:okAction];
|
|
|
+ // 显示弹框
|
|
|
+ [self presentViewController:alert animated:YES completion:nil];
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark statusBar
|
|
|
+- (UIStatusBarStyle)preferredStatusBarStyle{
|
|
|
+ return UIStatusBarStyleLightContent;
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark 工具
|
|
|
+// 递归替换字典中的 NSNull 为 @""
|
|
|
+- (NSDictionary *)replaceNullsWithEmptyStringInDictionary:(NSDictionary *)dictionary {
|
|
|
+ NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithDictionary:dictionary];
|
|
|
+
|
|
|
+ for (id key in [mutableDict allKeys]) {
|
|
|
+ id value = [mutableDict objectForKey:key];
|
|
|
+
|
|
|
+ if ([value isKindOfClass:[NSNull class]]) {
|
|
|
+ [mutableDict setObject:@"" forKey:key];
|
|
|
+ } else if ([value isKindOfClass:[NSDictionary class]]) {
|
|
|
+ // 递归处理子字典
|
|
|
+ [mutableDict setObject:[self replaceNullsWithEmptyStringInDictionary:value] forKey:key];
|
|
|
+ } else if ([value isKindOfClass:[NSArray class]]) {
|
|
|
+ // 递归处理数组
|
|
|
+ [mutableDict setObject:[self replaceNullsWithEmptyStringInArray:value] forKey:key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [NSDictionary dictionaryWithDictionary:mutableDict];
|
|
|
+}
|
|
|
+
|
|
|
+// 递归替换数组中的 NSNull 为 @""
|
|
|
+- (NSArray *)replaceNullsWithEmptyStringInArray:(NSArray *)array {
|
|
|
+ NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
|
|
|
+
|
|
|
+ for (NSInteger i = 0; i < [mutableArray count]; i++) {
|
|
|
+ id value = [mutableArray objectAtIndex:i];
|
|
|
+
|
|
|
+ if ([value isKindOfClass:[NSNull class]]) {
|
|
|
+ [mutableArray replaceObjectAtIndex:i withObject:@""];
|
|
|
+ } else if ([value isKindOfClass:[NSDictionary class]]) {
|
|
|
+ // 递归处理子字典
|
|
|
+ [mutableArray replaceObjectAtIndex:i withObject:[self replaceNullsWithEmptyStringInDictionary:value]];
|
|
|
+ } else if ([value isKindOfClass:[NSArray class]]) {
|
|
|
+ // 递归处理子数组
|
|
|
+ [mutableArray replaceObjectAtIndex:i withObject:[self replaceNullsWithEmptyStringInArray:value]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [NSArray arrayWithArray:mutableArray];
|
|
|
+}
|
|
|
+
|
|
|
+@end
|