Ejemplo n.º 1
0
    def create_or_update_stats(cls, dt: pendulum.DateTime):
        date = dt.date()
        today = utils.get_current_datetime().date()
        log, _ = cls.objects.get_or_create(date=date)
        # 如果是今天之前的记录就不在更新了
        if date < today:
            return log

        log.new_user_count = sm.User.get_new_user_count_by_datetime(dt)
        log.active_user_count = pm.UserTrafficLog.get_active_user_count_by_datetime(dt)
        log.checkin_user_count = sm.UserCheckInLog.get_checkin_user_count(dt.date())

        log.order_count = sm.UserOrder.get_success_order_count(dt)
        log.order_amount = decimal.Decimal(sm.UserOrder.get_success_order_amount(dt))

        log.total_used_traffic = pm.UserTrafficLog.calc_traffic_by_datetime(dt)
        log.save()
        return log
Ejemplo n.º 2
0
 def calc_traffic_by_datetime(cls,
                              dt: pendulum.DateTime,
                              user_id=None,
                              proxy_node=None):
     """获取指定日期指定用户的流量,只有今天的数据会hit db"""
     if dt.date() == utils.get_current_datetime().date():
         return cls._calc_traffic_by_datetime.uncached(
             cls,
             dt,
             user_id,
             proxy_node.id if proxy_node else None,
         )
     return cls._calc_traffic_by_datetime(
         dt.start_of("day"),
         user_id,
         proxy_node.id if proxy_node else None,
     )
Ejemplo n.º 3
0
 def get_active_user_count_by_datetime(cls, dt: pendulum.DateTime):
     """获取指定日期的活跃用户数量,只有今天的数据会hit db"""
     today = utils.get_current_datetime()
     if dt.date() == today.date():
         return cls._get_active_user_count_by_datetime.uncached(cls, dt)
     return cls._get_active_user_count_by_datetime(dt.start_of("day"))
Ejemplo n.º 4
0
 def _get_by_dt(self, dt: pendulum.DateTime):
     return self.log_dict[str(dt.date())]