YOUPAILZHomeVC.m 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997
  1. //
  2. // YOUPAILZHomeVC.m
  3. // MSYOUPAI
  4. //
  5. // Created by CY on 2022/2/28.
  6. // Copyright © 2022 MS. All rights reserved.
  7. //
  8. #import "YOUPAILZHomeVC.h"
  9. // controller
  10. #import "YOUPAILCUpdateVersionVC.h"
  11. #import "YOUPAILPYoungPwdVC.h"
  12. #import "YOUPAILPYoungForgetPWD.h"
  13. #import "YOUPAILZLiveAudienceVC.h"
  14. #import "YOUPAILZVipVC.h"
  15. #import "YOUPAIZYSearchVC.h"
  16. #import "YOUPAILZHomeActiveVC.h"
  17. #import "MSYMineinfoEditVC.h"
  18. //window
  19. #import "YOUPAILPYoungCloseWindow.h"
  20. #import "YOUPAILPYoungOpenWindow.h"
  21. #import "YOUPAILZSignWindow.h"
  22. #import "YOUPAIHRWebWindow.h"
  23. #import "YOUPAIZYAdvertWindow.h"
  24. #import "YOUPAIZYFirstRechargeWindow.h"
  25. #import "YOUPAILZExposureWindow.h"
  26. // category
  27. #import "UIViewController+TFPresent.h"
  28. // model
  29. #import "YOUPAILCFirstRechargeModel.h"
  30. #import "YOUPAILZHomeTVModel.h"
  31. // view
  32. #import "JXCategoryView.h"
  33. #import "SDCycleScrollView.h"
  34. #import "YOUPAILZGiftNoticeCell.h"
  35. #import "YOUPAILZInfoImperfectView.h"
  36. #import "YOUPAIFinishMsgWindow.h"
  37. #import "YOUPAILCWriteMesVC.h"
  38. @interface YOUPAILZHomeVC ()<LPYoungPwdDelegate,LPYoungCloseDelegate,LPYoungOpenDelegate,YoungModeResetDelegate,ZYFirstRechargeWindowDelegate,ZYAdvertWindowDelegate,JXCategoryViewDelegate,JXCategoryListContainerViewDelegate,SDCycleScrollViewDelegate,VQ_FinishMsgWindowDelegate>{
  39. dispatch_source_t _timer;
  40. }
  41. @property (nonatomic, weak) SDCycleScrollView *youpaipbannerView;
  42. @property (nonatomic, weak) UIView *youpaiptvBgV;
  43. @property (nonatomic, weak) UIButton *youpaipnoticeDescBtn; // 如何上电视按钮
  44. @property (nonatomic, strong) NSMutableArray <YOUPAILZHomeTVModel *> *youpaipTVDataSource; // 电视数据
  45. @property (nonatomic, weak) YOUPAILZInfoImperfectView *infoImperfectView;
  46. @property (nonatomic,strong)NSTimer *youpaipTVTimer;
  47. @property (nonatomic, assign)NSInteger currentTVLockTimer;
  48. @property (nonatomic, strong) NSString *youpaipTVUrl;
  49. @property(nonatomic,strong)SDCycleScrollView* youpaipSDCscrollView;
  50. @property (strong, nonatomic) YOUPAILCFirstRechargeModel *youpaipfirstRechargeModel;
  51. @end
  52. @implementation YOUPAILZHomeVC
  53. - (void)viewWillAppear:(BOOL)animated{
  54. [super viewWillAppear:animated];
  55. [self.navigationController setNavigationBarHidden:YES animated:animated];
  56. [self youpaifDetectVersionUpdates];
  57. [self youpaifDetectYoungMode];
  58. [self youpaifloadFinishMsgStatus];
  59. }
  60. - (void)viewWillDisappear:(BOOL)animated{
  61. [super viewWillDisappear:animated];
  62. [self.navigationController setNavigationBarHidden:NO animated:animated];
  63. }
  64. - (void)viewDidLoad {
  65. [super viewDidLoad];
  66. self.youpaipTVDataSource = [NSMutableArray array];
  67. [self youpaifinitConfig];
  68. [self youpaifloadLevelInfo];
  69. // [self youpaifrequestSignData];
  70. [self youpaifloadAdvert];
  71. [self youpaifrequestTVData];
  72. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youpaifuserOnlineUpdate) name:@"youpaifuserOnlineUpdate" object:nil];
  73. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youpaifTVDataUpdate:) name:@"VQUHomeTVDataNotification" object:nil];
  74. }
  75. //appid登录完善资料
  76. -(void)youpaifloadFinishMsgStatus{
  77. YOUPAILCUserModel *userModel = [LCSaveModel getUserModel];
  78. if (userModel.youpaipuserinfo.youpaipfinish_status == 0) {
  79. YOUPAIFinishMsgWindow *VC= [[YOUPAIFinishMsgWindow alloc]init];
  80. VC.vWidth = KScreenWidth - (47.5*2);
  81. VC.vHeight = 330;
  82. VC.youpaipfinishMsgdelegate = self;
  83. VC.isTouchDismiss = NO;
  84. [self TFPresentVC:VC completion:^{
  85. }];
  86. }
  87. }
  88. -(void)youpaifjumFinishMsgClick{
  89. YOUPAILCWriteMesVC *msg = [[YOUPAILCWriteMesVC alloc]init];
  90. msg.youpaipinviteCodeStr = [LCTools getPasteString];
  91. msg.isFinishMsg = YES;
  92. [self.navigationController pushViewController:msg animated:YES];
  93. }
  94. - (void)youpaifinitUI{
  95. UIView *youpaipnavV = [[UIView alloc] init];
  96. youpaipnavV.backgroundColor = [UIColor whiteColor];
  97. [self.view addSubview:youpaipnavV];
  98. [youpaipnavV mas_makeConstraints:^(MASConstraintMaker *make) {
  99. make.left.top.right.offset(0.0f);
  100. make.height.offset(StatusBarHeight + 54.0f);
  101. }];
  102. // UIButton *youpaipsearchBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  103. // [youpaipsearchBtn setImage:[UIImage imageNamed:@"vqu_images_home_search"] forState:UIControlStateNormal];
  104. // [youpaipsearchBtn addTarget:self action:@selector(youpaifsearchClick) forControlEvents:UIControlEventTouchUpInside];
  105. // [youpaipnavV addSubview:youpaipsearchBtn];
  106. // [youpaipsearchBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  107. // make.right.offset(-11.0f);
  108. // make.bottom.offset(-13.5f);
  109. // make.size.mas_offset(CGSizeMake(25.0f, 25.0f));
  110. // }];
  111. UIButton *youpaipSuperExposureBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  112. [youpaipSuperExposureBtn setImage:[UIImage imageNamed:@"vqu_images_home_super_exposure"] forState:UIControlStateNormal];
  113. [youpaipSuperExposureBtn addTarget:self action:@selector(youpaifSuperExposureClick) forControlEvents:UIControlEventTouchUpInside];
  114. [youpaipnavV addSubview:youpaipSuperExposureBtn];
  115. [youpaipSuperExposureBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  116. // make.right.equalTo(youpaipsearchBtn.mas_left).offset(-8.5f);
  117. make.right.offset(-11.0f);
  118. make.bottom.offset(-16.0f);
  119. make.size.mas_offset(CGSizeMake(72.0f, 22.0f));
  120. }];
  121. JXCategoryTitleView *youpaipcategoryView = [[JXCategoryTitleView alloc] init];
  122. youpaipcategoryView.backgroundColor = [UIColor whiteColor];
  123. youpaipcategoryView.titles = self.titles;
  124. youpaipcategoryView.delegate = self;
  125. youpaipcategoryView.titleSelectedColor = LZ273145Color;
  126. youpaipcategoryView.titleColor = LZ475A7DColor;
  127. youpaipcategoryView.titleColorGradientEnabled = YES;
  128. youpaipcategoryView.titleFont = LCFont(18.0f);
  129. youpaipcategoryView.titleSelectedFont = LCBoldFont(18.0f);
  130. youpaipcategoryView.cellWidth = JXCategoryViewAutomaticDimension;
  131. youpaipcategoryView.cellSpacing = 20.0f;
  132. youpaipcategoryView.averageCellSpacingEnabled = NO;
  133. [youpaipnavV addSubview:youpaipcategoryView];
  134. JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
  135. lineView.verticalMargin = 10.0f;
  136. lineView.indicatorHeight = 3.0f;
  137. lineView.indicatorWidth = 10.0f;
  138. lineView.indicatorColor = LZ7C69FEColor;
  139. youpaipcategoryView.indicators = @[lineView];
  140. JXCategoryListContainerView *pagerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_CollectionView delegate:self];
  141. pagerView.listCellBackgroundColor = LZFAFAFCColor;
  142. [self.view addSubview:pagerView];
  143. youpaipcategoryView.listContainer = pagerView;
  144. [youpaipcategoryView mas_makeConstraints:^(MASConstraintMaker *make) {
  145. make.left.bottom.offset(0.0f);
  146. make.right.equalTo(youpaipSuperExposureBtn.mas_left).offset(-8.5f);
  147. make.height.offset(54.0f);
  148. }];
  149. UIView *youpaiptvBgV = [[UIView alloc] init];
  150. youpaiptvBgV.layer.cornerRadius = ScaleSize(10.0f);
  151. youpaiptvBgV.clipsToBounds = YES;
  152. youpaiptvBgV.backgroundColor = [HexColorFromRGB(0xB2BAF9) colorWithAlphaComponent:0.31f];
  153. [self.view addSubview:youpaiptvBgV];
  154. self.youpaiptvBgV = youpaiptvBgV;
  155. [youpaiptvBgV mas_makeConstraints:^(MASConstraintMaker *make) {
  156. make.left.offset(ScaleSize(12.0f));
  157. make.right.offset(ScaleSize(-12.0f));
  158. make.top.offset(StatusBarHeight + 54.0f);
  159. make.height.offset(ScaleSize(0.0f));
  160. }];
  161. UIImageView *tvImgV = [[UIImageView alloc] init];
  162. tvImgV.image = [UIImage imageNamed:@"vqu_images_home_tv"];
  163. [youpaiptvBgV addSubview:tvImgV];
  164. [tvImgV mas_makeConstraints:^(MASConstraintMaker *make) {
  165. make.left.top.bottom.offset(0.0f);
  166. make.width.offset(ScaleSize(72.0f));
  167. }];
  168. UIButton *youpaipnoticeDescBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  169. [youpaipnoticeDescBtn setImage:[UIImage imageNamed:@"vqu_images_home_tv_desc_h"] forState:UIControlStateNormal];
  170. [youpaipnoticeDescBtn setTitle:@"如何上电视" forState:UIControlStateNormal];
  171. [youpaipnoticeDescBtn setTitleColor:LZ7C69FEColor forState:UIControlStateNormal];
  172. youpaipnoticeDescBtn.titleLabel.font = LCFont(10.0f);
  173. youpaipnoticeDescBtn.layer.cornerRadius = 9.0f;
  174. youpaipnoticeDescBtn.clipsToBounds = YES;
  175. youpaipnoticeDescBtn.layer.borderColor = LZ7C69FEColor.CGColor;
  176. youpaipnoticeDescBtn.layer.borderWidth = 0.5f;
  177. [youpaipnoticeDescBtn addTarget:self action:@selector(youpaipnoticeDescBtnClick) forControlEvents:UIControlEventTouchUpInside];
  178. [youpaipnoticeDescBtn setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
  179. [youpaiptvBgV addSubview:youpaipnoticeDescBtn];
  180. self.youpaipnoticeDescBtn = youpaipnoticeDescBtn;
  181. [youpaipnoticeDescBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  182. make.centerY.equalTo(youpaiptvBgV);
  183. make.right.offset(-10.0f);
  184. make.size.mas_offset(CGSizeMake(70.0f, 18.0f));
  185. }];
  186. [pagerView mas_makeConstraints:^(MASConstraintMaker *make) {
  187. make.left.right.offset(0.0f);
  188. make.bottom.offset(-TabbarHeight);
  189. make.top.equalTo(youpaiptvBgV.mas_bottom).offset(9.0f);
  190. }];
  191. SDCycleScrollView *youpaipbannerView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil];
  192. youpaipbannerView.autoScrollTimeInterval = 3.0;//2s轮播
  193. // youpaipbannerView.imageURLStringsGroup = @[@"",@""];
  194. youpaipbannerView.pageControlStyle = SDCycleScrollViewPageContolStyleNone;
  195. youpaipbannerView.backgroundColor = [UIColor clearColor];
  196. youpaipbannerView.scrollDirection = UICollectionViewScrollDirectionVertical;
  197. youpaipbannerView.pageControlStyle = SDCycleScrollViewPageContolStyleNone;
  198. youpaipbannerView.mainView.userInteractionEnabled = NO;
  199. [youpaiptvBgV addSubview:youpaipbannerView];
  200. self.youpaipbannerView = youpaipbannerView;
  201. [youpaipbannerView mas_makeConstraints:^(MASConstraintMaker *make) {
  202. make.top.bottom.offset(0.0f);
  203. make.left.equalTo(tvImgV.mas_right).offset(0.0f);
  204. make.right.equalTo(youpaipnoticeDescBtn.mas_left).offset(0.0f);
  205. }];
  206. @weakify(self);
  207. [youpaipbannerView setItemDidScrollOperationBlock:^(NSInteger currentIndex) {
  208. @strongify(self);
  209. NSInteger lock_time = [self.youpaipTVDataSource[currentIndex].youpaiplock_time integerValue];
  210. if (lock_time != 0) {
  211. self.currentTVLockTimer = lock_time;
  212. self.youpaipTVDataSource[currentIndex].youpaiplock_time = @"0";
  213. [self youpaifstartTimer];
  214. }else{
  215. [self youpaifstopTimer];
  216. }
  217. if (lock_time == 0) {
  218. lock_time = 3;
  219. }
  220. self.youpaipbannerView.autoScrollTimeInterval = lock_time;
  221. }];
  222. [self loadRightSDCView];
  223. [self youpaifinitInfoImperfectView];
  224. }
  225. - (void)youpaipnoticeDescBtnClick{
  226. ZCBaseWebVC * vc = [[ZCBaseWebVC alloc]init];
  227. vc.contentUrl = self.youpaipTVUrl;
  228. [self.navigationController pushViewController:vc animated:YES];
  229. }
  230. -(void)loadRightSDCView{
  231. SDCycleScrollView *rightBannerView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(KScreenWidth - 12.0f - 49.0f, KScreenHeight - TabbarHeight - 12.0f-39-19-50, 50, 50.0f) delegate:self placeholderImage:[UIImage imageNamed:@""]];
  232. self.youpaipSDCscrollView = rightBannerView;
  233. rightBannerView.bannerImageViewContentMode = UIViewContentModeScaleAspectFit;
  234. rightBannerView.autoScrollTimeInterval = 3.0;//2s轮播
  235. rightBannerView.pageControlStyle = SDCycleScrollViewPageContolStyleNone;
  236. rightBannerView.backgroundColor = [UIColor clearColor];
  237. [self.view addSubview:rightBannerView];
  238. [self youpaifloadFirstRecharge];
  239. }
  240. -(void)youpaifloadFirstRecharge{
  241. [LCHttpHelper requestWithURLString:GetAdvert parameters:@{@"position":@"2"} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  242. NSDictionary* dict = (NSDictionary*)responseObject;
  243. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  244. if (code==0) {//成功
  245. self.youpaipfirstRechargeModel = [YOUPAILCFirstRechargeModel mj_objectWithKeyValues:dict[@"data"]];
  246. NSMutableArray *imgUrlArray = [NSMutableArray new];
  247. for (YOUPAILCBannerModel* model in self.youpaipfirstRechargeModel.youpaiplist) {
  248. [imgUrlArray addObject:[LCTools getImageUrlWithAddress:model.youpaipimage]];
  249. }
  250. self.youpaipSDCscrollView.imageURLStringsGroup = imgUrlArray;
  251. if (self.youpaipfirstRechargeModel.youpaipis_open == 1) {
  252. self.youpaipSDCscrollView.hidden = NO;
  253. }else{
  254. self.youpaipSDCscrollView.hidden = YES;
  255. }
  256. }
  257. } failure:^(NSError *error) {}];
  258. }
  259. #pragma mark - SDCycleScrollViewDelegate
  260. - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index
  261. {
  262. YOUPAILCBannerModel* model = self.youpaipfirstRechargeModel.youpaiplist[index];
  263. if (model.youpaiplink_type==1) {
  264. ZCBaseWebVC* baseWeb = [[ZCBaseWebVC alloc]init];
  265. baseWeb.contentUrl = model.youpaiplink_url;
  266. [self.navigationController pushViewController:baseWeb animated:YES];
  267. }else if (model.youpaiplink_type==2||model.youpaiplink_type==3){
  268. [self youpaifpageToStr:model.youpaiplink_url];
  269. }
  270. }
  271. // 开始计时
  272. - (void)youpaifstartTimer{
  273. if (self.youpaipTVTimer == nil) {
  274. self.youpaipTVTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(youpaiftimerAction) userInfo:nil repeats:YES];
  275. [[NSRunLoop currentRunLoop] addTimer:self.youpaipTVTimer forMode:NSRunLoopCommonModes];
  276. }
  277. [self.youpaipnoticeDescBtn setImage:[UIImage imageNamed:@"vqu_images_home_tv_desc_n"] forState:UIControlStateNormal];
  278. [self.youpaipnoticeDescBtn setTitle:[NSString stringWithFormat:@"锁屏中%@s",@(self.currentTVLockTimer)] forState:UIControlStateNormal];
  279. [self.youpaipnoticeDescBtn setTitleColor:LZA3AABEColor forState:UIControlStateNormal];
  280. self.youpaipnoticeDescBtn.layer.borderColor = LZA3AABEColor.CGColor;
  281. }
  282. // 结束计时
  283. - (void)youpaifstopTimer{
  284. [self.youpaipTVTimer invalidate];
  285. self.youpaipTVTimer = nil;
  286. [self.youpaipnoticeDescBtn setImage:[UIImage imageNamed:@"vqu_images_home_tv_desc_h"] forState:UIControlStateNormal];
  287. [self.youpaipnoticeDescBtn setTitle:@"如何上电视" forState:UIControlStateNormal];
  288. self.youpaipnoticeDescBtn.layer.borderColor = LZ7C69FEColor.CGColor;
  289. [self.youpaipnoticeDescBtn setTitleColor:LZ7C69FEColor forState:UIControlStateNormal];
  290. }
  291. - (void)youpaiftimerAction{
  292. self.currentTVLockTimer --;
  293. [self.youpaipnoticeDescBtn setImage:[UIImage imageNamed:@"vqu_images_home_tv_desc_n"] forState:UIControlStateNormal];
  294. [self.youpaipnoticeDescBtn setTitle:[NSString stringWithFormat:@"锁屏中%@s",@(self.currentTVLockTimer)] forState:UIControlStateNormal];
  295. [self.youpaipnoticeDescBtn setTitleColor:LZA3AABEColor forState:UIControlStateNormal];
  296. if (self.currentTVLockTimer < 0) {
  297. [self youpaifstopTimer];
  298. }
  299. }
  300. - (void)youpaifinitInfoImperfectView{
  301. if ([LCSaveData getWhiteVersion]) {
  302. return;
  303. }
  304. YOUPAILZInfoImperfectView *infoImperfectView = [[YOUPAILZInfoImperfectView alloc] initWithFrame:CGRectMake(12, KScreenHeight, KScreenWidth - 24.0f, 39.0f)];
  305. @weakify(self);
  306. [infoImperfectView setGoEditUserInfoPageBlock:^{
  307. @strongify(self);
  308. MSYMineinfoEditVC * editvc = [MSYMineinfoEditVC new];
  309. [self.navigationController pushViewController:editvc animated:true];
  310. }];
  311. [self.view addSubview:infoImperfectView];
  312. self.infoImperfectView = infoImperfectView;
  313. }
  314. /** 如果你需要自定义cell样式,请在实现此代理方法返回你的自定义cell的class。 */
  315. - (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view{
  316. if (view == self.youpaipbannerView) {
  317. return YOUPAILZGiftNoticeCell.class;
  318. }
  319. return nil;
  320. }
  321. /** 如果你自定义了cell样式,请在实现此代理方法为你的cell填充数据以及其它一系列设置 */
  322. - (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleScrollView:(SDCycleScrollView *)view{
  323. YOUPAILZGiftNoticeCell *itemCell = (YOUPAILZGiftNoticeCell *)cell;
  324. [itemCell youpaifreloadWithModel:self.youpaipTVDataSource[index]];
  325. }
  326. - (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
  327. return self.titles.count;
  328. }
  329. - (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
  330. YOUPAILZHomeActiveVC *vc = [[YOUPAILZHomeActiveVC alloc] init];
  331. vc.youpaiprequestUrl = self.urls[index];
  332. @weakify(self);
  333. [vc setShowUserInfoImperfectBlock:^(BOOL isShow) {
  334. @strongify(self);
  335. if (isShow) {
  336. [UIView animateWithDuration:0.25f animations:^{
  337. self.infoImperfectView.mj_y = KScreenHeight - TabbarHeight - 12.0f - self.infoImperfectView.mj_h;
  338. }];
  339. }
  340. }];
  341. return vc;
  342. }
  343. - (NSArray <NSString *> *)titles{
  344. return @[@"推荐",@"在线"];
  345. }
  346. - (NSArray<NSString *> *)urls{
  347. return @[HomeRecommend,HomeOnlineList];
  348. }
  349. /// 搜索
  350. - (void)youpaifsearchClick{
  351. YOUPAIZYSearchVC* seach = [[YOUPAIZYSearchVC alloc]init];
  352. [self pushEffectPresentToVC:seach];
  353. }
  354. /// 超级曝光
  355. - (void)youpaifSuperExposureClick{
  356. YOUPAILZExposureWindow *window = [[YOUPAILZExposureWindow alloc] init];
  357. @weakify(self);
  358. [window setGoVipPageBlock:^{
  359. @strongify(self);
  360. YOUPAILZVipVC* vc = [[YOUPAILZVipVC alloc]init];
  361. [self.navigationController pushViewController:vc animated:YES];
  362. }];
  363. [self TFPresentVC:window completion:nil];
  364. }
  365. /// 获取上电视数据
  366. - (void)youpaifrequestTVData{
  367. @weakify(self);
  368. [LCHttpHelper requestWithURLString:GetOntvList parameters:@{} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  369. @strongify(self);
  370. NSDictionary* dict = (NSDictionary*)responseObject;
  371. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  372. if (code==0) {//成功
  373. self.youpaipTVDataSource = [YOUPAILZHomeTVModel mj_objectArrayWithKeyValuesArray:[dict objectForKey:@"data"]];
  374. NSMutableArray *arr = [NSMutableArray array];
  375. for (YOUPAILZHomeTVModel *model in self.youpaipTVDataSource) {
  376. [arr addObject:@""];
  377. }
  378. if (arr.count != 0) {
  379. self.youpaiptvBgV.hidden = NO;
  380. [self.youpaiptvBgV mas_remakeConstraints:^(MASConstraintMaker *make) {
  381. make.left.offset(ScaleSize(12.0f));
  382. make.right.offset(ScaleSize(-12.0f));
  383. make.top.offset(StatusBarHeight + 54.0f + ScaleSize(9.0f));
  384. make.height.offset(ScaleSize(60.0f));
  385. }];
  386. }
  387. self.youpaipbannerView.imageURLStringsGroup = arr;
  388. }
  389. } failure:^(NSError *error) {
  390. }];
  391. }
  392. - (void)youpaifTVDataUpdate:(NSNotification *)notify{
  393. NSDictionary *dataDic = notify.userInfo;
  394. YOUPAILZHomeTVModel *notifyModel = dataDic[@"model"];
  395. if (self.youpaipbannerView.currentIndex + 1 >= self.youpaipTVDataSource.count - 1) {
  396. [self.youpaipTVDataSource addObject:notifyModel];
  397. }else{
  398. [self.youpaipTVDataSource insertObject:notifyModel atIndex:self.youpaipbannerView.currentIndex + 1];
  399. }
  400. NSMutableArray *arr = [NSMutableArray array];
  401. for (YOUPAILZHomeTVModel *model in self.youpaipTVDataSource) {
  402. [arr addObject:@""];
  403. }
  404. self.youpaipbannerView.imageURLStringsGroup = arr;
  405. [self.youpaipbannerView makeScrollViewScrollToIndex:self.youpaipbannerView.currentIndex];
  406. }
  407. #pragma mark-广告弹框
  408. -(void)youpaifloadAdvert{
  409. @weakify(self);
  410. [LCHttpHelper requestWithURLString:GetAdvert parameters:@{@"source_id":@"2"} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  411. @strongify(self);
  412. NSDictionary* dict = (NSDictionary*)responseObject;
  413. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  414. if (code==0) {//成功
  415. NSInteger status = [dict[@"data"][@"advert"][@"status"] integerValue];
  416. NSString *image = dict[@"data"][@"advert"][@"image"];
  417. NSInteger link_type = [dict[@"data"][@"advert"][@"link_type"] integerValue];
  418. NSString *link_url = dict[@"data"][@"advert"][@"link_url"];
  419. NSInteger window_type = [dict[@"data"][@"advert"][@"window_type"] integerValue];
  420. if (status == 1 && image.length>5) {
  421. if (window_type == 2) {
  422. YOUPAIHRWebWindow *window = [[YOUPAIHRWebWindow alloc] init];
  423. window.isTouchDismiss = YES;
  424. window.youpaipurl = dict[@"data"][@"advert"][@"window_link"];
  425. window.youpaipwidth = [dict[@"data"][@"advert"][@"width"] floatValue];
  426. window.youpaipheight = [dict[@"data"][@"advert"][@"height"] floatValue];
  427. window.youpaipgravity = dict[@"data"][@"advert"][@"gravity"];
  428. [self TFPresentVC:window completion:^{}];
  429. }else{
  430. YOUPAIZYAdvertWindow *VC= [[YOUPAIZYAdvertWindow alloc]init];
  431. VC.youpaipdelegate = self;
  432. VC.vWidth = KScreenWidth -30;
  433. VC.vHeight = KScreenWidth-30;
  434. VC.youpaipimageurl = image;
  435. VC.youpaiplink_type = link_type;
  436. VC.youpaiplink_url = link_url;
  437. VC.isTouchDismiss = YES;
  438. [self TFPresentVC:VC completion:^{}];
  439. }
  440. }
  441. }
  442. } failure:^(NSError *error) {}];
  443. }
  444. //获取首冲弹框数据
  445. -(void)youpaifloadAdvert1{
  446. if ([NSStringFromClass([LCTools getContainNavigationControllerCurrentVC].class) isEqual:@"YOUPAILZChatRoomVC"]) {
  447. return;
  448. }
  449. @weakify(self);
  450. [LCHttpHelper requestWithURLString:GetAdvert parameters:@{@"position":@"6"} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  451. @strongify(self);
  452. NSDictionary* dict = (NSDictionary*)responseObject;
  453. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  454. if (code==0) {//成功
  455. YOUPAILCFirstRechargeModel *firstRechargeModel1 = [YOUPAILCFirstRechargeModel mj_objectWithKeyValues:dict[@"data"]];
  456. for (int i = 0; i<firstRechargeModel1.youpaiplist.count; i++) {
  457. YOUPAILCBannerModel* model = firstRechargeModel1.youpaiplist[i];
  458. if (model.youpaipdelayed_time == 0) {
  459. [self youpaifshowAdvertAlertWithModel:model];
  460. }else{
  461. [self performSelector:@selector(youpaifshowAdvertAlertWithModel:) withObject:model afterDelay:model.youpaipdelayed_time];
  462. }
  463. }
  464. }
  465. } failure:^(NSError *error) {}];
  466. }
  467. - (void)youpaifshowAdvertAlertWithModel:(YOUPAILCBannerModel *)model{
  468. if([NSStringFromClass([LCTools getCurrentVC].class) isEqual:@"YOUPAILZLiveAnchorVC"]) {
  469. return;
  470. }
  471. if([LCTools getContainNavigationControllerCurrentVC].tabBarController == nil) {
  472. return;
  473. }
  474. if (model.youpaipwindow_type == 2) {
  475. YOUPAIHRWebWindow *window = [[YOUPAIHRWebWindow alloc] init];
  476. window.isTouchDismiss = YES;
  477. window.youpaipurl = model.youpaipwindow_link;
  478. window.youpaipwidth = model.youpaipwidth;
  479. window.youpaipheight = model.youpaipheight;
  480. window.youpaipgravity = model.youpaipgravity;
  481. [[LCTools getCurrentVC] TFPresentVC:window completion:^{}];
  482. }else{
  483. YOUPAIZYFirstRechargeWindow *VC= [[YOUPAIZYFirstRechargeWindow alloc]init];
  484. VC.youpaipdelegate = self;
  485. VC.vWidth = KScreenWidth -30;
  486. VC.vHeight = KScreenWidth-30;
  487. VC.youpaipimageurl = model.youpaipimage;
  488. VC.youpaiplink_type = model.youpaiplink_type;
  489. VC.youpaiplink_url = model.youpaiplink_url;
  490. VC.isTouchDismiss = YES;
  491. [[LCTools getCurrentVC] TFPresentVC:VC completion:^{}];
  492. }
  493. }
  494. #pragma mark - ZYFirstRechargeWindowDelegate
  495. - (void)youpaifLZFirstRechargeClickAdverImage:(NSInteger)link_type andUrl:(NSString *)link_url{
  496. if (link_type == 1) {
  497. ZCBaseWebVC* baseWeb = [[ZCBaseWebVC alloc]init];
  498. baseWeb.contentUrl = link_url;
  499. UIViewController *vc = [LCTools getContainNavigationControllerCurrentVC];
  500. if([NSStringFromClass([LCTools getContainNavigationControllerCurrentVC].class) isEqual:@"YOUPAILZLiveAudienceVC"]) {
  501. YOUPAILZLiveAudienceVC *audienceVC = (YOUPAILZLiveAudienceVC *)vc;
  502. audienceVC.youpaipisNotPanClose = YES;
  503. }
  504. [vc.navigationController pushViewController:baseWeb animated:YES];
  505. }else if (link_type==2 || link_type==3){
  506. UIViewController *vc = [LCTools getContainNavigationControllerCurrentVC];
  507. if([NSStringFromClass([LCTools getContainNavigationControllerCurrentVC].class) isEqual:@"YOUPAILZLiveAudienceVC"]) {
  508. YOUPAILZLiveAudienceVC *audienceVC = (YOUPAILZLiveAudienceVC *)vc;
  509. audienceVC.youpaipisNotPanClose = YES;
  510. }
  511. [vc youpaifpageToStr:link_url];
  512. }else{
  513. }
  514. }
  515. #pragma mark -ZYAdvertWindowDelegate
  516. -(void)youpaifclickAdverImage:(NSInteger)link_type andUrl:(NSString *)link_url
  517. {
  518. if (link_type == 1) {
  519. ZCBaseWebVC* baseWeb = [[ZCBaseWebVC alloc]init];
  520. baseWeb.contentUrl = link_url;
  521. [self.navigationController pushViewController:baseWeb animated:YES];
  522. }else if (link_type==2 || link_type==3){
  523. [self youpaifpageToStr:link_url];
  524. }else{
  525. YOUPAILZVipVC* baseWeb = [[YOUPAILZVipVC alloc]init];
  526. [self.navigationController pushViewController:baseWeb animated:YES];
  527. }
  528. }
  529. /// 系统配置信息
  530. - (void)youpaifinitConfig{
  531. [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[LCTools getImageUrlWithAddress:@"/v1.3/dress/bubble/lALPD3zUOqg7eJA7bg_110_59.png"] options:SDWebImageDownloaderUseNSURLCache progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {} completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
  532. if(data != nil){
  533. [LCSaveData saveBubbleWithKey:[LCTools getImageUrlWithAddress:@"/v1.3/dress/bubble/lALPD3zUOqg7eJA7bg_110_59.png"].absoluteString Data:data];
  534. }
  535. }];
  536. @weakify(self);
  537. [LCHttpHelper requestWithURLString:AppConfig parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  538. @strongify(self);
  539. NSDictionary* dict = (NSDictionary*)responseObject;
  540. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  541. if (code==0) {//成功
  542. // self.youpaipswitch_index = [[[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"switch_index"] integerValue];
  543. NSString* sysId = [[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"sysId"];
  544. NSString* servId = [[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"servId"];
  545. NSString* appurl = [[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"appurl"];
  546. NSArray* serviceIdArr = [[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"serviceId"];
  547. NSString *audit_status = [NSString stringWithFormat:@"%@",[[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"audit_status"]];
  548. NSString *rankH5Url = [[dict objectForKey:@"data"]objectForKey:@"rank_url"];
  549. NSInteger free = [[[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"free"] integerValue];
  550. // NSInteger timeOut = [[[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"timeOut"] integerValue];
  551. NSInteger isLive = [[[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"is_live"] integerValue];
  552. self.youpaipTVUrl = [[[dict objectForKey:@"data"]objectForKey:@"webUrl"] objectForKey:@"tv"];
  553. NSString* image_server = [[[dict objectForKey:@"data"]objectForKey:@"config"] objectForKey:@"image_server"];
  554. if (!OCStringIsEmpty(image_server)) {
  555. [LCSaveData saveImageUrl:[NSString stringWithFormat:@"%@/",image_server]];
  556. }
  557. if ([LCSaveModel getUserModel].youpaipuserinfo.youpaipfinish_status != 0) {
  558. [self youpaifloadAdvert1];
  559. }
  560. if (!kIsNilObject(appurl)) {
  561. [LCSaveData saveAppUrl:appurl];
  562. }
  563. if (!kIsNilObject(sysId)) {
  564. [LCSaveData saveSysId:sysId];
  565. }
  566. if (!kIsNilObject(servId)) {
  567. [LCSaveData saveServerId:servId];
  568. }
  569. if (!kIsNilObject(serviceIdArr)) {
  570. [LCSaveData saveServiceIdArr:serviceIdArr];
  571. }
  572. if (!kIsNilObject(rankH5Url)) {
  573. [LCSaveData saveRankH5Url:rankH5Url];
  574. }
  575. [LCSaveData saveIMPrice:free];
  576. [LCSaveData saveIsLive:isLive];
  577. NSArray *bubbles = [[[dict objectForKey:@"data"]objectForKey:@"dress"] objectForKey:@"bubble"];
  578. for (NSDictionary *bubbleDist in bubbles) {
  579. [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[LCTools getImageUrlWithAddress:[bubbleDist objectForKey:@"bubble"]] options:SDWebImageDownloaderUseNSURLCache progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {} completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
  580. if(data != nil){
  581. [LCSaveData saveBubbleWithKey:[LCTools getImageUrlWithAddress:[bubbleDist objectForKey:@"bubble"]].absoluteString Data:data];
  582. }
  583. }];
  584. }
  585. BOOL onlineStatus = NO;
  586. if (audit_status.length != 0) {
  587. onlineStatus = ![audit_status boolValue];
  588. }
  589. if (onlineStatus != [LCSaveData getOnlineVersion]) {
  590. [LCSaveData saveOnlineVersion:onlineStatus];
  591. /// 线上版本状态改变,发送通知
  592. [[NSNotificationCenter defaultCenter] postNotificationName:@"OnlineVersion" object:nil userInfo:nil];
  593. }
  594. [self youpaifinitUI];
  595. }
  596. } failure:^(NSError *error) {
  597. }];
  598. }
  599. #pragma mark 版本更新
  600. /// 检测版本更新
  601. - (void)youpaifDetectVersionUpdates{
  602. //检查更新 根据时间戳 设定12小时/一天之内调用一次 add by leo
  603. NSString* updateTime = [LCSaveData getUpdateTime];
  604. NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  605. [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  606. if (!updateTime) {
  607. [self youpaifcheckAppUpdate:NO];//检查版本更新
  608. }else{
  609. //获取与当前的时间差
  610. NSDate *timeDate = [dateFormatter dateFromString:updateTime];
  611. NSTimeInterval timeInterval = [timeDate timeIntervalSinceNow];
  612. timeInterval = -timeInterval;
  613. //超过30天
  614. if (timeInterval>60*60*24) {
  615. [self youpaifcheckAppUpdate:NO];
  616. }else{
  617. }
  618. }
  619. }
  620. /// 获取等级图标
  621. - (void)youpaifloadLevelInfo{
  622. [LCHttpHelper requestWithURLString:LevelInfo parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  623. NSDictionary* dict = (NSDictionary*)responseObject;
  624. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  625. if (code==0) {//成功
  626. NSDictionary* levelInfo = [dict objectForKey:@"data"];
  627. [LCSaveData saveLevelInfo:levelInfo];
  628. }
  629. } failure:^(NSError *error) {
  630. }];
  631. [LCHttpHelper requestWithURLString:AllBadge parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  632. NSDictionary* dict = (NSDictionary*)responseObject;
  633. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  634. if (code==0) {//成功
  635. NSDictionary* data = [dict objectForKey:@"data"];
  636. NSDictionary* badge = [data objectForKey:@"badge"];
  637. NSDictionary* noble = [data objectForKey:@"noble"];
  638. [LCSaveData saveBadgeInfo:badge];
  639. [LCSaveData saveNobleInfo:noble];
  640. }
  641. } failure:^(NSError *error) {
  642. }];
  643. }
  644. /// 获取签到数据
  645. - (void)youpaifrequestSignData{
  646. @weakify(self);
  647. [LCHttpHelper requestWithURLString:UserSign parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  648. @strongify(self);
  649. NSDictionary* dict = (NSDictionary*)responseObject;
  650. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  651. if (code==0) {//成功
  652. NSString *msg = [[dict objectForKey:@"data"] objectForKey:@"msg"];
  653. NSString *beans = [[dict objectForKey:@"data"] objectForKey:@"beans"];
  654. NSString *link = [[dict objectForKey:@"data"] objectForKey:@"link"];
  655. YOUPAILZSignWindow *vc = [[YOUPAILZSignWindow alloc]init];
  656. vc.youpaipmsg = msg;
  657. vc.youpaipbeans = beans;
  658. vc.youpaiplink = link;
  659. vc.isTouchDismiss = YES;
  660. [vc setGoSignBlock:^(NSString * _Nonnull signUrl) {
  661. @strongify(self);
  662. ZCBaseWebVC* vc = [[ZCBaseWebVC alloc]init];
  663. vc.contentUrl = signUrl;
  664. [self.navigationController pushViewController:vc animated:YES];
  665. }];
  666. [self TFPresentVC:vc completion:^{
  667. }];
  668. }
  669. } failure:^(NSError *error) {}];
  670. }
  671. /// 更新在线状态
  672. -(void)youpaifuserOnlineUpdate{
  673. NSLog(@"youpaifuserOnlineUpdate 更新在线状态");
  674. if (self->_timer) {
  675. dispatch_source_cancel(self->_timer);
  676. }
  677. if ([LCSaveData getTokenString] == nil) {
  678. return;
  679. }
  680. [LCHttpHelper requestWithURLString:onlineUpdate parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  681. NSDictionary* dict = (NSDictionary*)responseObject;
  682. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  683. if (code==0) {//成功
  684. NSInteger user_online_open = [[[dict objectForKey:@"data"]objectForKey:@"user_online_open"] integerValue];
  685. int user_online_time = [[[dict objectForKey:@"data"]objectForKey:@"user_online_time"] intValue];
  686. if (user_online_open == 1) {
  687. __block int timeout= user_online_time;
  688. dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  689. self->_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
  690. dispatch_source_set_timer(self->_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
  691. dispatch_source_set_event_handler(self->_timer, ^{
  692. if(timeout<=0){
  693. dispatch_source_cancel(self->_timer);
  694. dispatch_async(dispatch_get_main_queue(), ^{
  695. [self youpaifuserOnlineUpdate];
  696. });
  697. }else{
  698. NSString *strTime = [NSString stringWithFormat:@"%.2dS",timeout];
  699. dispatch_async(dispatch_get_main_queue(), ^{
  700. //设置界面的按钮显示 根据自己需求设置
  701. // NSLog(@"strTime strTime %@",strTime);
  702. //
  703. // NSLog(@"当前时间挫%lld",[[LCTools getCurrentTimestamp] longLongValue]);
  704. });
  705. timeout--;
  706. }});
  707. dispatch_resume(self->_timer);
  708. }
  709. }
  710. } failure:^(NSError *error) {}];
  711. }
  712. //add bu leo checkVersion 检查版本更新
  713. -(void)youpaifcheckAppUpdate:(BOOL)need
  714. {
  715. [LCHttpHelper requestWithURLString:CheckUpdateVersion parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
  716. NSDictionary *dict = (NSDictionary *)responseObject;
  717. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  718. if (code == 0){
  719. NSString *newVersion = [[dict objectForKey:@"data"] objectForKey:@"newversion"];
  720. // NSString *myVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
  721. NSString *app_build = [[UIApplication sharedApplication] appVersion];
  722. if ([newVersion compare:app_build options:NSCaseInsensitiveSearch]>0) {
  723. YOUPAILCUpdateVersionVC *VC= [[YOUPAILCUpdateVersionVC alloc]init];
  724. VC.youpaipenforce = [[[dict objectForKey:@"data"] objectForKey:@"enforce"]integerValue];
  725. VC.youpaipdownLoadUrl = [[dict objectForKey:@"data"] objectForKey:@"downloadurl"];
  726. VC.youpaipversionStr = [NSString stringWithFormat:@"版本号:%@",newVersion];
  727. VC.youpaipupdateText = [[dict objectForKey:@"data"] objectForKey:@"upgradetext"];
  728. VC.vWidth = KScreenWidth - 70;
  729. NSDictionary *attrs = @{NSFontAttributeName : [UIFont systemFontOfSize:14]};
  730. CGSize maxSize= [VC.youpaipupdateText boundingRectWithSize:CGSizeMake(VC.vWidth-116,66) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
  731. if(maxSize.height<28)
  732. {
  733. maxSize.height = 28;
  734. }else{
  735. maxSize.height = maxSize.height+20;
  736. }
  737. VC.vHeight = VC.vWidth*203/305.0 +86 + maxSize.height + 120;
  738. VC.isTouchDismiss = YES;
  739. if(VC.youpaipenforce == NO)
  740. [self TFPresentVC:VC completion:^{
  741. NSDate *newData = [NSDate date];
  742. NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  743. [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  744. NSString *dataString = [dateFormatter stringFromDate:newData];
  745. [LCSaveData saveUpdateTime:dataString];
  746. }];
  747. else{
  748. VC.isTouchDismiss = NO;
  749. [self TFPresentVC:VC completion:^{
  750. }];
  751. }
  752. }else{
  753. NSLog(@"dict === %@,%d",dict,need);
  754. if (need) {
  755. [ZCHUDHelper showTitle:@"已经是最新版本"];
  756. }
  757. }
  758. }
  759. NSLog(@"dict === %@,%d",dict,need);
  760. } failure:^(NSError *error) {
  761. }];
  762. }
  763. #pragma mark 青少年模式
  764. /// 检测青少年模式
  765. - (void)youpaifDetectYoungMode{
  766. //青少年模式
  767. //先判断是否设置了青少年模式
  768. kAppDelegate.kadolescentStatus = [LCSaveData getYoungMode];
  769. if(kAppDelegate.kadolescentStatus == 1){
  770. [self youpaifshowYoungCloseWindow];
  771. }else{
  772. //在判断是否提醒过
  773. //检查更新 根据时间戳 设定12小时/一天之内调用一次
  774. NSString* updateTime = [LCSaveData getYoungNoticeTime];
  775. NSDate * newData = [NSDate date];
  776. NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  777. [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  778. if (!updateTime) {
  779. NSString* dataString = [dateFormatter stringFromDate:newData];
  780. [LCSaveData saveYoungNoticeTime:dataString];
  781. //弹出设置青少年模式弹窗
  782. //要不要检查一下status 防止卸载后重装
  783. @weakify(self);
  784. [self youpaifAdenscentStatus:^{
  785. @strongify(self);
  786. [self youpaifshowYoungCloseWindow];
  787. } closed:^{
  788. @strongify(self);
  789. [self youpaifshowYongNoticeWindow];
  790. }];
  791. }else{
  792. //获取与当前的时间差
  793. NSDate *timeDate = [dateFormatter dateFromString:updateTime];
  794. NSTimeInterval timeInterval = [timeDate timeIntervalSinceNow];
  795. timeInterval = -timeInterval;
  796. //超过30天
  797. if (timeInterval>60*60*24) {
  798. NSString* dataString = [dateFormatter stringFromDate:newData];
  799. [LCSaveData saveYoungNoticeTime:dataString];
  800. //弹出青少年模式弹窗
  801. [self youpaifshowYongNoticeWindow];
  802. }else{
  803. }
  804. }
  805. }
  806. }
  807. //显示设置青少年模式通知
  808. -(void)youpaifshowYongNoticeWindow
  809. {
  810. YOUPAILPYoungOpenWindow *VC= [[YOUPAILPYoungOpenWindow alloc]init];
  811. VC.vWidth = 313.0f;
  812. VC.vHeight = 357.0f;
  813. VC.youpaipdelegate = self;
  814. VC.isTouchDismiss = YES;
  815. [self TFPresentVC:VC completion:^{
  816. }];
  817. }
  818. -(void)youpaifshowYoungCloseWindow
  819. {
  820. YOUPAILPYoungCloseWindow *VC= [[YOUPAILPYoungCloseWindow alloc]init];
  821. VC.vWidth = 313.0f;
  822. VC.vHeight = 357.0f;
  823. VC.youpaipdelegate = self;
  824. VC.isTouchDismiss = NO;
  825. [self TFPresentVC:VC completion:^{
  826. }];
  827. }
  828. //判断青少年模式状态
  829. -(void)youpaifAdenscentStatus:(void(^)(void))openBlock closed:(void(^)(void))closeBlock{
  830. [LCHttpHelper requestWithURLString:GetAdolescentStatus parameters:nil needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  831. NSDictionary* dict = (NSDictionary*)responseObject;
  832. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  833. if (code==0) {//成功
  834. NSInteger adoleStatus=[dict[@"data"][@"is_set_adolescent"] integerValue];
  835. if(adoleStatus==1)
  836. {
  837. openBlock();
  838. }
  839. else
  840. {
  841. closeBlock();
  842. }
  843. }
  844. else
  845. {
  846. }
  847. } failure:^(NSError *error) {
  848. [ZCHUDHelper showTitle:error.mj_JSONString showtime:1];
  849. [self dismissViewControllerAnimated:YES completion:nil];
  850. }];
  851. }
  852. #pragma mark LPYoungOpenDelegate 提示或者关闭弹框的回调
  853. -(void)youpaifyoungSettingPwd{//设置未成年模式的密码
  854. YOUPAILPYoungPwdVC *vc = [[YOUPAILPYoungPwdVC alloc]init];
  855. vc.youpaipdelegate = self;
  856. vc.youpaippwdStatus = TFPWDSETTING;
  857. [self.navigationController pushViewController:vc animated:YES];
  858. }
  859. //忘记密码
  860. -(void)youpaifyoungForgetPwd{
  861. YOUPAILPYoungForgetPWD *vc = [[YOUPAILPYoungForgetPWD alloc]init];
  862. vc.youpaipdelegate = self;
  863. [self.navigationController pushViewController:vc animated:YES];
  864. //关闭或打开 发通知 或者回调
  865. /*
  866. YOUPAILPYoungPwdVC *vc = [[YOUPAILPYoungPwdVC alloc]init];
  867. vc.pwdStatus = TFPWDCLOSE;
  868. [self.navigationController pushViewController:vc animated:YES];
  869. */
  870. }
  871. -(void)youpaifyoungClose{
  872. YOUPAILPYoungPwdVC *vc = [[YOUPAILPYoungPwdVC alloc]init];
  873. vc.youpaippwdStatus = TFPWDCLOSE;
  874. vc.youpaipdelegate = self;
  875. [self.navigationController pushViewController:vc animated:YES];
  876. }
  877. #pragma mark 密码输入确认回调
  878. -(void)youpaifswitchYounModel:(NSInteger)isopen{
  879. if(isopen){
  880. [self youpaifshowYoungCloseWindow];
  881. [LCSaveData saveYoungMode:YES];
  882. kAppDelegate.kadolescentStatus =1;
  883. }else{
  884. [LCSaveData saveYoungMode:NO];
  885. kAppDelegate.kadolescentStatus = 0;
  886. }
  887. }
  888. @end