Commit 429d3f5f923379a0396e52ca69bbd3ffbb1e822a
1 parent
c85a2c39
0.0.3
Showing
14 changed files
with
91 additions
and
16 deletions
CNLiveCMineModule.podspec
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | 8 | ||
| 9 | Pod::Spec.new do |s| | 9 | Pod::Spec.new do |s| |
| 10 | s.name = 'CNLiveCMineModule' | 10 | s.name = 'CNLiveCMineModule' |
| 11 | - s.version = '0.0.2' | 11 | + s.version = '0.0.3' |
| 12 | s.summary = '网家家C端个人中心' | 12 | s.summary = '网家家C端个人中心' |
| 13 | 13 | ||
| 14 | # This description is used to generate tags and improve search results. | 14 | # This description is used to generate tags and improve search results. |
CNLiveCMineModule/Classes/CNLiveCMineModule.h
| @@ -11,8 +11,11 @@ NS_ASSUME_NONNULL_BEGIN | @@ -11,8 +11,11 @@ NS_ASSUME_NONNULL_BEGIN | ||
| 11 | 11 | ||
| 12 | @interface CNLiveCMineModule : NSObject | 12 | @interface CNLiveCMineModule : NSObject |
| 13 | 13 | ||
| 14 | -/// 跳转工程中的我的积分界面 | ||
| 15 | -+(void)pushVCWithInteView; | 14 | +/// 跳转积分界面 |
| 15 | +/// @param from 来源标识符 | ||
| 16 | +/// @param feedback 是不是从反馈意见成功界面过来的,如果是 则直接从当前页面返回回到指定界面 | ||
| 17 | ++(void)pushVCWithInteViewToFrom:(NSString *)from Feedback:(BOOL)feedback; | ||
| 18 | + | ||
| 16 | @end | 19 | @end |
| 17 | 20 | ||
| 18 | NS_ASSUME_NONNULL_END | 21 | NS_ASSUME_NONNULL_END |
CNLiveCMineModule/Classes/CNLiveCMineModule.m
| @@ -9,10 +9,16 @@ | @@ -9,10 +9,16 @@ | ||
| 9 | 9 | ||
| 10 | @implementation CNLiveCMineModule | 10 | @implementation CNLiveCMineModule |
| 11 | 11 | ||
| 12 | -/// 跳转工程中的我的积分界面 | ||
| 13 | -+(void)pushVCWithInteView | 12 | +/// 跳转积分界面 |
| 13 | +/// @param from 来源标识符 | ||
| 14 | +/// @param feedback 是不是从反馈意见成功界面过来的,如果是 则直接从当前页面返回回到指定界面 | ||
| 15 | ++(void)pushVCWithInteViewToFrom:(NSString *)from Feedback:(BOOL)feedback; | ||
| 14 | { | 16 | { |
| 15 | - [[CNLiveCMineModule navigationViewController] pushViewController:[CNLiveCMineInteViewController new] animated:YES]; | 17 | + CNLiveCMineInteViewController * inteView = [[CNLiveCMineInteViewController alloc] init]; |
| 18 | + inteView.isFrom = from; | ||
| 19 | + inteView.isFeedback = feedback; | ||
| 20 | + inteView.hidesBottomBarWhenPushed = YES; | ||
| 21 | + [[CNLiveCMineModule navigationViewController] pushViewController:inteView animated:YES]; | ||
| 16 | } | 22 | } |
| 17 | 23 | ||
| 18 | 24 |
CNLiveCMineModule/Classes/CNLiveCMineProtocol.h
| @@ -18,6 +18,11 @@ NS_ASSUME_NONNULL_BEGIN | @@ -18,6 +18,11 @@ NS_ASSUME_NONNULL_BEGIN | ||
| 18 | /// @param url 链接地址 | 18 | /// @param url 链接地址 |
| 19 | -(void)pushCMineInteContentForCMainWebViewWithURL:(NSString *)url statue:(CNLiveCMineIntePushWebViewStatue)statue; | 19 | -(void)pushCMineInteContentForCMainWebViewWithURL:(NSString *)url statue:(CNLiveCMineIntePushWebViewStatue)statue; |
| 20 | 20 | ||
| 21 | +/// 积分任务跳转到不同界面去完成 | ||
| 22 | +/// @param param 参数 | ||
| 23 | +/// @param currentVC 当前控制器 | ||
| 24 | +-(void)pushCMineInteContentForCMainCustomFunctionVCParam:(NSDictionary *)param CurrentVC:(UIViewController *)currentVC; | ||
| 25 | + | ||
| 21 | /// 我的积分跳转主工程我的客服界面 | 26 | /// 我的积分跳转主工程我的客服界面 |
| 22 | -(void)pushCMineInteContentForCMainPlatFromCustomerMedthod; | 27 | -(void)pushCMineInteContentForCMainPlatFromCustomerMedthod; |
| 23 | 28 |
CNLiveCMineModule/Classes/inte/Controller/CNLiveCMineInteAnnouListViewController.m
| @@ -87,7 +87,9 @@ | @@ -87,7 +87,9 @@ | ||
| 87 | -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath | 87 | -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath |
| 88 | { | 88 | { |
| 89 | CNLiveCMineInteListSubModel * annouModel = self.annouModel.list[indexPath.row]; | 89 | CNLiveCMineInteListSubModel * annouModel = self.annouModel.list[indexPath.row]; |
| 90 | - [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:annouModel.shareUrl statue:CNLiveCMineIntePushWebViewStatueAnnotationDetail]; | 90 | + BOOL isCont = [annouModel.shareUrl cn_containsString:@"?"]; |
| 91 | + NSString * shreUrl = [NSString stringWithFormat:@"%@%@contentId=%@",annouModel.shareUrl,isCont?@"&":@"?",annouModel.contentId]; | ||
| 92 | + [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:shreUrl statue:CNLiveCMineIntePushWebViewStatueAnnotationDetail]; | ||
| 91 | } | 93 | } |
| 92 | #pragma mark = getter | 94 | #pragma mark = getter |
| 93 | - (CNLiveNavigationBar *)navigationBar { | 95 | - (CNLiveNavigationBar *)navigationBar { |
CNLiveCMineModule/Classes/inte/Controller/CNLiveCMineInteTaskListViewController.h
| @@ -6,14 +6,16 @@ | @@ -6,14 +6,16 @@ | ||
| 6 | // | 6 | // |
| 7 | 7 | ||
| 8 | #import <CNLiveBusinessBaseModule/CNLiveBusinessBaseModule.h> | 8 | #import <CNLiveBusinessBaseModule/CNLiveBusinessBaseModule.h> |
| 9 | - | 9 | +#import "CNLiveCMineInteTaskViewController.h" |
| 10 | NS_ASSUME_NONNULL_BEGIN | 10 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 11 | ||
| 12 | @interface CNLiveCMineInteTaskListViewController : CNCommonListViewController<JXPagerViewListViewDelegate> | 12 | @interface CNLiveCMineInteTaskListViewController : CNCommonListViewController<JXPagerViewListViewDelegate> |
| 13 | 13 | ||
| 14 | /// 初始化任务列表 | 14 | /// 初始化任务列表 |
| 15 | /// @param taskArray 数据源 | 15 | /// @param taskArray 数据源 |
| 16 | -- (instancetype)initWithTaskArray:(NSArray *)taskArray; | 16 | +/// @param taskVC 控制器 |
| 17 | +- (instancetype)initWithTaskArray:(NSArray *)taskArray | ||
| 18 | + TaskVC:(CNLiveCMineInteTaskViewController *)taskVC; | ||
| 17 | 19 | ||
| 18 | /// 滚动回调 | 20 | /// 滚动回调 |
| 19 | @property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); | 21 | @property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); |
CNLiveCMineModule/Classes/inte/Controller/CNLiveCMineInteTaskListViewController.m
| @@ -7,8 +7,9 @@ | @@ -7,8 +7,9 @@ | ||
| 7 | 7 | ||
| 8 | #import "CNLiveCMineInteTaskListViewController.h" | 8 | #import "CNLiveCMineInteTaskListViewController.h" |
| 9 | #import "CNLiveCMineInteCollectionViewCell.h" | 9 | #import "CNLiveCMineInteCollectionViewCell.h" |
| 10 | -@interface CNLiveCMineInteTaskListViewController () | ||
| 11 | 10 | ||
| 11 | +@interface CNLiveCMineInteTaskListViewController () | ||
| 12 | +@property (nonatomic, weak) CNLiveCMineInteTaskViewController * taskVC; | ||
| 12 | @property (nonatomic, strong) NSArray * taskArray;//数据源 | 13 | @property (nonatomic, strong) NSArray * taskArray;//数据源 |
| 13 | 14 | ||
| 14 | @end | 15 | @end |
| @@ -17,18 +18,40 @@ | @@ -17,18 +18,40 @@ | ||
| 17 | 18 | ||
| 18 | /// 初始化任务列表 | 19 | /// 初始化任务列表 |
| 19 | /// @param taskArray 数据源 | 20 | /// @param taskArray 数据源 |
| 20 | -- (instancetype)initWithTaskArray:(NSArray *)taskArray; | 21 | +- (instancetype)initWithTaskArray:(NSArray *)taskArray TaskVC:(CNLiveCMineInteTaskViewController *)taskVC |
| 21 | { | 22 | { |
| 22 | self = [super init]; | 23 | self = [super init]; |
| 23 | if (self) { | 24 | if (self) { |
| 25 | + _taskVC = taskVC; | ||
| 24 | _taskArray = taskArray; | 26 | _taskArray = taskArray; |
| 25 | } | 27 | } |
| 26 | return self; | 28 | return self; |
| 27 | } | 29 | } |
| 30 | +-(void)dealloc | ||
| 31 | +{ | ||
| 32 | + [[NSNotificationCenter defaultCenter] removeObserver:self name:kCNLiveCMineInteTaskAddScoreRequestSuccessNotification object:nil]; | ||
| 33 | +} | ||
| 28 | - (void)viewDidLoad { | 34 | - (void)viewDidLoad { |
| 29 | [super viewDidLoad]; | 35 | [super viewDidLoad]; |
| 30 | // Do any additional setup after loading the view. | 36 | // Do any additional setup after loading the view. |
| 31 | self.view.backgroundColor = UIColorHex(0xf9f9f9); | 37 | self.view.backgroundColor = UIColorHex(0xf9f9f9); |
| 38 | + | ||
| 39 | + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(successAddScoreNotification:) name:kCNLiveCMineInteTaskAddScoreRequestSuccessNotification object:nil]; | ||
| 40 | +} | ||
| 41 | +-(void)successAddScoreNotification:(NSNotification *)note | ||
| 42 | +{ | ||
| 43 | + NSString *taskId = note.userInfo[@"taskId"]; | ||
| 44 | + //改变任务次数 | ||
| 45 | + NSArray *arr = [self.tableView indexPathsForVisibleRows]; | ||
| 46 | + for (NSIndexPath *indexPath in arr) { | ||
| 47 | + CNLiveCMineTaskTableViewCell *cell = (CNLiveCMineTaskTableViewCell *)[self.tableView cellForRowAtIndexPath:indexPath]; | ||
| 48 | + if ([taskId isEqualToString:cell.taskModel.taskId]) { | ||
| 49 | + CNLiveCMineInteTaskListItemModel * taskModel = self.taskArray[indexPath.row]; | ||
| 50 | + taskModel.times += 1; | ||
| 51 | + [self.tableView reloadRowAtIndexPath:indexPath withRowAnimation:UITableViewRowAnimationAutomatic]; | ||
| 52 | + return; | ||
| 53 | + } | ||
| 54 | + } | ||
| 32 | } | 55 | } |
| 33 | - (void)initTableView | 56 | - (void)initTableView |
| 34 | { | 57 | { |
| @@ -77,7 +100,7 @@ | @@ -77,7 +100,7 @@ | ||
| 77 | { | 100 | { |
| 78 | CNLiveCMineInteTaskListItemModel * taskModel = self.taskArray[indexPath.row]; | 101 | CNLiveCMineInteTaskListItemModel * taskModel = self.taskArray[indexPath.row]; |
| 79 | if(taskModel.times < taskModel.totalCount) { | 102 | if(taskModel.times < taskModel.totalCount) { |
| 80 | - NSLog(@"可以点击"); | 103 | + [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainCustomFunctionVCParam:[taskModel mj_JSONObject] CurrentVC:self.taskVC]; |
| 81 | } | 104 | } |
| 82 | } | 105 | } |
| 83 | 106 |
CNLiveCMineModule/Classes/inte/Controller/CNLiveCMineInteTaskViewController.m
| @@ -97,8 +97,8 @@ static NSInteger const kCNLiveSectionHeaderHeight = 140;//头视图高度 | @@ -97,8 +97,8 @@ static NSInteger const kCNLiveSectionHeaderHeight = 140;//头视图高度 | ||
| 97 | { | 97 | { |
| 98 | if (!_viewControllers) { | 98 | if (!_viewControllers) { |
| 99 | _viewControllers = [[NSMutableArray alloc] initWithArray:@[ | 99 | _viewControllers = [[NSMutableArray alloc] initWithArray:@[ |
| 100 | - [[CNLiveCMineInteTaskListViewController alloc] initWithTaskArray:self.taskModel.dailyTask], | ||
| 101 | - [[CNLiveCMineInteTaskListViewController alloc] initWithTaskArray:self.taskModel.firstTask] | 100 | + [[CNLiveCMineInteTaskListViewController alloc] initWithTaskArray:self.taskModel.dailyTask TaskVC:self], |
| 101 | + [[CNLiveCMineInteTaskListViewController alloc] initWithTaskArray:self.taskModel.firstTask TaskVC:self] | ||
| 102 | ]]; | 102 | ]]; |
| 103 | } | 103 | } |
| 104 | return _viewControllers; | 104 | return _viewControllers; |
CNLiveCMineModule/Classes/inte/Controller/CNLiveCMineInteViewController.h
| @@ -11,6 +11,10 @@ NS_ASSUME_NONNULL_BEGIN | @@ -11,6 +11,10 @@ NS_ASSUME_NONNULL_BEGIN | ||
| 11 | 11 | ||
| 12 | @interface CNLiveCMineInteViewController : CNCommonViewController | 12 | @interface CNLiveCMineInteViewController : CNCommonViewController |
| 13 | 13 | ||
| 14 | +@property (nonatomic, copy) NSString *isFrom; | ||
| 15 | +/// 是不是从反馈意见成功界面过来的,如果是 则直接从当前页面返回回到指定界面 | ||
| 16 | +@property (nonatomic, assign) BOOL isFeedback; | ||
| 17 | + | ||
| 14 | @end | 18 | @end |
| 15 | 19 | ||
| 16 | NS_ASSUME_NONNULL_END | 20 | NS_ASSUME_NONNULL_END |
CNLiveCMineModule/Classes/inte/Controller/CNLiveCMineInteViewController.m
| @@ -18,6 +18,7 @@ | @@ -18,6 +18,7 @@ | ||
| 18 | @property (nonatomic, strong) CNLiveCMineInteListModel * announModel; //公告数据 | 18 | @property (nonatomic, strong) CNLiveCMineInteListModel * announModel; //公告数据 |
| 19 | @property (nonatomic, strong) CNLiveCMineInteListModel * activModel; //活动数据 | 19 | @property (nonatomic, strong) CNLiveCMineInteListModel * activModel; //活动数据 |
| 20 | 20 | ||
| 21 | +@property (nonatomic, strong) CNLiveCMineInteHeaderView *headerView;//头视图 | ||
| 21 | @property (nonatomic, strong) CNLiveNavigationBar * navigationBar;//导航栏 | 22 | @property (nonatomic, strong) CNLiveNavigationBar * navigationBar;//导航栏 |
| 22 | @property (nonatomic, strong) UICollectionView * mainCollectionView;//主界面 | 23 | @property (nonatomic, strong) UICollectionView * mainCollectionView;//主界面 |
| 23 | @property (nonatomic, strong) UIImageView * backView; | 24 | @property (nonatomic, strong) UIImageView * backView; |
| @@ -46,9 +47,16 @@ | @@ -46,9 +47,16 @@ | ||
| 46 | weakSelf.taskModel = ![dataArray[1] isKindOfClass:NSString.class]?dataArray[1]:nil; | 47 | weakSelf.taskModel = ![dataArray[1] isKindOfClass:NSString.class]?dataArray[1]:nil; |
| 47 | weakSelf.announModel = ![dataArray[2] isKindOfClass:NSString.class]?dataArray[2]:nil; | 48 | weakSelf.announModel = ![dataArray[2] isKindOfClass:NSString.class]?dataArray[2]:nil; |
| 48 | weakSelf.activModel = ![dataArray[3] isKindOfClass:NSString.class]?dataArray[3]:nil; | 49 | weakSelf.activModel = ![dataArray[3] isKindOfClass:NSString.class]?dataArray[3]:nil; |
| 50 | + | ||
| 51 | + weakSelf.taskModel.from = weakSelf.isFrom; | ||
| 52 | + weakSelf.taskModel.feedback = weakSelf.isFeedback; | ||
| 49 | [weakSelf.mainCollectionView reloadData]; | 53 | [weakSelf.mainCollectionView reloadData]; |
| 50 | }]; | 54 | }]; |
| 51 | } | 55 | } |
| 56 | +-(void)dealloc | ||
| 57 | +{ | ||
| 58 | + [[NSNotificationCenter defaultCenter] removeObserver:self name:kCNLiveCMineInteTaskAddScoreRequestSuccessNotification object:nil]; | ||
| 59 | +} | ||
| 52 | - (void)viewDidLoad { | 60 | - (void)viewDidLoad { |
| 53 | [super viewDidLoad]; | 61 | [super viewDidLoad]; |
| 54 | // Do any additional setup after loading the view. | 62 | // Do any additional setup after loading the view. |
| @@ -57,6 +65,16 @@ | @@ -57,6 +65,16 @@ | ||
| 57 | [self.view addSubview:self.backView]; | 65 | [self.view addSubview:self.backView]; |
| 58 | [self.view addSubview:self.mainCollectionView]; | 66 | [self.view addSubview:self.mainCollectionView]; |
| 59 | [self reloadDataSource]; | 67 | [self reloadDataSource]; |
| 68 | + | ||
| 69 | + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(successAddScoreNotification:) name:kCNLiveCMineInteTaskAddScoreRequestSuccessNotification object:nil]; | ||
| 70 | +} | ||
| 71 | + | ||
| 72 | +-(void)successAddScoreNotification:(NSNotification *)note | ||
| 73 | +{ | ||
| 74 | + NSInteger addScore = [note.userInfo[@"score"] integerValue]; | ||
| 75 | + NSInteger scored = [self.taskModel.integral integerValue]; | ||
| 76 | + self.taskModel.integral = [NSString stringWithFormat:@"%ld",scored + addScore]; | ||
| 77 | + [self.headerView setupWithScoreModel:self.scoreModel taskModel:self.taskModel announModel:self.announModel]; | ||
| 60 | } | 78 | } |
| 61 | #pragma mark - UICollectionViewDelegate,UICollectionViewDataSource | 79 | #pragma mark - UICollectionViewDelegate,UICollectionViewDataSource |
| 62 | - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView | 80 | - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView |
| @@ -98,9 +116,10 @@ | @@ -98,9 +116,10 @@ | ||
| 98 | [weakSelf.navigationController pushViewController:annouView animated:YES]; | 116 | [weakSelf.navigationController pushViewController:annouView animated:YES]; |
| 99 | } else { | 117 | } else { |
| 100 | NSString * url = cn_API_Managemall(@"/html/select_good/1/#/pointsMall"); | 118 | NSString * url = cn_API_Managemall(@"/html/select_good/1/#/pointsMall"); |
| 101 | - [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:url statue:CNLiveCMineIntePushWebViewStatueRule]; | 119 | + [[CNLiveCMineService shareMineProtocol] pushCMineInteContentForCMainWebViewWithURL:url statue:CNLiveCMineIntePushWebViewStatueMall]; |
| 102 | } | 120 | } |
| 103 | }]; | 121 | }]; |
| 122 | + self.headerView = headerView; | ||
| 104 | return headerView; | 123 | return headerView; |
| 105 | } | 124 | } |
| 106 | return nil; | 125 | return nil; |
CNLiveCMineModule/Classes/inte/Model/CNLiveCMineInteModel.h
| @@ -42,6 +42,9 @@ NS_ASSUME_NONNULL_BEGIN | @@ -42,6 +42,9 @@ NS_ASSUME_NONNULL_BEGIN | ||
| 42 | @property (nonatomic, copy) NSString *integral; | 42 | @property (nonatomic, copy) NSString *integral; |
| 43 | @property (nonatomic, strong) NSArray *dailyTask; | 43 | @property (nonatomic, strong) NSArray *dailyTask; |
| 44 | @property (nonatomic, strong) NSArray *firstTask; | 44 | @property (nonatomic, strong) NSArray *firstTask; |
| 45 | + | ||
| 46 | +@property (nonatomic, copy) NSString *from;//自定义 | ||
| 47 | +@property (nonatomic, assign) BOOL feedback;//自定义 | ||
| 45 | @end | 48 | @end |
| 46 | 49 | ||
| 47 | @interface CNLiveCMineInteTaskListItemModel : NSObject<NSCoding> | 50 | @interface CNLiveCMineInteTaskListItemModel : NSObject<NSCoding> |
CNLiveCMineModule/Classes/inte/View/CNLiveCMineInteCollectionViewCell.m
| @@ -317,7 +317,7 @@ | @@ -317,7 +317,7 @@ | ||
| 317 | [str addAttribute:NSForegroundColorAttributeName value:UIColorHex(0x23D41E) range:range]; | 317 | [str addAttribute:NSForegroundColorAttributeName value:UIColorHex(0x23D41E) range:range]; |
| 318 | self.progressLabel.attributedText = str; | 318 | self.progressLabel.attributedText = str; |
| 319 | 319 | ||
| 320 | - if(taskModel.times >= taskModel.totalCount) { | 320 | + if (taskModel.times >= taskModel.totalCount) { |
| 321 | [self.completeBtn setTitle:@"已完成" forState:UIControlStateNormal]; | 321 | [self.completeBtn setTitle:@"已完成" forState:UIControlStateNormal]; |
| 322 | [self.completeBtn setImage:nil forState:UIControlStateNormal]; | 322 | [self.completeBtn setImage:nil forState:UIControlStateNormal]; |
| 323 | self.completeBtn.backgroundColor = UIColorHex(0xF0F0F0); | 323 | self.completeBtn.backgroundColor = UIColorHex(0xF0F0F0); |
CNLiveCMineModule/Classes/inte/ViewModel/CNLiveCMineInteViewModel.h
| @@ -9,6 +9,8 @@ | @@ -9,6 +9,8 @@ | ||
| 9 | #import "CNLiveCMineInteModel.h" | 9 | #import "CNLiveCMineInteModel.h" |
| 10 | NS_ASSUME_NONNULL_BEGIN | 10 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 11 | ||
| 12 | +/**任务完成增加积分通知*/ | ||
| 13 | +static NSString * const kCNLiveCMineInteTaskAddScoreRequestSuccessNotification = @"AddScoreRequestSuccess"; | ||
| 12 | 14 | ||
| 13 | typedef enum : NSUInteger { | 15 | typedef enum : NSUInteger { |
| 14 | CNLiveCMineInteHeaderClickDetail = 1,//积分明细 | 16 | CNLiveCMineInteHeaderClickDetail = 1,//积分明细 |
Example/CNLiveCMineModule/CNLiveCMineViewModuleImpl.m