diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index 6de1d20c..265f912f 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -760,6 +760,8 @@ E8B846D626FDE01B00A777FE /* XPMineRechargePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D526FDE01B00A777FE /* XPMineRechargePresenter.m */; }; E8B846D826FDE17300A777FE /* XPMineRechargeProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */; }; E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846DB26FDE24300A777FE /* RechargeListModel.m */; }; + E8BD0F8828A9E9E400DE050D /* RoomSailingPrizeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8BD0F8728A9E9E400DE050D /* RoomSailingPrizeModel.m */; }; + E8BD0F8B28A9EB0A00DE050D /* RoomSailingPrizeListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8BD0F8A28A9EB0A00DE050D /* RoomSailingPrizeListModel.m */; }; E8C1670928067DAA00ECB15C /* XPMineGuildSuperAdminSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1670828067DAA00ECB15C /* XPMineGuildSuperAdminSetViewController.m */; }; E8C1670C28067DED00ECB15C /* XPMineGuildChooseManagerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1670B28067DED00ECB15C /* XPMineGuildChooseManagerViewController.m */; }; E8C1671228067F6C00ECB15C /* XPGuildChooseManagerRoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1671128067F6C00ECB15C /* XPGuildChooseManagerRoomTableViewCell.m */; }; @@ -2435,6 +2437,10 @@ E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechargeProtocol.h; sourceTree = ""; }; E8B846DA26FDE24300A777FE /* RechargeListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RechargeListModel.h; sourceTree = ""; }; E8B846DB26FDE24300A777FE /* RechargeListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RechargeListModel.m; sourceTree = ""; }; + E8BD0F8628A9E9E400DE050D /* RoomSailingPrizeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomSailingPrizeModel.h; sourceTree = ""; }; + E8BD0F8728A9E9E400DE050D /* RoomSailingPrizeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomSailingPrizeModel.m; sourceTree = ""; }; + E8BD0F8928A9EB0A00DE050D /* RoomSailingPrizeListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomSailingPrizeListModel.h; sourceTree = ""; }; + E8BD0F8A28A9EB0A00DE050D /* RoomSailingPrizeListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomSailingPrizeListModel.m; sourceTree = ""; }; E8C1670728067DAA00ECB15C /* XPMineGuildSuperAdminSetViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGuildSuperAdminSetViewController.h; sourceTree = ""; }; E8C1670828067DAA00ECB15C /* XPMineGuildSuperAdminSetViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildSuperAdminSetViewController.m; sourceTree = ""; }; E8C1670A28067DED00ECB15C /* XPMineGuildChooseManagerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGuildChooseManagerViewController.h; sourceTree = ""; }; @@ -5380,7 +5386,6 @@ E8751E5528A62A1D0056EF44 /* Api */, E8751E5428A62A150056EF44 /* View */, E8751E5328A62A0E0056EF44 /* Presenter */, - E8751E5228A62A010056EF44 /* Protocol */, ); path = Sailing; sourceTree = ""; @@ -5398,6 +5403,7 @@ children = ( E8751E5D28A62A970056EF44 /* XPSailingPresenter.h */, E8751E5E28A62A970056EF44 /* XPSailingPresenter.m */, + E8751E5228A62A010056EF44 /* Protocol */, ); path = Presenter; sourceTree = ""; @@ -5433,6 +5439,10 @@ E8751E7028A6541B0056EF44 /* RoomSailingRankModel.m */, E8751E7228A665BC0056EF44 /* RoomSailingInfoModel.h */, E8751E7328A665BC0056EF44 /* RoomSailingInfoModel.m */, + E8BD0F8928A9EB0A00DE050D /* RoomSailingPrizeListModel.h */, + E8BD0F8A28A9EB0A00DE050D /* RoomSailingPrizeListModel.m */, + E8BD0F8628A9E9E400DE050D /* RoomSailingPrizeModel.h */, + E8BD0F8728A9E9E400DE050D /* RoomSailingPrizeModel.m */, ); path = Model; sourceTree = ""; @@ -7702,6 +7712,7 @@ E8788942273A55AD00BF1D57 /* XPGiftUsersView.m in Sources */, 9B8585D3278837CE00D7D5C6 /* NobleLevelUpModel.m in Sources */, 9BD9A17927A0EC57004186FE /* XPMineVisitorPresenter.m in Sources */, + E8BD0F8828A9E9E400DE050D /* RoomSailingPrizeModel.m in Sources */, E8659909273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m in Sources */, E8B846CB26FDD7CD00A777FE /* XPMineRechargeViewController.m in Sources */, E86596512701A1C000846EBD /* StatisticsService.m in Sources */, @@ -7964,6 +7975,7 @@ 9B1B72BF2800422E003FACE9 /* XPAnchorPKRuleView.m in Sources */, 9BE01AE428937EDE00B50299 /* XPDressUpShopCollectionViewCell.m in Sources */, 186A534B26FC6ED900D67B2C /* TTPopupManagerService.m in Sources */, + E8BD0F8B28A9EB0A00DE050D /* RoomSailingPrizeListModel.m in Sources */, E8834E35280009090029CCC1 /* XPMineGuildSearchMemberTableViewCell.m in Sources */, 18E7B1B226E8AF980064BC9B /* MainPresenter.m in Sources */, E81366F626F0C0DF0076364C /* LoginFullInfoPresenter.m in Sources */, diff --git a/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.h b/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.h index 76bb33c0..ba31fe18 100644 --- a/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.h +++ b/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.h @@ -21,6 +21,14 @@ NS_ASSUME_NONNULL_BEGIN /// @param completion 完成 /// @param uid 用户的uid + (void)getSailingInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; + +/// 开始航海 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param keyNum 燃料数 +/// @param sendMessage 是否发消息 +/// @param roomUid 房间的uid ++ (void)openSailing:(HttpRequestHelperCompletion)completion uid:(NSString *)uid keyNum:(NSString *)keyNum sendMessage:(NSString *)sendMessage roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.m b/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.m index ae2b95d3..bc27ae22 100644 --- a/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.m +++ b/xplan-ios/Main/Room/View/Sailing/Api/Api+Sailing.m @@ -27,4 +27,15 @@ [self makeRequest:@"linearlyPool/userkey" method:HttpRequestHelperMethodGET completion:completion, uid, nil]; } + +/// 开始航海 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param keyNum 燃料数 +/// @param sendMessage 是否发消息 +/// @param roomUid 房间的uid ++ (void)openSailing:(HttpRequestHelperCompletion)completion uid:(NSString *)uid keyNum:(NSString *)keyNum sendMessage:(NSString *)sendMessage roomUid:(NSString *)roomUid { + [self makeRequest:@"" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, uid, keyNum, sendMessage, roomUid, nil]; +} + @end diff --git a/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingInfoModel.h b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingInfoModel.h index 61711972..054b3401 100644 --- a/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingInfoModel.h +++ b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingInfoModel.h @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @interface RoomSailingInfoModel : NSObject ///燃料的个数 -@property (nonatomic, assign) int keyNum; +@property (nonatomic, assign) NSInteger keyNum; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeListModel.h b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeListModel.h new file mode 100644 index 00000000..65cf6580 --- /dev/null +++ b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeListModel.h @@ -0,0 +1,19 @@ +// +// RoomSailingPrizeListModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/8/15. +// + +#import +#import "RoomSailingPrizeModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface RoomSailingPrizeListModel : NSObject +///奖品的数组 +@property (nonatomic,strong) NSArray *prizeItemList; +///剩余钥匙数 +@property (nonatomic,assign) NSInteger remainKeyNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeListModel.m b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeListModel.m new file mode 100644 index 00000000..7fcecb37 --- /dev/null +++ b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeListModel.m @@ -0,0 +1,15 @@ +// +// RoomSailingPrizeListModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/8/15. +// + +#import "RoomSailingPrizeListModel.h" + +@implementation RoomSailingPrizeListModel ++ (NSDictionary *)objectClassInArray { + return @{@"prizeItemList": RoomSailingPrizeModel.class}; +} + +@end diff --git a/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeModel.h b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeModel.h new file mode 100644 index 00000000..a90e5d91 --- /dev/null +++ b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeModel.h @@ -0,0 +1,45 @@ +// +// RoomSailingPrizeModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/8/15. +// + +#import + + +typedef enum : NSUInteger { + SailingPrizeLevelOne=1, + SailingPrizeLevelTwo, + SailingPrizeLevelThree, + SailingPrizeLevelFour, +} SailingPrizeLevel; + +//奖品类型。1-萌币,2-礼物,3-座驾,4-头饰,5-背景,6-实物,7-靓号,8-全麦礼物 +typedef NS_ENUM(NSUInteger, SailingPrizeType) { + SailingPrizeType_Gold = 1, + SailingPrizeType_Gift, + SailingPrizeType_Car, + SailingPrizeType_Headwear, + SailingPrizeType_Background, + SailingPrizeType_Matter, + SailingPrizeType_Beautif, + SailingPrizeType_WholeServer + +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomSailingPrizeModel : NSObject +@property (nonatomic, copy) NSString *prizeName;//奖品名称 +@property (nonatomic, copy) NSString *prizeImgUrl;//奖品icon +@property (nonatomic, assign) SailingPrizeType prizeType;//奖品类型 +@property (nonatomic, copy) NSString *prizeTypeDesc;//奖品类型描述 +@property (nonatomic, assign) int prizeNum;//奖品数量 +@property (nonatomic, assign) CGFloat platformValue;//价格 +@property (nonatomic, assign) SailingPrizeLevel prizeLevel;//奖品等级 +@property (nonatomic, assign) NSInteger referenceId;//相关实体id +@property (nonatomic, assign) NSInteger prizeId;//奖品id +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeModel.m b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeModel.m new file mode 100644 index 00000000..8d057050 --- /dev/null +++ b/xplan-ios/Main/Room/View/Sailing/Model/RoomSailingPrizeModel.m @@ -0,0 +1,12 @@ +// +// RoomSailingPrizeModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/8/15. +// + +#import "RoomSailingPrizeModel.h" + +@implementation RoomSailingPrizeModel + +@end diff --git a/xplan-ios/Main/Room/View/Sailing/Presenter/Protocol/XPSailingProtocol.h b/xplan-ios/Main/Room/View/Sailing/Presenter/Protocol/XPSailingProtocol.h new file mode 100644 index 00000000..5854556c --- /dev/null +++ b/xplan-ios/Main/Room/View/Sailing/Presenter/Protocol/XPSailingProtocol.h @@ -0,0 +1,21 @@ +// +// XPSailingProtocol.h +// xplan-ios +// +// Created by 冯硕 on 2022/8/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomSailingInfoModel, RoomSailingPrizeListModel; +@protocol XPSailingProtocol +///获取航海的信息成功 +- (void)getSailingInfoSuccess:(RoomSailingInfoModel *)info; +///开启一个探索成功 +- (void)openSailingSuccess:(RoomSailingPrizeListModel *)model; +///探索一次失败 +- (void)openSailingFail:(NSString *)message; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.h b/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.h index caa7da68..65875fcd 100644 --- a/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.h +++ b/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.h @@ -10,7 +10,11 @@ NS_ASSUME_NONNULL_BEGIN @interface XPSailingPresenter : BaseMvpPresenter +/// 获取航海信息 +- (void)getSailingInfo; +///开始探索 +- (void)openSailing:(NSString *)roomUid sendMessage:(BOOL)sendMessage keyNum:(NSInteger)keyNum; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.m b/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.m index 6fced5f1..c70f31a0 100644 --- a/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.m +++ b/xplan-ios/Main/Room/View/Sailing/Presenter/XPSailingPresenter.m @@ -6,7 +6,34 @@ // #import "XPSailingPresenter.h" +#import "Api+Sailing.h" +#import "AccountInfoStorage.h" +#import "RoomSailingInfoModel.h" +#import "RoomSailingPrizeListModel.h" +#import "XPSailingProtocol.h" @implementation XPSailingPresenter +/// 获取航海信息 +- (void)getSailingInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getSailingInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomSailingInfoModel * info = [RoomSailingInfoModel modelWithDictionary:data.data]; + [[self getView] getSailingInfoSuccess:info]; + }] uid:uid]; +} + +///开始探索 +- (void)openSailing:(NSString *)roomUid sendMessage:(BOOL)sendMessage keyNum:(NSInteger)keyNum { + NSString * keyNumStr = [NSString stringWithFormat:@"%ld", keyNum]; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * sendMessageStr = [NSString stringWithFormat:@"%d", sendMessage]; + [Api openSailing:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomSailingPrizeListModel * listModel = [RoomSailingPrizeListModel modelWithDictionary:data.data]; + [[self getView] openSailingSuccess:listModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] openSailingFail:msg]; + } showLoading:YES] uid:uid keyNum:keyNumStr sendMessage:sendMessageStr roomUid:roomUid]; +} + @end diff --git a/xplan-ios/Main/Room/View/Sailing/Protocol/XPSailingProtocol.h b/xplan-ios/Main/Room/View/Sailing/Protocol/XPSailingProtocol.h deleted file mode 100644 index eaebd06f..00000000 --- a/xplan-ios/Main/Room/View/Sailing/Protocol/XPSailingProtocol.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPSailingProtocol.h -// xplan-ios -// -// Created by 冯硕 on 2022/8/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol XPSailingProtocol - -@end - -NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.h b/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.h index e81fe61d..bc3b3b51 100644 --- a/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.h +++ b/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.h @@ -5,12 +5,11 @@ // Created by 冯硕 on 2022/8/12. // -#import "BaseViewController.h" - +#import "MvpViewController.h" NS_ASSUME_NONNULL_BEGIN -@interface XPSailingViewController : BaseViewController - +@interface XPSailingViewController : MvpViewController +- (instancetype)initWithRoomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.m b/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.m index f3296764..477f6c19 100644 --- a/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.m +++ b/xplan-ios/Main/Room/View/Sailing/View/XPSailingViewController.m @@ -8,17 +8,24 @@ #import "XPSailingViewController.h" ///Third #import +#import ///Tool #import "ThemeColor.h" #import "XPMacro.h" #import "TTPopup.h" #import "XPHtmlUrl.h" +///Model +#import "RoomSailingInfoModel.h" +#import "RoomSailingPrizeListModel.h" +#import "AttachmentModel.h" ///View #import "XPSailingRankView.h" #import "XPRoomHalfWebView.h" +///P +#import "XPSailingPresenter.h" +#import "XPSailingProtocol.h" - -@interface XPSailingViewController () +@interface XPSailingViewController () ///顶部的View @property (nonatomic,strong) UIView * topView; ///背景图 @@ -48,10 +55,30 @@ ///消耗燃油 @property (nonatomic,strong) UILabel *consumLabel; @property (nonatomic,assign) NSInteger exploreCount; +///航海的信息 +@property (nonatomic,strong) RoomSailingInfoModel *sailingInfo; +///房主的uid +@property (nonatomic,strong) NSString *roomUid; @end @implementation XPSailingViewController +- (void)dealloc { + [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; +} + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + } + return self; +} + +- (__kindof id)createPresenter { + return [[XPSailingPresenter alloc] init]; +} + - (void)viewDidLoad { [super viewDidLoad]; [self initSubViews]; @@ -158,6 +185,24 @@ }]; } +#pragma mark - XPSailingProtocol +- (void)getSailingInfoSuccess:(RoomSailingInfoModel *)info { + self.sailingInfo = info; + NSString * fuleStr = [NSString stringWithFormat:@"%ld", info.keyNum]; + [self.fuleButton setTitle:fuleStr forState:UIControlStateNormal]; +} + +- (void)openSailingSuccess:(RoomSailingPrizeListModel *)model { + self.sailingInfo.keyNum = model.remainKeyNum; + NSString * fuleStr = [NSString stringWithFormat:@"%ld", self.sailingInfo.keyNum]; + [self.fuleButton setTitle:fuleStr forState:UIControlStateNormal]; + self.exploreButton.userInteractionEnabled = YES; +} + +- (void)openSailingFail:(NSString *)message { + self.exploreButton.userInteractionEnabled = YES; +} + #pragma mark - Event Response - (void)dismissView { [self dismissViewControllerAnimated:YES completion:nil]; @@ -197,7 +242,22 @@ } - (void)exploreButtonAction:(UIButton *)sender { + if (self.exploreCount > self.sailingInfo.keyNum) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = @"参与活动获得燃料"; + config.confirmButtonConfig.title = @"去参与"; + config.cancelButtonConfig.title = @"取消"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self getFuleButtonAction:self.getFuleButton]; + } cancelHandler:^{ + }]; + } else { + NSString * roomUid = [NSString stringWithFormat:@""]; + [self.presenter openSailing:roomUid sendMessage:YES keyNum:self.exploreCount]; + self.exploreButton.userInteractionEnabled = NO; + } } - (void)textFiledDidChange:(UITextField *)textFiled { @@ -214,6 +274,18 @@ self.exploreCount = textFiled.text.integerValue; } +#pragma mark - NIMSystemNotificationManagerDelegate +- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { + if (notification.receiverType == NIMSessionTypeP2P) { + AttachmentModel *attachment = [AttachmentModel modelWithJSON:notification.content]; + if (attachment.first == CustomMessageType_Account && attachment.second == Custom_Message_Sub_Account_Changed){ + if (attachment.second == Custom_Message_Sub_Account_Changed) { + [self.presenter getSailingInfo]; + } + } + } +} + #pragma mark - Getters And Setters - (void)setExploreCount:(NSInteger)exploreCount { _exploreCount = exploreCount;