def get_pay_activities_by_restaurant(rst_id): with zeus_session() as session: query = session.query( ActivityStats.activity_id, ActivityStats.activity_category_id,). \ group_by(ActivityStats.activity_id, ActivityStats.activity_category_id). \ filter(ActivityStats.restaurant_id == rst_id) return query.all()
def get_success_pay_records(record_ids): with zeus_session() as session: result = session.query(SubsidyPayRecord.id, SubsidyPayRecord.restaurant_id, SubsidyProcessRecord.card_id, SubsidyProcessRecord.processed_at,). \ outerjoin(SubsidyProcessRecord, SubsidyProcessRecord.pay_record_id == SubsidyPayRecord.id). \ filter(SubsidyPayRecord.status == SubsidyPayRecord.STATUS_SUCCESS). \ filter(SubsidyProcessRecord.status != SubsidyProcessRecord.STATUS_FAIL). \ filter(SubsidyPayRecord.id.in_(record_ids)).all() return result
def get_activity_stats(pay_record_id): with zeus_session() as session: results = session.query(ActivityStats.activity_id, ActivityStats.activity_category_id, func.sum(ActivityStats.total_subsidy), func.min(ActivityStats.date), func.max(ActivityStats.date), func.sum(ActivityStats.quantity), ).group_by( ActivityStats.restaurant_id, ActivityStats.activity_id, ActivityStats.activity_category_id). \ filter(ActivityStats.pay_record_id == pay_record_id). \ filter(ActivityStats.status == ActivityStats.STATUS_PAY_SUCCESS).all() return results
def get_new_pay_records(process_at, limit=200): with zeus_session() as session: result = session.query(SubsidyPayRecord.id, SubsidyPayRecord.restaurant_id, SubsidyProcessRecord.card_id, SubsidyProcessRecord.processed_at, SubsidyPayRecord.status). \ outerjoin(SubsidyProcessRecord, SubsidyProcessRecord.pay_record_id == SubsidyPayRecord.id). \ filter(SubsidyPayRecord.id > process_at). \ filter(SubsidyProcessRecord.status != SubsidyProcessRecord.STATUS_FAIL). \ order_by(SubsidyPayRecord.id.asc()).limit(limit).all() return result
def get_success_record_ids_by_restaurant(restaurant_id, activity_id=None, activity_category_id=None): with zeus_session() as session: query = session.query(SubsidyPayRecord.id). \ filter(SubsidyPayRecord.restaurant_id == restaurant_id). \ filter(SubsidyPayRecord.status == SubsidyPayRecord.STATUS_SUCCESS) if activity_id is not None: query.filter(SubsidyPayRecord.activity_id == activity_id) if activity_category_id is not None: query.filter( SubsidyPayRecord.activity_category_id == activity_category_id) record_ids = query.all() return [r[0] for r in record_ids]