|
@@ -176,16 +176,19 @@ static id rq_questionDBManager = nil;
|
|
|
NSMutableArray *arr = @[].mutableCopy;
|
|
|
/// 默认为轿车 cart,bus,truck
|
|
|
NSString *queryCarTypeStr = @"model LIKE '%cart%'";
|
|
|
-
|
|
|
+ NSString *carTypeStr = @"cart";
|
|
|
switch (carType) {
|
|
|
case RQHomePageCarType_Car:
|
|
|
queryCarTypeStr = @"model LIKE '%cart%'";
|
|
|
+ carTypeStr = @"cart";
|
|
|
break;
|
|
|
case RQHomePageCarType_Bus:
|
|
|
queryCarTypeStr = @"model LIKE '%bus%'";
|
|
|
+ carTypeStr = @"bus";
|
|
|
break;
|
|
|
case RQHomePageCarType_Truck:
|
|
|
queryCarTypeStr = @"model LIKE '%truck%'";
|
|
|
+ carTypeStr = @"truck";
|
|
|
break;
|
|
|
case RQHomePageCarType_Motorcycle:
|
|
|
queryCarTypeStr = @"model LIKE '%mtc%'";
|
|
@@ -196,19 +199,23 @@ static id rq_questionDBManager = nil;
|
|
|
}
|
|
|
/// 默认科目一
|
|
|
NSString *querySubjectTypeStr = @"subject = 1";
|
|
|
-
|
|
|
+ NSString *subjectTypeStr = @"1";
|
|
|
switch (subject) {
|
|
|
case RQHomePageSubjectType_SubjectOne:
|
|
|
querySubjectTypeStr = @"subject = 1";
|
|
|
+ subjectTypeStr = @"1";
|
|
|
break;
|
|
|
case RQHomePageSubjectType_SubjectTwo:
|
|
|
querySubjectTypeStr = @"subject = 2";
|
|
|
+ subjectTypeStr = @"2";
|
|
|
break;
|
|
|
case RQHomePageSubjectType_SubjectThree:
|
|
|
querySubjectTypeStr = @"subject = 3";
|
|
|
+ subjectTypeStr = @"3";
|
|
|
break;
|
|
|
case RQHomePageSubjectType_SubjectFour:
|
|
|
querySubjectTypeStr = @"subject = 4";
|
|
|
+ subjectTypeStr = @"4";
|
|
|
break;
|
|
|
|
|
|
default:
|
|
@@ -261,16 +268,16 @@ static id rq_questionDBManager = nil;
|
|
|
// exerciseTypeStr = [NSString stringWithFormat:@"%@ + 0 ASC", orderStr];
|
|
|
break;
|
|
|
case RQExerciseType_Random:
|
|
|
- exerciseTypeStr = @"random()";
|
|
|
+// exerciseTypeStr = @"random()";
|
|
|
break;
|
|
|
case RQExerciseType_Recitation:
|
|
|
// exerciseTypeStr = [NSString stringWithFormat:@"%@ + 0 ASC", orderStr];
|
|
|
break;
|
|
|
case RQExerciseType_Test:
|
|
|
- exerciseTypeStr = @"random() limit 50";
|
|
|
+// exerciseTypeStr = @"random() limit 50";
|
|
|
break;
|
|
|
case RQExerciseType_Exam:
|
|
|
- exerciseTypeStr = @"random() limit 5";
|
|
|
+// exerciseTypeStr = @"random() limit 5";
|
|
|
break;
|
|
|
|
|
|
default:
|
|
@@ -368,142 +375,159 @@ static id rq_questionDBManager = nil;
|
|
|
return arr.copy;
|
|
|
} else if (pageType == RQHomeSubPageType_MockExamination && exerciseType == RQExerciseType_Exam) {
|
|
|
@weakify(self)
|
|
|
- RACSignal *signal0 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
- NSMutableArray *difficultArr = @[].mutableCopy;
|
|
|
- [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
- NSString *chapterIdStr = [NSString stringWithFormat:@"chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
- NSString *typeStr = [NSString stringWithFormat:@"question_type IN %@",(subject == RQHomePageSubjectType_SubjectOne)? @"(1, 2)" : @"(1, 2, 3)"];
|
|
|
- NSString *randomStr = [NSString stringWithFormat:@"RANDOM() LIMIT %@",[NSString qmui_stringWithNSInteger:examRuleModel.difficult_count]];
|
|
|
- NSString *difficultQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND diff_degree IN (4, 5) AND place_issue IS NULL AND %@ AND %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, typeStr, randomStr];
|
|
|
- return difficultQueryStr;
|
|
|
- }].toArray.rac_sequence.signal subscribeNext:^(NSString *difficultQueryStr) {
|
|
|
- @strongify(self)
|
|
|
- [difficultArr addObjectsFromArray:[self queryQuestionWithQueryStr:difficultQueryStr]];
|
|
|
- } completed:^{
|
|
|
- [subscriber sendNext:difficultArr.copy];
|
|
|
- [subscriber sendCompleted];
|
|
|
- }];
|
|
|
- return [RACDisposable disposableWithBlock:^{}];
|
|
|
+ RACSignal *signal0 = [RQ_HTTP_Service getSelectTestK14QuestionInfoList:carTypeStr subject:subjectTypeStr];
|
|
|
+ [[signal0 takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSArray *array) {
|
|
|
+ NSLog(@"%@",array);
|
|
|
+ } error:^(NSError * _Nullable error) {
|
|
|
}];
|
|
|
-
|
|
|
- RACSignal *signal1 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
- NSMutableArray *judgeArr = @[].mutableCopy;
|
|
|
- [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
- NSString *chapterIdStr = [NSString stringWithFormat:@"AND chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
- NSString *judgeCountStr = [NSString stringWithFormat:@"RANDOM() LIMIT %ld",(long)examRuleModel.judge_count];
|
|
|
- NSString *judgeQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND question_type = 1 AND diff_degree IN (0,1,2,3) AND place_issue IS NULL %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, judgeCountStr];
|
|
|
- NSMutableArray *judgeChapterArr = [self queryQuestionWithQueryStr:judgeQueryStr].mutableCopy;
|
|
|
- if (judgeChapterArr.count < examRuleModel.judge_count) {
|
|
|
- NSString *judgeQueryAddStr = [NSString stringWithFormat:@"SELECT DISTINCT * FROM %@ WHERE %@ AND %@ AND question_type = 1 AND diff_degree IN (4,5) AND place_issue IS NULL %@ ORDER BY RANDOM() LIMIT %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, [NSString stringWithFormat:@"%ld",(long)(examRuleModel.judge_count - judgeChapterArr.count)]];
|
|
|
- NSArray *judgeChapterAddArr = [self queryQuestionWithQueryStr:judgeQueryAddStr];
|
|
|
- [judgeChapterArr addObjectsFromArray:judgeChapterAddArr];
|
|
|
- return judgeChapterArr.copy;
|
|
|
- } else {
|
|
|
- return judgeChapterArr.copy;
|
|
|
- }
|
|
|
- }].toArray.rac_sequence.signal subscribeNext:^(NSArray *judgeChapterArr) {
|
|
|
- [judgeArr addObjectsFromArray:judgeChapterArr];
|
|
|
- } completed:^{
|
|
|
- [subscriber sendNext:judgeArr.copy];
|
|
|
- [subscriber sendCompleted];
|
|
|
- }];
|
|
|
- return [RACDisposable disposableWithBlock:^{}];
|
|
|
- }];
|
|
|
-
|
|
|
- RACSignal *signal2 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
- NSMutableArray *choiceArr = @[].mutableCopy;
|
|
|
- [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
- NSString *chapterIdStr = [NSString stringWithFormat:@"AND chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
- NSString *choiceCountStr = [NSString stringWithFormat:@"RANDOM() LIMIT %ld",(long)examRuleModel.choice_count];
|
|
|
- NSString *choiceQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND question_type = 2 AND diff_degree IN (0,1,2,3) AND place_issue IS NULL %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, choiceCountStr];
|
|
|
- NSMutableArray *choiceChapterArr = [self queryQuestionWithQueryStr:choiceQueryStr].mutableCopy;
|
|
|
- if (choiceChapterArr.count < examRuleModel.choice_count) {
|
|
|
- NSString *choiceQueryAddStr = [NSString stringWithFormat:@"SELECT DISTINCT * FROM %@ WHERE %@ AND %@ AND question_type = 2 AND diff_degree IN (4,5) AND place_issue IS NULL %@ ORDER BY RANDOM() LIMIT %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, [NSString stringWithFormat:@"%ld",(long)(examRuleModel.choice_count - choiceChapterArr.count)]];
|
|
|
- NSArray *choiceChapterAddArr = [self queryQuestionWithQueryStr:choiceQueryAddStr];
|
|
|
- [choiceChapterArr addObjectsFromArray:choiceChapterAddArr];
|
|
|
- return choiceChapterArr.copy;
|
|
|
- } else {
|
|
|
- return choiceChapterArr.copy;
|
|
|
- }
|
|
|
- }].toArray.rac_sequence.signal subscribeNext:^(NSArray *choiceChapterArr) {
|
|
|
- [choiceArr addObjectsFromArray:choiceChapterArr];
|
|
|
- } completed:^{
|
|
|
- [subscriber sendNext:choiceArr.copy];
|
|
|
- [subscriber sendCompleted];
|
|
|
- }];
|
|
|
- return [RACDisposable disposableWithBlock:^{}];
|
|
|
- }];
|
|
|
- RACSignal *signal3 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
- NSMutableArray *multipleChoiceArr = @[].mutableCopy;
|
|
|
- [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
- NSString *chapterIdStr = [NSString stringWithFormat:@"AND chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
- NSString *multipleChoiceCountStr = [NSString stringWithFormat:@"RANDOM() LIMIT %ld",(long)examRuleModel.multiple_choice_count];
|
|
|
- NSString *multipleChoiceQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND question_type = 3 AND diff_degree IN (0,1,2,3) AND place_issue IS NULL %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, multipleChoiceCountStr];
|
|
|
- NSMutableArray *multipleChoiceChapterArr = [self queryQuestionWithQueryStr:multipleChoiceQueryStr].mutableCopy;
|
|
|
- if (multipleChoiceChapterArr.count < examRuleModel.multiple_choice_count) {
|
|
|
- NSString *multipleChoiceQueryAddStr = [NSString stringWithFormat:@"SELECT DISTINCT * FROM %@ WHERE %@ AND %@ AND question_type = 3 AND diff_degree IN (4,5) AND place_issue IS NULL %@ ORDER BY RANDOM() LIMIT %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, [NSString stringWithFormat:@"%ld",(long)(examRuleModel.multiple_choice_count - multipleChoiceChapterArr.count)]];
|
|
|
- NSArray *multipleChoiceChapterAddArr = [self queryQuestionWithQueryStr:multipleChoiceQueryAddStr];
|
|
|
- [multipleChoiceChapterArr addObjectsFromArray:multipleChoiceChapterAddArr];
|
|
|
- return multipleChoiceChapterArr.copy;
|
|
|
- } else {
|
|
|
- return multipleChoiceChapterArr.copy;
|
|
|
- }
|
|
|
- }].toArray.rac_sequence.signal subscribeNext:^(NSArray *multipleChoiceChapterArr) {
|
|
|
- [multipleChoiceArr addObjectsFromArray:multipleChoiceChapterArr];
|
|
|
- } completed:^{
|
|
|
- [subscriber sendNext:multipleChoiceArr.copy];
|
|
|
- [subscriber sendCompleted];
|
|
|
- }];
|
|
|
- return [RACDisposable disposableWithBlock:^{}];
|
|
|
- }];
|
|
|
- return [[[RACSignal combineLatest:@[signal0, signal1, signal2, signal3] reduce:^id (NSArray *arr0, NSArray *arr1, NSArray *arr2, NSArray *arr3){
|
|
|
- NSMutableArray *judgeArr = [NSMutableArray arrayWithArray:arr1];
|
|
|
- NSMutableArray *choiceArr = [NSMutableArray arrayWithArray:arr2];
|
|
|
- NSMutableArray *multipleChoiceArr = [NSMutableArray arrayWithArray:arr3];
|
|
|
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
|
|
|
- [[arr0.rac_sequence.signal filter:^BOOL(RQExerciseModel *difficultQuestionModel) {
|
|
|
- return ![judgeArr containsObject:difficultQuestionModel] && ![choiceArr containsObject:difficultQuestionModel] && ![multipleChoiceArr containsObject:difficultQuestionModel];
|
|
|
- }].toArray.rac_sequence.signal subscribeNext:^(RQExerciseModel *difficultQuestionModel) {
|
|
|
- if (difficultQuestionModel.question_type == 1) {
|
|
|
- NSMutableArray *sortChapterArr = [judgeArr.rac_sequence.signal filter:^BOOL(RQExerciseModel *judgeQuestionModel) {
|
|
|
- return (judgeQuestionModel.chapter_id == difficultQuestionModel.chapter_id) && ![arr0 containsObject:judgeQuestionModel];
|
|
|
- }].toArray.mutableCopy;
|
|
|
- if (sortChapterArr.count > 0) {
|
|
|
- [judgeArr replaceObjectAtIndex:[judgeArr indexOfObject:sortChapterArr.lastObject] withObject:difficultQuestionModel];
|
|
|
- }
|
|
|
- } else if (difficultQuestionModel.question_type == 2) {
|
|
|
- NSMutableArray *sortChapterArr = [choiceArr.rac_sequence.signal filter:^BOOL(RQExerciseModel *choiceQuestionModel) {
|
|
|
- return (choiceQuestionModel.chapter_id == difficultQuestionModel.chapter_id) && ![arr0 containsObject:choiceQuestionModel];
|
|
|
- }].toArray.mutableCopy;
|
|
|
- if (sortChapterArr.count > 0) {
|
|
|
- [choiceArr replaceObjectAtIndex:[choiceArr indexOfObject:sortChapterArr.lastObject] withObject:difficultQuestionModel];
|
|
|
- }
|
|
|
- } else {
|
|
|
- NSMutableArray *sortChapterArr = [multipleChoiceArr.rac_sequence.signal filter:^BOOL(RQExerciseModel *multiChoiceQuestionModel) {
|
|
|
- return (multiChoiceQuestionModel.chapter_id == difficultQuestionModel.chapter_id) && ![arr0 containsObject:multiChoiceQuestionModel];
|
|
|
- }].toArray.mutableCopy;
|
|
|
- if (sortChapterArr.count > 0) {
|
|
|
- [multipleChoiceArr replaceObjectAtIndex:[multipleChoiceArr indexOfObject:sortChapterArr.lastObject] withObject:difficultQuestionModel];
|
|
|
- }
|
|
|
- }
|
|
|
- } completed:^{
|
|
|
- /// Key: 按照排序的key; ascending: YES为升序, NO为降序。
|
|
|
- NSSortDescriptor *strTppeSorter = [[NSSortDescriptor alloc] initWithKey:@"chapter_id" ascending:YES];
|
|
|
-// NSSortDescriptor *diff_degreeSorter = [NSSortDescriptor sortDescriptorWithKey:@"diff_degree" ascending:YES];
|
|
|
- NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:strTppeSorter, nil];
|
|
|
-
|
|
|
- [arr addObjectsFromArray:[judgeArr sortedArrayUsingDescriptors:sortDescriptors]];
|
|
|
- [arr addObjectsFromArray:[choiceArr sortedArrayUsingDescriptors:sortDescriptors]];
|
|
|
- [arr addObjectsFromArray:[multipleChoiceArr sortedArrayUsingDescriptors:sortDescriptors]];
|
|
|
- dispatch_semaphore_signal(sema);
|
|
|
- }];
|
|
|
- dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
|
|
|
|
|
|
+ RACSignal *signal = [RACSignal combineLatest:@[signal0] reduce:^id (NSArray *arr1) {
|
|
|
+ NSLog(@"signal0=========%@",arr1);
|
|
|
+ [arr addObjectsFromArray:arr1];
|
|
|
return arr.copy;
|
|
|
- }] map:^id _Nullable(NSArray *examArr) {
|
|
|
- return examArr;
|
|
|
- }].toArray firstObject];
|
|
|
+ }];
|
|
|
+ [signal subscribeNext:^(NSArray *allArr) {
|
|
|
+
|
|
|
+ }];
|
|
|
return arr.copy;
|
|
|
+// RACSignal *signal0 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
+// @strongify(self)
|
|
|
+// NSMutableArray *difficultArr = @[].mutableCopy;
|
|
|
+//
|
|
|
+//// [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
+//// NSString *chapterIdStr = [NSString stringWithFormat:@"chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
+//// NSString *typeStr = [NSString stringWithFormat:@"question_type IN %@",(subject == RQHomePageSubjectType_SubjectOne)? @"(1, 2)" : @"(1, 2, 3)"];
|
|
|
+//// NSString *randomStr = [NSString stringWithFormat:@"RANDOM() LIMIT %@",[NSString qmui_stringWithNSInteger:examRuleModel.difficult_count]];
|
|
|
+//// NSString *difficultQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND diff_degree IN (4, 5) AND place_issue IS NULL AND %@ AND %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, typeStr, randomStr];
|
|
|
+//// return difficultQueryStr;
|
|
|
+//// }].toArray.rac_sequence.signal subscribeNext:^(NSString *difficultQueryStr) {
|
|
|
+//// @strongify(self)
|
|
|
+//// [difficultArr addObjectsFromArray:[self queryQuestionWithQueryStr:difficultQueryStr]];
|
|
|
+//// } completed:^{
|
|
|
+//// [subscriber sendNext:difficultArr.copy];
|
|
|
+//// [subscriber sendCompleted];
|
|
|
+//// }];
|
|
|
+// return [RACDisposable disposableWithBlock:^{}];
|
|
|
+// }];
|
|
|
+
|
|
|
+// RACSignal *signal1 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
+// NSMutableArray *judgeArr = @[].mutableCopy;
|
|
|
+// [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
+// NSString *chapterIdStr = [NSString stringWithFormat:@"AND chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
+// NSString *judgeCountStr = [NSString stringWithFormat:@"RANDOM() LIMIT %ld",(long)examRuleModel.judge_count];
|
|
|
+// NSString *judgeQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND question_type = 1 AND diff_degree IN (0,1,2,3) AND place_issue IS NULL %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, judgeCountStr];
|
|
|
+// NSMutableArray *judgeChapterArr = [self queryQuestionWithQueryStr:judgeQueryStr].mutableCopy;
|
|
|
+// if (judgeChapterArr.count < examRuleModel.judge_count) {
|
|
|
+// NSString *judgeQueryAddStr = [NSString stringWithFormat:@"SELECT DISTINCT * FROM %@ WHERE %@ AND %@ AND question_type = 1 AND diff_degree IN (4,5) AND place_issue IS NULL %@ ORDER BY RANDOM() LIMIT %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, [NSString stringWithFormat:@"%ld",(long)(examRuleModel.judge_count - judgeChapterArr.count)]];
|
|
|
+// NSArray *judgeChapterAddArr = [self queryQuestionWithQueryStr:judgeQueryAddStr];
|
|
|
+// [judgeChapterArr addObjectsFromArray:judgeChapterAddArr];
|
|
|
+// return judgeChapterArr.copy;
|
|
|
+// } else {
|
|
|
+// return judgeChapterArr.copy;
|
|
|
+// }
|
|
|
+// }].toArray.rac_sequence.signal subscribeNext:^(NSArray *judgeChapterArr) {
|
|
|
+// [judgeArr addObjectsFromArray:judgeChapterArr];
|
|
|
+// } completed:^{
|
|
|
+// [subscriber sendNext:judgeArr.copy];
|
|
|
+// [subscriber sendCompleted];
|
|
|
+// }];
|
|
|
+// return [RACDisposable disposableWithBlock:^{}];
|
|
|
+// }];
|
|
|
+//
|
|
|
+// RACSignal *signal2 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
+// NSMutableArray *choiceArr = @[].mutableCopy;
|
|
|
+// [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
+// NSString *chapterIdStr = [NSString stringWithFormat:@"AND chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
+// NSString *choiceCountStr = [NSString stringWithFormat:@"RANDOM() LIMIT %ld",(long)examRuleModel.choice_count];
|
|
|
+// NSString *choiceQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND question_type = 2 AND diff_degree IN (0,1,2,3) AND place_issue IS NULL %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, choiceCountStr];
|
|
|
+// NSMutableArray *choiceChapterArr = [self queryQuestionWithQueryStr:choiceQueryStr].mutableCopy;
|
|
|
+// if (choiceChapterArr.count < examRuleModel.choice_count) {
|
|
|
+// NSString *choiceQueryAddStr = [NSString stringWithFormat:@"SELECT DISTINCT * FROM %@ WHERE %@ AND %@ AND question_type = 2 AND diff_degree IN (4,5) AND place_issue IS NULL %@ ORDER BY RANDOM() LIMIT %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, [NSString stringWithFormat:@"%ld",(long)(examRuleModel.choice_count - choiceChapterArr.count)]];
|
|
|
+// NSArray *choiceChapterAddArr = [self queryQuestionWithQueryStr:choiceQueryAddStr];
|
|
|
+// [choiceChapterArr addObjectsFromArray:choiceChapterAddArr];
|
|
|
+// return choiceChapterArr.copy;
|
|
|
+// } else {
|
|
|
+// return choiceChapterArr.copy;
|
|
|
+// }
|
|
|
+// }].toArray.rac_sequence.signal subscribeNext:^(NSArray *choiceChapterArr) {
|
|
|
+// [choiceArr addObjectsFromArray:choiceChapterArr];
|
|
|
+// } completed:^{
|
|
|
+// [subscriber sendNext:choiceArr.copy];
|
|
|
+// [subscriber sendCompleted];
|
|
|
+// }];
|
|
|
+// return [RACDisposable disposableWithBlock:^{}];
|
|
|
+// }];
|
|
|
+// RACSignal *signal3 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
|
|
|
+// NSMutableArray *multipleChoiceArr = @[].mutableCopy;
|
|
|
+// [[[self getExamRuleWithCarType:carType subject:subject].rac_sequence.signal map:^id _Nullable(RQExamRuleModel *examRuleModel) {
|
|
|
+// NSString *chapterIdStr = [NSString stringWithFormat:@"AND chapter_id = %ld",(long)examRuleModel.chapter_id];
|
|
|
+// NSString *multipleChoiceCountStr = [NSString stringWithFormat:@"RANDOM() LIMIT %ld",(long)examRuleModel.multiple_choice_count];
|
|
|
+// NSString *multipleChoiceQueryStr = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ AND %@ AND question_type = 3 AND diff_degree IN (0,1,2,3) AND place_issue IS NULL %@ ORDER BY %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, multipleChoiceCountStr];
|
|
|
+// NSMutableArray *multipleChoiceChapterArr = [self queryQuestionWithQueryStr:multipleChoiceQueryStr].mutableCopy;
|
|
|
+// if (multipleChoiceChapterArr.count < examRuleModel.multiple_choice_count) {
|
|
|
+// NSString *multipleChoiceQueryAddStr = [NSString stringWithFormat:@"SELECT DISTINCT * FROM %@ WHERE %@ AND %@ AND question_type = 3 AND diff_degree IN (4,5) AND place_issue IS NULL %@ ORDER BY RANDOM() LIMIT %@",questionTableNameStr , queryCarTypeStr, querySubjectTypeStr, chapterIdStr, [NSString stringWithFormat:@"%ld",(long)(examRuleModel.multiple_choice_count - multipleChoiceChapterArr.count)]];
|
|
|
+// NSArray *multipleChoiceChapterAddArr = [self queryQuestionWithQueryStr:multipleChoiceQueryAddStr];
|
|
|
+// [multipleChoiceChapterArr addObjectsFromArray:multipleChoiceChapterAddArr];
|
|
|
+// return multipleChoiceChapterArr.copy;
|
|
|
+// } else {
|
|
|
+// return multipleChoiceChapterArr.copy;
|
|
|
+// }
|
|
|
+// }].toArray.rac_sequence.signal subscribeNext:^(NSArray *multipleChoiceChapterArr) {
|
|
|
+// [multipleChoiceArr addObjectsFromArray:multipleChoiceChapterArr];
|
|
|
+// } completed:^{
|
|
|
+// [subscriber sendNext:multipleChoiceArr.copy];
|
|
|
+// [subscriber sendCompleted];
|
|
|
+// }];
|
|
|
+// return [RACDisposable disposableWithBlock:^{}];
|
|
|
+// }];
|
|
|
+
|
|
|
+// return [[[RACSignal combineLatest:@[signal0] reduce:^id (NSArray *arr0){
|
|
|
+// NSMutableArray *judgeArr = [NSMutableArray array];
|
|
|
+// dispatch_semaphore_t sema = dispatch_semaphore_create(0);
|
|
|
+// [[arr0.rac_sequence.signal filter:^BOOL(RQExerciseModel *difficultQuestionModel) {
|
|
|
+// return ![judgeArr containsObject:difficultQuestionModel];
|
|
|
+// }].toArray.rac_sequence.signal subscribeNext:^(RQExerciseModel *difficultQuestionModel) {
|
|
|
+// if (difficultQuestionModel.question_type == 1) {
|
|
|
+// NSMutableArray *sortChapterArr = [judgeArr.rac_sequence.signal filter:^BOOL(RQExerciseModel *judgeQuestionModel) {
|
|
|
+// return (judgeQuestionModel.chapter_id == difficultQuestionModel.chapter_id) && ![arr0 containsObject:judgeQuestionModel];
|
|
|
+// }].toArray.mutableCopy;
|
|
|
+// if (sortChapterArr.count > 0) {
|
|
|
+// [judgeArr replaceObjectAtIndex:[judgeArr indexOfObject:sortChapterArr.lastObject] withObject:difficultQuestionModel];
|
|
|
+// }
|
|
|
+// }
|
|
|
+//// else if (difficultQuestionModel.question_type == 2) {
|
|
|
+//// NSMutableArray *sortChapterArr = [choiceArr.rac_sequence.signal filter:^BOOL(RQExerciseModel *choiceQuestionModel) {
|
|
|
+//// return (choiceQuestionModel.chapter_id == difficultQuestionModel.chapter_id) && ![arr0 containsObject:choiceQuestionModel];
|
|
|
+//// }].toArray.mutableCopy;
|
|
|
+//// if (sortChapterArr.count > 0) {
|
|
|
+//// [choiceArr replaceObjectAtIndex:[choiceArr indexOfObject:sortChapterArr.lastObject] withObject:difficultQuestionModel];
|
|
|
+//// }
|
|
|
+//// } else {
|
|
|
+//// NSMutableArray *sortChapterArr = [multipleChoiceArr.rac_sequence.signal filter:^BOOL(RQExerciseModel *multiChoiceQuestionModel) {
|
|
|
+//// return (multiChoiceQuestionModel.chapter_id == difficultQuestionModel.chapter_id) && ![arr0 containsObject:multiChoiceQuestionModel];
|
|
|
+//// }].toArray.mutableCopy;
|
|
|
+//// if (sortChapterArr.count > 0) {
|
|
|
+//// [multipleChoiceArr replaceObjectAtIndex:[multipleChoiceArr indexOfObject:sortChapterArr.lastObject] withObject:difficultQuestionModel];
|
|
|
+//// }
|
|
|
+//// }
|
|
|
+// } completed:^{
|
|
|
+// /// Key: 按照排序的key; ascending: YES为升序, NO为降序。
|
|
|
+// NSSortDescriptor *strTppeSorter = [[NSSortDescriptor alloc] initWithKey:@"chapter_id" ascending:YES];
|
|
|
+//// NSSortDescriptor *diff_degreeSorter = [NSSortDescriptor sortDescriptorWithKey:@"diff_degree" ascending:YES];
|
|
|
+// NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:strTppeSorter, nil];
|
|
|
+//
|
|
|
+// [arr addObjectsFromArray:[judgeArr sortedArrayUsingDescriptors:sortDescriptors]];
|
|
|
+//// [arr addObjectsFromArray:[choiceArr sortedArrayUsingDescriptors:sortDescriptors]];
|
|
|
+//// [arr addObjectsFromArray:[multipleChoiceArr sortedArrayUsingDescriptors:sortDescriptors]];
|
|
|
+// dispatch_semaphore_signal(sema);
|
|
|
+// }];
|
|
|
+// dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
|
|
|
+//
|
|
|
+// return arr.copy;
|
|
|
+// }] map:^id _Nullable(NSArray *examArr) {
|
|
|
+// return examArr;
|
|
|
+// }].toArray firstObject];
|
|
|
+// return arr.copy;
|
|
|
} else if (pageType == RQHomeSubPageType_FreeTry) {
|
|
|
queryStr = [NSString stringWithFormat:@"SELECT * FROM question_info INNER JOIN question_free ON question_info.id = question_free.id AND question_free.subject = '%@' ORDER BY %@", [RQ_COMMON_MANAGER getSubjectTypeNumStrWithSubjectType:subject],(exerciseType == RQExerciseType_Random)? @"random()" : @"question_free.free_sort + 0 ASC"];
|
|
|
return [self queryQuestionWithQueryStr:queryStr exerciseType:exerciseType];
|