Files
peko-ios/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m
2024-02-21 10:18:59 +08:00

933 lines
36 KiB
Objective-C

//
// XPMineGuildViewController.m
// YuMi
//
// Created by YuMi on 2022/4/6.
// 公会主页
#import "XPMineGuildViewController.h"
///Third
#import <Masonry/Masonry.h>
#import <MJRefresh/MJRefresh.h>
///Tool
#import "DJDKMIMOMColor.h"
#import "NetImageView.h"
#import "AccountInfoStorage.h"
#import "TTPopup.h"
#import "UIImage+Utils.h"
#import "XNDJTDDLoadingTool.h"
///Model
#import "ClanDetailInfoModel.h"
#import "ClanMemberDetailInfoModel.h"
#import "GuildAuthModel.h"
#import "GuildSearchUserInfoModel.h"
#import "XPMineGuildListModel.h"
///View
#import "XPClanMemberTableViewCell.h"
#import "XPClanSectionView.h"
#import "XPMineGuildSetNameViewController.h"
#import "XPMineGuildSearchViewController.h"
#import "XPMineGuildRemoveMemberViewController.h"
#import "XPMineMangerListViewController.h"
#import "XPMineGuildIncomeStatisViewController.h"
#import "XPMineHallAnchorIncomeStatisViewController.h"
#import "XPMineUserInfoViewController.h"
#import "XPMineMainGuildListVC.h"
#import "SessionViewController.h"
#import "XPNewMineGuildItemView.h"
#import "XPMineGuildPersonalBillStatisVC.h"
///P
#import "XPGuildPresenter.h"
#import "XPGuildProtocol.h"
UIKIT_EXTERN NSString *kInviteMemeberSuccess;
@interface XPMineGuildViewController ()<UITableViewDataSource, UITableViewDelegate, XPGuildProtocol, XPClanSectionViewDelegate, XPMineGuildSearchViewControllerDelegate>
///导航栏
@property (nonatomic,strong) UIView * navView;
///返回按钮
@property (nonatomic,strong) UIButton *backButton;
///标题
@property (nonatomic,strong) UILabel *titleLabel;
///
@property (nonatomic,strong) UIStackView *rightStackView;
///编辑公会名称
@property (nonatomic,strong) UIButton *editButton;
///退出房间
@property (nonatomic,strong) UIButton *exitButton;
///列表
@property (nonatomic,strong) UITableView *tableView;
///顶部视图
@property (nonatomic,strong) UIView * headerView;
///显示头像
@property (nonatomic,strong) NetImageView *avatarImageView;
///显示id
@property (nonatomic,strong) UILabel *idLabel;
///背景图
@property (nonatomic,strong) NetImageView *backImageView;
///当前页数
@property (nonatomic,assign) int page;
///是否有更多的数据
@property (nonatomic,assign) BOOL hasNoMoreData;
///数据源
@property (nonatomic,strong) NSMutableArray *datasource;
///区头
@property (nonatomic,strong) XPClanSectionView *sectionView;
///家族信息
@property (nonatomic,strong) ClanDetailInfoModel *clanDetailInfo;
///当前用户的家族信息
@property (nonatomic,strong) ClanDetailInfoModel *currentUserClanInfo;
///权限
@property (nonatomic,strong) NSArray<GuildAuthModel *> *authList;
///管理权限的列表
@property (nonatomic,strong) NSArray<TTActionSheetConfig *> *managerAuthList;
///加入公会
@property (nonatomic,strong) TTActionSheetConfig *addGuildItem;
///添加成员
@property (nonatomic,strong) TTActionSheetConfig *addMemberItem;
///移除成员
@property (nonatomic,strong) TTActionSheetConfig *removeMemberItem;
///主播收入
@property (nonatomic,strong) TTActionSheetConfig *singleIncomeItem;
///查看流水
@property(nonatomic,strong) XPNewMineGuildItemView *checkView;
///成员收入
@property(nonatomic,strong) XPNewMineGuildItemView *memberView;
///管理设置
@property(nonatomic,strong) XPNewMineGuildItemView *managerView;
@property(nonatomic,strong) UIStackView *itemStackView;
///加入房间
@property (nonatomic,strong) UIView *addRoomView;
///
@property (nonatomic,strong) XPMineGuildListModel *stateModel;
@end
@implementation XPMineGuildViewController
- (BOOL)isHiddenNavBar {
return YES;
}
- (XPGuildPresenter *)createPresenter {
return [[XPGuildPresenter alloc] init];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initSubViews];
[self initSubViewConstraints];
[self initHeaderAndFooterRrfresh];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self headerRefresh];
}
#pragma mark - 下拉刷新
- (void)initHeaderAndFooterRrfresh {
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
header.stateLabel.font = [UIFont systemFontOfSize:10.0];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0];
header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor];
header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor];
self.tableView.mj_header = header;
MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];
footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor];
footer.stateLabel.font = [UIFont systemFontOfSize:10.0];
self.tableView.mj_footer = footer;
}
#pragma mark - 刷新的fangfa
- (void)headerRefresh {
if (self.guildId.length <= 0 || self.ownerUid.length <= 0) {
[self showErrorToast:YMLocalizedString(@"XPMineGuildViewController0")];
[self.navigationController popViewControllerAnimated:YES];
return;
}
self.page = 1;
[self.presenter applyHallBtnStateWithHallId:self.guildId];
[self.presenter getClanDetailInfo:self.ownerUid currentUserUid:[AccountInfoStorage instance].getUid];
[self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:0];
}
- (void)footerRefresh {
if (self.guildId.length <= 0 || self.ownerUid.length <= 0) {
[self showErrorToast:YMLocalizedString(@"XPMineGuildViewController1")];
[self.navigationController popViewControllerAnimated:YES];
return;
}
if (self.hasNoMoreData) {
[self showErrorToast:YMLocalizedString(@"XPMineGuildViewController2")];
[self.tableView.mj_footer endRefreshing];
return;
}
self.page++;
[self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:1];
}
#pragma mark - Private Method
- (void)initSubViews {
[self.view addSubview:self.backImageView];
UIView *view = [UIView new];
view.backgroundColor = [UIColor whiteColor];
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.equalTo(self.view);
make.height.mas_equalTo(KScreenHeight - 297);
}];
[self.view addSubview:self.tableView];
[self.view addSubview:self.navView];
[self.navView addSubview:self.backButton];
[self.navView addSubview:self.titleLabel];
[self.navView addSubview:self.rightStackView];
[self.rightStackView addArrangedSubview:self.exitButton];
[self.rightStackView addArrangedSubview:self.editButton];
[self.headerView addSubview:self.avatarImageView];
[self.headerView addSubview:self.idLabel];
[self.headerView addSubview:self.itemStackView];
[self.itemStackView addArrangedSubview:self.checkView];
[self.itemStackView addArrangedSubview:self.memberView];
[self.itemStackView addArrangedSubview:self.managerView];
self.headerView.frame = CGRectMake(0, 0, KScreenWidth, 285);
self.tableView.tableHeaderView = self.headerView;
[self.view addSubview:self.addRoomView];
@kWeakify(self);
self.addMemberItem.clickAction = ^{
@kStrongify(self);
XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init];
searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
searchVC.searchType = GuildSearchType_Guild_Add_Member;
searchVC.delegate = self;
searchVC.isPush = YES;
[self.navigationController pushViewController:searchVC animated:YES];
};
self.removeMemberItem.clickAction = ^{
@kStrongify(self);
XPMineGuildRemoveMemberViewController * removeVC = [[XPMineGuildRemoveMemberViewController alloc] init];
removeVC.guildId = self.clanDetailInfo.hall.hallId;
[self.navigationController pushViewController:removeVC animated:YES];
};
self.singleIncomeItem.clickAction = ^{
@kStrongify(self);
XPMineHallAnchorIncomeStatisViewController * managerList = [[XPMineHallAnchorIncomeStatisViewController alloc] init];
managerList.hallId = self.clanDetailInfo.hall.hallId;
[self.navigationController pushViewController:managerList animated:YES];
};
self.addGuildItem.clickAction = ^{
@kStrongify(self);
XPMineMainGuildListVC *vc = [XPMineMainGuildListVC new];
vc.isFromHall = YES;
[self.navigationController pushViewController:vc animated:YES];
};
}
- (void)initSubViewConstraints {
[self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self.view);
make.height.mas_equalTo(kNavigationHeight);
}];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self.view);
make.bottom.mas_equalTo(self.view);
}];
[self.addRoomView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(kGetScaleWidth(98));
make.left.right.bottom.equalTo(self.view);
}];
[self.backButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.view).mas_offset(10);
make.top.mas_equalTo(statusbarHeight);
make.height.width.mas_equalTo(44);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.backButton.mas_right);
make.right.mas_equalTo(self.rightStackView.mas_left);
make.centerY.mas_equalTo(self.backButton);
}];
[self.rightStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.navView).offset(-15);
make.centerY.mas_equalTo(self.backButton);
}];
[self.exitButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(70);
make.height.mas_equalTo(22);
}];
[self.editButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(22);
make.height.mas_equalTo(22);
}];
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self.view);
make.height.mas_equalTo(390);
}];
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(70, 70));
make.centerX.mas_equalTo(self.headerView);
make.top.mas_equalTo(self.headerView).offset(66 + kSafeAreaTopHeight);
}];
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.headerView);
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(10);
}];
CGFloat spacing = (KScreenWidth - 112*3)/4;
[self.itemStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(spacing);
make.trailing.mas_equalTo(-spacing);
make.top.mas_equalTo(221);
make.height.mas_equalTo(52);
}];
CGFloat width = 112;
[self.checkView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(52);
make.width.mas_equalTo(width);
}];
[self.memberView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(52);
make.width.mas_equalTo(width);
}];
[self.managerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(52);
make.width.mas_equalTo(width);
}];
}
#pragma mark - UITableViewDelegate And UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.datasource.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])];
if (cell == nil) {
cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])];
}
cell.pi_IsClan = YES;
cell.cellType = ClanMemberTableViewCellType_Normal;
cell.pi_IsClan = YES;
ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row];
cell.memberInfo = memberInfo;
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 66;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return self.datasource.count > 0 ? 37 : 0.1;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if (section == 0) {
if (self.sectionView == nil) {
XPClanSectionView * sectionView = [[XPClanSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)];
sectionView.delegate = self;
sectionView.pi_IsClan = YES;
sectionView.isTopCor = YES;
self.sectionView = sectionView;
}
return self.sectionView;
}
return [UIView new];
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc]init];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if (self.datasource.count > 0) {
ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row];
XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init];
userInfoVC.uid = memberInfo.uid.integerValue;
[self.navigationController pushViewController:userInfoVC animated:YES];
}
}
#pragma mark - XPMineGuildSearchViewControllerDelegate
- (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController inviteUserInfo:(GuildSearchUserInfoModel *)userInfo {
if (userInfo && userInfo.uid.length > 0) {
NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController3"), userInfo.nick,self.clanDetailInfo.hall.hallName];
TTAlertMessageAttributedConfig * inviteAlertConfig = [[TTAlertMessageAttributedConfig alloc] init];
inviteAlertConfig.text = userInfo.nick;
inviteAlertConfig.color = [DJDKMIMOMColor appMainColor];
inviteAlertConfig.font = [UIFont systemFontOfSize:15];
TTAlertMessageAttributedConfig * hallNameAlertConfig = [[TTAlertMessageAttributedConfig alloc] init];
hallNameAlertConfig.text = self.clanDetailInfo.hall.hallName;
hallNameAlertConfig.color = [DJDKMIMOMColor appMainColor];
hallNameAlertConfig.font = [UIFont systemFontOfSize:15];
NSArray * array = @[inviteAlertConfig, hallNameAlertConfig];
TTAlertConfig * alerconfig= [[TTAlertConfig alloc] init];
alerconfig.message = title;
alerconfig.messageAttributedConfig = array;
alerconfig.title = YMLocalizedString(@"XPMineGuildViewController4");
[TTPopup alertWithConfig:alerconfig confirmHandler:^{
[self.presenter inviteMember:userInfo.uid hallId:self.clanDetailInfo.hall.hallId];
} cancelHandler:^{
}];
}
}
#pragma mark - XPClanSectionView
- (void)xPClanSectionView:(XPClanSectionView *)view didClickSearch:(UIButton *)sender {
XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init];
searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
searchVC.searchType = GuildSearchType_Clan_All_Member;
searchVC.clanOwnerUid = self.clanDetailInfo.hall.ownerUid;
[self.navigationController presentViewController:searchVC animated:YES completion:nil];
}
- (void)xPClanSectionView:(XPClanSectionView *)view didClickManager:(UIButton *)sender {
if (self.managerAuthList.count > 0) {
[TTPopup actionSheetWithItems:self.managerAuthList];
}
}
#pragma mark -XPClanProtocol
- (void)applyHallBtnStateSuccess:(XPMineGuildListModel *)model{
self.stateModel = model;
[self setApplyBut:self.stateModel.hallBtnStatus];
}
-(void)applyHallSuccess{
self.stateModel.hallBtnStatus = 2;
[self setApplyBut:self.stateModel.hallBtnStatus];
[self showSuccessToast:YMLocalizedString(@"XPMineGuildListVC4")];
if(self.delegate && [self.delegate respondsToSelector:@selector(applyHallSuccessHandleWithHallId:)]){
[self.delegate applyHallSuccessHandleWithHallId:self.guildId];
}
}
-(void)applyHallFail{
}
- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state {
self.sectionView.title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController5"), memberInfo.count];
if (state == 0) {
self.hasNoMoreData = NO;
[self.datasource removeAllObjects];
[self.tableView.mj_header endRefreshing];
} else {
[self.tableView.mj_footer endRefreshing];
}
if (memberInfo.members.count > 0) {
[self.datasource addObjectsFromArray:memberInfo.members];
} else {
self.hasNoMoreData = YES;
}
[self.tableView reloadData];
}
- (void)getGuildMemberListFail:(NSString *)msg state:(int)state {
if (state == 0) {
[self.tableView.mj_header endRefreshing];
} else {
[self.tableView.mj_footer endRefreshing];
}
}
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo {
self.clanDetailInfo = clanDetailInfo;
self.currentUserClanInfo = currentUserClanInfo;
self.avatarImageView.imageUrl = clanDetailInfo.hall.ownerAvatar;
self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController6"),clanDetailInfo.hall.ownerErbanNo];
[self.backImageView loadImageWithUrl:clanDetailInfo.hall.ownerAvatar completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
self.backImageView.image = [UIImage setBlurImage:image value:1];
}];
self.titleLabel.text = clanDetailInfo.hall.hallName;
if (clanDetailInfo.manageHall) {
self.sectionView.isHiddenSearch = NO;
self.editButton.hidden = NO;
self.exitButton.hidden = YES;
self.sectionView.isHiddenManager = NO;
///请求权限
[self.presenter getUserInGuildRoomAuth:self.guildId];
} else {
if ([clanDetailInfo.hall.hallId isEqualToString:currentUserClanInfo.hall.hallId]) {
self.sectionView.isHiddenSearch = NO;
GuildInfoModel * hallInfo = currentUserClanInfo.hall;
if (hallInfo.roleType == GuildRoleType_Super_Admin || hallInfo.roleType == GuildRoleType_Owner) {
self.editButton.hidden = NO;
self.exitButton.hidden = YES;
self.sectionView.isHiddenManager = NO;
///请求权限
[self.presenter getUserInGuildRoomAuth:self.guildId];
} else if(hallInfo.roleType == GuildRoleType_Manager){
self.editButton.hidden = YES;
self.exitButton.hidden = NO;
[self.presenter getUserInGuildRoomAuth:self.guildId];
} else {
self.sectionView.isHiddenManager = YES;
self.editButton.hidden = YES;
self.exitButton.hidden = NO;
}
} else {
self.sectionView.isHiddenSearch = YES;
self.editButton.hidden = YES;
self.exitButton.hidden = YES;
}
}
}
- (void)getUserInGuildRoomAuthSuccess:(NSArray *)authList {
self.authList = authList;
NSMutableArray * array = [NSMutableArray array];
if ([self.clanDetailInfo.hall.hallId isEqualToString:self.currentUserClanInfo.hall.hallId] ) {
GuildInfoModel * hallInfo = self.currentUserClanInfo.hall;
if(hallInfo.roleType == GuildRoleType_Owner && self.currentUserClanInfo.clan.cid == nil) {
self.addGuildItem.title = YMLocalizedString(@"XPMineGuildViewController12");
[array addObject:self.addGuildItem];
}
}
[self.authList enumerateObjectsUsingBlock:^(GuildAuthModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (![obj.code isEqualToString:@"hall_build"]&& ![obj.code isEqualToString:@"hall_exit"] && ![obj.code isEqualToString:@"guild_income"] && obj.status == 1) {
if ([obj.code isEqualToString:@"member_join_manager"]) {
self.addMemberItem.title = obj.name;
[array addObject:self.addMemberItem];
} else if ([obj.code isEqualToString:@"member_exit_manager"]) {
self.removeMemberItem.title = obj.name;
[array addObject:self.removeMemberItem];
}else if ([obj.code isEqualToString:@"look_hall_income"]) {
self.memberView.text = obj.name;
self.memberView.hidden = NO;
}else if ([obj.code isEqualToString:@"single_room_income"]) {
self.singleIncomeItem.title = obj.name;
[array addObject:self.singleIncomeItem];
}else if ([obj.code isEqualToString:@"hall_manager_set"]) {
self.managerView.text = obj.name;
self.managerView.hidden = NO;
}else if ([obj.code isEqualToString:@"hall_serial"]) {
self.checkView.hidden = NO;
}
}
}];
self.managerAuthList = array.copy;
self.sectionView.isHiddenManager = self.managerAuthList.count <= 0;
}
- (void)inviteMemeberSuccessWithTargetUid:(NSString *)targetUid {
[[NSNotificationCenter defaultCenter]postNotificationName:kInviteMemeberSuccess object:targetUid];
[self showSuccessToast:YMLocalizedString(@"XPMineGuildViewController7")];
}
- (void)quitGuildRoomSuccess {
[self showSuccessToast:YMLocalizedString(@"XPMineGuildViewController8")];
}
#pragma mark - Event Response
- (void)backButtonAction:(UIButton *)sender {
[self.navigationController popViewControllerAnimated:YES];
}
-(void)addRoomAction{
if(self.stateModel.hallBtnStatus == 2)return;
if(self.stateModel.hallBtnStatus == 3){
SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:self.stateModel.hallMessageUid type:NIMSessionTypeP2P]];
sessionVC.isUser = YES;
sessionVC.recordId = self.stateModel.recordId;
[self.navigationController pushViewController:sessionVC animated:YES];
return;
}
[self.presenter applyHallWithHallId:self.guildId];
}
- (void)exitButtonAction:(UIButton *)sender {
TTAlertConfig * config = [[TTAlertConfig alloc] init];
NSString * highlight = YMLocalizedString(@"XPMineGuildViewController9");
NSString * message = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController10"), highlight];
config.message = message;
TTAlertMessageAttributedConfig * attribute = [[TTAlertMessageAttributedConfig alloc] init];
attribute.text = highlight;
attribute.color = [DJDKMIMOMColor appMainColor];
config.messageAttributedConfig = @[attribute];
[TTPopup alertWithConfig:config confirmHandler:^{
[self.presenter quitGuildRoom];
} cancelHandler:^{
}];
}
- (void)editButtonAction:(UIButton *)sender {
if (self.clanDetailInfo.hall && self.clanDetailInfo.hall.hallId.length > 0) {
XPMineGuildSetNameViewController * setNameVC = [[XPMineGuildSetNameViewController alloc] init];
setNameVC.roomName = self.clanDetailInfo.hall.hallName;
setNameVC.hallId = self.clanDetailInfo.hall.hallId;
[self.navigationController pushViewController:setNameVC animated:YES];
}
}
- (void)didTapRecognizer {
XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init];
userInfoVC.uid = self.clanDetailInfo.hall.ownerUid.integerValue;
[self.navigationController pushViewController:userInfoVC animated:YES];
}
///复制id
-(void)copyNameAction{
[XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPMineUserInfoHeaderView0")];
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = self.clanDetailInfo.hall.ownerErbanNo;
}
///设置申请bug
-(void)setApplyBut:(int)status{
UIButton *addRoomBtn = (UIButton *)[self.addRoomView viewWithTag:200001];
switch (status) {
case 0:
{
self.addRoomView.hidden = YES;
break;
}
case 1:
{
[addRoomBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
addRoomBtn.backgroundColor = [UIColor clearColor];
NSTextAttachment * attachment = [[NSTextAttachment alloc] init];
UIImage *iconImage = [UIImage imageNamed:@"mine_guild_add_room"];
attachment.bounds = CGRectMake(0, roundf(addRoomBtn.titleLabel.font.capHeight - kGetScaleWidth(12))/2.f, kGetScaleWidth(12), kGetScaleWidth(12));
attachment.image = iconImage;
NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineClanViewController2")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}];
[textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0];
[addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal];
self.addRoomView.hidden = NO;
break;
}
case 2:
{
addRoomBtn.backgroundColor = UIColorFromRGB(0xE6E6F0);
[addRoomBtn setBackgroundImage:nil forState:UIControlStateNormal];
NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineGuildListCell5")] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xB3B3C3),NSFontAttributeName:[UIFont systemFontOfSize:16]}];
[addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal];
self.addRoomView.hidden = NO;
break;
}
case 3:
{
addRoomBtn.backgroundColor = UIColorFromRGB(0xFFBC51);
[addRoomBtn setBackgroundImage:nil forState:UIControlStateNormal];
NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineGuildListCell6")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}];
[addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal];
self.addRoomView.hidden = NO;
break;
}
default:
break;
}
}
-(void)checkBillAction{
XPMineGuildPersonalBillStatisVC *billVC = [[XPMineGuildPersonalBillStatisVC alloc]init];
billVC.guildId = self.clanDetailInfo.hall.hallId;
[self.navigationController pushViewController:billVC animated:YES];
}
-(void)checkMemberIncomeAction{
XPMineGuildIncomeStatisViewController * personIncomeVC = [[XPMineGuildIncomeStatisViewController alloc] init];
personIncomeVC.hallId = self.clanDetailInfo.hall.hallId;
[self.navigationController pushViewController:personIncomeVC animated:YES];
}
-(void)checkManagerSetAction{
XPMineMangerListViewController * managerList = [[XPMineMangerListViewController alloc] init];
managerList.guildId = self.clanDetailInfo.hall.hallId;
[self.navigationController pushViewController:managerList animated:YES];
}
#pragma mark - Getters And Setters
- (UIView *)navView {
if (!_navView) {
_navView = [[UIView alloc] init];
_navView.backgroundColor = [UIColor clearColor];
}
return _navView;
}
- (UIButton *)backButton {
if (!_backButton) {
_backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal];
[_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateSelected];
[_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _backButton;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.textAlignment = NSTextAlignmentCenter;
_titleLabel.font = [UIFont systemFontOfSize:17];
_titleLabel.textColor = [UIColor whiteColor];
}
return _titleLabel;
}
- (UIStackView *)rightStackView {
if (!_rightStackView) {
_rightStackView = [[UIStackView alloc] init];
_rightStackView.axis = UILayoutConstraintAxisHorizontal;
_rightStackView.distribution = UIStackViewDistributionFill;
_rightStackView.alignment = UIStackViewAlignmentCenter;
_rightStackView.spacing = 0;
}
return _rightStackView;
}
- (UIButton *)exitButton {
if (!_exitButton) {
_exitButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_exitButton setTitle:YMLocalizedString(@"XPMineGuildViewController11") forState:UIControlStateNormal];
[_exitButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_exitButton.titleLabel.font = [UIFont systemFontOfSize:16];
_exitButton.hidden = YES;
[_exitButton addTarget:self action:@selector(exitButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _exitButton;
}
- (UIButton *)editButton {
if (!_editButton) {
_editButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_editButton setImage:[UIImage imageNamed:@"mine_guild_guild_edit"] forState:UIControlStateNormal];
[_editButton setImage:[UIImage imageNamed:@"mine_guild_guild_edit"] forState:UIControlStateSelected];
[_editButton addTarget:self action:@selector(editButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_editButton.hidden = YES;
}
return _editButton;
}
- (UIView *)headerView {
if (!_headerView) {
_headerView = [[UIView alloc] init];
_headerView.backgroundColor = [UIColor clearColor];
}
return _headerView;
}
- (NetImageView *)avatarImageView {
if (!_avatarImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.imageType = ImageTypeUserIcon;
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
_avatarImageView.layer.masksToBounds = YES;
_avatarImageView.layer.cornerRadius = 70/2;
_avatarImageView.userInteractionEnabled = YES;
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapRecognizer)];
[_avatarImageView addGestureRecognizer:tap];
}
return _avatarImageView;
}
- (UILabel *)idLabel {
if (!_idLabel) {
_idLabel = [[UILabel alloc] init];
_idLabel.font = [UIFont systemFontOfSize:13];
_idLabel.textColor = [UIColor whiteColor];
_idLabel.textAlignment = NSTextAlignmentCenter;
_idLabel.userInteractionEnabled = YES;
UILongPressGestureRecognizer *longPress = [[ UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(copyNameAction)];
longPress.minimumPressDuration = 1;
[_idLabel addGestureRecognizer:longPress];
}
return _idLabel;
}
- (NetImageView *)backImageView {
if (!_backImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.imageType = ImageTypeUserIcon;
_backImageView = [[NetImageView alloc] initWithConfig:config];
_backImageView.contentMode = UIViewContentModeScaleAspectFill;
_backImageView.layer.masksToBounds = YES;
_backImageView.userInteractionEnabled = YES;
}
return _backImageView;
}
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
UIView * footView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(98))];
footView.backgroundColor = [UIColor clearColor];
_tableView.tableFooterView = footView;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.backgroundColor = [UIColor clearColor];
_tableView.showsVerticalScrollIndicator = NO;
if (@available(iOS 11.0, *)) {
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
[_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])];
}
return _tableView;
}
- (NSMutableArray *)datasource {
if (!_datasource) {
_datasource = [NSMutableArray array];
}
return _datasource;
}
- (TTActionSheetConfig *)addMemberItem {
if (!_addMemberItem) {
_addMemberItem = [[TTActionSheetConfig alloc] init];
_addMemberItem.titleColor = [DJDKMIMOMColor alertTitleColor];
}
return _addMemberItem;
}
- (TTActionSheetConfig *)removeMemberItem {
if (!_removeMemberItem) {
_removeMemberItem = [[TTActionSheetConfig alloc] init];
_removeMemberItem.titleColor = [DJDKMIMOMColor alertTitleColor];
}
return _removeMemberItem;
}
- (TTActionSheetConfig *)singleIncomeItem {
if (!_singleIncomeItem) {
_singleIncomeItem = [[TTActionSheetConfig alloc] init];
_singleIncomeItem.titleColor = [DJDKMIMOMColor alertTitleColor];
}
return _singleIncomeItem;
}
-(TTActionSheetConfig *)addGuildItem{
if (!_addGuildItem){
_addGuildItem = [[TTActionSheetConfig alloc] init];
_addGuildItem.titleColor = [DJDKMIMOMColor alertTitleColor];
}
return _addGuildItem;
}
- (XPNewMineGuildItemView *)checkView{
if(!_checkView){
_checkView = [[XPNewMineGuildItemView alloc]initWithFrame:CGRectZero];
_checkView.bgImage = kImage(@"mine_guild_guild_check");
_checkView.text = YMLocalizedString(@"XPGuildHeaderView4");
_checkView.hidden = YES;
_checkView.textColor = UIColorFromRGB(0x308BE0);
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(checkBillAction)];
[_checkView addGestureRecognizer:tap];
}
return _checkView;
}
- (XPNewMineGuildItemView *)memberView{
if(!_memberView){
_memberView = [[XPNewMineGuildItemView alloc]initWithFrame:CGRectZero];
_memberView.bgImage = kImage(@"mine_guild_guild_meber");
_memberView.textColor = UIColorFromRGB(0xE1489B);
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(checkMemberIncomeAction)];
[_memberView addGestureRecognizer:tap];
_memberView.hidden = YES;
}
return _memberView;
}
- (XPNewMineGuildItemView *)managerView{
if(!_managerView){
_managerView = [[XPNewMineGuildItemView alloc]initWithFrame:CGRectZero];
_managerView.textColor = UIColorFromRGB(0x8843E0);
_managerView.bgImage = kImage(@"mine_guild_guild_manager");
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(checkManagerSetAction)];
[_managerView addGestureRecognizer:tap];
_managerView.hidden = YES;
}
return _managerView;
}
- (UIStackView *)itemStackView {
if (!_itemStackView) {
_itemStackView = [[UIStackView alloc] init];
_itemStackView.axis = UILayoutConstraintAxisHorizontal;
_itemStackView.distribution = UIStackViewDistributionFill;
_itemStackView.alignment = UIStackViewAlignmentLeading;
CGFloat spacing = (KScreenWidth - 112*3)/4;
_itemStackView.spacing = spacing;
}
return _itemStackView;
}
- (UIView *)addRoomView{
if (!_addRoomView){
_addRoomView = [UIView new];
_addRoomView.backgroundColor = [UIColor clearColor];
_addRoomView.hidden = YES;
UIButton *addRoomBtn = [UIButton new];
addRoomBtn.tag = 200001;
addRoomBtn.titleLabel.font = [UIFont systemFontOfSize:16];
UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(345, 46)];
[addRoomBtn addTarget:self action:@selector(addRoomAction) forControlEvents:UIControlEventTouchUpInside];
[addRoomBtn setBackgroundImage:image forState:UIControlStateNormal];
addRoomBtn.layer.cornerRadius = kGetScaleWidth(23);
addRoomBtn.layer.masksToBounds = YES;
NSTextAttachment * attachment = [[NSTextAttachment alloc] init];
UIImage *iconImage = [UIImage imageNamed:@"mine_guild_add_room"];
attachment.bounds = CGRectMake(0, roundf(addRoomBtn.titleLabel.font.capHeight - kGetScaleWidth(12))/2.f, kGetScaleWidth(12), kGetScaleWidth(12));
attachment.image = iconImage;
NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineClanViewController2")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}];
[textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0];
[addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal];
[_addRoomView addSubview:addRoomBtn];
[addRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-kGetScaleWidth(58));
make.left.mas_equalTo(kGetScaleWidth(58));
make.top.mas_equalTo(kGetScaleWidth(9));
make.height.mas_equalTo(kGetScaleWidth(46));
}];
}
return _addRoomView;
}
@end