import logging import time from gm_types.gaia import TOPIC_TYPE from gm_types.mimas import SOFT_ARTICLE_TYPE from live.models import LiveStream, ZhiboConfig, LiveChannel from talos.models.topic.activity import Activity from talos.models.soft_article import SoftArticle from talos.services.user import UserService from talos.services.doctor import DoctorService from talos.services.hospital import HospitalService from data_sync.utils import tzlc from talos.models.topic import Problem # 直播 def get_live_stream(pks): # 回放的 lives = LiveStream.objects.filter(id__in=pks) _channel_ids = list(filter(None, lives.values_list("channel_id", flat=True).distinct())) person_ids = set(LiveChannel.objects.filter(pk__in=_channel_ids).values_list("person_id", flat=True)) user_ids = UserService._get_user_data_by_person_ids(list(person_ids)) data = [] for live in lives: item = {} item["id"] = live.id person_id = live.get_live_stream_user_id() user_id_id = user_ids.get(person_id, None) user_id = None if user_id_id is not None: user_id = user_id_id.id item["doctor_id"] = DoctorService.get_doctor_by_user_id_v1(user_id) item["user_id"] = user_id item["is_online"] = True if live.is_finish else False item["principal_type"] = 1 try: start_time = tzlc(live.created_time) item["start_time"] = int(time.mktime(start_time.timetuple())) end_time = tzlc(live.updated_time) item["end_time"] = int(time.mktime(end_time.timetuple())) except: pass item["zhibo_time"] = None item["show_order"] = 999 item["article_type"] = None item["status"] = None item["live_status"] = True if live.status else False item["hera_is_online"] = False item["topic_isnull"] = True if live.topic else False item["topic_is_online"] = True if live.get_topic_is_online() else False item['is_test'] = True if live.is_test else False item['is_shouyejingxuan'] = False item['is_show'] = True if live.is_show else False item['stick_status'] = live.stick_status item['stick_timestamp'] = live.stick_timestamp us = UserService() hs = HospitalService() hospital_city_id = None hospital_info = us.get_doctor_hospital_id_by_user_id(user_id=user_id) if hospital_info.get("hospital_id"): hospital_id = hospital_info.get("hospital_id", None) hospital_city_id = hs.get_hospital_from_hospital_ids(ids=[hospital_id]) if hospital_city_id: for hospital in hospital_city_id: hospital_city_id = hospital.city_tag_id elif hospital_info.get("doctor_id"): doctor_id = hospital_info.get("doctor_id", None) hospital = hs.get_hospital_from_doctor_id(id=doctor_id) if hospital: hospital_id = hospital.id hospital_city_id = hs.get_hospital_from_hospital_ids(ids=[hospital_id]) if hospital_city_id: for hospital in hospital_city_id: hospital_city_id = hospital.city_tag_id item['allow_city'] = live.allow_city(hospital_city_id, live.id) data.append(item) logging.info("get data:%s" % data) return data # 预告 def get_live_notice(pks): notices = ZhiboConfig.objects.filter(id__in=pks) data = [] for notice in notices: item = {} item["id"] = notice.id item["doctor_id"] = DoctorService.get_doctor_by_user_id_v1(notice.anchor_user_id) item["user_id"] = notice.anchor_user_id item["is_online"] = True if notice.is_online else False item["principal_type"] = 3 try: start_time = tzlc(notice.start_time) item["start_time"] = int(time.mktime(start_time.timetuple())) end_time = tzlc(notice.end_time) item["end_time"] = int(time.mktime(end_time.timetuple())) zhibo_time = tzlc(notice.zhibo_time) item["zhibo_time"] = int(time.mktime(zhibo_time.timetuple())) except: pass item['is_shouyejingxuan'] = True if notice.is_shouyejingxuan else False item["show_order"] = 999 item["article_type"] = None item["status"] = None item["live_status"] = False item["hera_is_online"] = False item["topic_isnull"] = False item["topic_is_online"] = False item['is_show'] = True data.append(item) logging.info("get data:%s" % data) return data # 免费招募 def get_activity(pks): activities = Activity.objects.filter(id__in=pks) data = [] for activity in activities: item = {} item["id"] = activity.id item["doctor_id"] = activity.doctor_id item["user_id"] = '' item["is_online"] = True if activity.is_online else False item["principal_type"] = 2 try: start_time = tzlc(activity.start_time) item["start_time"] = int(time.mktime(start_time.timetuple())) end_time = tzlc(activity.end_time) item["end_time"] = int(time.mktime(end_time.timetuple())) except: pass item["zhibo_time"] = None item["show_order"] = 999 item["article_type"] = None item["status"] = None item["live_status"] = False item["hera_is_online"] = False item["topic_isnull"] = False item["topic_is_online"] = False item['is_shouyejingxuan'] = False item['is_show'] = True data.append(item) logging.info("get data:%s" % data) return data # 视频贴 def get_video_tractate(pks): softarticles = SoftArticle.objects.filter(id__in=pks, article_type=SOFT_ARTICLE_TYPE.VIDEO) data = [] for softarticle in softarticles: item = {} item["id"] = softarticle.id item["doctor_id"] = softarticle.doctor_id item["user_id"] = "" item["is_online"] = True if softarticle.is_online else False item["principal_type"] = 4 try: start_time = tzlc(softarticle.create_time) item["start_time"] = int(time.mktime(start_time.timetuple())) except: pass item["end_time"] = None item["zhibo_time"] = None item["show_order"] = softarticle.show_order item["article_type"] = softarticle.article_type item["status"] = softarticle.status item["live_status"] = False item["hera_is_online"] = True if softarticle.hera_is_online else False item["topic_isnull"] = False item["topic_is_online"] = False item['is_shouyejingxuan'] = False item['is_show'] = True data.append(item) logging.info("get data:%s" % data) return data # 文本帖 def get_word_tractate(pks): softarticles = SoftArticle.objects.filter(id__in=pks, article_type=SOFT_ARTICLE_TYPE.ORDINARY) data = [] for softarticle in softarticles: item = {} item["id"] = softarticle.id item["doctor_id"] = softarticle.doctor_id item["user_id"] = "" item["is_online"] = True if softarticle.is_online else False item["principal_type"] = 5 try: start_time = tzlc(softarticle.create_time) item["start_time"] = int(time.mktime(start_time.timetuple())) except: pass item["end_time"] = None item["zhibo_time"] = None item["show_order"] = softarticle.show_order item["article_type"] = softarticle.article_type item["status"] = softarticle.status item["live_status"] = False item["hera_is_online"] = True if softarticle.hera_is_online else False item["topic_isnull"] = False item["topic_is_online"] = False item['is_shouyejingxuan'] = False item['is_show'] = True data.append(item) logging.info("get data:%s" % data) return data # 专栏 def get_article(pks): articles = Problem.objects.filter( id__in=pks, topic_type__in=[TOPIC_TYPE.COLUMN_ARTICLE, TOPIC_TYPE.USER_ARTICLE] ) data = [] for article in articles: item = {} item["id"] = article.id item["user_id"] = article.user_id item["doctor_id"] = UserService.get_doctor_id_from_user_id(article.user_id) logging.info("get doctor_id:%s" % item["doctor_id"]) item["is_online"] = True if article.is_online else False item["principal_type"] = 6 try: start_time = tzlc(article.created_time) item["start_time"] = int(time.mktime(start_time.timetuple())) except: pass item["end_time"] = None item["zhibo_time"] = None item["show_order"] = 999 item["article_type"] = None item["status"] = None item["live_status"] = False item["hera_is_online"] = False item["topic_isnull"] = False item["topic_is_online"] = False item['is_shouyejingxuan'] = False item['is_show'] = True data.append(item) logging.info("get data:%s" % data) return data