479 lines
17 KiB
Objective-C
479 lines
17 KiB
Objective-C
//
|
||
// GiGaQuestionVC.m
|
||
// GIGA
|
||
//
|
||
// Created by lianxiang on 2018/8/23.
|
||
// Copyright © 2018年 com.giga.ios. All rights reserved.
|
||
//
|
||
|
||
#import "GiGaQuestionVC.h"
|
||
#import "Masonry.h"
|
||
#import "GiGaBaseAPiRequest.h"
|
||
#import "GiGaNetManager.h"
|
||
#import "GIGaQuestionSlider.h"
|
||
#import "MaskQuestionView.h"
|
||
#import "ExercisesModel.h"
|
||
#import "QustionAnswer.h"
|
||
#import "GiGaServerConfig.h"
|
||
#import "MaskTestResult.h"
|
||
#import "GiGaUserDefault.h"
|
||
#import "GiGaUserLoginVC.h"
|
||
#import "MaskTestResultVC.h"
|
||
|
||
@interface GiGaQuestionVC ()<QeustionViewDelegate>
|
||
|
||
@property (nonatomic,weak) MaskQuestionView *questionView;
|
||
@property (nonatomic,assign) NSInteger page;
|
||
|
||
@property (nonatomic,strong) NSMutableArray *questonArray;
|
||
@property (nonatomic,strong) NSMutableArray *answerArray;
|
||
|
||
@property (nonatomic,strong) ExercisesModel *currentModel;
|
||
|
||
@property (nonatomic,strong) UILabel *questionlabel;
|
||
@property (nonatomic,strong) UILabel *descLabel;
|
||
@property (nonatomic,strong) UIButton *numberBtn;
|
||
@property (nonatomic,strong) UIButton *nextBtn;
|
||
@property (nonatomic,strong) UIButton *preBtn;
|
||
|
||
|
||
@end
|
||
|
||
@implementation GiGaQuestionVC
|
||
|
||
- (void)viewDidLoad {
|
||
[self addNavTitile:@"测试肤质"];
|
||
[super viewDidLoad];
|
||
|
||
// self.title = @"测试肤质";
|
||
_page = 1;
|
||
[self loadRequestQuestions];
|
||
|
||
|
||
}
|
||
|
||
-(NSMutableArray *)questonArray{
|
||
if (!_questonArray) {
|
||
_questonArray = [[NSMutableArray alloc] init];
|
||
}
|
||
return _questonArray;
|
||
}
|
||
|
||
//questionId answerid
|
||
|
||
- (NSMutableArray *)answerArray{
|
||
if (!_answerArray) {
|
||
_answerArray = [[NSMutableArray alloc] init];
|
||
}
|
||
return _answerArray;
|
||
}
|
||
|
||
-(void)initUI{
|
||
|
||
//没有tabview 界面 直接 上移动安全 导航高度 (设计稿 -64 或 -88)
|
||
CGFloat navH = SAFE_NAV_HEIGHT;
|
||
|
||
UIButton *numberBtn = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
[numberBtn setBackgroundImage:[UIImage imageNamed:@"ceshi_number"] forState:UIControlStateNormal];
|
||
NSAttributedString *numbertitle = [[NSAttributedString alloc] initWithString:@"1" attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];
|
||
|
||
[numberBtn setAttributedTitle:numbertitle forState:UIControlStateNormal];
|
||
self.numberBtn = numberBtn;
|
||
[self.view addSubview:numberBtn];
|
||
|
||
UILabel *titleLabel = [[UILabel alloc] init];
|
||
titleLabel.text = @"悄悄地告诉你小优的年龄区间是?";
|
||
titleLabel.font = [UIFont fontWithName:GIGA_FONTBOLD size:16];
|
||
titleLabel.textColor = GIGARGB(63, 63, 63, 1);
|
||
self.questionlabel = titleLabel;
|
||
[self.view addSubview:titleLabel];
|
||
|
||
UILabel *descLabel = [[UILabel alloc] init];
|
||
descLabel.text = @"精准的选择,让小优更好的为您挑选最符合您的肤质的面膜";
|
||
descLabel.font = [UIFont fontWithName:GIGA_FONTNAME size:12];
|
||
descLabel.textColor = GIGARGB(208, 208, 208, 1);
|
||
descLabel.numberOfLines = 0;
|
||
descLabel.textAlignment = NSTextAlignmentCenter;
|
||
self.descLabel = descLabel;
|
||
[self.view addSubview:descLabel];
|
||
|
||
[numberBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.size.mas_equalTo(CGSizeMake(31, 31));
|
||
make.top.mas_equalTo(self.view.mas_top).offset(112 -navH);
|
||
make.left.mas_equalTo(self.view.mas_left).offset(46);
|
||
|
||
}];
|
||
|
||
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
|
||
make.left.mas_equalTo(numberBtn.mas_right).offset(12);
|
||
make.centerY.mas_equalTo(numberBtn.mas_centerY);
|
||
make.right.mas_equalTo(self.view.mas_right).offset(-53);
|
||
|
||
}];
|
||
|
||
[descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.left.mas_equalTo(numberBtn.mas_right).offset(12);
|
||
make.top.mas_equalTo(titleLabel.mas_bottom).offset(20);
|
||
make.right.mas_equalTo(self.view.mas_right).offset(-89);
|
||
|
||
}];
|
||
|
||
//测试题
|
||
[self creatQustionView];
|
||
|
||
//下一题
|
||
UIButton *nextBtn = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
nextBtn.backgroundColor = GIGARGB(181, 14, 14, 1);
|
||
[nextBtn addTarget:self action:@selector(nextBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||
NSAttributedString *nextTitle = [[NSAttributedString alloc] initWithString:@"下一题" attributes:@{NSFontAttributeName:[UIFont fontWithName:GIGA_FONTBOLD size:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];
|
||
[nextBtn setAttributedTitle:nextTitle forState:UIControlStateNormal];
|
||
nextBtn.layer.masksToBounds = YES;
|
||
nextBtn.layer.cornerRadius = 2;
|
||
self.nextBtn = nextBtn;
|
||
[self.view addSubview:nextBtn];
|
||
|
||
[nextBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.top.mas_equalTo(self.view.mas_top).offset(529 -navH);
|
||
make.size.mas_equalTo(CGSizeMake(126, 40));
|
||
make.left.mas_equalTo(self.view.mas_left).offset(self.view.frame.size.width /2 - 126 /2);
|
||
}];
|
||
|
||
|
||
//上一题
|
||
UIButton *preBtn = [UIButton buttonWithType:UIButtonTypeCustom];
|
||
[preBtn addTarget:self action:@selector(preBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||
NSAttributedString *preTitle = [[NSAttributedString alloc] initWithString:@"上一题" attributes:@{NSFontAttributeName:[UIFont fontWithName:GIGA_FONTBOLD size:18],NSForegroundColorAttributeName:GIGARGB(181, 14, 14, 1)}];
|
||
[preBtn setAttributedTitle:preTitle forState:UIControlStateNormal];
|
||
|
||
preBtn.layer.borderWidth = 1;
|
||
preBtn.layer.borderColor = GIGARGB(181, 14, 14, 1).CGColor;
|
||
preBtn.layer.masksToBounds = YES;
|
||
preBtn.layer.cornerRadius = 2;
|
||
self.preBtn = preBtn;
|
||
[self.view addSubview:self.preBtn];
|
||
|
||
[self.preBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.left.mas_equalTo(self.view.mas_left).offset(69);
|
||
make.top.mas_equalTo(self.view.mas_top).offset(529 - navH);
|
||
make.size.mas_equalTo(CGSizeMake(97, 40));
|
||
|
||
}];
|
||
|
||
if (_page == 1) {
|
||
self.preBtn.hidden = YES;
|
||
}
|
||
}
|
||
|
||
-(void)creatQustionView{
|
||
|
||
if (!_currentModel&&!_currentModel.optionsStyle) {
|
||
|
||
return;
|
||
}
|
||
|
||
if (_currentModel.optionsStyle == 1) {
|
||
[self creatAnswerView:MaskQuetionViewStleSliderNormal];
|
||
}else if (_currentModel.optionsStyle == 2){
|
||
[self creatAnswerView:MaskQuetionViewStleYesOrNO];
|
||
}else if (_currentModel.optionsStyle == 3 ){
|
||
[self creatAnswerView:MaskQuetionViewStyleSliderShowIndicator];
|
||
}else if (_currentModel.optionsStyle == 4){
|
||
[self creatAnswerView:MaskQuetionViewStleSliderGradient];
|
||
}
|
||
|
||
}
|
||
|
||
-(void)creatAnswerView:(MaskQuetionViewStyle)style{
|
||
|
||
//选择题view
|
||
NSArray *titles = @[@"title0",@"title1",@"title2",@"title3",@"title4"];
|
||
NSMutableArray *tit = [NSMutableArray new];
|
||
|
||
NSArray *answerList1 = _currentModel.answerList;
|
||
for (QustionAnswer *mode in answerList1){
|
||
//[tit insertObject:mode.answer atIndex:0];
|
||
[tit addObject:mode.answer];
|
||
}
|
||
|
||
titles = tit;
|
||
if (self.questionView) {
|
||
[self.questionView removeFromSuperview];
|
||
self.questionView = nil;
|
||
}
|
||
[self.view layoutIfNeeded];
|
||
|
||
MaskQuestionView *questionView = [[MaskQuestionView alloc] initQuestionView:CGRectMake(0,248 - SAFE_NAV_HEIGHT, self.view.frame.size.width,212) style:style titles:titles current:_currentModel];
|
||
NSLog(@"_currentModel--ID:%d",_currentModel.questionId);
|
||
questionView.delegate = self;
|
||
[self.view addSubview:questionView];
|
||
self.questionView = questionView;
|
||
|
||
}
|
||
|
||
- (void)sliderChangeValueShouldChoiceModelAt:(int)index slider:(float)value
|
||
|
||
{
|
||
if (index > _currentModel.answerList.count) {
|
||
return;
|
||
}
|
||
|
||
NSLog(@"答案下标:%d",index);
|
||
//修改答案默认下标
|
||
_currentModel.slidervalue = value;
|
||
[self changeAnswerDefaultflag:index];
|
||
|
||
}
|
||
|
||
|
||
- (void)yesOrNoChoiceModelAt:(int)index{
|
||
|
||
_currentModel.slidervalue = index;
|
||
[self changeAnswerDefaultflag:index];
|
||
}
|
||
|
||
-(void)changeAnswerDefaultflag:(int)index{
|
||
|
||
NSArray *temparr = [NSArray arrayWithArray:_currentModel.answerList];
|
||
[temparr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||
QustionAnswer *model = obj;
|
||
if ((int)index == idx) {
|
||
model.defaultFlag = 1;
|
||
}else{
|
||
model.defaultFlag = 0;
|
||
}
|
||
|
||
}];
|
||
}
|
||
-(void)loadRequestQuestions{
|
||
|
||
NSDictionary *params = @{};
|
||
GiGaBaseAPiRequest *request = [GiGaBaseAPiRequest initWithRequestPath:kApiSkinTestQuestionList method:RequestPostMethod parms:params];
|
||
[self.view makeToastActivity:CSToastPositionCenter];
|
||
|
||
[request requstDataWithResult:^(GiGaAPIResult *result) {
|
||
[self.view hideToastActivity];
|
||
if (result.success) {
|
||
|
||
NSLog(@"result:%@",result.dic);
|
||
NSArray *list = result.dic[@"list"];
|
||
for (NSDictionary *answerDic in list) {
|
||
ExercisesModel *model = [[ExercisesModel alloc] initWithDictionary:answerDic error:nil];
|
||
model.slidervalue = 0;
|
||
if (model.optionsStyle == 2) {
|
||
//1是 0否
|
||
NSArray *answerlsit = [NSArray arrayWithArray:model.answerList];
|
||
[answerlsit enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||
QustionAnswer *answer = obj;
|
||
if (answer.defaultFlag == 1) {
|
||
model.slidervalue = (float)idx;
|
||
}
|
||
}];
|
||
|
||
}else{
|
||
NSArray *answerlsit = [NSArray arrayWithArray:model.answerList];
|
||
[answerlsit enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||
QustionAnswer *answer = obj;
|
||
if (answer.defaultFlag == 1) {
|
||
model.slidervalue = (answerlsit.count -1 -idx) / (answerlsit.count - 1);
|
||
//GILog(@"model.slidervalue%.2f",model.slidervalue);
|
||
}
|
||
}];
|
||
|
||
}
|
||
|
||
[self.questonArray addObject:model];
|
||
|
||
}
|
||
self.currentModel = self.questonArray[0];
|
||
|
||
[self initUI];
|
||
}
|
||
}];
|
||
|
||
}
|
||
|
||
#pragma mark 获取当前题目信息
|
||
-(void)getQuestionsInfo{
|
||
|
||
_currentModel = _questonArray[_page - 1];
|
||
[self reloadViews];
|
||
}
|
||
|
||
#pragma mark 刷新题目
|
||
|
||
-(void)reloadViews{
|
||
|
||
//刷新问题相关数据
|
||
NSAttributedString *numbertitle = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%ld",(long)_page] attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];
|
||
|
||
[_numberBtn setAttributedTitle:numbertitle forState:UIControlStateNormal];
|
||
|
||
self.questionlabel.text = [NSString stringWithFormat:@"%@",_currentModel.question];
|
||
self.descLabel.text = _currentModel.remark;
|
||
|
||
//
|
||
[self creatQustionView];
|
||
|
||
//next pre
|
||
[self.view layoutIfNeeded];
|
||
|
||
if (_page > 1) {
|
||
self.preBtn.hidden = NO;
|
||
[self.nextBtn mas_updateConstraints:^(MASConstraintMaker *make) {
|
||
make.top.mas_equalTo(self.view.mas_top).offset(529 -SAFE_NAV_HEIGHT);
|
||
make.size.mas_equalTo(CGSizeMake(126, 40));
|
||
make.left.mas_equalTo(self.view.mas_left).offset(self.view.frame.size.width /2 + 10);
|
||
|
||
}];
|
||
|
||
}else{
|
||
|
||
[self.nextBtn mas_updateConstraints:^(MASConstraintMaker *make) {
|
||
make.top.mas_equalTo(self.view.mas_top).offset(529 -SAFE_NAV_HEIGHT);
|
||
make.size.mas_equalTo(CGSizeMake(126, 40));
|
||
make.left.mas_equalTo(self.view.mas_left).offset(self.view.frame.size.width /2 - 126 /2);
|
||
}];
|
||
self.preBtn.hidden = YES;
|
||
}
|
||
|
||
}
|
||
|
||
-(void)nextBtnAction{
|
||
|
||
[self saveProgress];
|
||
if (_page == self.questonArray.count ) {
|
||
GIGA_ShowToast(@"没有了");
|
||
[self submitAnswer];
|
||
return;
|
||
}
|
||
_page ++ ;
|
||
|
||
//获取题目信息
|
||
[self getQuestionsInfo];
|
||
|
||
//self.nextBtn.enabled = _page == [_currentModel.totalCount integerValue] ? NO : YES;
|
||
|
||
}
|
||
|
||
|
||
-(void)submitAnswer{
|
||
|
||
[self userTestEnd];
|
||
}
|
||
|
||
-(void)userTestEnd{
|
||
|
||
BOOL isUserLogin = [GiGaUserDefault isUserLogin];
|
||
if (isUserLogin) {
|
||
|
||
[self getTestResult];
|
||
|
||
}else{
|
||
[self jxt_showAlertWithTitle:@"对不起您还没有登录" message:@"请登录后查看肤质测试结果" appearanceProcess:^(JXTAlertController * _Nonnull alertMaker) {
|
||
alertMaker.addActionCancelTitle(@"返回首页");
|
||
alertMaker.addActionDestructiveTitle(@"登录");
|
||
} actionsBlock:^(NSInteger buttonIndex, UIAlertAction * _Nonnull action, JXTAlertController * _Nonnull alertSelf) {
|
||
|
||
if (buttonIndex == 0) {
|
||
[self.navigationController popViewControllerAnimated:YES];
|
||
}else{
|
||
GiGaUserLoginVC *userlogInVC= [[GiGaUserLoginVC alloc] init];
|
||
GiGaBaseNavViewController *baseNav = [[GiGaBaseNavViewController alloc] initWithRootViewController:userlogInVC];
|
||
[self presentViewController:baseNav animated:YES completion:nil];
|
||
}
|
||
|
||
}];
|
||
}
|
||
|
||
|
||
}
|
||
|
||
//获取结果
|
||
-(void)getTestResult{
|
||
|
||
NSDictionary *params = @{@"singleChoiceList":self.answerArray};
|
||
[self.view makeToastActivity:CSToastPositionCenter];
|
||
NSString *url = [NSString stringWithFormat:@"%@%@",[GiGaServerConfig getMainUrl],kAiSkinTestResult];
|
||
[GiGaNetManager userbodyRequest:url params:params completionHandler:^(NSURLResponse *response, NSDictionary *resDic, NSError * _Nullable error) {
|
||
[self.view hideToastActivity];
|
||
GiGaAPIResult *result = [[GiGaAPIResult alloc] initWithDictionary:resDic];
|
||
if (result.success) {
|
||
|
||
MaskTestResult* mode = [[MaskTestResult alloc] initWithDictionary:resDic error:nil];
|
||
|
||
NSUInteger minute = [mode.minute integerValue];
|
||
NSTimeInterval time = minute * 60;
|
||
[GiGaUserDefault savaMaskeTime:time];
|
||
|
||
//展示结果
|
||
// NSDictionary *dic = @{
|
||
// @"dryness":@"0.41",
|
||
// @"drynessPercent":@"41%",
|
||
// @"mask":@"",
|
||
// @"minute":@"19",
|
||
// @"oiliness":@"0.59",
|
||
// @"oilinessPercent":@"59%"
|
||
// };
|
||
// MaskTestResult *model =[[MaskTestResult alloc] initWithDictionary:dic error:nil];
|
||
MaskTestResultVC *resultVC = [[MaskTestResultVC alloc] init];
|
||
resultVC.model = mode;
|
||
[self.navigationController pushViewController:resultVC animated:YES];
|
||
|
||
}else{
|
||
|
||
GIGA_ShowToast(result.message);
|
||
}
|
||
|
||
GILog(@"**测试结果***\n code:%ld\n message:%@\n *******\n dic:%@",result.code,result.message,result.dic);
|
||
}];
|
||
}
|
||
|
||
-(void)preBtnAction{
|
||
|
||
_page -- ;
|
||
//获取题目信息
|
||
[self getQuestionsInfo];
|
||
|
||
}
|
||
|
||
#pragma mark -做题记录
|
||
-(void)saveProgress{
|
||
|
||
int questionId = _currentModel.questionId;
|
||
|
||
__block int answerid = 0;
|
||
NSArray *answerArr = [NSArray arrayWithArray:_currentModel.answerList];
|
||
[answerArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||
QustionAnswer *model = obj;
|
||
if (model.defaultFlag == 1) {
|
||
answerid = model.answer_id;
|
||
}
|
||
}];
|
||
|
||
GILog(@"问题ID:%d\n 角标id(答案号):%d\n 题号:%ld",questionId,answerid,(long)_page);
|
||
|
||
NSDictionary *answerDic = @{@"questionId":[NSString stringWithFormat:@"%d",questionId],@"answerId":[NSString stringWithFormat:@"%d",answerid]};
|
||
NSArray *tempArr= [NSArray arrayWithArray:self.answerArray];
|
||
//返回时处理
|
||
[tempArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||
|
||
NSDictionary *dic = obj;
|
||
if ([dic[@"questionId"] intValue] == questionId) {
|
||
[self.answerArray removeObject:dic];
|
||
}
|
||
}];
|
||
|
||
[self.answerArray addObject:answerDic];
|
||
|
||
NSLog(@"选择题答案:%@",self.answerArray);
|
||
|
||
}
|
||
|
||
- (void)didReceiveMemoryWarning {
|
||
[super didReceiveMemoryWarning];
|
||
// Dispose of any resources that can be recreated.
|
||
}
|
||
|
||
@end
|