import json from aioredis import Redis from fastapi import APIRouter, Depends, Request from motor.motor_asyncio import AsyncIOMotorDatabase import pandas as pd import crud, schemas from api import deps from core.config import settings from db import get_database from db.ckdb import CKDrive, get_ck_db from db.redisdb import get_redis_pool router = APIRouter() __all__ = 'router', @router.get("/event_list") async def event_list( request: Request, game: str, db: AsyncIOMotorDatabase = Depends(get_database), ckdb: CKDrive = Depends(get_ck_db), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """事件列表""" # 获取事件名 try: event_list = await ckdb.distinct(game, 'event', '#event_name') # 获取事件名 # 获取事件量 event_count = await ckdb.yesterday_event_count(game) event_meta = await crud.event_mana.find_many(db, {'game': game}) or {} except Exception as e: return schemas.Msg(code=-9, msg='查无数据', data='') if event_meta: event_meta = pd.DataFrame(event_meta).set_index('event_name').fillna('').T.to_dict() res = [] for name in event_list: res.append({ 'name': name, 'show_name': event_meta.get(name, {}).get('show_name', ''), 'is_show': event_meta.get(name, {}).get('is_show', True), 'desc': event_meta.get(name, {}).get('desc', ''), 'event_count': event_count.get(name, {}).get('v'), 'label_id' : event_meta.get(name, {}).get('label_id', '') } ) return schemas.Msg(code=0, msg='ok', data=res) @router.post("/event_edit") async def event_edit( request: Request, game: str, data_in: schemas.EventMateEdit, db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """编辑事件""" await crud.event_mana.edit_event_mate(db, game, data_in) return schemas.Msg(code=0, msg='ok', data=data_in)