房间榜单完成
@@ -178,6 +178,8 @@
|
||||
E82EE0F8272FDDFA00D15DC1 /* UserPrivacyView.m in Sources */ = {isa = PBXBuildFile; fileRef = E82EE0F7272FDDFA00D15DC1 /* UserPrivacyView.m */; };
|
||||
E833ED0D274FAD1C00A2463B /* XPKickUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E833ED0C274FAD1C00A2463B /* XPKickUserModel.m */; };
|
||||
E838D9A0275E1BF60079E0B5 /* XPRoomAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = E838D99F275E1BF60079E0B5 /* XPRoomAnimationView.m */; };
|
||||
E839531E2769CCCE00CF2F24 /* RoomRankModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E839531D2769CCCE00CF2F24 /* RoomRankModel.m */; };
|
||||
E83953222769F33B00CF2F24 /* XPRoomFunctionContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83953212769F33B00CF2F24 /* XPRoomFunctionContainerView.m */; };
|
||||
E83DB47A27462C4500D8CBD1 /* XPGiftBigPrizeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47927462C4500D8CBD1 /* XPGiftBigPrizeModel.m */; };
|
||||
E83DB47D2746372300D8CBD1 /* XPRoomGiftBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */; };
|
||||
E83DB481274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB480274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m */; };
|
||||
@@ -693,6 +695,11 @@
|
||||
E833ED0C274FAD1C00A2463B /* XPKickUserModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPKickUserModel.m; sourceTree = "<group>"; };
|
||||
E838D99E275E1BF60079E0B5 /* XPRoomAnimationView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomAnimationView.h; sourceTree = "<group>"; };
|
||||
E838D99F275E1BF60079E0B5 /* XPRoomAnimationView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnimationView.m; sourceTree = "<group>"; };
|
||||
E839531C2769CCCE00CF2F24 /* RoomRankModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomRankModel.h; sourceTree = "<group>"; };
|
||||
E839531D2769CCCE00CF2F24 /* RoomRankModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomRankModel.m; sourceTree = "<group>"; };
|
||||
E839531F2769E40900CF2F24 /* XPRoomRankHostDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRankHostDelegate.h; sourceTree = "<group>"; };
|
||||
E83953202769F33B00CF2F24 /* XPRoomFunctionContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFunctionContainerView.h; sourceTree = "<group>"; };
|
||||
E83953212769F33B00CF2F24 /* XPRoomFunctionContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFunctionContainerView.m; sourceTree = "<group>"; };
|
||||
E83DB47827462C4500D8CBD1 /* XPGiftBigPrizeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftBigPrizeModel.h; sourceTree = "<group>"; };
|
||||
E83DB47927462C4500D8CBD1 /* XPGiftBigPrizeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftBigPrizeModel.m; sourceTree = "<group>"; };
|
||||
E83DB47B2746372300D8CBD1 /* XPRoomGiftBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftBannerView.h; sourceTree = "<group>"; };
|
||||
@@ -1920,6 +1927,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8252FF02768882B002B3164 /* XPRoomRankProtocol.h */,
|
||||
E839531F2769E40900CF2F24 /* XPRoomRankHostDelegate.h */,
|
||||
);
|
||||
path = Protocol;
|
||||
sourceTree = "<group>";
|
||||
@@ -1960,6 +1968,8 @@
|
||||
E8252FF527688868002B3164 /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E839531C2769CCCE00CF2F24 /* RoomRankModel.h */,
|
||||
E839531D2769CCCE00CF2F24 /* RoomRankModel.m */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
@@ -2494,6 +2504,8 @@
|
||||
children = (
|
||||
E8AEAEEB27141AE20017FCE0 /* XPRoomBackContainerView.h */,
|
||||
E8AEAEEC27141AE20017FCE0 /* XPRoomBackContainerView.m */,
|
||||
E83953202769F33B00CF2F24 /* XPRoomFunctionContainerView.h */,
|
||||
E83953212769F33B00CF2F24 /* XPRoomFunctionContainerView.m */,
|
||||
);
|
||||
path = BaseUIContainerView;
|
||||
sourceTree = "<group>";
|
||||
@@ -3106,6 +3118,7 @@
|
||||
E8232603274E4AA0003A3332 /* ThemeColor+UserCard.m in Sources */,
|
||||
E87A24F1272935920086A794 /* XPMessageRemoteExtModel.m in Sources */,
|
||||
E88B5CBA26FB329C00DA9178 /* XPMineTeenagerPwdProtocol.h in Sources */,
|
||||
E83953222769F33B00CF2F24 /* XPRoomFunctionContainerView.m in Sources */,
|
||||
E88B5CB226FB1CFF00DA9178 /* XPMineTeenagerProtocol.h in Sources */,
|
||||
E824546626F5FF6000BE8163 /* XPMineResetPayPasswordProtocol.h in Sources */,
|
||||
E89DA66427005932008483C1 /* XPIAPHelper.m in Sources */,
|
||||
@@ -3385,6 +3398,7 @@
|
||||
18E7B29026EA0E6B0064BC9B /* FlutterBoost+Xplan.m in Sources */,
|
||||
E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */,
|
||||
E884C36C2743951B00E1EBED /* GiftReceiveInfoModel.m in Sources */,
|
||||
E839531E2769CCCE00CF2F24 /* RoomRankModel.m in Sources */,
|
||||
189DD75926E6003C00AB55B1 /* Api.m in Sources */,
|
||||
E8133916273E532D00708B66 /* XPGiftItemCollectionViewCell.m in Sources */,
|
||||
E833ED0D274FAD1C00A2463B /* XPKickUserModel.m in Sources */,
|
||||
|
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_avatar_first_place.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_avatar_first_place@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_avatar_first_place@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 3.2 KiB |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_avatar_second_place.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_avatar_second_place@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_avatar_second_place@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_avatar_third_place.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_avatar_third_place@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_avatar_third_place@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.6 KiB |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_first.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_crown_first@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_crown_first@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_first.imageset/room_rank_crown_first@2x.png
vendored
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_first.imageset/room_rank_crown_first@3x.png
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_second.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_crown_second@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_crown_second@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_second.imageset/room_rank_crown_second@2x.png
vendored
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_second.imageset/room_rank_crown_second@3x.png
vendored
Normal file
After Width: | Height: | Size: 9.6 KiB |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_third.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_crown_third@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_crown_third@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_third.imageset/room_rank_crown_third@2x.png
vendored
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_crown_third.imageset/room_rank_crown_third@3x.png
vendored
Normal file
After Width: | Height: | Size: 8.4 KiB |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_enter_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_enter_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_enter_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_enter_icon.imageset/room_rank_enter_icon@2x.png
vendored
Normal file
After Width: | Height: | Size: 303 B |
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_enter_icon.imageset/room_rank_enter_icon@3x.png
vendored
Normal file
After Width: | Height: | Size: 439 B |
22
xplan-ios/Assets.xcassets/Room/Rank/room_rank_high_user_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_high_user_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_rank_high_user_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_high_user_bg.imageset/room_rank_high_user_bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
xplan-ios/Assets.xcassets/Room/Rank/room_rank_high_user_bg.imageset/room_rank_high_user_bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 82 KiB |
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPRoomFunctionContainerView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/12/15.
|
||||
//
|
||||
|
||||
#import "XPRoomAnimationHitView.h"
|
||||
#import "RoomHostDelegate.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPRoomFunctionContainerView : XPRoomAnimationHitView
|
||||
- (instancetype)initWithdelegate:(id<RoomHostDelegate>)delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// XPRoomFunctionContainerView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/12/15.
|
||||
//
|
||||
|
||||
#import "XPRoomFunctionContainerView.h"
|
||||
///Tool
|
||||
#import "XPMacro.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Model
|
||||
#import "RoomInfoModel.h"
|
||||
///View
|
||||
#import "XPRoomRankViewController.h"
|
||||
@interface XPRoomFunctionContainerView ()
|
||||
///host 代理
|
||||
@property (nonatomic,weak) id<RoomHostDelegate>delegate;
|
||||
///房间榜
|
||||
@property (nonatomic,strong) UIButton *contributionButton;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomFunctionContainerView
|
||||
- (instancetype)initWithdelegate:(id<RoomHostDelegate>)delegate {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.delegate = delegate;
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.contributionButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.contributionButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(-12);
|
||||
make.top.mas_equalTo(statusbarHeight+57);
|
||||
make.width.mas_equalTo(90);
|
||||
make.height.mas_equalTo(26);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Event Response
|
||||
- (void)contributionButtonAction:(UIButton *)sender {
|
||||
NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid];
|
||||
XPRoomRankViewController * rankVC = [[XPRoomRankViewController alloc] initWithRoomUid:roomUid delegate:self.delegate];
|
||||
[self.delegate.getCurrentNav presentViewController:rankVC animated:YES completion:nil];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIButton *)contributionButton {
|
||||
if (!_contributionButton) {
|
||||
_contributionButton = [[UIButton alloc]init];
|
||||
[_contributionButton addTarget:self action:@selector(contributionButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
_contributionButton.backgroundColor = [UIColor colorWithWhite:0 alpha:0.2];
|
||||
[_contributionButton setTitle:@"房间榜" forState:UIControlStateNormal];
|
||||
[_contributionButton setImage:[UIImage imageNamed:@"room_rank_enter_icon"] forState:UIControlStateNormal];
|
||||
[_contributionButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
_contributionButton.titleLabel.font = [UIFont systemFontOfSize:12];
|
||||
_contributionButton.layer.cornerRadius = 13;
|
||||
_contributionButton.layer.masksToBounds = YES;
|
||||
_contributionButton.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
|
||||
_contributionButton.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
|
||||
}
|
||||
return _contributionButton;
|
||||
}
|
||||
@end
|
@@ -24,7 +24,6 @@
|
||||
#import "SessionListViewController.h"
|
||||
#import "XPRoomMoreMenuViewController.h"
|
||||
|
||||
#import "XPRoomRankViewController.h"
|
||||
|
||||
@interface XPRoomMenuContainerView ()
|
||||
///
|
||||
@@ -96,12 +95,8 @@
|
||||
}
|
||||
break;
|
||||
case XPRoomMenuItemType_More: {
|
||||
// XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initRoomInfo:self.delegate.getRoomInfo];
|
||||
// [self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
|
||||
|
||||
XPRoomRankViewController * rankVC = [[XPRoomRankViewController alloc] init];
|
||||
rankVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
||||
[self.delegate.getCurrentNav presentViewController:rankVC animated:YES completion:nil];
|
||||
XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initRoomInfo:self.delegate.getRoomInfo];
|
||||
[self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@@ -10,7 +10,21 @@
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface Api (RoomRank)
|
||||
/// 房间贡献榜
|
||||
/// @param completion 完成
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param page 当前的页数
|
||||
/// @param pageSize 一页有多少个
|
||||
/// @param type 类型 day 日榜 week 周榜 month月榜
|
||||
+ (void)roomContributeRank:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type;
|
||||
|
||||
/// 房间魅力榜
|
||||
/// @param completion 完成
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param page 当前的页数
|
||||
/// @param pageSize 一页有多少个
|
||||
/// @param type 类型 day 日榜 week 周榜 month月榜
|
||||
+ (void)roomCharmRank:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -9,4 +9,25 @@
|
||||
|
||||
@implementation Api (RoomRank)
|
||||
|
||||
/// 房间贡献榜
|
||||
/// @param completion 完成
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param page 当前的页数
|
||||
/// @param pageSize 一页有多少个
|
||||
/// @param type 类型 day 日榜 week 周榜 month月榜
|
||||
+ (void)roomContributeRank:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type {
|
||||
[self makeRequest:@"room/rankings" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, page, pageSize, type, nil];
|
||||
}
|
||||
|
||||
|
||||
/// 房间魅力榜
|
||||
/// @param completion 完成
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param page 当前的页数
|
||||
/// @param pageSize 一页有多少个
|
||||
/// @param type 类型 day 日榜 week 周榜 month月榜
|
||||
+ (void)roomCharmRank:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type {
|
||||
[self makeRequest:@"room/recive/rankings" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, page, pageSize, type, nil];
|
||||
}
|
||||
|
||||
@end
|
||||
|
30
xplan-ios/Main/Room/View/RoomRank/Model/RoomRankModel.h
Normal file
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// RoomRankModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/12/15.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
///Tool
|
||||
#import "XPEnum.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface RoomRankModel : NSObject
|
||||
///用户的uid
|
||||
@property (nonatomic,copy) NSString * uid;
|
||||
///昵称
|
||||
@property (nonatomic,copy) NSString *nick;
|
||||
///头像
|
||||
@property (nonatomic,copy) NSString *avatar;
|
||||
///性别
|
||||
@property (nonatomic,assign) GenderType gender;
|
||||
///房间send/receive钻石总数
|
||||
@property (nonatomic,copy) NSString *goldAmount;
|
||||
///erban id
|
||||
@property (nonatomic,copy) NSString *erbanNo;
|
||||
///排名
|
||||
@property (nonatomic,copy) NSString *ranking;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
12
xplan-ios/Main/Room/View/RoomRank/Model/RoomRankModel.m
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// RoomRankModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/12/15.
|
||||
//
|
||||
|
||||
#import "RoomRankModel.h"
|
||||
|
||||
@implementation RoomRankModel
|
||||
|
||||
@end
|
@@ -8,9 +8,41 @@
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
typedef NS_ENUM(NSInteger, RankListType) {
|
||||
RankListType_Day = 1,
|
||||
RankListType_Week,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, RoomDayRankType) {
|
||||
///财富榜
|
||||
RoomDayRankType_Wealth = 1,
|
||||
///魅力榜
|
||||
RoomDayRankType_Charm,
|
||||
};
|
||||
|
||||
|
||||
@interface XPRoomRankPresenter : BaseMvpPresenter
|
||||
/// 请求房间贡献榜
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param type 类型
|
||||
/// @param page 当前页数
|
||||
/// @param pageSize 一页多少个
|
||||
- (void)getRoomContributeRankList:(NSString *)roomUid
|
||||
type:(RankListType)type
|
||||
page:(int)page
|
||||
pageSize:(int)pageSize
|
||||
state:(int)state;
|
||||
|
||||
/// 请求房间贡献榜
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param type 类型
|
||||
/// @param page 当前页数
|
||||
/// @param pageSize 一页多少个
|
||||
- (void)getRoomCharmRankList:(NSString *)roomUid
|
||||
type:(RankListType)type
|
||||
page:(int)page
|
||||
pageSize:(int)pageSize
|
||||
state:(int)state;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -6,7 +6,45 @@
|
||||
//
|
||||
|
||||
#import "XPRoomRankPresenter.h"
|
||||
#import "Api+RoomRank.h"
|
||||
#import "XPRoomRankProtocol.h"
|
||||
#import "RoomRankModel.h"
|
||||
|
||||
@implementation XPRoomRankPresenter
|
||||
|
||||
|
||||
/// 请求房间贡献榜
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param type 类型
|
||||
/// @param page 当前页数
|
||||
/// @param pageSize 一页多少个
|
||||
- (void)getRoomContributeRankList:(NSString *)roomUid type:(RankListType)type page:(int)page pageSize:(int)pageSize state:(int)state {
|
||||
NSString * pageStr = [NSString stringWithFormat:@"%d", page];
|
||||
NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize];
|
||||
NSString * typeStr = type == RankListType_Day ? @"day" : @"week";
|
||||
[Api roomContributeRank:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray * array = [RoomRankModel modelsWithArray:data.data[@"rankings"]];
|
||||
[[self getView] getRoomContributeRankListSuccess:array state:state];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[[self getView] getRoomContributeRankListFailState:state];
|
||||
}] roomUid:roomUid page:pageStr pageSize:pageSizeStr type:typeStr];
|
||||
}
|
||||
|
||||
/// 请求房间贡献榜
|
||||
/// @param roomUid 房主的uid
|
||||
/// @param type 类型
|
||||
/// @param page 当前页数
|
||||
/// @param pageSize 一页多少个
|
||||
- (void)getRoomCharmRankList:(NSString *)roomUid type:(RankListType)type page:(int)page pageSize:(int)pageSize state:(int)state {
|
||||
NSString * pageStr = [NSString stringWithFormat:@"%d", page];
|
||||
NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize];
|
||||
NSString * typeStr = type == RankListType_Day ? @"day" : @"week";
|
||||
[Api roomCharmRank:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray * array = [RoomRankModel modelsWithArray:data.data[@"rankings"]];
|
||||
[[self getView] getRoomContributeRankListSuccess:array state:state];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[[self getView] getRoomCharmRankListFailState:state];
|
||||
}] roomUid:roomUid page:pageStr pageSize:pageSizeStr type:typeStr];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// XPRoomRankHostDelegate.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/12/15.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol XPRoomRankHostDelegate <NSObject>
|
||||
|
||||
///获取房主的uid
|
||||
- (NSString *)getRoomUid;
|
||||
///点击了某个用户
|
||||
- (void)didSelectUser:(NSString *)uid;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -11,6 +11,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol XPRoomRankProtocol <NSObject>
|
||||
|
||||
///获取房间贡献榜成功
|
||||
- (void)getRoomContributeRankListSuccess:(NSArray *)list state:(int)state;
|
||||
///获取房间贡献榜失败
|
||||
- (void)getRoomContributeRankListFailState:(int)state;
|
||||
///获取房间魅力榜成功
|
||||
- (void)getRoomCharmRankListSuccess:(NSArray *)list state:(int)state;
|
||||
///获取房间贡献榜失败
|
||||
- (void)getRoomCharmRankListFailState:(int)state;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -8,7 +8,7 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class RoomRankModel;
|
||||
@interface XPRoomRankEmptyTableViewCell : UITableViewCell
|
||||
|
||||
@end
|
||||
|
@@ -6,9 +6,68 @@
|
||||
//
|
||||
|
||||
#import "XPRoomRankEmptyTableViewCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "UIImageConstant.h"
|
||||
|
||||
@interface XPRoomRankEmptyTableViewCell ()
|
||||
@property (nonatomic,strong) UIImageView *emptyImageView;
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
@end
|
||||
|
||||
@implementation XPRoomRankEmptyTableViewCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.emptyImageView];
|
||||
[self.contentView addSubview:self.titleLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.contentView).offset(150);
|
||||
make.size.mas_equalTo(CGSizeMake(100, 100));
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20);
|
||||
make.left.right.mas_equalTo(self.contentView);
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIImageView *)emptyImageView {
|
||||
if (!_emptyImageView) {
|
||||
_emptyImageView = [[UIImageView alloc] init];
|
||||
_emptyImageView.userInteractionEnabled = YES;
|
||||
_emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder];
|
||||
_emptyImageView.layer.masksToBounds = YES;
|
||||
_emptyImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return _emptyImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.text = @"暂无数据";
|
||||
_titleLabel.font = [UIFont systemFontOfSize:16];
|
||||
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_titleLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
@end
|
||||
|
@@ -8,9 +8,9 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class RoomRankModel;
|
||||
@interface XPRoomRankTableViewCell : UITableViewCell
|
||||
|
||||
@property (nonatomic,strong) RoomRankModel *rankModel;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -10,11 +10,13 @@
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor+RoomRank.h"
|
||||
#import "NetImageView.h"
|
||||
#import "RoomRankModel.h"
|
||||
@interface XPRoomRankTableViewCell ()
|
||||
///排名
|
||||
@property (nonatomic, strong) UILabel *rankLabel;
|
||||
///头像
|
||||
@property (nonatomic, strong) UIImageView *avatarImageView;
|
||||
@property (nonatomic, strong) NetImageView *avatarImageView;
|
||||
///性别
|
||||
@property (nonatomic, strong) UIImageView *genderImageView;
|
||||
///昵称
|
||||
@@ -41,6 +43,7 @@
|
||||
|
||||
#pragma mark - Private
|
||||
- (void)setupSubView {
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.rankLabel];
|
||||
[self.contentView addSubview:self.avatarImageView];
|
||||
[self.contentView addSubview:self.nickNameLabel];
|
||||
@@ -57,10 +60,15 @@
|
||||
}];
|
||||
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.equalTo(@48);
|
||||
make.width.height.equalTo(@50);
|
||||
make.left.equalTo(self.rankLabel.mas_right).offset(10);
|
||||
make.centerY.equalTo(self.contentView);
|
||||
}];
|
||||
|
||||
[self.nickNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.avatarImageView.mas_right).offset(16);
|
||||
make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-1.5);
|
||||
}];
|
||||
|
||||
[self.genderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.nickNameLabel.mas_right).offset(3);
|
||||
@@ -69,7 +77,7 @@
|
||||
}];
|
||||
|
||||
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.nickNameLabel.mas_bottom).offset(8);
|
||||
make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(1.5);
|
||||
make.left.mas_equalTo(self.nickNameLabel);
|
||||
make.right.mas_lessThanOrEqualTo(self.coinNumberLabel.mas_left).offset(-10);
|
||||
}];
|
||||
@@ -81,43 +89,35 @@
|
||||
}
|
||||
|
||||
|
||||
//- (void)setHalfhourData:(RankData *)rankModel {
|
||||
// _halfhourData = rankModel;
|
||||
//
|
||||
// self.uidLabel.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo];
|
||||
//
|
||||
// self.farBeforeTipsLabel.hidden = NO;
|
||||
// self.genderImageView.hidden = YES;
|
||||
// [self.coinNumberLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
// make.centerY.mas_equalTo(self.nickNameLabel);
|
||||
// make.right.mas_equalTo(-28);
|
||||
// }];
|
||||
// [self.contentView layoutIfNeeded];
|
||||
//
|
||||
// NSString *rankImage = [NSString stringWithFormat:@"%d", rankModel.seqNo];
|
||||
// self.rankLabel.text = rankImage;
|
||||
//// self.rankImageView.image = [UIImage imageNamed:rankImage];
|
||||
//
|
||||
// NSString *numStr = [NSString stringWithFormat:@"%@",_halfhourData.totalNum];
|
||||
// if ([_halfhourData.totalNum doubleValue] > 10000) {
|
||||
// CGFloat numF = [_halfhourData.totalNum doubleValue] / 10000.0;
|
||||
// numStr = [NSString stringWithFormat:@"%.1f万",numF];
|
||||
// numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""];
|
||||
// }
|
||||
// self.coinNumberLabel.text = numStr;
|
||||
//
|
||||
// [self.avatarImageView qn_setImageImageWithUrl:rankModel.avatar placeholderImage:[XCTheme defaultTheme].default_background type:ImageTypeUserIcon];
|
||||
// self.nickNameLabel.text = [rankModel.roomTitle cleanSpecialText];
|
||||
//}
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
_avatarImageView = [[UIImageView alloc] init];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 24;
|
||||
- (void)setRankModel:(RoomRankModel *)rankModel {
|
||||
_rankModel = rankModel;
|
||||
self.idLabel.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo];
|
||||
|
||||
self.rankLabel.text = rankModel.ranking;
|
||||
|
||||
NSString *numStr = [NSString stringWithFormat:@"%@",rankModel.goldAmount];
|
||||
if (rankModel.goldAmount.doubleValue > 10000) {
|
||||
CGFloat numF = [rankModel.goldAmount doubleValue] / 10000.0;
|
||||
numStr = [NSString stringWithFormat:@"%.1f万",numF];
|
||||
numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""];
|
||||
}
|
||||
return _avatarImageView;
|
||||
self.genderImageView.image = rankModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"];
|
||||
self.coinNumberLabel.text = numStr;
|
||||
self.avatarImageView.imageUrl = rankModel.avatar;
|
||||
self.nickNameLabel.text = rankModel.nick;
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
_avatarImageView = [[NetImageView alloc] init];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 25;
|
||||
_avatarImageView.image = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_avatarImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
return _avatarImageView;;
|
||||
}
|
||||
|
||||
|
||||
- (UILabel *)rankLabel {
|
||||
if (!_rankLabel) {
|
||||
|
@@ -8,9 +8,15 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol XPRoomRankListHeaderViewDelegate <NSObject>
|
||||
|
||||
- (void)showUserCard:(NSString *)uid;
|
||||
|
||||
@end
|
||||
@interface XPRoomRankListHeaderView : UIView
|
||||
|
||||
@property (nonatomic,copy) NSArray *rankList;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPRoomRankListHeaderViewDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -6,9 +6,130 @@
|
||||
//
|
||||
|
||||
#import "XPRoomRankListHeaderView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "XPMacro.h"
|
||||
///Tool
|
||||
#import "XPRoomRankUserInfoView.h"
|
||||
///Model
|
||||
#import "RoomRankModel.h"
|
||||
@interface XPRoomRankListHeaderView ()<XPRoomRankUserInfoViewDelegate>
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///第一名
|
||||
@property (nonatomic,strong) XPRoomRankUserInfoView *firstUserView;
|
||||
///第二名
|
||||
@property (nonatomic,strong) XPRoomRankUserInfoView *secondUserView;
|
||||
///第三个
|
||||
@property (nonatomic,strong) XPRoomRankUserInfoView *thirdUserView;
|
||||
@property (nonatomic,copy) NSArray *viewArray;
|
||||
@end
|
||||
|
||||
@implementation XPRoomRankListHeaderView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomRankUserInfoViewDelegate
|
||||
- (void)didTapUserInfo:(NSString *)uid {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(showUserCard:)]) {
|
||||
[self.delegate showUserCard:uid];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.backImageView];
|
||||
[self addSubview:self.firstUserView];
|
||||
[self addSubview:self.secondUserView];
|
||||
[self addSubview:self.thirdUserView];
|
||||
self.viewArray = @[self.firstUserView, self.secondUserView, self.thirdUserView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
CGFloat kscale = (CGFloat)KScreenWidth / (CGFloat)375;
|
||||
self.frame = CGRectMake(0, 0, KScreenWidth, 200 * kscale);
|
||||
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
[self.firstUserView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self).offset(17 * kscale);
|
||||
make.width.mas_equalTo(KScreenWidth / 3);
|
||||
make.centerX.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
[self.secondUserView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self).offset(56 * kscale);
|
||||
make.width.mas_equalTo(self.firstUserView);
|
||||
make.left.mas_equalTo(self);
|
||||
}];
|
||||
|
||||
[self.thirdUserView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self).offset(55 * kscale);
|
||||
make.width.mas_equalTo(self.firstUserView);
|
||||
make.right.mas_equalTo(self);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setRankList:(NSArray *)rankList {
|
||||
for (int i = 0; i< rankList.count; i++) {
|
||||
RoomRankModel * rankModel = [rankList objectAtIndex:i];
|
||||
if (i < self.viewArray.count) {
|
||||
XPRoomRankUserInfoView * view = [self.viewArray objectAtIndex:i];
|
||||
view.rankModel = rankModel;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.image = [UIImage imageNamed:@"room_rank_high_user_bg"];
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (XPRoomRankUserInfoView *)firstUserView {
|
||||
if (!_firstUserView) {
|
||||
_firstUserView = [[XPRoomRankUserInfoView alloc] init];
|
||||
_firstUserView.type = RankUserInfoType_First;
|
||||
_firstUserView.delegate = self;
|
||||
}
|
||||
return _firstUserView;
|
||||
}
|
||||
|
||||
- (XPRoomRankUserInfoView *)secondUserView {
|
||||
if (!_secondUserView) {
|
||||
_secondUserView = [[XPRoomRankUserInfoView alloc] init];
|
||||
_secondUserView.type = RankUserInfoType_Second;
|
||||
_secondUserView.delegate = self;
|
||||
}
|
||||
return _secondUserView;
|
||||
}
|
||||
|
||||
- (XPRoomRankUserInfoView *)thirdUserView {
|
||||
if (!_thirdUserView) {
|
||||
_thirdUserView = [[XPRoomRankUserInfoView alloc] init];
|
||||
_thirdUserView.type = RankUserInfoType_Third;
|
||||
_thirdUserView.delegate = self;
|
||||
}
|
||||
return _thirdUserView;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -8,9 +8,25 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
typedef NS_ENUM(NSInteger, RankUserInfoType) {
|
||||
RankUserInfoType_First = 1,
|
||||
RankUserInfoType_Second,
|
||||
RankUserInfoType_Third,
|
||||
};
|
||||
@class RoomRankModel;
|
||||
|
||||
@protocol XPRoomRankUserInfoViewDelegate <NSObject>
|
||||
|
||||
- (void)didTapUserInfo:(NSString *)uid;
|
||||
|
||||
@end
|
||||
@interface XPRoomRankUserInfoView : UIView
|
||||
|
||||
///类型
|
||||
@property (nonatomic,assign) RankUserInfoType type;
|
||||
///数据
|
||||
@property (nonatomic,strong) RoomRankModel *rankModel;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPRoomRankUserInfoViewDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -11,6 +11,8 @@
|
||||
///Tool
|
||||
#import "NetImageView.h"
|
||||
#import "ThemeColor+RoomRank.h"
|
||||
///Model
|
||||
#import "RoomRankModel.h"
|
||||
|
||||
@interface XPRoomRankUserInfoView ()
|
||||
///皇冠
|
||||
@@ -42,6 +44,11 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
self.avatarImageView.layer.cornerRadius = self.avatarImageView.bounds.size.width / 2;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.avatarImageView];
|
||||
@@ -52,13 +59,99 @@
|
||||
|
||||
[self.stackView addArrangedSubview:self.nickLabel];
|
||||
[self.stackView addArrangedSubview:self.sexImageView];
|
||||
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(recognizer:)];
|
||||
[self addGestureRecognizer:tap];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(self.coinLabel.mas_bottom);
|
||||
}];
|
||||
|
||||
[self.crownImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.centerX.mas_equalTo(self);
|
||||
make.width.mas_equalTo(87);
|
||||
make.height.mas_equalTo(99);
|
||||
}];
|
||||
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.crownImageView).inset(6);
|
||||
make.bottom.mas_equalTo(self.crownImageView.mas_bottom).offset(-6);
|
||||
make.height.mas_equalTo(self.avatarImageView.mas_width);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.crownImageView.mas_bottom).offset(4);
|
||||
}];
|
||||
|
||||
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.stackView.mas_bottom).offset(1);
|
||||
}];
|
||||
|
||||
[self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.idLabel.mas_bottom).offset(2);
|
||||
make.left.right.mas_equalTo(self);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Event Response
|
||||
- (void)recognizer:(UITapGestureRecognizer *)tap {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didTapUserInfo:)]) {
|
||||
[self.delegate didTapUserInfo:self.rankModel.uid];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setRankModel:(RoomRankModel *)rankModel {
|
||||
_rankModel = rankModel;
|
||||
self.idLabel.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo];
|
||||
NSString *numStr = [NSString stringWithFormat:@"%@",rankModel.goldAmount];
|
||||
if (rankModel.goldAmount.doubleValue > 10000) {
|
||||
CGFloat numF = [rankModel.goldAmount doubleValue] / 10000.0;
|
||||
numStr = [NSString stringWithFormat:@"%.1f万",numF];
|
||||
numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""];
|
||||
}
|
||||
self.sexImageView.hidden = NO;
|
||||
self.sexImageView.image = rankModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"];
|
||||
self.coinLabel.text = numStr;
|
||||
self.avatarImageView.imageUrl = rankModel.avatar;
|
||||
self.nickLabel.text = rankModel.nick;
|
||||
}
|
||||
|
||||
|
||||
- (void)setType:(RankUserInfoType)type {
|
||||
NSString * crownName;
|
||||
NSString * avatarPlace;
|
||||
switch (type) {
|
||||
case RankUserInfoType_First:
|
||||
crownName = @"room_rank_crown_first";
|
||||
avatarPlace = @"room_rank_avatar_first_place";
|
||||
break;
|
||||
case RankUserInfoType_Second:
|
||||
crownName = @"room_rank_crown_second";
|
||||
avatarPlace = @"room_rank_avatar_second_place";
|
||||
break;
|
||||
case RankUserInfoType_Third:
|
||||
crownName = @"room_rank_crown_third";
|
||||
avatarPlace = @"room_rank_avatar_third_place";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (crownName.length >0) {
|
||||
self.crownImageView.image = [UIImage imageNamed:crownName];
|
||||
}
|
||||
|
||||
if (avatarPlace.length > 0) {
|
||||
self.avatarImageView.image = [UIImage imageNamed:avatarPlace];
|
||||
}
|
||||
self.sexImageView.hidden = YES;
|
||||
}
|
||||
|
||||
- (UIImageView *)crownImageView {
|
||||
if (!_crownImageView) {
|
||||
_crownImageView = [[UIImageView alloc] init];
|
||||
@@ -71,7 +164,6 @@
|
||||
if (!_avatarImageView) {
|
||||
_avatarImageView = [[NetImageView alloc] init];
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 12;
|
||||
_avatarImageView.image = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_avatarImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
}
|
||||
@@ -94,6 +186,8 @@
|
||||
_nickLabel = [[UILabel alloc] init];
|
||||
_nickLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_nickLabel.font = [UIFont systemFontOfSize:14];
|
||||
_nickLabel.text = @"虚位以待";
|
||||
_nickLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_nickLabel.textColor = [ThemeColor mainTextColor];
|
||||
}
|
||||
return _nickLabel;
|
||||
|
@@ -7,20 +7,20 @@
|
||||
|
||||
#import "BaseViewController.h"
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
#import "XPRoomRankHostDelegate.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSInteger, RoomDayRankType) {
|
||||
///财富榜
|
||||
RoomDayRankType_Wealth = 1,
|
||||
typedef NS_ENUM(NSInteger, RoomRankType) {
|
||||
///贡献榜
|
||||
RoomRankType_Contribute = 1,
|
||||
///魅力榜
|
||||
RoomDayRankType_Charm,
|
||||
RoomRankType_Charm,
|
||||
};
|
||||
|
||||
@interface XPRoomDayRankViewController : BaseViewController<JXCategoryListContentViewDelegate>
|
||||
|
||||
///类型
|
||||
@property (nonatomic,assign) RoomDayRankType dayType;
|
||||
|
||||
@property (nonatomic,assign) RoomRankType type;
|
||||
- (instancetype)initWithDelegate:(id<XPRoomRankHostDelegate>)delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -25,10 +25,19 @@
|
||||
@property (nonatomic,strong) XPRoomRankListViewController *dayRankView;
|
||||
///周榜
|
||||
@property (nonatomic,strong) XPRoomRankListViewController *weekRankView;
|
||||
@property (nonatomic,weak) id<XPRoomRankHostDelegate> hostDelegate;
|
||||
@end
|
||||
|
||||
@implementation XPRoomDayRankViewController
|
||||
|
||||
- (instancetype)initWithDelegate:(id<XPRoomRankHostDelegate>)delegate; {
|
||||
if (self = [super init]) {
|
||||
self.hostDelegate = delegate;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
@@ -49,9 +58,12 @@
|
||||
if (index == 0) {
|
||||
return self.dayRankView;
|
||||
}
|
||||
return self.weekRankView;
|
||||
return self.weekRankView;
|
||||
}
|
||||
|
||||
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
||||
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.view.backgroundColor = [UIColor clearColor];
|
||||
@@ -114,16 +126,18 @@
|
||||
|
||||
- (XPRoomRankListViewController *)dayRankView {
|
||||
if (!_dayRankView) {
|
||||
_dayRankView = [[XPRoomRankListViewController alloc] init];
|
||||
_dayRankView.type = RankListType_Day;
|
||||
_dayRankView = [[XPRoomRankListViewController alloc] initWithDelegate:self.hostDelegate];
|
||||
_dayRankView.type = self.type;
|
||||
_dayRankView.listType = RankListType_Day;
|
||||
}
|
||||
return _dayRankView;
|
||||
}
|
||||
|
||||
- (XPRoomRankListViewController *)weekRankView {
|
||||
if (!_weekRankView) {
|
||||
_weekRankView = [[XPRoomRankListViewController alloc] init];
|
||||
_weekRankView.type = RankListType_Week;
|
||||
_weekRankView = [[XPRoomRankListViewController alloc] initWithDelegate:self.hostDelegate];
|
||||
_weekRankView.type = self.type;
|
||||
_weekRankView.listType = RankListType_Week;
|
||||
}
|
||||
return _weekRankView;
|
||||
}
|
||||
|
@@ -7,18 +7,17 @@
|
||||
|
||||
#import "MvpViewController.h"
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
#import "XPRoomRankPresenter.h"
|
||||
#import "XPRoomDayRankViewController.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSInteger, RankListType) {
|
||||
RankListType_Day = 1,
|
||||
RankListType_Week,
|
||||
};
|
||||
|
||||
@interface XPRoomRankListViewController : MvpViewController<JXCategoryListContentViewDelegate>
|
||||
|
||||
///类型
|
||||
@property (nonatomic,assign) RankListType type;
|
||||
|
||||
- (instancetype)initWithDelegate:(id<XPRoomRankHostDelegate>)delegate;
|
||||
///日榜 周榜
|
||||
@property (nonatomic,assign) RankListType listType;
|
||||
///贡献榜 魅力榜
|
||||
@property (nonatomic,assign) RoomRankType type;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -8,21 +8,49 @@
|
||||
#import "XPRoomRankListViewController.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <MJRefresh/MJRefresh.h>
|
||||
///Tool
|
||||
#import "ThemeColor+RoomRank.h"
|
||||
///Model
|
||||
#import "RoomRankModel.h"
|
||||
///View
|
||||
#import "XPRoomRankTableViewCell.h"
|
||||
#import "XPRoomRankEmptyTableViewCell.h"
|
||||
#import "XPRoomRankListHeaderView.h"
|
||||
///P
|
||||
#import "XPRoomRankPresenter.h"
|
||||
#import "XPRoomRankProtocol.h"
|
||||
|
||||
@interface XPRoomRankListViewController ()<UITableViewDataSource, UITableViewDelegate>
|
||||
@interface XPRoomRankListViewController ()<UITableViewDataSource, UITableViewDelegate,XPRoomRankProtocol, XPRoomRankListHeaderViewDelegate>
|
||||
///列表
|
||||
@property (nonatomic,strong) UITableView *tableView;
|
||||
///数据源
|
||||
@property (nonatomic,strong) NSMutableArray *datasource;
|
||||
///顶部视图
|
||||
@property (nonatomic,strong) XPRoomRankListHeaderView *headerView;
|
||||
///页数
|
||||
@property (nonatomic,assign) int page;
|
||||
@property (nonatomic,weak) id<XPRoomRankHostDelegate> hostDelegate;
|
||||
///是否有更多数据
|
||||
@property (nonatomic,assign) BOOL hasNoMoreData;
|
||||
@end
|
||||
|
||||
@implementation XPRoomRankListViewController
|
||||
|
||||
- (instancetype)initWithDelegate:(id<XPRoomRankHostDelegate>)delegate {
|
||||
if (self = [super init]) {
|
||||
self.hostDelegate = delegate;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (XPRoomRankPresenter *)createPresenter {
|
||||
return [[XPRoomRankPresenter alloc] init];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initHeaderAndFooterRrfresh];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
@@ -31,6 +59,7 @@
|
||||
- (void)initSubViews {
|
||||
self.view.backgroundColor = [UIColor whiteColor];
|
||||
[self.view addSubview:self.tableView];
|
||||
self.tableView.tableHeaderView = self.headerView;
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -39,6 +68,113 @@
|
||||
}];
|
||||
}
|
||||
|
||||
- (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;
|
||||
}
|
||||
|
||||
#pragma mark - 刷新的fangfa
|
||||
- (void)headerRefresh {
|
||||
NSString * roomUid = self.hostDelegate.getRoomUid;
|
||||
[self.tableView.mj_header beginRefreshing];
|
||||
self.page = 1;
|
||||
if (self.type == RoomRankType_Contribute) {
|
||||
[self.presenter getRoomContributeRankList:roomUid type:self.listType page:self.page pageSize:20 state:0];
|
||||
} else {
|
||||
[self.presenter getRoomCharmRankList:roomUid type:self.listType page:self.page pageSize:20 state:0];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)footerRefresh {
|
||||
if (self.hasNoMoreData) {
|
||||
[self showErrorToast:@"没有更多数据了"];
|
||||
return;
|
||||
}
|
||||
self.page++;
|
||||
NSString * roomUid = self.hostDelegate.getRoomUid;
|
||||
if (self.type == RoomRankType_Contribute) {
|
||||
[self.presenter getRoomContributeRankList:roomUid type:self.listType page:self.page pageSize:20 state:1];
|
||||
} else {
|
||||
[self.presenter getRoomCharmRankList:roomUid type:self.listType page:self.page pageSize:20 state:1];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomRankProtocol
|
||||
- (void)getRoomCharmRankListFailState:(int)state {
|
||||
[self.tableView.mj_header endRefreshing];
|
||||
[self.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
|
||||
- (void)getRoomCharmRankListSuccess:(NSArray *)list state:(int)state {
|
||||
NSMutableArray * originArray;
|
||||
if (state == 0) {
|
||||
originArray = [NSMutableArray array];
|
||||
[self.tableView.mj_header endRefreshing];
|
||||
} else {
|
||||
[self.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
if (list.count > 0) {
|
||||
self.hasNoMoreData = NO;
|
||||
[self.datasource addObjectsFromArray:list];
|
||||
} else {
|
||||
self.hasNoMoreData = YES;
|
||||
[self.tableView.mj_footer endRefreshingWithNoMoreData];
|
||||
}
|
||||
[self handleRoomRankList:originArray state:state];
|
||||
}
|
||||
|
||||
- (void)getRoomContributeRankListFailState:(int)state {
|
||||
[self.tableView.mj_header endRefreshing];
|
||||
[self.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
|
||||
- (void)getRoomContributeRankListSuccess:(NSArray *)list state:(int)state {
|
||||
NSMutableArray * originArray;
|
||||
if (state == 0) {
|
||||
originArray = [NSMutableArray array];
|
||||
[self.tableView.mj_header endRefreshing];
|
||||
} else {
|
||||
[self.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
if (list.count > 0) {
|
||||
self.hasNoMoreData = NO;
|
||||
[originArray addObjectsFromArray:list];
|
||||
} else {
|
||||
self.hasNoMoreData = YES;
|
||||
[self.tableView.mj_footer endRefreshingWithNoMoreData];
|
||||
}
|
||||
[self handleRoomRankList:originArray state:state];
|
||||
}
|
||||
|
||||
- (void)handleRoomRankList:(NSMutableArray *)array state:(int)state {
|
||||
if (array.count <= 3) {
|
||||
self.headerView.rankList = array;
|
||||
} else {
|
||||
if (state == 0) {
|
||||
NSArray * headArray = [array subarrayWithRange:NSMakeRange(0, 3)];
|
||||
self.headerView.rankList = headArray;
|
||||
[array removeObjectsInArray:headArray];
|
||||
self.datasource = array;
|
||||
} else {
|
||||
[self.datasource addObjectsFromArray:array];
|
||||
}
|
||||
}
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomRankListHeaderView
|
||||
- (void)showUserCard:(NSString *)uid {
|
||||
[self.hostDelegate didSelectUser:uid];
|
||||
}
|
||||
#pragma mark - JXCategoryListContentViewDelegate
|
||||
- (UIView *)listView {
|
||||
return self.view;
|
||||
@@ -59,6 +195,7 @@
|
||||
if (cell == nil) {
|
||||
cell = [[XPRoomRankTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRankTableViewCell class])];
|
||||
}
|
||||
cell.rankModel = [self.datasource objectAtIndex:indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
|
||||
@@ -69,7 +206,20 @@
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
if (self.datasource.count > 0) {
|
||||
RoomRankModel * model = [self.datasource objectAtIndex:indexPath.row];
|
||||
[self.hostDelegate didSelectUser:model.uid];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setListType:(RankListType)listType {
|
||||
_listType = listType;
|
||||
[self headerRefresh];
|
||||
}
|
||||
|
||||
- (UITableView *)tableView {
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
|
||||
@@ -86,6 +236,14 @@
|
||||
return _tableView;
|
||||
}
|
||||
|
||||
- (XPRoomRankListHeaderView *)headerView {
|
||||
if (!_headerView) {
|
||||
_headerView = [[XPRoomRankListHeaderView alloc] init];
|
||||
_headerView.delegate = self;
|
||||
}
|
||||
return _headerView;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -6,10 +6,11 @@
|
||||
//
|
||||
|
||||
#import "BaseViewController.h"
|
||||
|
||||
#import "RoomHostDelegate.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPRoomRankViewController : BaseViewController
|
||||
///本来只需要一个roomUid的 但是列表中 需要点击用户 展示用户卡片 用户卡片需要的内容 需要hostDelegate 提供 要么传出去 要么传进来
|
||||
- (instancetype)initWithRoomUid:(NSString *)roomUid delegate:(id<RoomHostDelegate>)delegate;;
|
||||
|
||||
@end
|
||||
|
||||
|
@@ -13,9 +13,15 @@
|
||||
///Tool
|
||||
#import "ThemeColor+RoomRank.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "MicroQueueModel.h"
|
||||
#import "UserInfoModel.h"
|
||||
#import "MicroStateModel.h"
|
||||
#import "RoomInfoModel.h"
|
||||
///View
|
||||
#import "XPRoomDayRankViewController.h"
|
||||
@interface XPRoomRankViewController ()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate>
|
||||
#import "XPUserCardViewController.h"
|
||||
@interface XPRoomRankViewController ()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate, XPRoomRankHostDelegate>
|
||||
///顶部的View
|
||||
@property (nonatomic,strong) UIView * topView;
|
||||
///显示内容的
|
||||
@@ -32,10 +38,24 @@
|
||||
@property (nonatomic,strong) XPRoomDayRankViewController *wealthRankVC;
|
||||
///魅力榜
|
||||
@property (nonatomic,strong) XPRoomDayRankViewController *charmRankVC;
|
||||
///房间的uid
|
||||
@property (nonatomic,copy) NSString *roomUid;
|
||||
///host
|
||||
@property (nonatomic,weak) id<RoomHostDelegate>hostDelegate;
|
||||
@end
|
||||
|
||||
@implementation XPRoomRankViewController
|
||||
|
||||
- (instancetype)initWithRoomUid:(NSString *)roomUid delegate:(id<RoomHostDelegate>)delegate; {
|
||||
if (self = [super init]) {
|
||||
self.roomUid = roomUid;
|
||||
self.hostDelegate = delegate;
|
||||
self.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
@@ -54,6 +74,36 @@
|
||||
return self.charmRankVC;
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomRankHostDelegate
|
||||
- (NSString *)getRoomUid {
|
||||
return self.roomUid;
|
||||
}
|
||||
|
||||
- (void)didSelectUser:(NSString *)uid {
|
||||
if (uid.integerValue <=0) return;
|
||||
[self dismissViewControllerAnimated:YES completion:nil];
|
||||
RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo;
|
||||
NSString * targetUid = uid;
|
||||
XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init];
|
||||
[[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if (uid.integerValue == obj.userInfo.uid) {
|
||||
model.position = [NSString stringWithFormat:@"%d", obj.microState.position];
|
||||
model.posState = (UserCardMicroPosStateType)obj.microState.posState;
|
||||
model.micState = (UserCardMicroMicStateType)obj.microState.micState;
|
||||
*stop = YES;
|
||||
}
|
||||
}];
|
||||
model.uid = targetUid;
|
||||
model.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
|
||||
model.leaveMode = roomInfo.leaveMode;
|
||||
model.showGiftValue = roomInfo.showGiftValue;
|
||||
model.avatar = roomInfo.avatar;
|
||||
model.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
|
||||
model.nick = self.hostDelegate.getUserInfo.nick;
|
||||
model.delegate = self.hostDelegate;
|
||||
XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model];
|
||||
[self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil];
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.view.backgroundColor = [UIColor clearColor];
|
||||
@@ -73,7 +123,7 @@
|
||||
|
||||
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.bottom.right.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(500);
|
||||
make.height.mas_equalTo(550);
|
||||
}];
|
||||
|
||||
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
@@ -170,16 +220,16 @@
|
||||
|
||||
- (XPRoomDayRankViewController *)charmRankVC {
|
||||
if (!_charmRankVC) {
|
||||
_charmRankVC = [[XPRoomDayRankViewController alloc] init];
|
||||
_charmRankVC.dayType = RoomDayRankType_Charm;
|
||||
_charmRankVC = [[XPRoomDayRankViewController alloc] initWithDelegate:self];
|
||||
_charmRankVC.type = RoomRankType_Charm;
|
||||
}
|
||||
return _charmRankVC;
|
||||
}
|
||||
|
||||
- (XPRoomDayRankViewController *)wealthRankVC {
|
||||
if (!_wealthRankVC) {
|
||||
_wealthRankVC = [[XPRoomDayRankViewController alloc] init];
|
||||
_wealthRankVC.dayType = RoomDayRankType_Wealth;
|
||||
_wealthRankVC = [[XPRoomDayRankViewController alloc] initWithDelegate:self];
|
||||
_wealthRankVC.type = RoomRankType_Contribute;
|
||||
}
|
||||
return _wealthRankVC;
|
||||
}
|
||||
|
@@ -28,6 +28,7 @@
|
||||
#import "RoomHeaderView.h"
|
||||
#import "SocialStageView.h"
|
||||
#import "XPRoomAnimationView.h"
|
||||
#import "XPRoomFunctionContainerView.h"
|
||||
///P
|
||||
#import "XPRoomPresenter.h"
|
||||
#import "XPRoomProtocol.h"
|
||||
@@ -50,6 +51,8 @@
|
||||
@property (nonatomic,strong) XPRoomActivityContainerView *activityContainerView;
|
||||
///动画的view
|
||||
@property (nonatomic,strong) XPRoomAnimationView *animationView;
|
||||
///功能view的的容器
|
||||
@property (nonatomic,strong) XPRoomFunctionContainerView *functionView;
|
||||
///房间的Uid
|
||||
@property (nonatomic,copy) NSString * roomUid;
|
||||
///用户信息
|
||||
@@ -108,6 +111,7 @@
|
||||
[self.view addSubview:self.messageContainerView];
|
||||
[self.view addSubview:self.menuContainerView];
|
||||
[self.view addSubview:self.activityContainerView];
|
||||
[self.view addSubview:self.functionView];
|
||||
[self.view addSubview:self.animationView];
|
||||
}
|
||||
|
||||
@@ -149,6 +153,10 @@
|
||||
[self.animationView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self.view);
|
||||
}];
|
||||
|
||||
[self.functionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self.view);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)exitOldRoom {
|
||||
@@ -384,4 +392,11 @@
|
||||
return _animationView;
|
||||
}
|
||||
|
||||
- (XPRoomFunctionContainerView *)functionView {
|
||||
if (!_functionView) {
|
||||
_functionView = [[XPRoomFunctionContainerView alloc] initWithdelegate:self];
|
||||
}
|
||||
return _functionView;
|
||||
}
|
||||
|
||||
@end
|
||||
|