1.新增用户搜索模块事件上传和显示功能

This commit is contained in:
李伟 2022-04-18 17:10:09 +08:00
parent ded530601b
commit 84be8ec219
6 changed files with 79 additions and 8 deletions

View File

@ -5,7 +5,7 @@ from urllib.parse import quote
import os import os
import pandas as pd import pandas as pd
import numpy as np import numpy as np
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request,File
from fastapi.encoders import jsonable_encoder from fastapi.encoders import jsonable_encoder
from motor.motor_asyncio import AsyncIOMotorDatabase from motor.motor_asyncio import AsyncIOMotorDatabase
from fastapi.responses import StreamingResponse from fastapi.responses import StreamingResponse
@ -1395,8 +1395,13 @@ async def user_property_model(
ckdb: CKDrive = Depends(get_ck_db) ckdb: CKDrive = Depends(get_ck_db)
): ):
"""用户的详情""" """用户的详情"""
event_dict={'pay':'充值','create_account':'创建角色','login':'登录','ta_app_end':'离开游戏','guide':'新手引导','level_up':'玩家等级', if data_in.event_list == []:
'vip_level':'vip等级','sign':'签到','summon':'招募','ask_for_join_guild':'加入联盟','leave_guild':'离开联盟','create_guild':'创建联盟'} return schemas.Msg(code=-9, msg='请配置用户搜索模块事件', data=[])
event_dict={}
for i in data_in.event_list:
event_dict[i['event']]=i['event_name']
# event_dict={'pay':'充值','create_account':'创建角色','login':'登录','ta_app_end':'离开游戏','guide':'新手引导','level_up':'玩家等级',
# 'vip_level':'vip等级','sign':'签到','summon':'招募','ask_for_join_guild':'加入联盟','leave_guild':'离开联盟','create_guild':'创建联盟'}
sql=f"""select `#account_id`,`#ip`,`#distinct_id`,rmbmoney,owner_name,lv,zhanli,channel, sql=f"""select `#account_id`,`#ip`,`#distinct_id`,rmbmoney,owner_name,lv,zhanli,channel,
channel,svrindex,maxmapid,name,`exp`,vip,jinbi,last_account_login_time,binduid from {game}.`user` where `#account_id` = '{data_in.account_id}'""" channel,svrindex,maxmapid,name,`exp`,vip,jinbi,last_account_login_time,binduid from {game}.`user` where `#account_id` = '{data_in.account_id}'"""
#获取用户基本详情 #获取用户基本详情
@ -1508,6 +1513,35 @@ async def event_list(
) -> schemas.Msg: ) -> schemas.Msg:
"""个人详情中的事件列表""" """个人详情中的事件列表"""
#获取事件名 #获取事件名
event_list = await ckdb.distinct(game, 'event', '#event_name') #event_list = await ckdb.distinct(game, 'event', '#event_name')
event_list = await crud.event_list.get_list(db,game)
if event_list == []:
return schemas.Msg(code=0, msg='请配置用户搜索模块事件', data=[])
else:
res=event_list[0]['details']
return schemas.Msg(code=0, msg='ok', data=res)
return schemas.Msg(code=0, msg='ok', data=event_list) @router.post("/add_event_list")
async def add_select_map(
request: Request,
game: str,
file: bytes = File(...),
db: AsyncIOMotorDatabase = Depends(get_database),
current_user: schemas.UserDB = Depends(deps.get_current_user)
) -> schemas.Msg:
"""添加对应游戏事件选择映射"""
dfs = pd.read_excel(file, engine='openpyxl', sheet_name=None)
for attr_name, df in dfs.items():
#将id这列转换成字符串类型
if len(df) >0:
ColNames = df.columns.tolist()
event = df.to_dict('records')
details=[]
for i in event:
details_dict={}
details_dict['event']=i[ColNames[0]]
details_dict['event_name']=i[ColNames[1]]
details.append(details_dict)
data_in = schemas.Event_list(game=game, details=details)
await crud.event_list.save(db, data_in)
return schemas.Msg(code=0, msg='ok', data=1)

View File

@ -20,3 +20,4 @@ from .crud_api_board import api_board
from .crud_url_list import url_list from .crud_url_list import url_list
from .crud_user_url import user_url from .crud_user_url import user_url
from .crud_api_module import api_module from .crud_api_module import api_module
from .crud_event_list import event_list

25
crud/crud_event_list.py Normal file
View File

@ -0,0 +1,25 @@
from motor.motor_asyncio import AsyncIOMotorDatabase
import schemas
from crud.base import CRUDBase
__all__ = 'event_list',
class EventMap(CRUDBase):
async def save(self, db: AsyncIOMotorDatabase, data_in: schemas.Event_list):
where = {'game': data_in.game}
return await self.update_one(db, where, {'$set': data_in.dict(skip_defaults=True)}, upsert=True)
async def get_list(self, db: AsyncIOMotorDatabase, game: str):
where = {'game': game}
res = await self.find_many(db, where,{'_id': 0})
return res
async def get_select(self, db: AsyncIOMotorDatabase, data_in: schemas.SelectAttr, game: str):
where = {'game': game, **data_in.dict()}
res = await self.find_one(db, where, {'_id': 0})
return res
event_list = EventMap('event_list')

View File

@ -24,3 +24,4 @@ from .api_board import *
from .url_list import * from .url_list import *
from .user_url import * from .user_url import *
from .api_module import * from .api_module import *
from .event_list import *

10
schemas/event_list.py Normal file
View File

@ -0,0 +1,10 @@
from typing import List, Dict
from pydantic import BaseModel
class Event_list(BaseModel):
game:str
details:List[Dict]
class Details(BaseModel):
event:str
event_name:str

View File

@ -30,4 +30,4 @@ class Ck_solo_user(BaseModel):
account_id : str # #account_id account_id : str # #account_id
start_time: str # 开始时间 例2022-04-02 start_time: str # 开始时间 例2022-04-02
end_time: str # 结束时间 end_time: str # 结束时间
event_list: List[str] #事件名 event_list: List[Dict] =None#事件名