公会主页和家族主页

This commit is contained in:
fengshuo
2022-04-06 21:52:38 +08:00
parent 568c45ffde
commit b0101b6c10
47 changed files with 2690 additions and 2 deletions

View File

@@ -246,6 +246,28 @@
9BEE3D11278584FE00C83219 /* XPNobleCenterEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BEE3D10278584FE00C83219 /* XPNobleCenterEmptyView.m */; };
9BEE3D142785884A00C83219 /* XPNobleCenterResidueView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BEE3D132785884A00C83219 /* XPNobleCenterResidueView.m */; };
9BEE3D1727858E5700C83219 /* XPNobleAuthorityDescView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BEE3D1627858E5700C83219 /* XPNobleAuthorityDescView.m */; };
E800805A27FD34DE0055A8AB /* XPMineClanViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E800805927FD34DE0055A8AB /* XPMineClanViewController.m */; };
E800805D27FD34E90055A8AB /* XPMineGuildViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E800805C27FD34E90055A8AB /* XPMineGuildViewController.m */; };
E800806227FD373D0055A8AB /* XPClanMemberTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E800806127FD373D0055A8AB /* XPClanMemberTableViewCell.m */; };
E800806527FD37A20055A8AB /* XPGuildHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E800806427FD37A20055A8AB /* XPGuildHeaderView.m */; };
E800806827FD3B520055A8AB /* XPClanMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = E800806727FD3B520055A8AB /* XPClanMenuView.m */; };
E800806B27FD42B00055A8AB /* XPClanRoomCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E800806A27FD42B00055A8AB /* XPClanRoomCollectionViewCell.m */; };
E800806E27FD6BF40055A8AB /* XPGuildPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E800806D27FD6BF40055A8AB /* XPGuildPresenter.m */; };
E800807227FD6C3D0055A8AB /* XPClanPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E800807127FD6C3D0055A8AB /* XPClanPresenter.m */; };
E800807627FD6D930055A8AB /* Api+Guild.m in Sources */ = {isa = PBXBuildFile; fileRef = E800807527FD6D930055A8AB /* Api+Guild.m */; };
E800807927FD84560055A8AB /* ClanInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E800807827FD84560055A8AB /* ClanInfoModel.m */; };
E800807C27FD84980055A8AB /* GuildInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E800807B27FD84980055A8AB /* GuildInfoModel.m */; };
E800807F27FD859E0055A8AB /* ClanDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E800807E27FD859E0055A8AB /* ClanDetailInfoModel.m */; };
E800808527FD8FC20055A8AB /* ClanMemberDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E800808427FD8FC20055A8AB /* ClanMemberDetailInfoModel.m */; };
E800808827FDA5100055A8AB /* XPClanSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E800808727FDA5100055A8AB /* XPClanSectionView.m */; };
E801274027E323C800BAC3F2 /* XPRoomPKViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E801273F27E323C800BAC3F2 /* XPRoomPKViewController.m */; };
E801274327E323E500BAC3F2 /* XPRoomPKPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274227E323E500BAC3F2 /* XPRoomPKPresenter.m */; };
E801274727E3241700BAC3F2 /* Api+RoomPK.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274627E3241700BAC3F2 /* Api+RoomPK.m */; };
E801274B27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274A27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m */; };
E801274E27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274D27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m */; };
E801275127E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275027E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m */; };
E801275527E3326000BAC3F2 /* XPRoomPKUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275427E3326000BAC3F2 /* XPRoomPKUserView.m */; };
E801275827E347FD00BAC3F2 /* RoomPKRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275727E347FD00BAC3F2 /* RoomPKRecordModel.m */; };
E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E80487642717DDD9008595F2 /* XPRoomMenuItem.m */; };
E80CBDE627D0C1CF001E1EC2 /* HomeMenuSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDE527D0C1CF001E1EC2 /* HomeMenuSourceModel.m */; };
E80CBDEA27D0C53F001E1EC2 /* XPWeakTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDE927D0C53F001E1EC2 /* XPWeakTimer.m */; };
@@ -1114,6 +1136,53 @@
9BEE3D1627858E5700C83219 /* XPNobleAuthorityDescView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleAuthorityDescView.m; sourceTree = "<group>"; };
B66633E061B1B34177CD011C /* Pods-xplan-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-xplan-ios.release.xcconfig"; path = "Target Support Files/Pods-xplan-ios/Pods-xplan-ios.release.xcconfig"; sourceTree = "<group>"; };
CACF623970097D653132D69A /* Pods_xplan_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_xplan_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E800805827FD34DE0055A8AB /* XPMineClanViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineClanViewController.h; sourceTree = "<group>"; };
E800805927FD34DE0055A8AB /* XPMineClanViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineClanViewController.m; sourceTree = "<group>"; };
E800805B27FD34E90055A8AB /* XPMineGuildViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGuildViewController.h; sourceTree = "<group>"; };
E800805C27FD34E90055A8AB /* XPMineGuildViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildViewController.m; sourceTree = "<group>"; };
E800806027FD373D0055A8AB /* XPClanMemberTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPClanMemberTableViewCell.h; sourceTree = "<group>"; };
E800806127FD373D0055A8AB /* XPClanMemberTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPClanMemberTableViewCell.m; sourceTree = "<group>"; };
E800806327FD37A20055A8AB /* XPGuildHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGuildHeaderView.h; sourceTree = "<group>"; };
E800806427FD37A20055A8AB /* XPGuildHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGuildHeaderView.m; sourceTree = "<group>"; };
E800806627FD3B520055A8AB /* XPClanMenuView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPClanMenuView.h; sourceTree = "<group>"; };
E800806727FD3B520055A8AB /* XPClanMenuView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPClanMenuView.m; sourceTree = "<group>"; };
E800806927FD42B00055A8AB /* XPClanRoomCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPClanRoomCollectionViewCell.h; sourceTree = "<group>"; };
E800806A27FD42B00055A8AB /* XPClanRoomCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPClanRoomCollectionViewCell.m; sourceTree = "<group>"; };
E800806C27FD6BF40055A8AB /* XPGuildPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGuildPresenter.h; sourceTree = "<group>"; };
E800806D27FD6BF40055A8AB /* XPGuildPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGuildPresenter.m; sourceTree = "<group>"; };
E800806F27FD6C1B0055A8AB /* XPGuildProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGuildProtocol.h; sourceTree = "<group>"; };
E800807027FD6C3D0055A8AB /* XPClanPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPClanPresenter.h; sourceTree = "<group>"; };
E800807127FD6C3D0055A8AB /* XPClanPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPClanPresenter.m; sourceTree = "<group>"; };
E800807327FD6C590055A8AB /* XPClanProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPClanProtocol.h; sourceTree = "<group>"; };
E800807427FD6D930055A8AB /* Api+Guild.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Guild.h"; sourceTree = "<group>"; };
E800807527FD6D930055A8AB /* Api+Guild.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Guild.m"; sourceTree = "<group>"; };
E800807727FD84560055A8AB /* ClanInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClanInfoModel.h; sourceTree = "<group>"; };
E800807827FD84560055A8AB /* ClanInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClanInfoModel.m; sourceTree = "<group>"; };
E800807A27FD84980055A8AB /* GuildInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GuildInfoModel.h; sourceTree = "<group>"; };
E800807B27FD84980055A8AB /* GuildInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GuildInfoModel.m; sourceTree = "<group>"; };
E800807D27FD859E0055A8AB /* ClanDetailInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClanDetailInfoModel.h; sourceTree = "<group>"; };
E800807E27FD859E0055A8AB /* ClanDetailInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClanDetailInfoModel.m; sourceTree = "<group>"; };
E800808327FD8FC20055A8AB /* ClanMemberDetailInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClanMemberDetailInfoModel.h; sourceTree = "<group>"; };
E800808427FD8FC20055A8AB /* ClanMemberDetailInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClanMemberDetailInfoModel.m; sourceTree = "<group>"; };
E800808627FDA5100055A8AB /* XPClanSectionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPClanSectionView.h; sourceTree = "<group>"; };
E800808727FDA5100055A8AB /* XPClanSectionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPClanSectionView.m; sourceTree = "<group>"; };
E801273E27E323C800BAC3F2 /* XPRoomPKViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKViewController.h; sourceTree = "<group>"; };
E801273F27E323C800BAC3F2 /* XPRoomPKViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKViewController.m; sourceTree = "<group>"; };
E801274127E323E500BAC3F2 /* XPRoomPKPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPresenter.h; sourceTree = "<group>"; };
E801274227E323E500BAC3F2 /* XPRoomPKPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPresenter.m; sourceTree = "<group>"; };
E801274427E3240000BAC3F2 /* XPRoomPKProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKProtocol.h; sourceTree = "<group>"; };
E801274527E3241700BAC3F2 /* Api+RoomPK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+RoomPK.h"; sourceTree = "<group>"; };
E801274627E3241700BAC3F2 /* Api+RoomPK.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+RoomPK.m"; sourceTree = "<group>"; };
E801274927E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKTypeTableViewCell.h; sourceTree = "<group>"; };
E801274A27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKTypeTableViewCell.m; sourceTree = "<group>"; };
E801274C27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKVoteTableViewCell.h; sourceTree = "<group>"; };
E801274D27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKVoteTableViewCell.m; sourceTree = "<group>"; };
E801274F27E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKTimeTableViewCell.h; sourceTree = "<group>"; };
E801275027E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKTimeTableViewCell.m; sourceTree = "<group>"; };
E801275327E3326000BAC3F2 /* XPRoomPKUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKUserView.h; sourceTree = "<group>"; };
E801275427E3326000BAC3F2 /* XPRoomPKUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKUserView.m; sourceTree = "<group>"; };
E801275627E347FD00BAC3F2 /* RoomPKRecordModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKRecordModel.h; sourceTree = "<group>"; };
E801275727E347FD00BAC3F2 /* RoomPKRecordModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKRecordModel.m; sourceTree = "<group>"; };
E80487632717DDD9008595F2 /* XPRoomMenuItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMenuItem.h; sourceTree = "<group>"; };
E80487642717DDD9008595F2 /* XPRoomMenuItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMenuItem.m; sourceTree = "<group>"; };
E80CBDE427D0C1CF001E1EC2 /* HomeMenuSourceModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeMenuSourceModel.h; sourceTree = "<group>"; };
@@ -3267,6 +3336,216 @@
path = Pods;
sourceTree = "<group>";
};
E800805227FD33950055A8AB /* Guild */ = {
isa = PBXGroup;
children = (
E800805627FD33E90055A8AB /* Model */,
E800805727FD340F0055A8AB /* Api */,
E800805527FD33DF0055A8AB /* View */,
E800805427FD33CC0055A8AB /* Presenter */,
E800805327FD33C30055A8AB /* Protocol */,
);
path = Guild;
sourceTree = "<group>";
};
E800805327FD33C30055A8AB /* Protocol */ = {
isa = PBXGroup;
children = (
E800806F27FD6C1B0055A8AB /* XPGuildProtocol.h */,
E800807327FD6C590055A8AB /* XPClanProtocol.h */,
);
path = Protocol;
sourceTree = "<group>";
};
E800805427FD33CC0055A8AB /* Presenter */ = {
isa = PBXGroup;
children = (
E800806C27FD6BF40055A8AB /* XPGuildPresenter.h */,
E800806D27FD6BF40055A8AB /* XPGuildPresenter.m */,
E800807027FD6C3D0055A8AB /* XPClanPresenter.h */,
E800807127FD6C3D0055A8AB /* XPClanPresenter.m */,
);
path = Presenter;
sourceTree = "<group>";
};
E800805527FD33DF0055A8AB /* View */ = {
isa = PBXGroup;
children = (
E800805F27FD36EB0055A8AB /* SubViews */,
E800805E27FD36E30055A8AB /* Cell */,
E800805827FD34DE0055A8AB /* XPMineClanViewController.h */,
E800805927FD34DE0055A8AB /* XPMineClanViewController.m */,
E800805B27FD34E90055A8AB /* XPMineGuildViewController.h */,
E800805C27FD34E90055A8AB /* XPMineGuildViewController.m */,
);
path = View;
sourceTree = "<group>";
};
E800805627FD33E90055A8AB /* Model */ = {
isa = PBXGroup;
children = (
E800807D27FD859E0055A8AB /* ClanDetailInfoModel.h */,
E800807E27FD859E0055A8AB /* ClanDetailInfoModel.m */,
E800807727FD84560055A8AB /* ClanInfoModel.h */,
E800807827FD84560055A8AB /* ClanInfoModel.m */,
E800807A27FD84980055A8AB /* GuildInfoModel.h */,
E800807B27FD84980055A8AB /* GuildInfoModel.m */,
E800808327FD8FC20055A8AB /* ClanMemberDetailInfoModel.h */,
E800808427FD8FC20055A8AB /* ClanMemberDetailInfoModel.m */,
);
path = Model;
sourceTree = "<group>";
};
E800805727FD340F0055A8AB /* Api */ = {
isa = PBXGroup;
children = (
E800807427FD6D930055A8AB /* Api+Guild.h */,
E800807527FD6D930055A8AB /* Api+Guild.m */,
);
path = Api;
sourceTree = "<group>";
};
E800805E27FD36E30055A8AB /* Cell */ = {
isa = PBXGroup;
children = (
E800806027FD373D0055A8AB /* XPClanMemberTableViewCell.h */,
E800806127FD373D0055A8AB /* XPClanMemberTableViewCell.m */,
E800806927FD42B00055A8AB /* XPClanRoomCollectionViewCell.h */,
E800806A27FD42B00055A8AB /* XPClanRoomCollectionViewCell.m */,
);
path = Cell;
sourceTree = "<group>";
};
E800805F27FD36EB0055A8AB /* SubViews */ = {
isa = PBXGroup;
children = (
E800806327FD37A20055A8AB /* XPGuildHeaderView.h */,
E800806427FD37A20055A8AB /* XPGuildHeaderView.m */,
E800806627FD3B520055A8AB /* XPClanMenuView.h */,
E800806727FD3B520055A8AB /* XPClanMenuView.m */,
E800808627FDA5100055A8AB /* XPClanSectionView.h */,
E800808727FDA5100055A8AB /* XPClanSectionView.m */,
);
path = SubViews;
sourceTree = "<group>";
};
E801273827E322D700BAC3F2 /* RoomPK */ = {
isa = PBXGroup;
children = (
E801273D27E3230F00BAC3F2 /* Model */,
E801273C27E3230400BAC3F2 /* Api */,
E801273B27E322FE00BAC3F2 /* View */,
E801273A27E322F500BAC3F2 /* Presenter */,
E801273927E322E900BAC3F2 /* Protocol */,
);
path = RoomPK;
sourceTree = "<group>";
};
E801273927E322E900BAC3F2 /* Protocol */ = {
isa = PBXGroup;
children = (
E801274427E3240000BAC3F2 /* XPRoomPKProtocol.h */,
E8664EE027E45EE6000171BA /* XPRoomPKRecordProtocol.h */,
);
path = Protocol;
sourceTree = "<group>";
};
E801273A27E322F500BAC3F2 /* Presenter */ = {
isa = PBXGroup;
children = (
E801274127E323E500BAC3F2 /* XPRoomPKPresenter.h */,
E801274227E323E500BAC3F2 /* XPRoomPKPresenter.m */,
E8664EDD27E45EC7000171BA /* XPRoomPKRecordPresenter.h */,
E8664EDE27E45EC7000171BA /* XPRoomPKRecordPresenter.m */,
);
path = Presenter;
sourceTree = "<group>";
};
E801273B27E322FE00BAC3F2 /* View */ = {
isa = PBXGroup;
children = (
E801275227E3321C00BAC3F2 /* SubViews */,
E801274827E3278E00BAC3F2 /* Cell */,
E801273E27E323C800BAC3F2 /* XPRoomPKViewController.h */,
E801273F27E323C800BAC3F2 /* XPRoomPKViewController.m */,
E8664ED427E434D5000171BA /* XPRoomPKRecordViewController.h */,
E8664ED527E434D5000171BA /* XPRoomPKRecordViewController.m */,
E81AF32327F1D5B8003B9E43 /* XPRoomPKProgressView.h */,
E81AF32427F1D5B8003B9E43 /* XPRoomPKProgressView.m */,
E80A086327F318620027B30C /* XPRoomPKPlayingView.h */,
E80A086427F318620027B30C /* XPRoomPKPlayingView.m */,
E84843AD27F59E7E0050D365 /* XPRoomPKResultView.h */,
E84843AE27F59E7E0050D365 /* XPRoomPKResultView.m */,
);
path = View;
sourceTree = "<group>";
};
E801273C27E3230400BAC3F2 /* Api */ = {
isa = PBXGroup;
children = (
E801274527E3241700BAC3F2 /* Api+RoomPK.h */,
E801274627E3241700BAC3F2 /* Api+RoomPK.m */,
);
path = Api;
sourceTree = "<group>";
};
E801273D27E3230F00BAC3F2 /* Model */ = {
isa = PBXGroup;
children = (
E801275627E347FD00BAC3F2 /* RoomPKRecordModel.h */,
E801275727E347FD00BAC3F2 /* RoomPKRecordModel.m */,
E8664EE427E482EF000171BA /* RoomPKTeamModel.h */,
E8664EE527E482EF000171BA /* RoomPKTeamModel.m */,
E8664ED127E4258A000171BA /* RoomPKTimeItemModel.h */,
E8664ED227E4258A000171BA /* RoomPKTimeItemModel.m */,
E8A88D2B27E81E8700CA8837 /* RoomPKChooseUserModel.h */,
E8A88D2C27E81E8700CA8837 /* RoomPKChooseUserModel.m */,
E8A88D2E27E85EEA00CA8837 /* RoomPKInfoModel.h */,
E8A88D2F27E85EEA00CA8837 /* RoomPKInfoModel.m */,
E80A086027F2AC190027B30C /* RoomPKDetailInfoModel.h */,
E80A086127F2AC190027B30C /* RoomPKDetailInfoModel.m */,
);
path = Model;
sourceTree = "<group>";
};
E801274827E3278E00BAC3F2 /* Cell */ = {
isa = PBXGroup;
children = (
E801274927E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.h */,
E801274A27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m */,
E801274C27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.h */,
E801274D27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m */,
E801274F27E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.h */,
E801275027E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m */,
E8664ED727E4355C000171BA /* XPRoomPKRecordTableViewCell.h */,
E8664ED827E4355C000171BA /* XPRoomPKRecordTableViewCell.m */,
E8664EDA27E43632000171BA /* XPRoomPKEmptyTableViewCell.h */,
E8664EDB27E43632000171BA /* XPRoomPKEmptyTableViewCell.m */,
E8A88D2827E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.h */,
E8A88D2927E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.m */,
);
path = Cell;
sourceTree = "<group>";
};
E801275227E3321C00BAC3F2 /* SubViews */ = {
isa = PBXGroup;
children = (
E801275327E3326000BAC3F2 /* XPRoomPKUserView.h */,
E801275427E3326000BAC3F2 /* XPRoomPKUserView.m */,
E8664ECE27E42238000171BA /* XPRoomPKTimePickerView.h */,
E8664ECF27E42238000171BA /* XPRoomPKTimePickerView.m */,
E8664EE127E47711000171BA /* XPRoomPKRecordNickView.h */,
E8664EE227E47711000171BA /* XPRoomPKRecordNickView.m */,
E8A88D2527E8193400CA8837 /* XPRoomPKSelectUserView.h */,
E8A88D2627E8193400CA8837 /* XPRoomPKSelectUserView.m */,
E81AF32627F1EE69003B9E43 /* XPRoomPKPanelUserView.h */,
E81AF32727F1EE69003B9E43 /* XPRoomPKPanelUserView.m */,
E84843B027F5A0740050D365 /* XPRomPKResultTitleLabel.h */,
E84843B127F5A0740050D365 /* XPRomPKResultTitleLabel.m */,
);
path = SubViews;
sourceTree = "<group>";
};
E804875F2717DD70008595F2 /* Model */ = {
isa = PBXGroup;
children = (
@@ -5060,6 +5339,7 @@
E8E70D7126F2EB4900F03460 /* View */ = {
isa = PBXGroup;
children = (
E800805227FD33950055A8AB /* Guild */,
E896EF912771AA6C00AD2CC1 /* Friend */,
9BC5C8EA277AFEDC007C8719 /* Noble */,
9B92A34B2798068700AD168F /* SkillCard */,
@@ -5429,6 +5709,7 @@
E88B5CB226FB1CFF00DA9178 /* XPMineTeenagerProtocol.h in Sources */,
9BD9A18027A0EFC7004186FE /* XPMineVisitorTableViewCell.m in Sources */,
E824546626F5FF6000BE8163 /* XPMineResetPayPasswordProtocol.h in Sources */,
E800807227FD6C3D0055A8AB /* XPClanPresenter.m in Sources */,
E89DA66427005932008483C1 /* XPIAPHelper.m in Sources */,
E824545E26F5EF2200BE8163 /* XPMineVerifIdentityProtocol.h in Sources */,
E824545326F5CEAD00BE8163 /* XPMineModifPayProtocol.h in Sources */,
@@ -5478,6 +5759,8 @@
E8C6FFD42754AA87004DC9F0 /* XPNoteView.m in Sources */,
9B2EA7C628041EFC00ED17BF /* XPAnchorPkPanelView.m in Sources */,
E84150BB27747BAF00A7F548 /* XPFirstRechargePresenter.m in Sources */,
E8A88D2D27E81E8700CA8837 /* RoomPKChooseUserModel.m in Sources */,
E800806B27FD42B00055A8AB /* XPClanRoomCollectionViewCell.m in Sources */,
9BEE3D1727858E5700C83219 /* XPNobleAuthorityDescView.m in Sources */,
E82325F9274E2E42003A3332 /* Api+UserCard.m in Sources */,
9BD9A17C27A0EE24004186FE /* XPMineVisitorViewController.m in Sources */,
@@ -5513,6 +5796,7 @@
E82325F5274E2E09003A3332 /* XPUserCardPresenter.m in Sources */,
E880B39E278BD49E00A83B0D /* XPAcrossRoomPKViewController.m in Sources */,
E8AC723D26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m in Sources */,
E800806527FD37A20055A8AB /* XPGuildHeaderView.m in Sources */,
9B2A12D52783EEC700CED41B /* XPNobleCenterTableHeadView.m in Sources */,
9BEE3D11278584FE00C83219 /* XPNobleCenterEmptyView.m in Sources */,
9BCF585F27995363008401A4 /* XPSkillCardSelectPropView.m in Sources */,
@@ -5577,6 +5861,7 @@
E82325E6274CCAFA003A3332 /* XPShareInfoModel.m in Sources */,
189DD55A26DE39D200AB55B1 /* BaseMvpPresenter.m in Sources */,
E8F9168E27ECA69500F10D8F /* HomeLittleGameRoomModel.m in Sources */,
E800805D27FD34E90055A8AB /* XPMineGuildViewController.m in Sources */,
9BC5C8F9277B02EA007C8719 /* Api+NobleCenter.m in Sources */,
180806D827293794001FD836 /* NSObject+MJExtension.m in Sources */,
E88863D3278ED4C0004BCFAB /* Timestamp.m in Sources */,
@@ -5609,6 +5894,7 @@
E8C6FFCC27548120004DC9F0 /* Api+Home.m in Sources */,
186A534E26FC6ED900D67B2C /* TTPopupService.m in Sources */,
18A61BD7274F7F6900A09A54 /* NetImageConfig.m in Sources */,
E800806E27FD6BF40055A8AB /* XPGuildPresenter.m in Sources */,
E8C21501274B76F60079E6BF /* XPRoomAnimationHitView.m in Sources */,
E8AC722426F47E5E007D6E91 /* XPMineFeedbackViewController.m in Sources */,
E87E914E2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m in Sources */,
@@ -5641,6 +5927,7 @@
E8C6FFD027548256004DC9F0 /* XPHomeListCollectionViewCell.m in Sources */,
E84BF7DD277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m in Sources */,
E8E5E1A027C36E3F00F457D8 /* HomeBannerInfoModel.m in Sources */,
E800807F27FD859E0055A8AB /* ClanDetailInfoModel.m in Sources */,
E8EEB8F426FC2050007C6EBA /* SDBrowserImageView.m in Sources */,
E88863CC278EC336004BCFAB /* AcrossRoomPKPrizeModel.m in Sources */,
E824544626F5934700BE8163 /* XPMinePayPwdPresenter.m in Sources */,
@@ -5665,6 +5952,7 @@
E8E5E19D27C36C3500F457D8 /* XPHomeMenuTableViewCell.m in Sources */,
E8AC721026F43955007D6E91 /* UIImageConstant.m in Sources */,
E81C27A026EEF83D0031E639 /* XPHtmlUrl.m in Sources */,
E800807C27FD84980055A8AB /* GuildInfoModel.m in Sources */,
E8A03DF0276303D40098D9EA /* XPCandyTreeRankTableViewCell.m in Sources */,
9BCF58532798FDA1008401A4 /* XPSkillCardModel.m in Sources */,
18E7B1B726E8B2D10064BC9B /* Api+Main.m in Sources */,
@@ -5689,6 +5977,7 @@
9B2EA7C02804037700ED17BF /* AnchorPKStageView.m in Sources */,
E811FFF72742367B00918544 /* XPGiftEmptyCollectionViewCell.m in Sources */,
E8A86E0827BA38DB001C21F9 /* UIImage+RW.m in Sources */,
E800807927FD84560055A8AB /* ClanInfoModel.m in Sources */,
189DD67E26E1FD8900AB55B1 /* UIImage+Utils.m in Sources */,
E824545626F5E51900BE8163 /* XPMineVerifIdentityViewController.m in Sources */,
E82D5C73276AE94800858D6D /* CarModel.m in Sources */,
@@ -5729,10 +6018,12 @@
E8A03DEC276301EF0098D9EA /* XPCandyTreeRankView.m in Sources */,
E880B3A1278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m in Sources */,
E8D48250278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m in Sources */,
E800807627FD6D930055A8AB /* Api+Guild.m in Sources */,
18F404C3276098F100A6C548 /* Api+Message.m in Sources */,
E8C6FFED27550CC2004DC9F0 /* HomeSearchResultModel.m in Sources */,
9BB549592782E6A30090CD26 /* XPNobleCenterPresenter.m in Sources */,
9B85B6D7279FDABA00A0A1AC /* XPUserCardSkillCardView.m in Sources */,
E800808827FDA5100055A8AB /* XPClanSectionView.m in Sources */,
9B33E3CB27D85379003B0E62 /* UploadFile.m in Sources */,
E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */,
9B1B729D28002264003FACE9 /* XPMineAnchorFansTeamModel.m in Sources */,
@@ -5780,6 +6071,7 @@
189DD56526DE465A00AB55B1 /* LoginViewController.m in Sources */,
E824544B26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m in Sources */,
E81C1B2227705F950020D1E4 /* Api+ArrangeMic.m in Sources */,
E800805A27FD34DE0055A8AB /* XPMineClanViewController.m in Sources */,
E8ACEFF527C8EF0500F66D1A /* XPHomeHotRoomViewController.m in Sources */,
E81EF6DC279AB5CC00FF3EDE /* XPLittleGameRoomOpenView.m in Sources */,
E84150C227747BF700A7F548 /* FirstRechargeModel.m in Sources */,
@@ -5817,6 +6109,7 @@
18C17A5D26F338F300C48E11 /* XplanFBFlutterViewContainer.m in Sources */,
E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */,
1808072D2731598F001FD836 /* XPNetImageYYLabel.m in Sources */,
E800806827FD3B520055A8AB /* XPClanMenuView.m in Sources */,
E896EFAF2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m in Sources */,
18486213271EA9DA005FC5DC /* RtcManager.m in Sources */,
186A536926FC6F2E00D67B2C /* XPShareView.m in Sources */,
@@ -5907,6 +6200,8 @@
E80CBDE627D0C1CF001E1EC2 /* HomeMenuSourceModel.m in Sources */,
189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */,
E82D5C76276AEB5100858D6D /* NameplateModel.m in Sources */,
E800806227FD373D0055A8AB /* XPClanMemberTableViewCell.m in Sources */,
E81AF32827F1EE69003B9E43 /* XPRoomPKPanelUserView.m in Sources */,
E84150BF27747BD300A7F548 /* Api+FirstRecharge.m in Sources */,
E84B0E422727EE0A008818C6 /* XPRoomMessageHeaderView.m in Sources */,
E8C6FFDD2754CF5D004DC9F0 /* HomeRecommendRoomModel.m in Sources */,
@@ -5959,6 +6254,7 @@
9BA8A47227C5D590000365A3 /* XPVoiceCardCircleLayer.m in Sources */,
9B33E3D427D8A1A4003B0E62 /* XPSkillCardPlayerManager.m in Sources */,
9BAA5FF0277A23F4007453F3 /* XPPermissionsViewController.m in Sources */,
E800808527FD8FC20055A8AB /* ClanMemberDetailInfoModel.m in Sources */,
E8412FA92779C2ED006E1101 /* XPRoomSettingItemModel.m in Sources */,
9B92A3692798145000AD168F /* XPSkillCardTypeModel.m in Sources */,
189DD58F26DF97E700AB55B1 /* LoginPresenter.m in Sources */,

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_guild_clan_header_anchor_income_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_guild_clan_header_anchor_income_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_guild_clan_header_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_guild_clan_header_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_guild_clan_header_income_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_guild_clan_header_income_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_guild_clan_header_superadmin_set_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_guild_clan_header_superadmin_set_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -31,6 +31,8 @@ typedef NS_ENUM(NSInteger, XPMineItemType) {
XPMineItemType_Skill_Card, ///技能卡
XPMineItemType_Visitor,///访客记录
XPMineItemType_FansTeam,///粉丝团
///我的公会
XPMineItemType_My_Guild,
};

View File

@@ -74,6 +74,11 @@
realNameItem.itemImageName = @"mine_normal_real_name_authentic";
realNameItem.type = XPMineItemType_Real_Name_Authentic;
realNameItem.cornerType = UIRectCornerBottomLeft | UIRectCornerBottomRight;
XPMineItemModel * guildItem = [[XPMineItemModel alloc] init];
guildItem.itemName = @"我的工会";
guildItem.itemImageName = @"mine_normal_my_guild";
guildItem.type = XPMineItemType_My_Guild;
XPMineItemModel * visitorItem = [[XPMineItemModel alloc] init];
visitorItem.itemName = @"访客记录";
@@ -86,8 +91,8 @@
fansTeamItem.itemName = @"粉丝团";
fansTeamItem.itemImageName = @"mine_normal_anchor_fansTeam";
fansTeamItem.type = XPMineItemType_FansTeam;
NSArray * array = @[myRoomItem,teenagerItem, myDressUp, inviteFriend, visitorItem, fansTeamItem, realNameItem];
NSArray * array = @[myRoomItem,teenagerItem, myDressUp, guildItem, inviteFriend, visitorItem,fansTeamItem, realNameItem];
[[self getView] onGetNormalItemsSuccess:array];
}

View File

@@ -0,0 +1,39 @@
//
// Api+Guild.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import "Api.h"
NS_ASSUME_NONNULL_BEGIN
@interface Api (Guild)
/// 获取家族详情
/// @param completion 完成
/// @param uid 族长的uid
+ (void)getClanDetailInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid;
/// 获取工会中房间列表
/// @param completion 完成
/// @param clanId 工会的id
+ (void)getRoomListInClan:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId;
/// 工会成员列表
/// @param completion 完成
/// @param uid 用户的uid
/// @param page 当前的页数
/// @param pageSize 每页多少个
+ (void)getClanMemberList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize;
/// 房间成员列表
/// @param completion 完成
/// @param hallId 用户的uid
/// @param page 当前的页数
/// @param pageSize 每页多少个
+ (void)getGuildMemberList:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,46 @@
//
// Api+Guild.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "Api+Guild.h"
@implementation Api (Guild)
///
/// @param completion
/// @param uid uid
+ (void)getClanDetailInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid {
[self makeRequest:@"clan/getUserHallAndClan" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil];
}
///
/// @param completion
/// @param clanId id
+ (void)getRoomListInClan:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId {
[self makeRequest:@"clan/listHall" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,clanId, nil];
}
///
/// @param completion
/// @param uid uid
/// @param page
/// @param pageSize
+ (void)getClanMemberList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize {
[self makeRequest:@"clan/listMember" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize,nil];
}
///
/// @param completion
/// @param hallId uid
/// @param page
/// @param pageSize
+ (void)getGuildMemberList:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize {
[self makeRequest:@"hall/getAllMembers" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, hallId, page, pageSize,nil];
}
@end

View File

@@ -0,0 +1,22 @@
//
// ClanDetailInfoModel.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <Foundation/Foundation.h>
#import "ClanInfoModel.h"
#import "GuildInfoModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface ClanDetailInfoModel : NSObject
///家族信息
@property (nonatomic,strong) ClanInfoModel *clan;
///公会信息
@property (nonatomic,strong) GuildInfoModel *hall;
///当前用户是否是公会超管
@property (nonatomic, assign) BOOL manageHall;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// ClanDetailInfoModel.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "ClanDetailInfoModel.h"
@implementation ClanDetailInfoModel
@end

View File

@@ -0,0 +1,37 @@
//
// ClanInfoModel.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface ClanInfoModel : NSObject
///家族id
@property (nonatomic, copy) NSString *cid;
/// 族长 uid
@property (nonatomic, copy) NSString *elderUid;
/// 族长音游号
@property (nonatomic, copy) NSString *elderErbanNo;
/// 族长 名称
@property (nonatomic, copy) NSString *elderName;
/// 家族 名称
@property (nonatomic, copy) NSString *name;
///家族头像
@property (nonatomic, copy) NSString *avatar;
///家族成员数量
@property (nonatomic, strong) NSNumber *clanMemberNum;
///家族公会数量
@property (nonatomic, strong) NSNumber *clanHallNum;
///是否是家族族长
@property (nonatomic, assign) BOOL userIsElder;
///家族等级图片
@property (nonatomic, copy) NSString *levelIcon;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,15 @@
//
// ClanInfoModel.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "ClanInfoModel.h"
@implementation ClanInfoModel
+ (NSDictionary *)replacedKeyFromPropertyName {
return @{@"cid":@"id"};
}
@end

View File

@@ -0,0 +1,43 @@
//
// ClanMemberInfoModel.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <Foundation/Foundation.h>
#import "XPEnum.h"
#import "GuildInfoModel.h"
NS_ASSUME_NONNULL_BEGIN
@class ClanMemberInfoModel;
@interface ClanMemberDetailInfoModel : NSObject
///总的个数
@property (nonatomic,assign) NSInteger count;
///用户的实体
@property (nonatomic,strong) NSArray<ClanMemberInfoModel *> *members;
@end
@interface ClanMemberInfoModel : NSObject
///头像
@property (nonatomic,copy) NSString *avatar;
///平台id
@property (nonatomic,copy) NSString *erbanNo;
///性别
@property (nonatomic,assign) GenderType gender;
///公会名称
@property (nonatomic, copy) NSString *hallName;
///昵称
@property (nonatomic,copy) NSString *nick;
///类型
@property (nonatomic,assign) GuildRoleType roleType;
///用户的uid
@property (nonatomic,copy) NSString *uid;
//用户等级
@property (nonatomic, copy) NSString *experUrl;
///魅力等级
@property (nonatomic, copy) NSString *charmUrl;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,25 @@
//
// ClanMemberInfoModel.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "ClanMemberDetailInfoModel.h"
@implementation ClanMemberDetailInfoModel
+ (NSDictionary *)objectClassInArray {
return @{@"members": ClanMemberInfoModel.class};
}
@end
@implementation ClanMemberInfoModel
+ (NSDictionary *)replacedKeyFromPropertyName {
return @{@"experUrl":@"userLevelVo.experUrl",
@"charmUrl":@"userLevelVo.charmUrl"
};
}
@end

View File

@@ -0,0 +1,46 @@
//
// GuildInfoModel.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, GuildRoleType) {
///会长
GuildRoleType_Owner = 1,
///管理
GuildRoleType_Manager,
///普通成员
GuildRoleType_Normal,
///族长
GuildRoleType_Elder,
///组长 房主
GuildRoleType_Elder_Owner,
///超管
GuildRoleType_Super_Admin
};
@interface GuildInfoModel : NSObject
///模厅id
@property (nonatomic, copy) NSString *hallId;
/// 模厅名称
@property (nonatomic, copy) NSString *hallName;
///角色类型
@property (nonatomic, assign) GuildRoleType roleType;
/// 厅主的 uid
@property (nonatomic, copy) NSString *ownerUid;
/// 厅主的 音游号
@property (nonatomic, copy) NSString *ownerErbanNo;
/// 模厅名称
@property (nonatomic, copy) NSString *ownerNick;
/// 模厅头像
@property (nonatomic, copy) NSString *ownerAvatar;
/// 模厅成员数量
@property (nonatomic, strong) NSNumber *memberCount;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// GuildInfoModel.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "GuildInfoModel.h"
@implementation GuildInfoModel
@end

View File

@@ -0,0 +1,28 @@
//
// XPClanPresenter.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import "BaseMvpPresenter.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPClanPresenter : BaseMvpPresenter
/// 获取家族相亲的信息
/// @param uid 用户的uid
- (void)getClanDetailInfo:(NSString *)uid;
/// 获取家族成员的列表
/// @param uid 族长的uid
/// @param page 当前的页数
/// @param pageSize 一页多少个
- (void)getClanMemberList:(NSString *)uid page:(int)page pageSize:(NSInteger)pageSize state:(int)state;
/// 获取当前家族房间的列表
/// @param clanId 族长的id
- (void)getClanRoomList:(NSString *)clanId;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,47 @@
//
// XPClanPresenter.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPClanPresenter.h"
#import "XPClanProtocol.h"
#import "Api+Guild.h"
#import "ClanDetailInfoModel.h"
#import "ClanMemberDetailInfoModel.h"
@implementation XPClanPresenter
///
/// @param uid uid
- (void)getClanDetailInfo:(NSString *)uid {
[Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data];
[[self getView] getClanDetailInfoSuccess:clanDetailInfo];
}] uid:uid];
}
///
/// @param uid uid
/// @param page
/// @param pageSize
- (void)getClanMemberList:(NSString *)uid page:(int)page pageSize:(NSInteger)pageSize state:(int)state {
NSString * pageStr = [NSString stringWithFormat:@"%d", page];
NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize];
[Api getClanMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
ClanMemberDetailInfoModel * model= [ClanMemberDetailInfoModel modelWithDictionary:data.data];
[[self getView] getClanMemberListSuccess:model state:state];
}] uid:uid page:pageStr pageSize:pageSizeStr];
}
///
/// @param clanId id
- (void)getClanRoomList:(NSString *)clanId {
[Api getRoomListInClan:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [GuildInfoModel modelsWithArray:data.data];
[[self getView] getClanRoomListSuccess:array];
}] clanId:clanId];
}
@end

View File

@@ -0,0 +1,25 @@
//
// XPGuildPresenter.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import "BaseMvpPresenter.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPGuildPresenter : BaseMvpPresenter
/// 获取工会成员列表
/// @param hallId 工会id
/// @param page 当前的页数
/// @param pageSize 一页多少个
/// @param state 状态
- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state;
/// 获取家族相亲的信息
/// @param uid 用户的uid
- (void)getClanDetailInfo:(NSString *)uid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,42 @@
//
// XPGuildPresenter.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPGuildPresenter.h"
#import "Api+Guild.h"
#import "ClanMemberDetailInfoModel.h"
#import "ClanDetailInfoModel.h"
#import "XPGuildProtocol.h"
@implementation XPGuildPresenter
///
/// @param hallId id
/// @param page
/// @param pageSize
/// @param state
- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state {
NSString * pageStr = [NSString stringWithFormat:@"%d", page];
NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize];
[Api getGuildMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
ClanMemberDetailInfoModel * memberInfo = [ClanMemberDetailInfoModel modelWithDictionary:data.data];
[[self getView] getGuildMemberListSuccess:memberInfo state:state];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getGuildMemberListFail:msg state:state];
}] hallId:hallId page:pageStr pageSize:pageSizeStr];
}
///
/// @param uid uid
- (void)getClanDetailInfo:(NSString *)uid {
[Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data];
[[self getView] getClanDetailInfoSuccess:clanDetailInfo];
}] uid:uid];
}
@end

View File

@@ -0,0 +1,22 @@
//
// XPClanProtocol.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <Foundation/Foundation.h>
#import "ClanDetailInfoModel.h"
NS_ASSUME_NONNULL_BEGIN
@class ClanDetailInfoModel, ClanMemberDetailInfoModel;
@protocol XPClanProtocol <NSObject>
///获取家族详情成功
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo;
///获取工会成员列表成功
- (void)getClanMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state;
///获取工会房间的列表
- (void)getClanRoomListSuccess:(NSArray *)array;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,21 @@
//
// XPGuildProtocol.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class ClanMemberDetailInfoModel,ClanDetailInfoModel;
@protocol XPGuildProtocol <NSObject>
- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state;
- (void)getGuildMemberListFail:(NSString *)msg state:(int)state;
///获取家族详情成功
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,17 @@
//
// XPClanMemberTableViewCell.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <UIKit/UIKit.h>
#import "ClanMemberDetailInfoModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPClanMemberTableViewCell : UITableViewCell
///是否是最后的一个
@property (nonatomic,assign) BOOL isLast;
@property (nonatomic,strong) ClanMemberInfoModel *memberInfo;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,377 @@
//
// XPClanMemberTableViewCell.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPClanMemberTableViewCell.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
#import "NetImageView.h"
#import "UIImage+Utils.h"
#import "XPMacro.h"
///Model
#import "ClanMemberDetailInfoModel.h"
@interface XPClanMemberTableViewCell ()
///
@property (nonatomic,strong) UIView * backView;
///
@property (nonatomic,strong) NetImageView *avatarImageView;
///
@property (nonatomic,strong) UIImageView *avatarBorderView;
///
@property (nonatomic,strong) UIButton *roleButon;
///
@property (nonatomic,strong) UIStackView *nickStackView;
///x
@property (nonatomic,strong) UILabel *nickLabel;
///id
@property (nonatomic,strong) UILabel *idLabel;
///
@property (nonatomic,strong) UIImageView *sexImageView;
///
@property (nonatomic,strong) NetImageView *charmImageView;
///
@property (nonatomic,strong) NetImageView *experImageView;
///
@property (nonatomic,strong) UILabel *guildNickLabel;
@property (nonatomic,strong) CAShapeLayer *shapeLayer;
@end
@implementation XPClanMemberTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = [UIColor clearColor];
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self.contentView addSubview:self.backView];
[self.backView addSubview:self.avatarBorderView];
[self.backView addSubview:self.avatarImageView];
[self.backView addSubview:self.roleButon];
[self.backView addSubview:self.nickStackView];
[self.backView addSubview:self.idLabel];
[self.backView addSubview:self.guildNickLabel];
[self.nickStackView addArrangedSubview:self.nickLabel];
[self.nickStackView addArrangedSubview:self.sexImageView];
[self.nickStackView addArrangedSubview:self.charmImageView];
[self.nickStackView addArrangedSubview:self.experImageView];
}
- (void)initSubViewConstraints {
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.contentView).inset(15);
make.top.bottom.mas_equalTo(self.contentView);
}];
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(54, 54));
make.centerY.mas_equalTo(self.contentView);
make.left.mas_equalTo(self.backView).offset(9);
}];
[self.avatarBorderView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(57, 57));
make.center.mas_equalTo(self.avatarImageView);
}];
[self.roleButon mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(17);
make.width.mas_equalTo(28);
make.bottom.mas_equalTo(self.avatarBorderView);
make.centerX.mas_equalTo(self.avatarImageView);
}];
[self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(18);
}];
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(24);
}];
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(24);
}];
[self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6);
make.height.mas_equalTo(20);
make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3);
}];
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.nickLabel);
make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(3);
}];
[self.guildNickLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.backView).offset(-15);
make.centerY.mas_equalTo(self.idLabel);
}];
}
#pragma mark - Getters And Setters
- (void)setMemberInfo:(ClanMemberInfoModel *)memberInfo {
_memberInfo = memberInfo;
if (_memberInfo) {
self.avatarImageView.imageUrl = _memberInfo.avatar;
NSString * nick = _memberInfo.nick;
if (nick.length > 8) {
nick = [nick substringToIndex:8];
}
self.nickLabel.text = nick;
self.sexImageView.image = _memberInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"];
if (_memberInfo.experUrl) {
if (self.experImageView.state == NetImageStateLoaded) {
CGFloat kImageScale = self.experImageView.image.size.width / self.experImageView.image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
} else {
@kWeakify(self);
[self.experImageView loadImageWithUrl:_memberInfo.experUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
@kStrongify(self);
CGFloat kImageScale = image.size.width / image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
}];
}
}
self.experImageView.hidden = _memberInfo.experUrl.length <= 0;
if (_memberInfo.charmUrl) {
if (self.charmImageView.state == NetImageStateLoaded) {
CGFloat kImageScale = self.charmImageView.image.size.width / self.charmImageView.image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
} else {
@kWeakify(self);
[self.charmImageView loadImageWithUrl:_memberInfo.charmUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
@kStrongify(self);
CGFloat kImageScale = image.size.width / image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
}];
}
}
self.charmImageView.hidden = _memberInfo.charmUrl.length <= 0;
self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _memberInfo.erbanNo];
self.guildNickLabel.text = _memberInfo.hallName;
UIColor * avatarBoderColor;
UIColor * roleGradStartColor;
UIColor * roleGradEndColor;
NSString * roleTitle;
CGFloat roleWidth = 45;
switch (_memberInfo.roleType) {
case GuildRoleType_Elder:
roleTitle = @"会长";
avatarBoderColor = UIColorFromRGB(0xFFD755);
roleGradStartColor = UIColorFromRGB(0xFF5357);
roleGradEndColor = UIColorFromRGB(0xFFC919);
roleWidth= 45;
break;
case GuildRoleType_Elder_Owner:
roleTitle = @"会长·房主";
avatarBoderColor = UIColorFromRGB(0xFFD755);
roleGradStartColor = UIColorFromRGB(0xFF5357);
roleGradEndColor = UIColorFromRGB(0xFFC919);
roleWidth = 66;
break;
case GuildRoleType_Owner:
roleTitle = @"房主";
avatarBoderColor = UIColorFromRGB(0xF86868);
roleGradEndColor = UIColorFromRGB(0xF86868);
roleGradStartColor = UIColorFromRGB(0xF6A945);
roleWidth = 45;
break;
case GuildRoleType_Normal:
roleTitle = @"";
break;
case GuildRoleType_Manager:
roleTitle = @"房间管理";
avatarBoderColor = UIColorFromRGB(0x248CFE);
roleGradStartColor = UIColorFromRGB(0x5092FE);
roleGradEndColor = UIColorFromRGB(0x6A10B5);
roleWidth = 58;
break;
case GuildRoleType_Super_Admin:
roleTitle = @"公会超管";
avatarBoderColor = UIColorFromRGB(0x7727E4);
roleGradStartColor = UIColorFromRGB(0x5092FE);
roleGradEndColor = UIColorFromRGB(0x6A10B5);
roleWidth = 58;
break;
default:
break;
}
if (roleTitle.length > 0) {
self.roleButon.hidden = NO;
self.avatarBorderView.hidden = NO;
[self.roleButon setTitle:roleTitle forState:UIControlStateNormal];
self.avatarBorderView.layer.borderColor = avatarBoderColor.CGColor;
[self.roleButon setBackgroundImage:[UIImage gradientColorImageFromColors:@[roleGradStartColor, roleGradEndColor] gradientType:GradientTypeUpleftToLowright imgSize:CGSizeMake(roleWidth, 17)] forState:UIControlStateNormal];
[self.roleButon mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(roleWidth);
}];
} else {
self.avatarBorderView.hidden = YES;
self.roleButon.hidden = YES;
}
}
}
- (void)setIsLast:(BOOL)isLast {
_isLast = isLast;
if (_isLast) {
self.backView.layer.mask = self.shapeLayer;
} else {
self.backView.layer.mask = nil;
}
}
- (UIView *)backView {
if (!_backView) {
_backView = [[UIView alloc] init];
_backView.backgroundColor = [ThemeColor appCellBackgroundColor];
_backView.layer.masksToBounds = YES;
}
return _backView;
}
- (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 = 54.0/2.0;
_avatarImageView.layer.borderColor = [ThemeColor appMainColor].CGColor;
}
return _avatarImageView;
}
- (UIButton *)roleButon {
if (!_roleButon) {
_roleButon = [UIButton buttonWithType:UIButtonTypeCustom];
[_roleButon setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_roleButon.titleLabel.font = [UIFont systemFontOfSize:12];
_roleButon.layer.masksToBounds = YES;
_roleButon.layer.cornerRadius = 17.0 / 2.0;
}
return _roleButon;
}
- (UILabel *)idLabel {
if (!_idLabel) {
_idLabel = [[UILabel alloc] init];
_idLabel.font = [UIFont systemFontOfSize:12];
_idLabel.textColor = [ThemeColor secondTextColor];
}
return _idLabel;
}
- (UIStackView *)nickStackView {
if (!_nickStackView) {
_nickStackView = [[UIStackView alloc] init];
_nickStackView.axis = UILayoutConstraintAxisHorizontal;
_nickStackView.distribution = UIStackViewDistributionFill;
_nickStackView.alignment = UIStackViewAlignmentFill;
_nickStackView.spacing = 7;
}
return _nickStackView;
}
- (UILabel *)nickLabel {
if (!_nickLabel) {
_nickLabel = [[UILabel alloc] init];
_nickLabel.font = [UIFont systemFontOfSize:18];
_nickLabel.textColor = [ThemeColor mainTextColor];
}
return _nickLabel;
}
- (UIImageView *)sexImageView {
if (!_sexImageView) {
_sexImageView = [[UIImageView alloc] init];
_sexImageView.userInteractionEnabled = YES;
}
return _sexImageView;
}
- (NetImageView *)experImageView {
if (!_experImageView) {
NetImageConfig * config = [[NetImageConfig alloc] init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
config.imageType = ImageTypeUserCardLevel;
_experImageView = [[NetImageView alloc] initWithConfig:config];
_experImageView.userInteractionEnabled = YES;
_experImageView.hidden = YES;
_experImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _experImageView;
}
- (NetImageView *)charmImageView {
if (!_charmImageView) {
NetImageConfig * config = [[NetImageConfig alloc] init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
config.imageType = ImageTypeUserCardLevel;
_charmImageView = [[NetImageView alloc] initWithConfig:config];
_charmImageView.userInteractionEnabled = YES;
_charmImageView.hidden = YES;
_charmImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _charmImageView;
}
- (UILabel *)guildNickLabel {
if (!_guildNickLabel) {
_guildNickLabel = [[UILabel alloc] init];
_guildNickLabel.font = [UIFont systemFontOfSize:13];
_guildNickLabel.textColor = [ThemeColor secondTextColor];
}
return _guildNickLabel;
}
- (UIImageView *)avatarBorderView {
if (!_avatarBorderView) {
_avatarBorderView = [[UIImageView alloc] init];
_avatarBorderView.userInteractionEnabled = YES;
_avatarBorderView.layer.masksToBounds = YES;
_avatarBorderView.layer.cornerRadius = 57.0 /2.0;
_avatarBorderView.backgroundColor = [ThemeColor appCellBackgroundColor];
_avatarBorderView.layer.borderWidth = 1;
}
return _avatarBorderView;
}
- (CAShapeLayer *)shapeLayer {
if (!_shapeLayer) {
_shapeLayer = [CAShapeLayer layer];
_shapeLayer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 15 * 2, 66) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)].CGPath;
}
return _shapeLayer;
}
@end

View File

@@ -0,0 +1,16 @@
//
// XPClanRoomCollectionViewCell.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class GuildInfoModel;
@interface XPClanRoomCollectionViewCell : UICollectionViewCell
@property (nonatomic,strong) GuildInfoModel *guildInfo;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,105 @@
//
// XPClanRoomCollectionViewCell.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPClanRoomCollectionViewCell.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
#import "NetImageView.h"
#import "UIImage+Utils.h"
///Model
#import "GuildInfoModel.h"
@interface XPClanRoomCollectionViewCell ()
///线
@property (nonatomic,strong) UIButton *onlineButton;
///
@property (nonatomic,strong) NetImageView *avatarImageView;
///
@property (nonatomic,strong) UILabel *titleLabel;
@end
@implementation XPClanRoomCollectionViewCell
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self.contentView addSubview:self.avatarImageView];
[self.contentView addSubview:self.titleLabel];
[self.avatarImageView addSubview:self.onlineButton];
}
- (void)initSubViewConstraints {
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.right.mas_equalTo(self.contentView);
make.height.mas_equalTo(self.avatarImageView.mas_width);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.contentView);
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(6);
}];
[self.onlineButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(28, 14));
make.left.top.mas_equalTo(self.avatarImageView);
}];
}
#pragma mark - Getters And Setters
- (void)setGuildInfo:(GuildInfoModel *)guildInfo {
_guildInfo = guildInfo;
if (_guildInfo) {
self.avatarImageView.imageUrl = _guildInfo.ownerAvatar;
self.titleLabel.text = _guildInfo.hallName;
}
}
- (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 = 8;
}
return _avatarImageView;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.textAlignment = NSTextAlignmentCenter;
_titleLabel.font = [UIFont systemFontOfSize:13];
_titleLabel.textColor = [ThemeColor mainTextColor];
}
return _titleLabel;
}
- (UIButton *)onlineButton {
if (!_onlineButton) {
_onlineButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_onlineButton setTitle:@"在线" forState:UIControlStateNormal];
[_onlineButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_onlineButton.titleLabel.font = [UIFont systemFontOfSize:12];
[_onlineButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x7727E4)] forState:UIControlStateNormal];
_onlineButton.layer.masksToBounds = YES;
_onlineButton.layer.cornerRadius = 2;
}
return _onlineButton;
}
@end

View File

@@ -0,0 +1,19 @@
//
// XPClanMenuView.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPClanMenuView : UIView
///显示图片的名称
@property (nonatomic,copy) NSString * imageName;
///显示标题
@property (nonatomic,copy) NSString *title;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,80 @@
//
// XPClanMenuView.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPClanMenuView.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
@interface XPClanMenuView ()
///
@property (nonatomic,strong) UIImageView *logoImageView;
///
@property (nonatomic,strong) UILabel *titleLabel;
@end
@implementation XPClanMenuView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.logoImageView];
[self addSubview:self.titleLabel];
}
- (void)initSubViewConstraints {
[self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.mas_equalTo(self).offset(8);
}];
}
#pragma mark - Getters And Setters
- (void)setImageName:(NSString *)imageName {
_imageName = imageName;
if (_imageName) {
self.logoImageView.image = [UIImage imageNamed:_imageName];
}
}
- (void)setTitle:(NSString *)title {
_title = title;
if (_title.length > 0) {
self.titleLabel.text = _title;
}
}
- (UIImageView *)logoImageView {
if (!_logoImageView) {
_logoImageView = [[UIImageView alloc] init];
_logoImageView.userInteractionEnabled = YES;
}
return _logoImageView;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.font = [UIFont systemFontOfSize:14];
_titleLabel.textColor = [UIColor whiteColor];
}
return _titleLabel;
}
@end

View File

@@ -0,0 +1,19 @@
//
// XPClanSectionView.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface XPClanSectionView : UIView
///顶部是否切圆角
@property (nonatomic,assign) BOOL isTopCor;
///显示标题
@property (nonatomic,copy) NSString *title;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,110 @@
//
// XPClanSectionView.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPClanSectionView.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
#import "XPMacro.h"
@interface XPClanSectionView ()
///
@property (nonatomic,strong) UIView * backView;
///
@property (nonatomic,strong) UILabel *titleLabel;
///
@property (nonatomic,strong) UIButton *searchButton;
@end
@implementation XPClanSectionView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = [UIColor clearColor];
[self addSubview:self.backView];
[self.backView addSubview:self.titleLabel];
[self.backView addSubview:self.searchButton];
}
- (void)initSubViewConstraints {
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self).inset(15);
make.top.bottom.mas_equalTo(self);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.mas_equalTo(self.backView).offset(15);
}];
[self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(22, 22));
make.centerY.mas_equalTo(self.titleLabel);
make.right.mas_equalTo(self.backView).offset(-15);
}];
}
#pragma mark - Event Response
- (void)searchButtonAction:(UIButton *)sender {
}
#pragma mark - Getters And Setters
- (void)setTitle:(NSString *)title {
_title = title;
if (_title.length > 0) {
self.titleLabel.text = _title;
}
}
- (void)setIsTopCor:(BOOL)isTopCor {
_isTopCor = isTopCor;
if (_isTopCor) {
CAShapeLayer * layer = [CAShapeLayer layer];
layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 30, 37) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath;
self.backView.layer.mask = layer;
}
}
- (UIView *)backView {
if (!_backView) {
_backView = [[UIView alloc] init];
_backView.backgroundColor = [ThemeColor appCellBackgroundColor];
_backView.layer.masksToBounds = YES;
}
return _backView;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.font = [UIFont systemFontOfSize:15];
_titleLabel.textColor = [ThemeColor secondTextColor];
}
return _titleLabel;
}
- (UIButton *)searchButton {
if (!_searchButton) {
_searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_searchButton setImage:[UIImage imageNamed:@"mine_guild_section_search"] forState:UIControlStateNormal];
[_searchButton setImage:[UIImage imageNamed:@"mine_guild_section_search"] forState:UIControlStateSelected];
[_searchButton addTarget:self action:@selector(searchButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _searchButton;
}
@end

View File

@@ -0,0 +1,28 @@
//
// XPGuildHeaderView.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class ClanDetailInfoModel, XPGuildHeaderView, GuildInfoModel;
@protocol XPGuildHeaderViewDelegate <NSObject>
- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectGuild:(GuildInfoModel *)guildInfo;
@end
@interface XPGuildHeaderView : UIView
///家族信息
@property (nonatomic,strong) ClanDetailInfoModel *clanInfo;
///家族房间列表
@property (nonatomic,strong) NSArray *clanRoomList;
///代理
@property (nonatomic,weak) id<XPGuildHeaderViewDelegate> delegate;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,326 @@
//
// XPGuildHeaderView.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPGuildHeaderView.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
#import "NetImageView.h"
#import "XPMacro.h"
///Model
#import "ClanDetailInfoModel.h"
///View
#import "XPClanMenuView.h"
#import "XPClanRoomCollectionViewCell.h"
@interface XPGuildHeaderView ()<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
///
@property (nonatomic,strong) UIImageView *backImageView;
///
@property (nonatomic,strong) NetImageView *avatarImageView;
///
@property (nonatomic,strong) UILabel *clanNameLabel;
///id
@property (nonatomic,strong) UILabel *daeIdLabel;
///
@property (nonatomic,strong) UILabel *roomNumberLabel;
///
@property (nonatomic,strong) NetImageView *clanLevelImageView;
///
@property (nonatomic,strong) XPClanMenuView *incomeView;
///
@property (nonatomic,strong) XPClanMenuView *anchorIncomeView;
///
@property (nonatomic,strong) XPClanMenuView *superAdminSetView;
///
@property (nonatomic,strong) UIView * clanRoomView;
///
@property (nonatomic,strong) UILabel *numberLabel;
///
@property (nonatomic,strong) UICollectionView *collectionView;
@end
@implementation XPGuildHeaderView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.backImageView];
[self addSubview:self.avatarImageView];
[self addSubview:self.clanNameLabel];
[self addSubview:self.daeIdLabel];
[self addSubview:self.roomNumberLabel];
[self addSubview:self.clanLevelImageView];
[self addSubview:self.incomeView];
[self addSubview:self.anchorIncomeView];
[self addSubview:self.superAdminSetView];
[self addSubview:self.clanRoomView];
[self.clanRoomView addSubview:self.numberLabel];
[self.clanRoomView addSubview:self.collectionView];
}
- (void)initSubViewConstraints {
[self mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(KScreenWidth);
make.bottom.mas_equalTo(self.clanRoomView.mas_bottom).offset(15);
}];
CGFloat kBackScale = 274.0 / 375.0;
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self);
make.height.mas_equalTo(KScreenWidth * kBackScale);
}];
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(64 * kScreenScale, 64 * kScreenScale));
make.left.mas_equalTo(self).offset(15);
make.top.mas_equalTo(self).offset(108 * kScreenScale);
}];
[self.clanNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6);
make.top.mas_equalTo(self.avatarImageView);
make.right.mas_lessThanOrEqualTo(self.clanLevelImageView);
}];
[self.daeIdLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.clanNameLabel);
make.top.mas_equalTo(self.clanNameLabel.mas_bottom).offset(6);
}];
[self.roomNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.clanNameLabel);
make.top.mas_equalTo(self.daeIdLabel.mas_bottom).offset(6);
}];
[self.clanLevelImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(60, 60));
make.centerY.mas_equalTo(self.avatarImageView);
make.right.mas_equalTo(self).offset(-35);
}];
CGFloat kMenuScale = 52.0 / 111.0;
CGFloat kMenuItemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 6 * 2) / 3.0;
[self.incomeView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(15);
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(25);
make.width.mas_equalTo(kMenuItemWidth);
make.height.mas_equalTo(kMenuItemWidth * kMenuScale);
}];
[self.anchorIncomeView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.centerY.mas_equalTo(self.incomeView);
make.left.mas_equalTo(self.incomeView.mas_right).offset(6);
}];
[self.superAdminSetView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.centerY.mas_equalTo(self.incomeView);
make.left.mas_equalTo(self.anchorIncomeView.mas_right).offset(6);
}];
[self.clanRoomView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self).inset(16);
make.height.mas_equalTo(130);
make.top.mas_equalTo(self.incomeView.mas_bottom).offset(15);
}];
[self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.clanRoomView).offset(9);
make.top.mas_equalTo(self.clanRoomView).offset(10);
}];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.clanRoomView).inset(9);
make.top.mas_equalTo(self.numberLabel.mas_bottom).offset(3);
make.bottom.mas_equalTo(self.clanRoomView);
}];
}
#pragma mark - UICollectionViewDelegate
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return self.clanRoomList.count;
}
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
XPClanRoomCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([ XPClanRoomCollectionViewCell class]) forIndexPath:indexPath];
cell.guildInfo = [self.clanRoomList objectAtIndex:indexPath.row];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[collectionView deselectItemAtIndexPath:indexPath animated:YES];
if (self.clanRoomList.count > 0) {
GuildInfoModel * guildInfo = [self.clanRoomList objectAtIndex:indexPath.row];
if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildHeaderView:dicSelectGuild:)]) {
[self.delegate xPGuildHeaderView:self dicSelectGuild:guildInfo];
}
}
}
#pragma mark - Getters And Setters
- (void)setClanInfo:(ClanDetailInfoModel *)clanInfo {
_clanInfo = clanInfo;
if (_clanInfo) {
self.avatarImageView.imageUrl = _clanInfo.clan.avatar;
NSString * elderName = _clanInfo.clan.elderName;
if (elderName.length > 8) {
elderName = [elderName substringToIndex:8];
}
self.clanNameLabel.text = elderName;
self.daeIdLabel.text = _clanInfo.clan.elderErbanNo;
self.clanLevelImageView.imageUrl = _clanInfo.clan.levelIcon;
}
}
- (void)setClanRoomList:(NSArray *)clanRoomList {
_clanRoomList = clanRoomList;
if (_clanRoomList.count > 0) {
[self.clanRoomView mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(130);
}];
self.roomNumberLabel.text = [NSString stringWithFormat:@"公会房间数量:%ld", _clanRoomList.count];
} else {
[self.clanRoomView mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(0);
}];
self.roomNumberLabel.text = @"公会房间数量:0";
}
[self.collectionView reloadData];
}
- (UIImageView *)backImageView {
if (!_backImageView) {
_backImageView = [[UIImageView alloc] init];
_backImageView.userInteractionEnabled = YES;
_backImageView.image = [UIImage imageNamed:@"mine_guild_clan_header_bg"];
}
return _backImageView;
}
- (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 = 32;
_avatarImageView.layer.borderWidth = 2;
_avatarImageView.layer.borderColor = UIColorFromRGB(0xC6C6E9).CGColor;
}
return _avatarImageView;
}
- (UILabel *)clanNameLabel {
if (!_clanNameLabel) {
_clanNameLabel = [[UILabel alloc] init];
_clanNameLabel.font = [UIFont systemFontOfSize:18];
_clanNameLabel.textColor = [UIColor whiteColor];
}
return _clanNameLabel;
}
- (UILabel *)daeIdLabel {
if (!_daeIdLabel) {
_daeIdLabel = [[UILabel alloc] init];
_daeIdLabel.font = [UIFont systemFontOfSize:12];
_daeIdLabel.textColor = UIColorFromRGB(0xC6C6E9);
}
return _daeIdLabel;
}
- (UILabel *)roomNumberLabel {
if (!_roomNumberLabel) {
_roomNumberLabel = [[UILabel alloc] init];
_roomNumberLabel.font = [UIFont systemFontOfSize:12];
_roomNumberLabel.textColor = UIColorFromRGB(0xC6C6E9);
}
return _roomNumberLabel;
}
- (NetImageView *)clanLevelImageView {
if (!_clanLevelImageView) {
_clanLevelImageView = [[NetImageView alloc] init];
}
return _clanLevelImageView;
}
- (XPClanMenuView *)incomeView {
if (!_incomeView) {
_incomeView = [[XPClanMenuView alloc] init];
_incomeView.title = @"查看流水";
_incomeView.imageName = @"mine_guild_clan_header_income_bg";
}
return _incomeView;
}
- (XPClanMenuView *)anchorIncomeView {
if (!_anchorIncomeView) {
_anchorIncomeView = [[XPClanMenuView alloc] init];
_anchorIncomeView.title = @"主播收入";
_anchorIncomeView.imageName = @"mine_guild_clan_header_anchor_income_bg";
}
return _anchorIncomeView;
}
- (XPClanMenuView *)superAdminSetView {
if (!_superAdminSetView) {
_superAdminSetView = [[XPClanMenuView alloc] init];
_superAdminSetView.title = @"工会超管设置";
_superAdminSetView.imageName = @"mine_guild_clan_header_superadmin_set_bg";
}
return _superAdminSetView;
}
- (UIView *)clanRoomView {
if (!_clanRoomView) {
_clanRoomView = [[UIView alloc] init];
_clanRoomView.backgroundColor = [ThemeColor appCellBackgroundColor];
_clanRoomView.layer.masksToBounds = YES;
_clanRoomView.layer.cornerRadius = 10;
}
return _clanRoomView;
}
- (UILabel *)numberLabel {
if (!_numberLabel) {
_numberLabel = [[UILabel alloc] init];
_numberLabel.text = @"公会房间(0)";
_numberLabel.font = [UIFont systemFontOfSize:14];
_numberLabel.textColor = [ThemeColor mainTextColor];
}
return _numberLabel;
}
- (UICollectionView *)collectionView{
if (!_collectionView) {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
layout.minimumLineSpacing = 10;
layout.itemSize = CGSizeMake(60, 80);
layout.minimumInteritemSpacing = 0;
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
_collectionView.dataSource = self;
_collectionView.delegate = self;
_collectionView.backgroundColor = [UIColor clearColor];
[_collectionView registerClass:[XPClanRoomCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPClanRoomCollectionViewCell class])];
}
return _collectionView;
}
@end

View File

@@ -0,0 +1,17 @@
//
// XPMineClanViewController.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import "MvpViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPMineClanViewController : MvpViewController
///组长的Uid
@property (nonatomic,copy) NSString *uid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,282 @@
//
// XPMineClanViewController.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPMineClanViewController.h"
///Third
#import <Masonry/Masonry.h>
#import <MJRefresh/MJRefresh.h>
///Tool
#import "XPMacro.h"
#import "ThemeColor.h"
///Model
#import "ClanDetailInfoModel.h"
#import "ClanMemberDetailInfoModel.h"
///View
#import "XPClanMemberTableViewCell.h"
#import "XPGuildHeaderView.h"
#import "XPClanSectionView.h"
#import "XPMineGuildViewController.h"
///P
#import "XPClanPresenter.h"
#import "XPClanProtocol.h"
@interface XPMineClanViewController ()<UITableViewDataSource, UITableViewDelegate, XPClanProtocol, XPGuildHeaderViewDelegate>
///
@property (nonatomic,strong) XPGuildHeaderView *headerView;
///
@property (nonatomic,strong) UIView * navView;
///
@property (nonatomic,strong) UIButton *backButton;
///
@property (nonatomic,strong) UILabel *titleLabel;
///
@property (nonatomic,strong) UITableView *tableView;
///
@property (nonatomic,assign) int page;
///
@property (nonatomic,assign) BOOL hasNoMoreData;
///
@property (nonatomic,strong) ClanDetailInfoModel *clanDetailInfo;
///
@property (nonatomic,strong) ClanMemberDetailInfoModel *memberDetailInfo;
///
@property (nonatomic,strong) NSMutableArray *datasource;
///
@property (nonatomic,strong) XPClanSectionView *sectionView;
@end
@implementation XPMineClanViewController
- (BOOL)isHiddenNavBar {
return YES;
}
- (XPClanPresenter *)createPresenter {
return [[XPClanPresenter alloc] init];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initSubViews];
[self initSubViewConstraints];
[self initHeaderAndFooterRrfresh];
}
#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 = [ThemeColor secondTextColor];
header.lastUpdatedTimeLabel.textColor = [ThemeColor secondTextColor];
self.tableView.mj_header = header;
MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];
footer.stateLabel.textColor = [ThemeColor secondTextColor];
footer.stateLabel.font = [UIFont systemFontOfSize:10.0];
self.tableView.mj_footer = footer;
[self headerRefresh];
}
#pragma mark - fangfa
- (void)headerRefresh {
self.page = 1;
[self.presenter getClanDetailInfo:self.uid];
[self.presenter getClanMemberList:self.uid page:self.page pageSize:20 state:0];
}
- (void)footerRefresh {
if (self.hasNoMoreData) {
[self showErrorToast:@"没有更多数据了"];
[self.tableView.mj_footer endRefreshing];
return;
}
self.page++;
[self.presenter getClanMemberList:self.uid page:self.page pageSize:20 state:1];
}
#pragma mark - Private Method
- (void)initSubViews {
[self.view addSubview:self.tableView];
[self.view addSubview:self.navView];
[self.navView addSubview:self.backButton];
[self.navView addSubview:self.titleLabel];
self.tableView.tableHeaderView = self.headerView;
}
- (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).offset(-20);
}];
[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.centerX.mas_equalTo(self.navView);
make.centerY.mas_equalTo(self.backButton);
}];
}
#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])];
}
ClanMemberInfoModel * memberInfo = [self.datasource objectAtIndex:indexPath.row];
cell.isLast = (self.datasource.count -1) == indexPath.row;
cell.memberInfo = memberInfo;
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 66;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 37;
}
- (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.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];
}
#pragma mark -XPClanProtocol
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo {
self.clanDetailInfo = clanDetailInfo;
self.headerView.clanInfo = clanDetailInfo;
self.titleLabel.text = clanDetailInfo.clan.name;
[self.presenter getClanRoomList:clanDetailInfo.clan.cid];
}
- (void)getClanMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state {
self.sectionView.title = [NSString stringWithFormat:@"成员列表 %ld", 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)getClanRoomListSuccess:(NSArray *)array {
self.headerView.clanRoomList = array;
}
#pragma mark - XPGuildHeaderViewDelegate
- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectGuild:(GuildInfoModel *)guildInfo {
XPMineGuildViewController * guildVC = [[XPMineGuildViewController alloc] init];
guildVC.ownerUid = guildInfo.ownerUid;
guildVC.guildId = guildInfo.hallId;
[self.navigationController pushViewController:guildVC animated:YES];
}
#pragma mark - Event Response
- (void)backButtonAction:(UIButton *)sender {
[self.navigationController popViewControllerAnimated: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;
}
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.tableFooterView = [UIView new];
_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;
}
- (XPGuildHeaderView *)headerView {
if (!_headerView) {
_headerView = [[XPGuildHeaderView alloc] init];
_headerView.delegate = self;
}
return _headerView;
}
@end

View File

@@ -0,0 +1,17 @@
//
// XPMineGuildViewController.h
// xplan-ios
//
// Created by 冯硕 on 2022/4/6.
//
#import "MvpViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPMineGuildViewController : MvpViewController
@property (nonatomic,strong) NSString *ownerUid;
@property (nonatomic,strong) NSString *guildId;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,387 @@
//
// XPMineGuildViewController.m
// xplan-ios
//
// Created by on 2022/4/6.
//
#import "XPMineGuildViewController.h"
///Third
#import <Masonry/Masonry.h>
#import <MJRefresh/MJRefresh.h>
///Tool
#import "XPMacro.h"
#import "ThemeColor.h"
#import "NetImageView.h"
///Model
#import "ClanDetailInfoModel.h"
#import "ClanMemberDetailInfoModel.h"
///View
#import "XPClanMemberTableViewCell.h"
#import "XPClanSectionView.h"
///P
#import "XPGuildPresenter.h"
#import "XPGuildProtocol.h"
@interface XPMineGuildViewController ()<UITableViewDataSource, UITableViewDelegate, XPGuildProtocol>
///
@property (nonatomic,strong) UIView * navView;
///
@property (nonatomic,strong) UIButton *backButton;
///
@property (nonatomic,strong) UILabel *titleLabel;
///退
@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,strong) UIVisualEffectView * blurView;
///
@property (nonatomic,assign) int page;
///
@property (nonatomic,assign) BOOL hasNoMoreData;
///
@property (nonatomic,strong) NSMutableArray *datasource;
///
@property (nonatomic,strong) XPClanSectionView *sectionView;
@end
@implementation XPMineGuildViewController
- (BOOL)isHiddenNavBar {
return YES;
}
- (XPGuildPresenter *)createPresenter {
return [[XPGuildPresenter alloc] init];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initSubViews];
[self initSubViewConstraints];
[self initHeaderAndFooterRrfresh];
}
#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 = [ThemeColor secondTextColor];
header.lastUpdatedTimeLabel.textColor = [ThemeColor secondTextColor];
self.tableView.mj_header = header;
MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)];
footer.stateLabel.textColor = [ThemeColor secondTextColor];
footer.stateLabel.font = [UIFont systemFontOfSize:10.0];
self.tableView.mj_footer = footer;
[self headerRefresh];
}
#pragma mark - fangfa
- (void)headerRefresh {
if (self.guildId.length <= 0 || self.ownerUid.length <= 0) {
[self showErrorToast:@"获取信息失败"];
[self.navigationController popViewControllerAnimated:YES];
return;
}
self.page = 1;
[self.presenter getClanDetailInfo:self.ownerUid];
[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:@"获取信息失败"];
[self.navigationController popViewControllerAnimated:YES];
return;
}
if (self.hasNoMoreData) {
[self showErrorToast:@"没有更多数据了"];
[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];
[self.view addSubview:self.tableView];
[self.view addSubview:self.navView];
[self.navView addSubview:self.backButton];
[self.navView addSubview:self.titleLabel];
[self.navView addSubview:self.exitButton];
[self.backImageView addSubview:self.blurView];
[self.headerView addSubview:self.avatarImageView];
[self.headerView addSubview:self.idLabel];
self.headerView.frame = CGRectMake(0, 0, KScreenWidth, 174);
self.tableView.tableHeaderView = self.headerView;
}
- (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).offset(-20);
}];
[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.exitButton.mas_left);
make.centerY.mas_equalTo(self.backButton);
}];
[self.exitButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.navView).offset(-15);
make.centerY.mas_equalTo(self.backButton);
}];
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self.view);
make.height.mas_equalTo(250);
}];
[self.blurView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.backImageView);
}];
[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);
}];
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.headerView);
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(10);
}];
}
#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])];
}
ClanMemberInfoModel * memberInfo = [self.datasource objectAtIndex:indexPath.row];
cell.isLast = (self.datasource.count -1) == indexPath.row;
cell.memberInfo = memberInfo;
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 66;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 37;
}
- (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.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];
}
#pragma mark -XPClanProtocol
- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state {
self.sectionView.title = [NSString stringWithFormat:@"成员列表 %ld人", 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 {
self.avatarImageView.imageUrl = clanDetailInfo.hall.ownerAvatar;
self.idLabel.text = [NSString stringWithFormat:@"房间ID:%@",clanDetailInfo.hall.ownerErbanNo];
self.backImageView.imageUrl = clanDetailInfo.hall.ownerAvatar;
self.titleLabel.text = clanDetailInfo.hall.ownerNick;
}
#pragma mark - Event Response
- (void)backButtonAction:(UIButton *)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (void)exitButtonAction:(UIButton *)sender {
}
#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;
}
- (UIButton *)exitButton {
if (!_exitButton) {
_exitButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_exitButton setTitle:@"退出房间" forState:UIControlStateNormal];
[_exitButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_exitButton.titleLabel.font = [UIFont systemFontOfSize:16];
[_exitButton addTarget:self action:@selector(exitButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _exitButton;
}
- (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;
}
return _avatarImageView;
}
- (UILabel *)idLabel {
if (!_idLabel) {
_idLabel = [[UILabel alloc] init];
_idLabel.font = [UIFont systemFontOfSize:13];
_idLabel.textColor = [UIColor whiteColor];
_idLabel.textAlignment = NSTextAlignmentCenter;
}
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;
}
return _backImageView;
}
- (UIVisualEffectView *)blurView {
if (!_blurView) {
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
_blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
_blurView.alpha = 0.3;
}
return _blurView;
}
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.tableFooterView = [UIView new];
_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;
}
@end

View File

@@ -45,6 +45,8 @@
#import "XPSkillCardViewController.h"
#import "XPMineVisitorViewController.h"
#import "XPMineFansTeamViewController.h"
#import "XPMineClanViewController.h"
@interface XPMineViewController ()<UITableViewDelegate, UITableViewDataSource, XPMineProtocol, XPMineHeadItemTableViewCellDelegate, XPMineHeadViewDelegate>
///
@@ -268,6 +270,13 @@
[self.navigationController pushViewController:fansTeamVc animated:YES];
}
break;
case XPMineItemType_My_Guild:
{
XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init];
clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid];
[self.navigationController pushViewController:clanVC animated:YES];
}
break;
default:
break;
}