def _do_get_subjects_detail(history): """ 题目详情 :param history: 会员游戏历史Model :return: """ if history: answer_list = history.result if answer_list: subject_cid_list, subject_answer_dict = [], {} for answer in answer_list: if answer and answer.get('selected_option_cid') and answer.get( 'subject_cid'): subject_cid_list.append(answer.get('subject_cid')) subject_answer_dict[answer.get('subject_cid')] = answer if subject_cid_list: subject_list = Subject.sync_find( dict(cid={'$in': subject_cid_list})).to_list(None) return subject_list, subject_answer_dict return [], {}
def _do_count_subjects_detail(ds: DockingStatistics, history_model): """ 统计题目详情 :param ds: 统计数据Model :param history_model: 会员游戏历史Model :return: """ if ds and history_model: answer_list = history_model.result if answer_list: subject_cid_list, subject_answer_dict = [], {} for answer in answer_list: if answer and answer.get('selected_option_cid') and answer.get( 'subject_cid'): subject_cid_list.append(answer.get('subject_cid')) subject_answer_dict[answer.get('subject_cid')] = answer if subject_cid_list: subject_list = Subject.sync_find( dict(cid={'$in': subject_cid_list})).to_list(None) if subject_list: for subject in subject_list: answer = subject_answer_dict.get(subject.cid) if answer: if ds.subjects_detail is None: ds.subjects_detail = {} if ds.subjects_detail.get(subject.code) is None: ds.subjects_detail[subject.code] = {} if not ds.subjects_detail[subject.code].get( 'total'): ds.subjects_detail[subject.code]['total'] = 0 if not ds.subjects_detail[subject.code].get( 'correct'): ds.subjects_detail[subject.code]['correct'] = 0 ds.subjects_detail[subject.code]['total'] += 1 if answer.get('true_answer'): ds.subjects_detail[ subject.code]['correct'] += 1 return subject_list, subject_answer_dict return [], {}