def get_home_checklists(): """ 获取首页的清单列表 :return: """ s = g.mysql_session raw_scene_id = KvConfig.get_value_of_key( s, KvConfig.KEY_HOME_CHECKLIST_SCENE_ID) checklists_res = [] if raw_scene_id is None: return succeed(data=checklists_res) checklists = Checklist.get_list_by_scene(s, int(raw_scene_id)) checklist_ids = [x.id for x in checklists] # 检索自己是否打卡的相关信息 my_reviews_id_map = {} checklist_count_map = {} user = None if g.user: user = g.user my_reviews = ChecklistReview.get_today_list_of_user(s, user.id) my_reviews_id_map = {x.checklist_id: x for x in my_reviews} checklist_count_map = ChecklistReview.get_reviews_count_of_n_days_before( s, user.id, checklist_ids) for checklist in checklists: single_checklist_info = dict( id=checklist.id, description=checklist.description, checked_count=checklist_count_map.get(checklist.id, 0), checked=0, ) if my_reviews_id_map.get(checklist.id): single_checklist_info["checked"] = 1 review = my_reviews_id_map.get(checklist.id) last_review = dict(description=review.detail, ) last_review["author_nickname"] = user.nickname single_checklist_info["last_review"] = last_review checklists_res.append(single_checklist_info) return succeed(data=checklists_res)