From acf568b8b51e4eed72f368809715b9dd6d832e99 Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Fri, 25 Aug 2023 14:48:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mine_game_pay_btn@2x.png | Bin 1020 -> 0 bytes .../mine_game_pay_btn@3x.png | Bin 2285 -> 0 bytes .../Contents.json | 4 +- .../mine_user_game_cell_bg@2x.png | Bin 0 -> 900 bytes .../mine_user_game_cell_bg@3x.png | Bin 0 -> 1459 bytes .../Contents.json | 4 +- .../mine_user_game_cell_pay_bg@2x.png | Bin 0 -> 434 bytes .../mine_user_game_cell_pay_bg@3x.png | Bin 0 -> 711 bytes .../mine_user_game_cell@2x.png | Bin 27445 -> 0 bytes .../mine_user_game_cell@3x.png | Bin 63960 -> 0 bytes xplan-ios/Base/MVP/Model/UserGameInfoVo.h | 6 +- .../Home/View/SubViews/XPHomePartyNavView.h | 2 +- .../Home/View/SubViews/XPHomePartyNavView.m | 6 +- .../Message/View/Session/SessionNavView.m | 1 + .../View/Session/SessionViewController.h | 3 +- .../View/Session/SessionViewController.m | 2 +- .../View/Session/XPSessionMessageGameCell.m | 42 +++-- xplan-ios/Main/Mine/Model/XPMineItemModel.h | 1 + .../Presenter/XPMineGameOrderItemPresenter.m | 6 +- .../Protocol/XPMineGameOrderItemProtocol.h | 5 +- .../SubViews/XPMineGameOrderDetailsView.m | 11 +- .../GameOrder/View/XPMineGameOrderItemVC.h | 8 + .../GameOrder/View/XPMineGameOrderItemVC.m | 116 +++----------- .../View/GameOrder/View/XPMineGameOrderVC.m | 149 +++++++++++++++++- .../Income/GuildPersonIncomeRecordModel.h | 2 + .../Income/XPGuildPersonIncomeTableViewCell.m | 26 ++- .../XPMineGuildPersonalBillRecordVC.m | 4 +- .../View/SubViews/XPGuildIncomeSectionView.m | 33 +++- .../Mine/View/MineInfo/XPMineUserGameVC.m | 2 +- .../MineInfo/XPMineUserInfoViewController.m | 11 +- .../SubViews/MineInfo/XPMinePlaceOrderView.m | 7 +- .../SubViews/MineInfo/XPMineUserGameCell.m | 57 ++++--- .../Main/Mine/View/XPMineViewController.m | 11 +- .../XPRoomGameInviteBannerView.h | 8 + .../XPRoomGameInviteBannerView.m | 19 +++ .../Main/Tabbar/View/TabbarViewController.m | 34 +++- 36 files changed, 404 insertions(+), 176 deletions(-) delete mode 100644 xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/mine_game_pay_btn@2x.png delete mode 100644 xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/mine_game_pay_btn@3x.png rename xplan-ios/Assets.xcassets/Mine/{mine_game_pay_btn.imageset => mine_user_game_cell_bg.imageset}/Contents.json (72%) create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/mine_user_game_cell_bg@2x.png create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/mine_user_game_cell_bg@3x.png rename xplan-ios/Assets.xcassets/{SessionMessage/mine_user_game_cell.imageset => Mine/mine_user_game_cell_pay_bg.imageset}/Contents.json (70%) create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/mine_user_game_cell_pay_bg@2x.png create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/mine_user_game_cell_pay_bg@3x.png delete mode 100644 xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/mine_user_game_cell@2x.png delete mode 100644 xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/mine_user_game_cell@3x.png diff --git a/xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/mine_game_pay_btn@2x.png b/xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/mine_game_pay_btn@2x.png deleted file mode 100644 index 7d2c007b3d65935d9369a3c70cfcd41c1a51487b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 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 Hu0mjfVfg?< diff --git a/xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/Contents.json b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/Contents.json similarity index 72% rename from xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/Contents.json rename to xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/Contents.json index 0f3e4c2e..8fb1e12b 100644 --- a/xplan-ios/Assets.xcassets/Mine/mine_game_pay_btn.imageset/Contents.json +++ b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "mine_game_pay_btn@2x.png", + "filename" : "mine_user_game_cell_bg@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "mine_game_pay_btn@3x.png", + "filename" : "mine_user_game_cell_bg@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/mine_user_game_cell_bg@2x.png b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/mine_user_game_cell_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2579c584d9e907faa14b03dd7bb9548b397877 GIT binary patch literal 900 zcmeAS@N?(olHy`uVBq!ia0y~yU|I)cZ{T1Cl0TDVz5yw-0G|+7ApQ91v&T<>==q~3 z&z`(`^#sIz3K0R3kDoqz`uy?ZXAd3&*&olGIRg|_39tj1AXpOQ7tHYaS6{IB>)Yo} zY%9%9QxRfK*HaDv+V{rO#WAGf)|*?|S%)2XTpwD`liZ&i{ri5-e34m8zND8ttjV_E zP+Y>k_iCwBJ40NW#PY4%*45AXE#x3{y6#o}-f0X%npgZU#6IW^K84E ziJSH$E#LCIIZP9-73^MZ+Hj=q>#Z4UJ#sUC6>iwBw6o~N?W4X7FV9Zjm&3SZ`^(^T z(T2uLUl+0^EO>SIWI=0dk=HHe4I8{4B@3vDtz=JFw3;+P*bFP1=_wu@J; z6o+5E`#D-lES8co9r)jD7;VoC*Z<}53w5xDm?$`Fzd3wj2of-dU*vRN#-g9NK Y_}M)M^Lm0*1VK^m>FVdQ&MBb@02Gv~sQ>@~ literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/mine_user_game_cell_bg@3x.png b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_bg.imageset/mine_user_game_cell_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9a322e107e0681cbbe3ef9dae0599bb2a1dcee70 GIT binary patch literal 1459 zcmeAS@N?(olHy`uVBq!ia0y~yU}0roVC3Ln28swY?zIO}-T^)#u0Z=*J(2%g!u)wfo1WjjNY2<(v&E zO|EghePyyC!?uihua@=xzjc-M#=0u;`Pt{sF>T1bytCK;PWw`Z+uL})S7e5ZCj4F% zyQiQ~szGL%x6M^ig>JohJ46)v)h{17SIA&Av+QI4?xPA%g6=-ne;d#c(`II8wOgIx zrcSyyqsP0)Sqr|tWk?Cx{?R?Sp=VZwxfH9y@~R&5xoa7on3R58_9mk7*n2UG!RYnziZ!e!vTKiAz1}k6W>N34 zT*ebQS&yE$Fw9)LTw;$>!>N`{o> z6mULt&$SW&#vy~ilYH9~tb%tU8Q$qIl#4Z3b03(?`rsT>K|14(%?yK2SfT8d1IXPD z6ZU^q5O*1T4#X9LH`WUavnsd=;@9%ui{o>a9&(`7>O8=!5vjmjoey-A4@cRC_y{hUw zhXW++_B~}%R6OXn>HpMiXML4s_HrWS~`Q+&oJq>)`n2W`$|U{5+?Tl zx;TM{;oB6q@G3oS#_VZv*OTTl-UxF4YqZgw=f)$o+zvK|#a@f;+jtK2IhrrwIncFa zHrp(w18qhx`r0}KHXJbBmA&ewG{d*NmFl(v)w`Gy?t969jX3PfxFLPt#r;ViTJzl- zY-e@z2cFNEyjY*%+wvV(US+NgTe~DWM4f?kkFU literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/Contents.json b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/Contents.json similarity index 70% rename from xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/Contents.json rename to xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/Contents.json index ae194681..3b3c46b6 100644 --- a/xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/Contents.json +++ b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "mine_user_game_cell@2x.png", + "filename" : "mine_user_game_cell_pay_bg@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "mine_user_game_cell@3x.png", + "filename" : "mine_user_game_cell_pay_bg@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/mine_user_game_cell_pay_bg@2x.png b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/mine_user_game_cell_pay_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1178e18f7f5064a07149eb35017913b5923d9d51 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^Gl1BJgBeJ!o!I;uNErwCgt-3y{~yQ%lEi}vpF+%m zdIU>?{DNmPl(6w8s`j^4XGeNC8*BDj_HU73U|^K>ba4#HxOa6{comZ&4_m#;&3pT* z|6f*9DfCFt)PIoZXE0w^TvWE~W2x7*+$yc;^vtN*`w9L!X_vV-TFMEXZjL)Q;eA(X zu&~a3k?tjFOLpjO6ER()6Mm#7B-!o0aB*<)8U3S+#2f6+9hG^g`ZeyT#qWsn&+{Wb z@31%gCmPL?WZCH|*deq($x|ap^mNn2`XdJFo08lOA2fOX^v)6Jd#EACBs4#1bHf?- zk52!s|2%bi6xEt?RYhfT!udc|PRZYsRtit@n?1o{>j9BhvqbYgB(LXw!`fXtX+yuo zx7*EsHH!9MyOF{&dtae&T-*=oy(^k@oeR0kZv?4tw>YD_JXu=c&NSX+^RxF?>Ym75 q(iDCEPMU4S9!47hCdq|A873`bKfdJc!%M(WWbkzLb6Mw<&;$VOip#wK literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/mine_user_game_cell_pay_bg@3x.png b/xplan-ios/Assets.xcassets/Mine/mine_user_game_cell_pay_bg.imageset/mine_user_game_cell_pay_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1f531dbfbf241edd3534051e910b2d6ec388e8e3 GIT binary patch literal 711 zcmeAS@N?(olHy`uVBq!ia0vp^Pk=azgBeK9_vG3Iq`U)sLR|m<{|{sWNy@?OfTReZ zS&}6|e!(*t=5)<(SvWzOD`iSSfR&CCZ)IG#hp1qhLQ_o!0|S$gr;B4q#jPhdGbc3} z2(&#sf6l2XCGq<|^|^@w2c1~H^1rOi{}3W{NweVAxo;QEU6&q_Y=5Z}5^7@it&E)^ z`oM)aku6hPTAW>7g0fb4OTP*Cm@J?9^;)>8`Fy3d;hz##Zx{1?`j-8~InB8og&kXp z?(RNeaHCpo&WoPfT za?9)F={(PHx@3p)%vibZ?v%bW2RHl?lvI^ad(1rPw8#gEPRmVcnJg>jO^`jj{#?Yh zyA%0xip`gVCd}Rxz9ik8-6yl&RcqP&xr#x`mp1HC&iDM>enwJX#o=eemNoMxo^JW; z+Q#xPy7sc=AEju6^|p=Ae<$C2%5rYg%*Weh`S~P-NqXbmu5Zx}wyUmh{)Kx@CS?*rX#xGdFN@96r9`9f$C>4VNc>J+Le2 z$Wab$!Hves4jC?v#=c*L9^Z7iaBqc=#8dIb$6Q1%^<*WUbKle-_uaJXwi~N_qozaz w4|74&f-Hd-6B_%S91`SThCTGyE?{w=dF2|h+^9c-pk&J6>FVdQ&MBb@0K>gp(f|Me literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/mine_user_game_cell@2x.png b/xplan-ios/Assets.xcassets/SessionMessage/mine_user_game_cell.imageset/mine_user_game_cell@2x.png deleted file mode 100644 index 37762ff573b0914c48e52dd44c44677379130b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27445 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 diff --git a/xplan-ios/Base/MVP/Model/UserGameInfoVo.h b/xplan-ios/Base/MVP/Model/UserGameInfoVo.h index 753a6d23..127f1805 100644 --- a/xplan-ios/Base/MVP/Model/UserGameInfoVo.h +++ b/xplan-ios/Base/MVP/Model/UserGameInfoVo.h @@ -32,7 +32,11 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic,copy) NSString *toAvatar; @property(nonatomic,copy) NSString *createTime; @property(nonatomic,copy) NSString *toUid; - +@property(nonatomic,copy) NSString *fromUid; +@property(nonatomic,copy) NSString *tagRgb; +@property(nonatomic,copy) NSString *tagBg; +@property(nonatomic,copy) NSString *btnRgb; +@property(nonatomic,copy) NSString *btnBg; @end diff --git a/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.h b/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.h index 1d82fcf3..31aba205 100644 --- a/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.h +++ b/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.h @@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN @end @interface XPHomePartyNavView : UIView - +@property(nonatomic,copy) NSString *title; @property (nonatomic, weak) id delegate; @end diff --git a/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.m b/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.m index 2c034d1b..480f7e34 100644 --- a/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.m +++ b/xplan-ios/Main/Home/View/SubViews/XPHomePartyNavView.m @@ -55,7 +55,10 @@ [self.delegate xPHomePartyNavViewDidClickBack]; } } - +-(void)setTitle:(NSString *)title{ + _title = title; + _titleLabel.text = _title; +} #pragma mark - Getters And Setters - (UILabel *)titleLabel { if(!_titleLabel) { @@ -72,6 +75,7 @@ _backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_backBtn setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; [_backBtn addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } return _backBtn; } diff --git a/xplan-ios/Main/Message/View/Session/SessionNavView.m b/xplan-ios/Main/Message/View/Session/SessionNavView.m index 9a393acb..1b237458 100644 --- a/xplan-ios/Main/Message/View/Session/SessionNavView.m +++ b/xplan-ios/Main/Message/View/Session/SessionNavView.m @@ -192,6 +192,7 @@ [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } return _backButton; } diff --git a/xplan-ios/Main/Message/View/Session/SessionViewController.h b/xplan-ios/Main/Message/View/Session/SessionViewController.h index 8ea431b2..d3cdeedc 100644 --- a/xplan-ios/Main/Message/View/Session/SessionViewController.h +++ b/xplan-ios/Main/Message/View/Session/SessionViewController.h @@ -12,9 +12,10 @@ NS_ASSUME_NONNULL_BEGIN @interface SessionViewController : MvpViewController +@property (nonatomic, strong,readonly) NIMSession * session; -- (instancetype)initWithSession:(NIMSession *)session; @property (nonatomic, assign) SessionListOpenType openType; +- (instancetype)initWithSession:(NIMSession *)session; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Message/View/Session/SessionViewController.m b/xplan-ios/Main/Message/View/Session/SessionViewController.m index dbff6fa0..1781bb65 100644 --- a/xplan-ios/Main/Message/View/Session/SessionViewController.m +++ b/xplan-ios/Main/Message/View/Session/SessionViewController.m @@ -686,7 +686,7 @@ } -(void)sendInitiateInvitationGameSuccess{ [self showSuccessToast:@"邀请成功"]; - + [[NSNotificationCenter defaultCenter]postNotificationName:@"kGameOrderListRefreshData" object:nil]; } - (void)didFailRetry:(NIMMessage *)message { if (message.isReceivedMsg) { diff --git a/xplan-ios/Main/Message/View/Session/XPSessionMessageGameCell.m b/xplan-ios/Main/Message/View/Session/XPSessionMessageGameCell.m index a6f18176..5a789060 100644 --- a/xplan-ios/Main/Message/View/Session/XPSessionMessageGameCell.m +++ b/xplan-ios/Main/Message/View/Session/XPSessionMessageGameCell.m @@ -23,7 +23,7 @@ ///价格 @property(nonatomic,strong) UILabel *priceView; ///支付 -@property(nonatomic,strong) UIButton *payBtn; +@property(nonatomic,strong) NetImageView *payBtn; ///跟随进房卡片 @property (nonatomic, strong) XPSessionMessageHeadView *followInRoomView; @@ -137,13 +137,24 @@ self.bgImageView.hidden = NO; _iconView.imageUrl = _gameInfo.logo; - _bgImageView.imageUrl = _gameInfo.background; + _payBtn.imageUrl = _gameInfo.btnRgb; + + self.tierView.textColor = UIColorFromRGB(0xBBBCBD); + self.tierBgView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.6];; + [_bgImageView loadImageWithUrl:_gameInfo.background completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + self.tierView.textColor = [ThemeColor colorWithHexString:gameInfo.tagRgb]; + self.tierBgView.backgroundColor = [ThemeColor colorWithHexString:gameInfo.tagBg]; + self.bgImageView.image = image; + }]; _titleView.text = _gameInfo.gameName; _tierView.text = _gameInfo.tier; _tierBgView.hidden = _gameInfo.tier.length == 0; + + + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@ 钻/局",_gameInfo.price] attributes:@{NSFontAttributeName:kFontMedium(16),NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(10),NSForegroundColorAttributeName:[UIColor whiteColor]} range:[textAtt.string rangeOfString:@"钻/局"]]; + [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(10),NSForegroundColorAttributeName:[UIColor colorWithWhite:1 alpha:0.8]} range:[textAtt.string rangeOfString:@"钻/局"]]; UIImage *iconImage = kImage(@"mine_game_diamond"); NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; attachment.bounds = CGRectMake(0, roundf(_priceView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height);; @@ -160,7 +171,7 @@ - (NetImageView *)bgImageView{ if(!_bgImageView){ NetImageConfig *config = [[NetImageConfig alloc]init]; - config.placeHolder = kImage(@"mine_user_game_cell"); + config.placeHolder = kImage(@"mine_user_game_cell_bg"); _bgImageView = [[NetImageView alloc]initWithConfig:config]; _bgImageView.layer.cornerRadius = kGetScaleWidth(12); _bgImageView.layer.masksToBounds = YES; @@ -173,9 +184,7 @@ NetImageConfig *config = [NetImageConfig new]; config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; _iconView = [[NetImageView alloc]initWithConfig:config]; - _iconView.layer.cornerRadius = kGetScaleWidth(50)/2; - _iconView.layer.masksToBounds = YES; - + } return _iconView; @@ -213,14 +222,19 @@ } return _priceView; } -- (UIButton *)payBtn{ +- (NetImageView *)payBtn{ if(!_payBtn){ - _payBtn = [UIButton new]; - [_payBtn setBackgroundImage:kImage(@"mine_game_pay_btn") forState:UIControlStateNormal]; - [_payBtn setTitleColor:UIColorFromRGB(0x683F0B) forState:UIControlStateNormal]; - [_payBtn setTitle:@"下单" forState:UIControlStateNormal]; - _payBtn.titleLabel.font = kFontMedium(12); - [_payBtn addTarget:self action:@selector(payAtion) forControlEvents:UIControlEventTouchUpInside]; + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = kImage(@"mine_user_game_cell_pay_bg"); + + _payBtn = [[NetImageView alloc]initWithConfig:config]; + UIButton *payTitleBnt = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, kGetScaleWidth(72), kGetScaleWidth(28))]; + [payTitleBnt setTitleColor:UIColorFromRGB(0x683F0B) forState:UIControlStateNormal]; + [payTitleBnt setTitle:@"下单" forState:UIControlStateNormal]; + payTitleBnt.titleLabel.font = kFontMedium(12); + [payTitleBnt addTarget:self action:@selector(payAtion) forControlEvents:UIControlEventTouchUpInside]; + [_payBtn addSubview:payTitleBnt]; + _payBtn.userInteractionEnabled = YES; } return _payBtn; } diff --git a/xplan-ios/Main/Mine/Model/XPMineItemModel.h b/xplan-ios/Main/Mine/Model/XPMineItemModel.h index 83730f34..d65c9b9f 100644 --- a/xplan-ios/Main/Mine/Model/XPMineItemModel.h +++ b/xplan-ios/Main/Mine/Model/XPMineItemModel.h @@ -34,6 +34,7 @@ typedef NS_ENUM(NSInteger, XPMineItemType) { XPMineItemType_FansTeam = 72,///粉丝团 XPMineItemType_DressUp_Market = 73, ///装扮商场 XPMineItemType_My_Dressup = 74,///我的装扮 + XPMineItemType_Game_Order = 76,///订单记录 }; diff --git a/xplan-ios/Main/Mine/View/GameOrder/Presenter/XPMineGameOrderItemPresenter.m b/xplan-ios/Main/Mine/View/GameOrder/Presenter/XPMineGameOrderItemPresenter.m index f2fddd8d..385167a1 100644 --- a/xplan-ios/Main/Mine/View/GameOrder/Presenter/XPMineGameOrderItemPresenter.m +++ b/xplan-ios/Main/Mine/View/GameOrder/Presenter/XPMineGameOrderItemPresenter.m @@ -15,11 +15,13 @@ [Api getGameParterOrderListWithCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { NSArray *list = [UserGameInfoVo modelsWithArray:data.data[@"records"]]; [[self getView]getGameParterOrderListSuccess:list]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]getGameParterOrderListFail]; } showLoading:YES errorToast:YES] uid:uid searchType:searchType currSize:currSize pageSize:pageSize]; } --(void)initiateInvitationGameWithGameId:(NSString *)gameId gameUid:(NSString *)gameUid inning:(NSString *)inning uid:(NSString *)uid{ +-(void)initiateInvitationGameWithGameId:(NSString *)gameId gameUid:(NSString *)gameUid inning:(NSString *)inning uid:(NSString *)uid { [Api sendInitiateInvitationGame:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - [[self getView]sendInitiateInvitationGameSuccess:uid]; + [[self getView]sendInitiateInvitationGameSuccess]; } fail:^(NSInteger code, NSString * _Nullable msg) { }showLoading:YES errorToast:YES ] gameId:gameId gameUid:gameUid inning:inning uid:uid]; diff --git a/xplan-ios/Main/Mine/View/GameOrder/Protocol/XPMineGameOrderItemProtocol.h b/xplan-ios/Main/Mine/View/GameOrder/Protocol/XPMineGameOrderItemProtocol.h index d10544e3..a77db420 100644 --- a/xplan-ios/Main/Mine/View/GameOrder/Protocol/XPMineGameOrderItemProtocol.h +++ b/xplan-ios/Main/Mine/View/GameOrder/Protocol/XPMineGameOrderItemProtocol.h @@ -10,10 +10,13 @@ NS_ASSUME_NONNULL_BEGIN @protocol XPMineGameOrderItemProtocol +@optional ///获取订单记录成功 - (void)getGameParterOrderListSuccess:(NSArray *)list; +///获取订单记录失败 +- (void)getGameParterOrderListFail; ///发起邀请成功 --(void)sendInitiateInvitationGameSuccess:(NSString *)uid; +-(void)sendInitiateInvitationGameSuccess; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/GameOrder/View/SubViews/XPMineGameOrderDetailsView.m b/xplan-ios/Main/Mine/View/GameOrder/View/SubViews/XPMineGameOrderDetailsView.m index 05734033..6a56911d 100644 --- a/xplan-ios/Main/Mine/View/GameOrder/View/SubViews/XPMineGameOrderDetailsView.m +++ b/xplan-ios/Main/Mine/View/GameOrder/View/SubViews/XPMineGameOrderDetailsView.m @@ -140,7 +140,7 @@ } } -(void)copyAction{ - [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"%@", self.gameInfo.toErBanNo]; + [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"%@", self.gameInfo.orderNo]; [XCHUDTool showSuccessWithMessage:@"复制成功"]; } -(void)inviteAction{ @@ -170,15 +170,18 @@ _priceView.attributedText = textAtt; - NSMutableAttributedString *orderAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"订单编号:%@ ",_gameInfo.toErBanNo] attributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0xA2A7B8)}]; - [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0x696D7A)} range:[textAtt.string rangeOfString:@"订单编号:"]]; + NSMutableAttributedString *tiemAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"下单时间:%@ ",_gameInfo.createTime] attributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0x696D7A)}]; + [tiemAtt addAttributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0xA2A7B8)} range:[textAtt.string rangeOfString:@"下单时间:"]]; + _timeView.attributedText = tiemAtt; + NSMutableAttributedString *orderAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"订单编号:%@ ",_gameInfo.orderNo] attributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0x696D7A)}]; + [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0xA2A7B8)} range:[textAtt.string rangeOfString:@"订单编号:"]]; UIImage *orderIconImage = kImage(@"mine_game_copy"); NSTextAttachment * orderAttachment = [[NSTextAttachment alloc] init]; attachment.bounds = CGRectMake(0, roundf(kFontRegular(12).capHeight - orderIconImage.size.height)/2.f, orderIconImage.size.width, orderIconImage.size.height);; orderAttachment.image = orderIconImage; - [orderAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:orderAttachment] atIndex:[NSString stringWithFormat:@"订单编号:%@ ",_gameInfo.toErBanNo].length]; + [orderAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:orderAttachment] atIndex:[NSString stringWithFormat:@"订单编号:%@ ",_gameInfo.orderNo].length]; _orderNumView.attributedText = orderAtt; } #pragma mark - 懒加载 diff --git a/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.h b/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.h index fc040e57..3835d23e 100644 --- a/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.h +++ b/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.h @@ -7,9 +7,17 @@ #import "MvpViewController.h" #import +#import "UserGameInfoVo.h" NS_ASSUME_NONNULL_BEGIN +@protocol XPMineGameOrderItemVCDelegate + +-(void)showGameOrderDetailsViewWithGameInfo:(UserGameInfoVo *)gameInfo; + +@end + @interface XPMineGameOrderItemVC : MvpViewController +@property(nonatomic,weak) iddelegate; @property(nonatomic,copy) NSString *type; @end diff --git a/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.m b/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.m index 2d6a13f4..8c1395d5 100644 --- a/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.m +++ b/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderItemVC.m @@ -17,16 +17,20 @@ #import "WalletInfoModel.h" #import "Api+Mine.h" #import "XPMineNewRechargeViewController.h" -@interface XPMineGameOrderItemVC () +@interface XPMineGameOrderItemVC () @property(nonatomic,strong) UITableView *tableView; @property(nonatomic,strong) NSMutableArray *orderList; @property(nonatomic,assign) NSInteger page; -///余额 -@property(nonatomic, copy)NSString *diamonds; + @end @implementation XPMineGameOrderItemVC - +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} +- (BOOL)isHiddenNavBar { + return YES; +} - (__kindof id)createPresenter { return [[XPMineGameOrderItemPresenter alloc] init]; } @@ -35,7 +39,7 @@ [self installUI]; [self installConstraints]; [self initHeaderAndFooterRrfresh]; - [self getUserWallet]; + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(headerRefresh) name:@"kGameOrderListRefreshData" object:nil]; } -(void)installUI{ self.view.backgroundColor = UIColorFromRGB(0xF8F8FA); @@ -47,15 +51,7 @@ make.edges.equalTo(self.view); }]; } --(void)getUserWallet{ - - [Api getUserWalletInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if(code == 200){ - WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; - self.diamonds = model.diamonds; - } - } uid:[AccountInfoStorage instance].getUid ticket:[AccountInfoStorage instance].getTicket]; -} + - (void)initHeaderAndFooterRrfresh { MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; header.stateLabel.font = [UIFont systemFontOfSize:10.0]; @@ -83,6 +79,7 @@ [self.presenter getGameParterOrderListWithUid:uid searchType:self.type currSize:pageStr pageSize:@"20"]; } + #pragma mark -UITableViewDelegate,UITableViewDataSource - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self.orderList.count == 0 ? 1 : self.orderList.count; @@ -95,6 +92,7 @@ if(self.orderList.count == 0){ XPHomeListEmptyTableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPHomeListEmptyTableViewCell class]) forIndexPath:indexPath]; cell.text = @"暂无数据"; + cell.backgroundColor = UIColorFromRGB(0xF5F6FA); return cell; } XPMineGameOrderItemCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGameOrderItemCell class]) forIndexPath:indexPath]; @@ -103,89 +101,22 @@ return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - XPMineGameOrderDetailsView *detailsView = [[XPMineGameOrderDetailsView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - detailsView.gameInfo = [self.orderList safeObjectAtIndex1:indexPath.row]; - detailsView.delegate = self; - [self.view addSubview:detailsView]; + if(self.type.integerValue == 1)return; + if(self.delegate && [self.delegate respondsToSelector:@selector(showGameOrderDetailsViewWithGameInfo:)]){ + [self.delegate showGameOrderDetailsViewWithGameInfo:[self.orderList safeObjectAtIndex1:indexPath.row]]; + } + + } #pragma mark - JXCategoryListContentViewDelegate - (UIView *)listView { return self.view; } -#pragma mark - XPMineGameOrderDetailsViewDelegate -///再次邀请 --(void)againinitiateInvitationWithGameInfo:(UserGameInfoVo *)gameInfo{ - [self showLoading]; - [Api requestGamePartnerInfoList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self hideHUD]; - if(code == 200){ - NSArray *list = [UserGameInfoVo modelsWithArray:data.data]; - XPMinePlaceOrderView *orderVeiw = [[XPMinePlaceOrderView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - - for (int i = 0; i < list.count; i++) { - UserGameInfoVo *model = list[i]; - if([model.gameId isEqualToString:gameInfo.gameId]){ - orderVeiw.selectGameInfo = model; - } - } - orderVeiw.inning = gameInfo.inning; - - orderVeiw.diamonds = self.diamonds; - orderVeiw.gameList = list; - orderVeiw.delegate = self; - [self.view addSubview:orderVeiw]; - return; - } - [self showErrorToast:msg]; - } uid:gameInfo.toUid]; - - -} -///发信息 --(void)sendMessageHandleWithGameInfo:(UserGameInfoVo *)gameInfo{ - NSString * sessionId = [NSString stringWithFormat:@"%@",gameInfo.toUid]; - NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; - SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; - [self.navigationController pushViewController:sessionVC animated:YES]; -} --(void)sendInitiateInvitationGameSuccess:(NSString *)uid{ - NSString * sessionId = [NSString stringWithFormat:@"%@",uid]; - NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; - SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; - [self.navigationController pushViewController:sessionVC animated:YES]; -} -#pragma mark - XPMinePlaceOrderViewDelegate -///发起邀请 --(void)initiateInvitationWithGameInfo:(UserGameInfoVo *)gameInfo count:(NSString *)count{ - [self.presenter initiateInvitationGameWithGameId:gameInfo.gameId gameUid:gameInfo.uid inning:count uid:[AccountInfoStorage instance].getUid]; -} -///充值 --(void)payHandleWithShowView:(BOOL)isShow{ - if(isShow == YES){ - TTAlertConfig *config = [[TTAlertConfig alloc] init]; - config.title = @"提示"; - config.actionStyle = TTAlertActionConfirmStyle; - config.message = [NSString stringWithFormat:@"余额不足,请充值"]; - TTAlertButtonConfig *confirmButtonConfig = [[TTAlertButtonConfig alloc]init]; - confirmButtonConfig.title = @"去充值"; - config.confirmButtonConfig = confirmButtonConfig; - confirmButtonConfig.titleColor = UIColorFromRGB(0x2B2D33); - confirmButtonConfig.backgroundColor = UIColorFromRGB(0xFFDA24); - confirmButtonConfig.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - confirmButtonConfig.cornerRadius = 38/2; - [TTPopup alertWithConfig:config confirmHandler:^{ - XPMineNewRechargeViewController *payVC = [[XPMineNewRechargeViewController alloc]init]; - [self.navigationController pushViewController:payVC animated:YES]; - } cancelHandler:^{ - - }]; - return; - } - XPMineNewRechargeViewController *payVC = [[XPMineNewRechargeViewController alloc]init]; - [self.navigationController pushViewController:payVC animated:YES]; -} + #pragma mark - XPMineGameOrderItemProtocol.h -(void)getGameParterOrderListSuccess:(NSArray *)list{ + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; if(self.page == 1){ self.orderList = [NSMutableArray arrayWithArray:list]; [self.tableView reloadData]; @@ -198,7 +129,10 @@ [self.orderList addObjectsFromArray:list]; [self.tableView reloadData]; } - +-(void)getGameParterOrderListFail{ + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; +} #pragma mark - 懒加载 - (UITableView *)tableView { if (!_tableView) { diff --git a/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderVC.m b/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderVC.m index dcbdbfb8..f43def80 100644 --- a/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderVC.m +++ b/xplan-ios/Main/Mine/View/GameOrder/View/XPMineGameOrderVC.m @@ -9,29 +9,61 @@ #import #import #import "XPMineGameOrderItemVC.h" -@interface XPMineGameOrderVC() +#import "XPHomePartyNavView.h" +#import "XPMineGameOrderItemPresenter.h" +#import +#import "XPMineGameOrderItemVC.h" +#import "XPMineGameOrderItemCell.h" +#import "XPHomeListEmptyTableViewCell.h" +#import "XPMineGameOrderItemPresenter.h" +#import "XPMineGameOrderItemProtocol.h" +#import "XPMineGameOrderDetailsView.h" +#import "SessionViewController.h" +#import "XPMinePlaceOrderView.h" +#import "Api.h" +#import "WalletInfoModel.h" +#import "Api+Mine.h" +#import "XPMineNewRechargeViewController.h" +@interface XPMineGameOrderVC() ///分页标题 @property (nonatomic, strong) NSArray *titles; ///分页控件 @property (nonatomic, strong) JXCategoryTitleView *titleView; ///分页lineView @property (nonatomic, strong) JXCategoryListContainerView *contentView; +///导航 +@property (nonatomic, strong) XPHomePartyNavView *navView; +///余额 +@property(nonatomic, copy)NSString *diamonds; +@property(nonatomic,copy) NSString *chatId; @end @implementation XPMineGameOrderVC - +- (__kindof id)createPresenter { + return [[XPMineGameOrderItemPresenter alloc] init]; +} +- (BOOL)isHiddenNavBar { + return YES; +} - (void)viewDidLoad { [super viewDidLoad]; [self installUI]; [self installConstraints]; + [self getUserWallet]; } -(void)installUI{ - self.title = @"订单记录"; + + [self.view addSubview:self.navView]; [self.view addSubview:self.titleView]; [self.view addSubview:self.contentView]; } -(void)installConstraints{ + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view); + make.top.equalTo(self.navView.mas_bottom); make.left.right.mas_equalTo(self.view); make.height.mas_equalTo(kGetScaleWidth(56)); }]; @@ -41,6 +73,15 @@ make.left.right.bottom.mas_equalTo(self.view); }]; } +-(void)getUserWallet{ + + [Api getUserWalletInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + self.diamonds = model.diamonds; + } + } uid:[AccountInfoStorage instance].getUid ticket:[AccountInfoStorage instance].getTicket]; +} #pragma mark - JXCategoryViewDelegate - (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { return self.titles.count; @@ -54,6 +95,7 @@ } else { XPMineGameOrderItemVC *vc = [XPMineGameOrderItemVC new]; vc.type = @(index).stringValue; + vc.delegate = self; return vc; } } @@ -61,7 +103,94 @@ - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { } -#pragma mark - 懒加载 +- (void)xPHomePartyNavViewDidClickBack{ + [self.navigationController popViewControllerAnimated:YES]; +} +#pragma mark - XPMineGameOrderItemVCDelegate +-(void)showGameOrderDetailsViewWithGameInfo:(UserGameInfoVo *)gameInfo{ + XPMineGameOrderDetailsView *detailsView = [[XPMineGameOrderDetailsView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + detailsView.gameInfo = gameInfo; + detailsView.delegate = self; + [self.view addSubview:detailsView]; +} +#pragma mark - XPMineGameOrderDetailsViewDelegate +///再次邀请 +-(void)againinitiateInvitationWithGameInfo:(UserGameInfoVo *)gameInfo{ + [self showLoading]; + NSString *uid = [gameInfo.toUid isEqualToString:[AccountInfoStorage instance].getUid] ? gameInfo.fromUid : gameInfo.toUid; + [Api requestGamePartnerInfoList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [self hideHUD]; + if(code == 200){ + self.chatId = uid; + NSArray *list = [UserGameInfoVo modelsWithArray:data.data]; + XPMinePlaceOrderView *orderVeiw = [[XPMinePlaceOrderView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + + for (int i = 0; i < list.count; i++) { + UserGameInfoVo *model = list[i]; + if([model.gameId isEqualToString:gameInfo.gameId]){ + orderVeiw.selectGameInfo = model; + } + } + orderVeiw.inning = gameInfo.inning; + + orderVeiw.diamonds = self.diamonds; + orderVeiw.gameList = list; + orderVeiw.delegate = self; + [self.view addSubview:orderVeiw]; + return; + } + [self showErrorToast:msg]; + } uid:uid]; + + +} +///发信息 +-(void)sendMessageHandleWithGameInfo:(UserGameInfoVo *)gameInfo{ + NSString *uid = [gameInfo.toUid isEqualToString:[AccountInfoStorage instance].getUid] ? gameInfo.fromUid : gameInfo.toUid; + NSString * sessionId = [NSString stringWithFormat:@"%@",uid]; + NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; +} +-(void)sendInitiateInvitationGameSuccess{ + + NIMSession * session = [NIMSession session:self.chatId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; + [[NSNotificationCenter defaultCenter]postNotificationName:@"kGameOrderListRefreshData" object:nil]; + +} +#pragma mark - XPMinePlaceOrderViewDelegate +///发起邀请 +-(void)initiateInvitationWithGameInfo:(UserGameInfoVo *)gameInfo count:(NSString *)count{ + NSString *uid = [gameInfo.toUid isEqualToString:[AccountInfoStorage instance].getUid] ? gameInfo.fromUid : gameInfo.toUid; + [self.presenter initiateInvitationGameWithGameId:gameInfo.gameId gameUid:gameInfo.uid inning:count uid:[AccountInfoStorage instance].getUid]; +} +///充值 +-(void)payHandleWithShowView:(BOOL)isShow{ + if(isShow == YES){ + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @"提示"; + config.actionStyle = TTAlertActionConfirmStyle; + config.message = [NSString stringWithFormat:@"余额不足,请充值"]; + TTAlertButtonConfig *confirmButtonConfig = [[TTAlertButtonConfig alloc]init]; + confirmButtonConfig.title = @"去充值"; + config.confirmButtonConfig = confirmButtonConfig; + confirmButtonConfig.titleColor = UIColorFromRGB(0x2B2D33); + confirmButtonConfig.backgroundColor = UIColorFromRGB(0xFFDA24); + confirmButtonConfig.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + confirmButtonConfig.cornerRadius = 38/2; + [TTPopup alertWithConfig:config confirmHandler:^{ + XPMineNewRechargeViewController *payVC = [[XPMineNewRechargeViewController alloc]init]; + [self.navigationController pushViewController:payVC animated:YES]; + } cancelHandler:^{ + + }]; + return; + } + XPMineNewRechargeViewController *payVC = [[XPMineNewRechargeViewController alloc]init]; + [self.navigationController pushViewController:payVC animated:YES]; +} #pragma mark - Getters And Setters - (JXCategoryTitleView *)titleView { if (!_titleView) { @@ -76,7 +205,7 @@ _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; _titleView.cellSpacing = kGetScaleWidth(15); - _titleView.cellWidth = kGetScaleWidth(39); + _titleView.cellWidth = (KScreenWidth - 60) / 2; _titleView.averageCellSpacingEnabled = NO; _titleView.defaultSelectedIndex = 0; _titleView.listContainer = self.contentView; @@ -104,4 +233,12 @@ } return _contentView; } +- (XPHomePartyNavView *)navView { + if (!_navView) { + _navView = [[XPHomePartyNavView alloc] init]; + _navView.delegate = self; + _navView.title = @"订单记录"; + } + return _navView; +} @end diff --git a/xplan-ios/Main/Mine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h b/xplan-ios/Main/Mine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h index fda5f193..db8b47e7 100644 --- a/xplan-ios/Main/Mine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h +++ b/xplan-ios/Main/Mine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h @@ -40,6 +40,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic,copy) NSString *anchorDiamondNum; ///房间收入 @property (nonatomic,copy) NSString *roomDiamondNum; +///点单收入 +@property(nonatomic,copy) NSString *gameOrderAmount; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m b/xplan-ios/Main/Mine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m index d5303c42..b2f27e94 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m +++ b/xplan-ios/Main/Mine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m @@ -33,8 +33,10 @@ @property (nonatomic,strong) UILabel *idLabel; ///空白的view @property (nonatomic,strong) UIView * incomeSpaceView; -///显示收入 +///显示收礼 @property (nonatomic,strong) UILabel *incomeLabel; +///点单 +@property(nonatomic,strong) UILabel *orderLabel; ///箭头 @property (nonatomic,strong) UIImageView *arrowImageView; @end @@ -59,6 +61,7 @@ [self.stackView addArrangedSubview:self.spaceView]; [self.stackView addArrangedSubview:self.nickStackView]; [self.stackView addArrangedSubview:self.incomeSpaceView]; + [self.stackView addArrangedSubview:self.orderLabel]; [self.stackView addArrangedSubview:self.incomeLabel]; [self.stackView addArrangedSubview:self.arrowImageView]; @@ -87,15 +90,19 @@ }]; [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(90, 44)); + make.size.mas_equalTo(CGSizeMake(70, 44)); }]; [self.spaceView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(20); make.height.mas_equalTo(20); }]; - + [self.orderLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(70); + make.height.mas_equalTo(60); + }]; [self.incomeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(70); make.height.mas_equalTo(60); }]; @@ -113,6 +120,7 @@ self.nickLabel.text = _userInfo.nick; self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _userInfo.erbanNo]; self.incomeLabel.text = _userInfo.totalGoldNum; + self.orderLabel.text = _userInfo.gameOrderAmount; } } @@ -185,10 +193,20 @@ _incomeLabel.font = [UIFont boldSystemFontOfSize:14]; _incomeLabel.textColor = [ThemeColor mainTextColor]; _incomeLabel.numberOfLines = 2; + _incomeLabel.textAlignment = NSTextAlignmentRight; } return _incomeLabel; } - +- (UILabel *)orderLabel { + if (!_orderLabel) { + _orderLabel = [[UILabel alloc] init]; + _orderLabel.font = [UIFont boldSystemFontOfSize:14]; + _orderLabel.textColor = [ThemeColor mainTextColor]; + _orderLabel.numberOfLines = 2; + _orderLabel.textAlignment = NSTextAlignmentCenter; + } + return _orderLabel; +} - (UIImageView *)arrowImageView { if (!_arrowImageView) { _arrowImageView = [[UIImageView alloc] init]; diff --git a/xplan-ios/Main/Mine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillRecordVC.m b/xplan-ios/Main/Mine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillRecordVC.m index 63b0a6bc..e76cb60c 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillRecordVC.m +++ b/xplan-ios/Main/Mine/View/Guild/View/IncomeStatis/XPMineGuildPersonalBillRecordVC.m @@ -311,9 +311,9 @@ if(!_orderView){ _orderView = [[XPMineGuildPersonalBillRecordItemView alloc]initWithFrame:CGRectZero]; _orderView.num = @"+0.0"; - _orderView.title = @"新用户送礼人数"; + _orderView.title = @"点单流水"; } - return _userGiftView; + return _orderView; } - (XPGuildTimeMonthPickerView *)monthPickerView { if (!_monthPickerView) { diff --git a/xplan-ios/Main/Mine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m b/xplan-ios/Main/Mine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m index 9a9e2544..207fabb2 100644 --- a/xplan-ios/Main/Mine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m +++ b/xplan-ios/Main/Mine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m @@ -23,6 +23,8 @@ @property (nonatomic,strong) UILabel *nickLabel; ///收入 @property (nonatomic,strong) UILabel *incomeLabel; +///点单 +@property(nonatomic,strong) UILabel *orderView; @end @implementation XPGuildIncomeSectionView @@ -43,6 +45,7 @@ [self.stackView addArrangedSubview:self.rankLabel]; [self.stackView addArrangedSubview:self.roomLabel]; [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.orderView]; [self.stackView addArrangedSubview:self.incomeLabel]; } @@ -53,7 +56,7 @@ }]; [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(52); + make.width.mas_equalTo(50); }]; [self.roomLabel mas_makeConstraints:^(MASConstraintMaker *make) { @@ -61,8 +64,11 @@ }]; [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(110); + make.width.mas_equalTo(80); }]; + [self.orderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(100); + }]; } #pragma mark - Getters And Setters @@ -72,16 +78,24 @@ case GuildIncomeType_Clan: case GuildIncomeType_Anchor: { + self.orderView.hidden = YES; self.nickLabel.hidden = YES; self.roomLabel.text = @"房间"; self.incomeLabel.textAlignment = NSTextAlignmentCenter; + [self.nickLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(110); + }]; } break; case GuildIncomeType_Hall: { self.nickLabel.hidden = NO; self.roomLabel.text = @"头像"; - self.incomeLabel.textAlignment = NSTextAlignmentLeft; + self.incomeLabel.textAlignment = NSTextAlignmentCenter; + self.orderView.hidden = NO; + [self.nickLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(80); + }]; } break; default: @@ -137,7 +151,7 @@ - (UILabel *)incomeLabel { if (!_incomeLabel) { _incomeLabel = [[UILabel alloc] init]; - _incomeLabel.text = @"收入(钻石)"; + _incomeLabel.text = @"收礼"; _incomeLabel.font = [UIFont systemFontOfSize:12]; _incomeLabel.textColor = [ThemeColor textThirdColor]; _incomeLabel.textAlignment = NSTextAlignmentLeft; @@ -145,6 +159,15 @@ return _incomeLabel; } - +- (UILabel *)orderView{ + if(!_orderView){ + _orderView = [[UILabel alloc] init]; + _orderView.text = @"点单"; + _orderView.font = [UIFont systemFontOfSize:12]; + _orderView.textColor = [ThemeColor textThirdColor]; + _orderView.textAlignment = NSTextAlignmentCenter; + } + return _orderView; +} @end diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserGameVC.m b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserGameVC.m index 663e386f..3fb6db5a 100644 --- a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserGameVC.m +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserGameVC.m @@ -54,7 +54,7 @@ UserGameInfoVo *gameInfo = [self.gameList safeObjectAtIndex1:indexPath.row]; CGFloat height = 98; if(gameInfo.tags.count > 2){ - height = (gameInfo.tags.count - 2) * 22; + height = (gameInfo.tags.count - 2) * 24; } return kGetScaleWidth(height); } diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m index d8122d0d..b54978f5 100644 --- a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m @@ -275,9 +275,14 @@ if (index == 0) { viewController = self.userDataVC; } else if (index == 1) { - viewController = self.monentsVC; + if(self.titles.count == 2){ + viewController = self.monentsVC; + }else{ + viewController = self.gameVC; + } + }else if(index == 2){ - viewController = self.gameVC; + viewController = self.monentsVC; } return (id )viewController; } @@ -364,7 +369,7 @@ self.gameVC.gameList = userInfo.userGamePartner; self.attentionButton.hidden = YES; self.headView.attentionButton.hidden = NO; - self.titles = @[@"资料", @"动态",@"游戏开黑"]; + self.titles = @[@"资料",@"游戏开黑", @"动态"]; }else{ self.banButton.hidden = YES; diff --git a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMinePlaceOrderView.m b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMinePlaceOrderView.m index ae1d41e8..829d13c7 100644 --- a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMinePlaceOrderView.m +++ b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMinePlaceOrderView.m @@ -56,11 +56,13 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hiddenCurView) name:@"kGameOrderListRefreshData" object:nil]; } return self; } - +-(void)hiddenCurView{ + [self removeFromSuperview]; +} - (void)keyboardWillShow:(NSNotification *)notification { CGRect keyboardRect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; @@ -359,6 +361,7 @@ UserGameInfoVo *gameInfo = [self.gameList safeObjectAtIndex1:_inning.integerValue]; NSInteger count = self.inningView.text.integerValue; self.priceVeiw.text = @(gameInfo.price.integerValue * count).stringValue; + self.subtractBtn.enabled = count > 1; } #pragma mark - 懒加载 - (UIButton *)backView{ diff --git a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserGameCell.m b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserGameCell.m index 93b2385b..ccc9a6ea 100644 --- a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserGameCell.m +++ b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserGameCell.m @@ -22,7 +22,7 @@ ///价格 @property(nonatomic,strong) UILabel *priceView; ///支付 -@property(nonatomic,strong) UIButton *payBtn; +@property(nonatomic,strong)NetImageView *payBtn; @property(nonatomic,strong) UITableView *tableView; @@ -62,19 +62,19 @@ make.leading.trailing.equalTo(self.contentView).inset(kGetScaleWidth(16)); }]; [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(50)); - make.top.mas_equalTo(kGetScaleWidth(20)); - make.leading.mas_equalTo(kGetScaleWidth(17)); + make.width.height.mas_equalTo(kGetScaleWidth(52)); + make.top.mas_equalTo(kGetScaleWidth(18)); + make.leading.mas_equalTo(kGetScaleWidth(16)); }]; [self.priceView mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-kGetScaleWidth(16)); + make.trailing.mas_equalTo(-kGetScaleWidth(14)); make.height.mas_equalTo(kGetScaleWidth(21)); make.width.mas_greaterThanOrEqualTo(10); make.top.mas_equalTo(kGetScaleWidth(12)); }]; [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.equalTo(self.iconView.mas_trailing).mas_offset(kGetScaleWidth(15)); + make.leading.equalTo(self.iconView.mas_trailing).mas_offset(kGetScaleWidth(14)); make.top.mas_equalTo(kGetScaleWidth(10)); make.height.mas_equalTo(kGetScaleWidth(22)); @@ -93,7 +93,7 @@ make.leading.mas_equalTo(kGetScaleWidth(82)); make.width.mas_equalTo(kGetScaleWidth(160)); make.top.equalTo(self.titleView.mas_bottom); - make.bottom.mas_equalTo(-kGetScaleWidth(14)); + make.bottom.mas_equalTo(-kGetScaleWidth(12)); }]; [self.payBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(kGetScaleWidth(76)); @@ -106,12 +106,25 @@ - (void)setGameInfo:(UserGameInfoVo *)gameInfo{ _gameInfo = gameInfo; _iconView.imageUrl = _gameInfo.logo; - _bgImageView.imageUrl = _gameInfo.background; + + + _payBtn.imageUrl = _gameInfo.btnRgb; + + self.tierView.textColor = UIColorFromRGB(0xBBBCBD); + self.tierBgView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.6];; + [_bgImageView loadImageWithUrl:_gameInfo.background completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + self.tierView.textColor = [ThemeColor colorWithHexString:gameInfo.tagRgb]; + self.tierBgView.backgroundColor = [ThemeColor colorWithHexString:gameInfo.tagBg]; + self.bgImageView.image = image; + }]; _titleView.text = _gameInfo.gameName; _tierView.text = _gameInfo.tier; _tierBgView.hidden = _gameInfo.tier.length == 0; + + + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@ 钻/局",_gameInfo.price] attributes:@{NSFontAttributeName:kFontMedium(16),NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(10),NSForegroundColorAttributeName:[UIColor whiteColor]} range:[textAtt.string rangeOfString:@"钻/局"]]; + [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:[UIColor colorWithWhite:1 alpha:0.8]} range:[textAtt.string rangeOfString:@"钻/局"]]; UIImage *iconImage = kImage(@"mine_game_diamond"); NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; attachment.bounds = CGRectMake(0, roundf(_priceView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height);; @@ -143,7 +156,7 @@ - (NetImageView *)bgImageView{ if(!_bgImageView){ NetImageConfig *config = [[NetImageConfig alloc]init]; - config.placeHolder = kImage(@"mine_user_game_cell"); + config.placeHolder = kImage(@"mine_user_game_cell_bg"); _bgImageView = [[NetImageView alloc]initWithConfig:config]; _bgImageView.userInteractionEnabled = YES; } @@ -154,8 +167,6 @@ NetImageConfig *config = [NetImageConfig new]; config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; _iconView = [[NetImageView alloc]initWithConfig:config]; - _iconView.layer.cornerRadius = kGetScaleWidth(50)/2; - _iconView.layer.masksToBounds = YES; } return _iconView; @@ -193,15 +204,19 @@ } return _priceView; } -- (UIButton *)payBtn{ + +- (NetImageView *)payBtn{ if(!_payBtn){ - _payBtn = [UIButton new]; - [_payBtn setBackgroundImage:kImage(@"mine_game_pay_btn") forState:UIControlStateNormal]; - [_payBtn setTitleColor:UIColorFromRGB(0x683F0B) forState:UIControlStateNormal]; - [_payBtn setTitle:@"咨询下单" forState:UIControlStateNormal]; - _payBtn.titleLabel.font = kFontMedium(12); - [_payBtn addTarget:self action:@selector(consultingOrderAction) forControlEvents:UIControlEventTouchUpInside]; - + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = kImage(@"mine_user_game_cell_pay_bg"); + _payBtn = [[NetImageView alloc]initWithConfig:config];; + UIButton *payTitleBnt = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, kGetScaleWidth(72), kGetScaleWidth(30))]; + [payTitleBnt setTitleColor:UIColorFromRGB(0x683F0B) forState:UIControlStateNormal]; + [payTitleBnt setTitle:@"咨询下单" forState:UIControlStateNormal]; + payTitleBnt.titleLabel.font = kFontMedium(12); + [payTitleBnt addTarget:self action:@selector(consultingOrderAction) forControlEvents:UIControlEventTouchUpInside]; + [_payBtn addSubview:payTitleBnt]; + _payBtn.userInteractionEnabled = YES; } return _payBtn; } @@ -211,7 +226,7 @@ _tableView.delegate = self; _tableView.dataSource = self; _tableView.scrollEnabled = NO; - _tableView.rowHeight = kGetScaleWidth(22); + _tableView.rowHeight = kGetScaleWidth(24); _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.backgroundColor = [UIColor clearColor]; [_tableView registerClass:[XPMineUserGameTypeCell class] forCellReuseIdentifier:NSStringFromClass([XPMineUserGameTypeCell class])]; diff --git a/xplan-ios/Main/Mine/View/XPMineViewController.m b/xplan-ios/Main/Mine/View/XPMineViewController.m index c2a89152..41d0b3e2 100644 --- a/xplan-ios/Main/Mine/View/XPMineViewController.m +++ b/xplan-ios/Main/Mine/View/XPMineViewController.m @@ -290,6 +290,12 @@ } break; + case XPMineItemType_Game_Order: + { + XPMineGameOrderVC* orderVC = [[XPMineGameOrderVC alloc]init]; + [self.navigationController pushViewController:orderVC animated:YES]; + } + break; default: break; } @@ -402,9 +408,8 @@ ///点击了访客 - (void)xpMineHeadViewClickVisitor { - XPMineGameOrderVC* orderVC = [[XPMineGameOrderVC alloc]init]; - [self.navigationController pushViewController:orderVC animated:YES]; -// [self pushViewControllerWithType:XPMineItemType_Visitor functionItem:nil]; + + [self pushViewControllerWithType:XPMineItemType_Visitor functionItem:nil]; } ///点击了足迹 diff --git a/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.h b/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.h index 5e4af505..dd2b780a 100644 --- a/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.h +++ b/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.h @@ -8,9 +8,17 @@ #import #import "UserGameInfoVo.h" NS_ASSUME_NONNULL_BEGIN +@protocol XPRoomGameInviteBannerViewDelegate + +-(void)sendGameInviteMessageWithGameInfo:(UserGameInfoVo *)gameInfo; + +@end + @interface XPRoomGameInviteBannerView : UIView +@property(nonatomic,weak) iddelegate; @property(nonatomic,strong) UserGameInfoVo *gameInfo; +-(void)show; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.m b/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.m index 43c9bd54..eebf7dab 100644 --- a/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.m +++ b/xplan-ios/Main/Room/View/AnimationView/XPRoomGameInviteBannerView.m @@ -99,6 +99,23 @@ }]; } +-(void)show{ + [self performSelector:@selector(closeView) withObject:nil afterDelay:3]; + +} +-(void)closeView{ + [self removeFromSuperview]; +} +-(void)closeAction{ + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(closeView) object:nil]; + [self removeFromSuperview]; +} +-(void)sendMessageBtnAction{ + [self removeFromSuperview]; + if(self.delegate && [self.delegate respondsToSelector:@selector(sendGameInviteMessageWithGameInfo:)]){ + [self.delegate sendGameInviteMessageWithGameInfo:self.gameInfo]; + } +} -(void)setGameInfo:(UserGameInfoVo *)gameInfo{ _gameInfo = gameInfo; _headVeiw.imageUrl = _gameInfo.toAvatar; @@ -131,6 +148,7 @@ _backBtn = [UIButton new]; [_backBtn setImage:kImage(@"room_game_invite_banner_back") forState:UIControlStateNormal]; [_backBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_backBtn addTarget:self action:@selector(closeAction) forControlEvents:UIControlEventTouchUpInside]; } return _backBtn; } @@ -179,6 +197,7 @@ [_inspectView setTitle:@"立即查看" forState:UIControlStateNormal]; [_inspectView setTitleColor:UIColorFromRGB(0x695CEB) forState:UIControlStateNormal]; _inspectView.titleLabel.font = kFontMedium(12); + [_inspectView addTarget:self action:@selector(sendMessageBtnAction) forControlEvents:UIControlEventTouchUpInside]; } return _inspectView; } diff --git a/xplan-ios/Main/Tabbar/View/TabbarViewController.m b/xplan-ios/Main/Tabbar/View/TabbarViewController.m index a5c22eb2..f61232b8 100644 --- a/xplan-ios/Main/Tabbar/View/TabbarViewController.m +++ b/xplan-ios/Main/Tabbar/View/TabbarViewController.m @@ -96,7 +96,7 @@ NSString * const kNetworkReachabilityKey = @"kNetworkReachabilityKey"; UIKIT_EXTERN NSString * kNewUserRechargeKey; UIKIT_EXTERN NSString *kTabShowAnchorCardKey; -@interface TabbarViewController () +@interface TabbarViewController () /// 分割线 @property (nonatomic, strong) UIView *lineView; @@ -504,6 +504,10 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; XPNewUserRechargeSucessView * firstRechargeView= [[XPNewUserRechargeSucessView alloc] init]; firstRechargeView.rechargeInfo = model; [TTPopup popupView:firstRechargeView style:TTPopupStyleAlert]; + }else if(attachment.first == CustomMessageType_Initiat_Invitation && attachment.second == Custom_Message_Sub_Initiat_Invitation_Initiating_User){ + + UserGameInfoVo *gameInfo = [UserGameInfoVo modelWithDictionary:attachment.data]; + [self showGameVeiwWithGameInfo:gameInfo]; } } } @@ -554,10 +558,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; XPVersionUpdateModel *updateModel = [XPVersionUpdateModel modelWithDictionary:attachment.data]; [self getVersionUpdate:updateModel]; } - }else if(attachment.first == CustomMessageType_Initiat_Invitation && attachment.second == Custom_Message_Sub_Initiat_Invitation_Initiating_User){ - - UserGameInfoVo *gameInfo = [UserGameInfoVo modelWithDictionary:attachment.data]; - [self showGameVeiwWithGameInfo:gameInfo]; } } } @@ -565,19 +565,37 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; __block BOOL isInChat = NO; [self.getKeyWindowNav.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if ([obj isKindOfClass:[SessionViewController class]]) { - isInChat = YES; + SessionViewController *chatVC = (SessionViewController *)obj; + if(![gameInfo.fromUid isEqualToString:chatVC.session.sessionId]){ + isInChat = YES; + } *stop = YES; } }]; if(isInChat == YES)return; + if([gameInfo.fromUid isEqualToString:[AccountInfoStorage instance].getUid]){ + return; + } AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); XPRoomGameInviteBannerView *gameView = [[XPRoomGameInviteBannerView alloc]initWithFrame:CGRectMake(0, -kGetScaleWidth(92), KScreenWidth, kGetScaleWidth(92))]; gameView.gameInfo = gameInfo; [kWindow addSubview:gameView]; - [UIView animateWithDuration:1 animations:^{ - gameView.frame = CGRectMake(0, kNavigationHeight + 15, KScreenWidth, kGetScaleWidth(92)); + gameView.delegate = self; + [UIView animateWithDuration:0.5 animations:^{ + UIWindow *window = UIApplication.sharedApplication.windows.firstObject; + CGFloat topPadding = window.safeAreaInsets.top; + gameView.frame = CGRectMake(0, topPadding + 15, KScreenWidth, kGetScaleWidth(92)); + }completion:^(BOOL finished) { + [gameView show]; }]; } +#pragma mark - XPRoomGameInviteBannerViewDelegate +-(void)sendGameInviteMessageWithGameInfo:(UserGameInfoVo *)gameInfo{ + NSString * sessionId = [NSString stringWithFormat:@"%@",gameInfo.fromUid]; + NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; +} - (UINavigationController *)getKeyWindowNav { if ([XCCurrentVCStackManager shareManager].getCurrentVC) { return [XCCurrentVCStackManager shareManager].getCurrentVC.navigationController;