Commit a2822f71 cgx

打通每日任务关联跳转模块

1 个父辈 cbc73098
...@@ -12,6 +12,10 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -12,6 +12,10 @@ NS_ASSUME_NONNULL_BEGIN
/// 每日任务背景视图 /// 每日任务背景视图
@interface DailyBgView : UIView @interface DailyBgView : UIView
/// 更新头部今日积分数据
/// @param points 今日积分数
- (void)updateTodayPointData:(int)points;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -24,6 +24,21 @@ ...@@ -24,6 +24,21 @@
return self; return self;
} }
- (void)updateTodayPointData:(int)points {
self.pointsLab.text = [NSString stringWithFormat:@"%d", points];
[self.pointsLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(15);
make.top.equalTo(self).offset(136);
}];
[self.todayLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.pointsLab.mas_right).offset(2);
make.bottom.equalTo(self.pointsLab).offset(-8);
}];
// 积分需要动画显示效果
}
#pragma mark - lazy #pragma mark - lazy
- (UIImageView *)bgIV { - (UIImageView *)bgIV {
if (!_bgIV) { if (!_bgIV) {
...@@ -33,4 +48,20 @@ ...@@ -33,4 +48,20 @@
return _bgIV; return _bgIV;
} }
- (UILabel *)pointsLab {
if (!_pointsLab) {
_pointsLab = [UILabel labWithFont:BoldFont(46.0)];
_pointsLab.dk_textColorPicker = DKColorPickerWithKey(Dk_TITLE);
}
return _pointsLab;
}
- (UILabel *)todayLab {
if (!_todayLab) {
_todayLab = [UILabel labWithText:@"今日积分" font:SysFont(16.0) fit:YES];
_todayLab.dk_textColorPicker = DKColorPickerWithKey(Dk_TITLE);
}
return _todayLab;
}
@end @end
...@@ -8,17 +8,26 @@ ...@@ -8,17 +8,26 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "DailyTaskModel.h" #import "DailyTaskModel.h"
#import "NewTaskModel.h" #import "NewTaskModel.h"
#import "TaskGroupModel.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@protocol DailyTaskCellDelegate <NSObject> @protocol DailyTaskCellDelegate <NSObject>
- (void)finishWithModel:(id)model type:(int)type; /// 去完成
/// @param model 每日任务和新手任务数据model
/// @param taskType 任务类型
- (void)finishWithModel:(id)model taskType:(TaskType)taskType;
/// 待领取
/// @param taskID 每日任务和新手任务ID
/// @param taskType 任务类型
- (void)waitingReceiveWithTaskID:(int)taskID taskType:(TaskType)taskType sender:(UIButton *)sender;
@end @end
/// 每日任务、新手任务cell /// 每日任务、新手任务cell
@interface DailyTaskCell : UITableViewCell @interface DailyTaskCell : UITableViewCell
/// 分组类型(1:每日任务,2:新手任务) /// 分组类型
@property (nonatomic, assign) int type; @property (nonatomic, assign) TaskType taskType;
/// 每日任务cell数据model /// 每日任务cell数据model
@property (nonatomic, strong) DailyTaskModel *dailyTaskModel; @property (nonatomic, strong) DailyTaskModel *dailyTaskModel;
/// 新手任务cell数据model /// 新手任务cell数据model
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
@property (nonatomic, strong) UILabel *titleLab; @property (nonatomic, strong) UILabel *titleLab;
@property (nonatomic, strong) UILabel *descrLab; @property (nonatomic, strong) UILabel *descrLab;
@property (nonatomic, strong) UIButton *goFinishBtn; @property (nonatomic, strong) UIButton *goFinishBtn;
@property (nonatomic, assign) int state;
@end @end
@implementation DailyTaskCell @implementation DailyTaskCell
...@@ -51,11 +52,21 @@ ...@@ -51,11 +52,21 @@
} }
- (void)goFinishAction { - (void)goFinishAction {
if (self.delegate && [self.delegate respondsToSelector:@selector(finishWithModel:type:)]) { if (self.state == 0) { // 去完成
if (self.type == 1) { if (self.delegate && [self.delegate respondsToSelector:@selector(finishWithModel:taskType:)]) {
[self.delegate finishWithModel:self.dailyTaskModel type:1]; if (self.taskType == TaskTypeDaily) {
} else { [self.delegate finishWithModel:self.dailyTaskModel taskType:TaskTypeDaily];
[self.delegate finishWithModel:self.nTaskModel type:2]; } else {
[self.delegate finishWithModel:self.nTaskModel taskType:TaskTypeNew];
}
}
} else if (self.state == 1) { // 待领取
if (self.delegate && [self.delegate respondsToSelector:@selector(waitingReceiveWithTaskID:taskType:sender:)]) {
if (self.taskType == TaskTypeDaily) {
[self.delegate waitingReceiveWithTaskID:self.dailyTaskModel.task_id taskType:TaskTypeDaily sender:self.goFinishBtn];
} else {
[self.delegate waitingReceiveWithTaskID:self.nTaskModel.task_id taskType:TaskTypeNew sender:self.goFinishBtn];
}
} }
} }
} }
...@@ -115,6 +126,7 @@ ...@@ -115,6 +126,7 @@
} }
- (void)dealFinishBtn:(int)state { - (void)dealFinishBtn:(int)state {
self.state = state;
BOOL isEnable = YES; BOOL isEnable = YES;
NSString *btn_title = @"去完成"; NSString *btn_title = @"去完成";
DKColorPicker dk_bg_color = DKColorPickerWithColors(BrandColor, ColorFromHex(0x45A4B5), DSWhite); DKColorPicker dk_bg_color = DKColorPickerWithColors(BrandColor, ColorFromHex(0x45A4B5), DSWhite);
......
...@@ -6,8 +6,12 @@ ...@@ -6,8 +6,12 @@
// //
#import "DailyTaskController.h" #import "DailyTaskController.h"
#import "ScoreTaskRequestModel.h"
#import "DailyTaskView.h" #import "DailyTaskView.h"
#import "UnityGameController.h"
#import "LookAllController.h"
#import "InviteController.h"
#import "FeedbackController.h"
#import "AccountController.h"
@interface DailyTaskController () <DailyTaskViewDelegate> @interface DailyTaskController () <DailyTaskViewDelegate>
@property (nonatomic, strong) DailyTaskView *dailyTaskView; @property (nonatomic, strong) DailyTaskView *dailyTaskView;
...@@ -55,8 +59,101 @@ ...@@ -55,8 +59,101 @@
} }
} }
- (void)popViewController { - (void)goToTaskPageWithTaskID:(int)task_id url:(NSString *)url {
[self.navigationController popViewControllerAnimated:NO]; if (task_id == 5) { // 好眠声音(直接回到首页)
[self.navigationController popViewControllerAnimated:YES];
return;
}
switch (task_id) {
case 1: // AI睡眠教练(该任务不需要手动调用更新状态接口)
{
self.tabBarController.selectedIndex = 1;
}
break;
case 2: // 哄睡页面
{
UnityGameController *gameVC = [UnityGameController new];
gameVC.gameType = GameTypeCoax;
[self.navigationController pushViewController:gameVC animated:YES];
}
break;
case 3: // 助眠音乐页面
{
[self.navigationController pushViewController:[[LookAllController alloc] initWithDefaultIndex:1] animated:YES];
}
break;
case 4: // 舒眠课程页面
{
[self.navigationController pushViewController:[[LookAllController alloc] initWithDefaultIndex:0] animated:YES];
}
break;
case 6: // 邀请好友页面
{
[self.navigationController pushViewController:[InviteController new] animated:YES];
}
break;
case 7: // AppStore评价页面
{
NSString *evaluateStr = [NSString stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review", AppSotreID];
NSURL *url = [NSURL URLWithString:evaluateStr];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
if (success) {
[ScoreTaskRequestModel updateUserDailyTaskStatusWithTaskID:task_id completion:^(ScoreTaskRequestModel * _Nonnull requestModel) {
if (requestModel.resCode == DSResCodeSuccess) {
}
}];
}
}];
}
}
break;
case 8: // 意见反馈页面
{
[self.navigationController pushViewController:[FeedbackController new] animated:YES];
}
break;
case 9: // 上传头像
{
[self.navigationController pushViewController:[AccountController new] animated:YES];
}
break;
case 10: // 修改昵称
{
[self.navigationController pushViewController:[AccountController new] animated:YES];
}
break;
case 11: // 选择性别
{
[self.navigationController pushViewController:[AccountController new] animated:YES];
}
break;
case 12: // 完善生日
{
[self.navigationController pushViewController:[AccountController new] animated:YES];
}
break;
case 13: // 完成每日一题
{
NSString *link = [NSString stringWithFormat:@"%@%@", ServerURL, url];
[self.navigationController pushViewController:[[DsWebController alloc] initWithLink:link isShowNavi:NO] animated:YES];
}
break;
default:
break;
}
// 移除每日任务页面
NSMutableArray *vcs = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[vcs enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[DailyTaskController class]]) {
*stop = YES;
[vcs removeObject:obj];
}
}];
self.navigationController.viewControllers = [vcs copy];
} }
#pragma mark - lazy #pragma mark - lazy
......
...@@ -14,8 +14,11 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -14,8 +14,11 @@ NS_ASSUME_NONNULL_BEGIN
/// 监听scrollview是否滚动到临界值 /// 监听scrollview是否滚动到临界值
/// @param isMax isMax /// @param isMax isMax
- (void)didScrollToMaxOffsetY:(BOOL)isMax; - (void)didScrollToMaxOffsetY:(BOOL)isMax;
/// 退出当前页面
- (void)popViewController; /// 去完成任务
/// @param task_id 任务id
/// @param url 路由地址
- (void)goToTaskPageWithTaskID:(int)task_id url:(NSString *)url;
@end @end
/// 每日任务页面自定义主view /// 每日任务页面自定义主view
......
...@@ -40,49 +40,37 @@ ...@@ -40,49 +40,37 @@
} }
#pragma mark - DailyTaskCellDelegate #pragma mark - DailyTaskCellDelegate
- (void)finishWithModel:(id)model type:(int)type { - (void)finishWithModel:(id)model taskType:(TaskType)taskType {
if (self.delegate && [self.delegate respondsToSelector:@selector(popViewController)]) { if (taskType == TaskTypeDaily) { // 每日任务
[self.delegate popViewController];
}
if (type == 1) { // 每日任务
DailyTaskModel *dailyTaskModel = (DailyTaskModel *)model; DailyTaskModel *dailyTaskModel = (DailyTaskModel *)model;
switch (dailyTaskModel.task_id) { if (self.delegate && [self.delegate respondsToSelector:@selector(goToTaskPageWithTaskID:url:)]) {
case 1: // AI睡眠教练(该任务不需要手动调用更新状态接口) [self.delegate goToTaskPageWithTaskID:dailyTaskModel.task_id url:dailyTaskModel.url];
{
self.ds_viewController.tabBarController.selectedIndex = 1;
}
break;
default:
break;
} }
} else { // 新手任务 } else { // 新手任务
NewTaskModel *newTaskModel = (NewTaskModel *)model; NewTaskModel *newTaskModel = (NewTaskModel *)model;
switch (newTaskModel.task_id) { if (self.delegate && [self.delegate respondsToSelector:@selector(goToTaskPageWithTaskID:url:)]) {
case 9: // 上传头像 [self.delegate goToTaskPageWithTaskID:newTaskModel.task_id url:newTaskModel.url];
{ }
}
} }
break;
case 10: // 修改昵称 - (void)waitingReceiveWithTaskID:(int)taskID taskType:(TaskType)taskType sender:(UIButton *)sender {
{ if (taskType == TaskTypeDaily) {
[ScoreTaskRequestModel receiveUserDailyTaskPointWithTaskID:taskID completion:^(ScoreTaskRequestModel * _Nonnull requestModel) {
} if (requestModel.resCode == DSResCodeSuccess) {
break; [self.dailyBgView updateTodayPointData:requestModel.date_points];
case 11: // 选择性别 [sender setTitle:@"已领取" forState:UIControlStateNormal];
{ sender.userInteractionEnabled = NO;
} }
break; }];
case 12: // 完善生日 } else {
{ [ScoreTaskRequestModel receiveUserNewsTaskPointWithTaskID:taskID completion:^(ScoreTaskRequestModel * _Nonnull requestModel) {
if (requestModel.resCode == DSResCodeSuccess) {
[self.dailyBgView updateTodayPointData:requestModel.date_points];
[sender setTitle:@"已领取" forState:UIControlStateNormal];
sender.userInteractionEnabled = NO;
} }
break; }];
default:
break;
}
} }
} }
...@@ -94,6 +82,8 @@ ...@@ -94,6 +82,8 @@
- (void)updateTaskView:(ScoreTaskRequestModel *)requestModel { - (void)updateTaskView:(ScoreTaskRequestModel *)requestModel {
if (!requestModel) { return; } if (!requestModel) { return; }
[self.dailyBgView updateTodayPointData:requestModel.points];
NSMutableArray *tmpArr = [NSMutableArray array]; NSMutableArray *tmpArr = [NSMutableArray array];
if (requestModel.task_items.count) { if (requestModel.task_items.count) {
TaskGroupModel *groupModel = [TaskGroupModel modelWithTaskType:TaskTypeDaily taskArr:requestModel.task_items]; TaskGroupModel *groupModel = [TaskGroupModel modelWithTaskType:TaskTypeDaily taskArr:requestModel.task_items];
...@@ -134,11 +124,11 @@ ...@@ -134,11 +124,11 @@
cell.delegate = self; cell.delegate = self;
TaskGroupModel *groupModel = self.taskListArr[indexPath.section]; TaskGroupModel *groupModel = self.taskListArr[indexPath.section];
if (groupModel.taskType == TaskTypeDaily) { if (groupModel.taskType == TaskTypeDaily) {
cell.type = 1; cell.taskType = TaskTypeDaily;
DailyTaskModel *dailyTaskModel = groupModel.task_items[indexPath.row]; DailyTaskModel *dailyTaskModel = groupModel.task_items[indexPath.row];
cell.dailyTaskModel = dailyTaskModel; cell.dailyTaskModel = dailyTaskModel;
} else { } else {
cell.type = 2; cell.taskType = TaskTypeNew;
NewTaskModel *newTaskModel = groupModel.task_news[indexPath.row]; NewTaskModel *newTaskModel = groupModel.task_news[indexPath.row];
cell.nTaskModel = newTaskModel; cell.nTaskModel = newTaskModel;
} }
......
...@@ -46,9 +46,9 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -46,9 +46,9 @@ NS_ASSUME_NONNULL_BEGIN
/// 当前项积分值 /// 当前项积分值
@property (nonatomic, assign) int cur_point; @property (nonatomic, assign) int cur_point;
/// 当日领取积分值 /// 当日领取积分值
@property (nonatomic, assign) int date_point; @property (nonatomic, assign) int date_points;
/// 用户总积分 /// 用户总积分
@property (nonatomic, assign) int total_point; @property (nonatomic, assign) int total_points;
/// 我的积分等级接口 /// 我的积分等级接口
/// @param completion completion /// @param completion completion
......
...@@ -150,8 +150,8 @@ ...@@ -150,8 +150,8 @@
requestModel.resCode = DSResCodeSuccess; requestModel.resCode = DSResCodeSuccess;
NSDictionary *resultDic = apiDic[@"result"]; NSDictionary *resultDic = apiDic[@"result"];
requestModel.cur_point = [resultDic[@"cur_point"] intValue]; requestModel.cur_point = [resultDic[@"cur_point"] intValue];
requestModel.date_point = [resultDic[@"date_point"] intValue]; requestModel.date_points = [resultDic[@"date_points"] intValue];
requestModel.total_point = [resultDic[@"total_points"] intValue]; requestModel.total_points = [resultDic[@"total_points"] intValue];
completion(requestModel); completion(requestModel);
} failure:^(id failureInfo) { } failure:^(id failureInfo) {
requestModel.resCode = [failureInfo[@"errorCode"] integerValue]; requestModel.resCode = [failureInfo[@"errorCode"] integerValue];
...@@ -170,8 +170,8 @@ ...@@ -170,8 +170,8 @@
requestModel.resCode = DSResCodeSuccess; requestModel.resCode = DSResCodeSuccess;
NSDictionary *resultDic = apiDic[@"result"]; NSDictionary *resultDic = apiDic[@"result"];
requestModel.cur_point = [resultDic[@"cur_point"] intValue]; requestModel.cur_point = [resultDic[@"cur_point"] intValue];
requestModel.date_point = [resultDic[@"date_point"] intValue]; requestModel.date_points = [resultDic[@"date_points"] intValue];
requestModel.total_point = [resultDic[@"total_points"] intValue]; requestModel.total_points = [resultDic[@"total_points"] intValue];
completion(requestModel); completion(requestModel);
} failure:^(id failureInfo) { } failure:^(id failureInfo) {
requestModel.resCode = [failureInfo[@"errorCode"] integerValue]; requestModel.resCode = [failureInfo[@"errorCode"] integerValue];
...@@ -190,8 +190,8 @@ ...@@ -190,8 +190,8 @@
requestModel.resCode = DSResCodeSuccess; requestModel.resCode = DSResCodeSuccess;
NSDictionary *resultDic = apiDic[@"result"]; NSDictionary *resultDic = apiDic[@"result"];
requestModel.cur_point = [resultDic[@"cur_point"] intValue]; requestModel.cur_point = [resultDic[@"cur_point"] intValue];
requestModel.date_point = [resultDic[@"date_point"] intValue]; requestModel.date_points = [resultDic[@"date_points"] intValue];
requestModel.total_point = [resultDic[@"total_points"] intValue]; requestModel.total_points = [resultDic[@"total_points"] intValue];
completion(requestModel); completion(requestModel);
} failure:^(id failureInfo) { } failure:^(id failureInfo) {
requestModel.resCode = [failureInfo[@"errorCode"] integerValue]; requestModel.resCode = [failureInfo[@"errorCode"] integerValue];
......
...@@ -7,77 +7,77 @@ ...@@ -7,77 +7,77 @@
<key>AFNetworking.xcscheme_^#shared#^_</key> <key>AFNetworking.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>15</integer> <integer>11</integer>
</dict> </dict>
<key>DKNightVersion.xcscheme_^#shared#^_</key> <key>DKNightVersion.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>7</integer> <integer>15</integer>
</dict> </dict>
<key>DOUAudioStreamer.xcscheme_^#shared#^_</key> <key>DOUAudioStreamer.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>12</integer> <integer>7</integer>
</dict> </dict>
<key>FreeStreamer.xcscheme_^#shared#^_</key> <key>FreeStreamer.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>18</integer> <integer>8</integer>
</dict> </dict>
<key>IQKeyboardManager.xcscheme_^#shared#^_</key> <key>IQKeyboardManager.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>9</integer> <integer>16</integer>
</dict> </dict>
<key>MBProgressHUD.xcscheme_^#shared#^_</key> <key>MBProgressHUD.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>6</integer> <integer>9</integer>
</dict> </dict>
<key>MJRefresh.xcscheme_^#shared#^_</key> <key>MJRefresh.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>14</integer> <integer>12</integer>
</dict> </dict>
<key>Masonry.xcscheme_^#shared#^_</key> <key>Masonry.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>5</integer> <integer>17</integer>
</dict> </dict>
<key>Pods-DreamSleep.xcscheme_^#shared#^_</key> <key>Pods-DreamSleep.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>19</integer> <integer>5</integer>
</dict> </dict>
<key>Reachability.xcscheme_^#shared#^_</key> <key>Reachability.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>10</integer> <integer>4</integer>
</dict> </dict>
<key>YYCache.xcscheme_^#shared#^_</key> <key>YYCache.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>4</integer> <integer>14</integer>
</dict> </dict>
<key>YYImage.xcscheme_^#shared#^_</key> <key>YYImage.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>13</integer> <integer>6</integer>
</dict> </dict>
<key>YYModel.xcscheme_^#shared#^_</key> <key>YYModel.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>8</integer> <integer>19</integer>
</dict> </dict>
<key>YYWebImage.xcscheme_^#shared#^_</key> <key>YYWebImage.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>17</integer> <integer>18</integer>
</dict> </dict>
<key>lottie-ios.xcscheme_^#shared#^_</key> <key>lottie-ios.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>11</integer> <integer>10</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<key>UnityFramework.xcscheme_^#shared#^_</key> <key>UnityFramework.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>16</integer> <integer>13</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!