def get_success_order_amount(cls, date: pendulum.DateTime): amount = (cls.objects.filter( status=cls.STATUS_FINISHED, created_at__range=[ date.start_of("day"), date.end_of("day"), ], ).aggregate(amount=models.Sum("amount"))["amount"] or "0") return amount
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, )
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"))
def _get_active_user_count_by_datetime(cls, dt: pendulum.DateTime): qs = (cls.objects.filter( created_at__range=[dt.start_of("day"), dt.end_of("day")]).values("user_id").distinct()) return qs.count()
def get_success_order_count(cls, dt: pendulum.DateTime): return cls.objects.filter( created_at__range=[dt.start_of("day"), dt.end_of("day")], status=cls.STATUS_FINISHED, ).count()
def get_new_user_count_by_datetime(cls, date: pendulum.DateTime): return cls.objects.filter(date_joined__range=[ date.start_of("day"), date.end_of("day"), ]).aggregate(count=models.Count("id"))["count"]