From 62779d0f3d3f67efb2ccc4188e85ecd5027f03a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Sat, 15 Jan 2022 11:11:27 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=BB=99=E8=AE=A1=E8=B4=B9=E7=82=B9=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=AF=B9=E5=BA=94=E4=B8=AD=E6=96=87=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E6=80=BB=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/query.py | 36 ++++++++++++++++++++++++++++++++++- crud/__init__.py | 3 ++- crud/crud_proid_map.py | 29 ++++++++++++++++++++++++++++ schemas/__init__.py | 3 ++- schemas/proid_map.py | 0 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 crud/crud_proid_map.py create mode 100644 schemas/proid_map.py diff --git a/api/api_v1/endpoints/query.py b/api/api_v1/endpoints/query.py index 0880ff8..deedff9 100644 --- a/api/api_v1/endpoints/query.py +++ b/api/api_v1/endpoints/query.py @@ -141,6 +141,7 @@ async def event_model( game: str, data_in: schemas.CkQuery, ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), rdb: RedisDrive = Depends(get_redis_pool), analysis: BehaviorAnalysis = Depends(BehaviorAnalysis), current_user: schemas.UserDB = Depends(deps.get_current_user) @@ -218,7 +219,40 @@ async def event_model( q['date_range'] = [f'{i}' for i in df.set_index(groupby).index] else: q['date_range'] = ['合计'] - + # 暂时只执行像素的计费点加别名 + if game == 'xiangsu': + if item['groupby'][0] == 'proid' and analysis.events[0]['event_name'] == 'pay': + # 将对应英文的中文意思按位置一一对应返回给前端 + proid_dict = await crud.proid_map.get_all_show_name(db, game) + res_list = [] + for i in q['date_range']: + name = proid_dict[i] + res_list.append(name) + q['proid_name'] = res_list + # 将proid字段和金额money按对应关系组合成字典并算出对应的总额返回给前端 + money_dict = await crud.proid_map.get_all_show_money(db, game) + add_money = [] + number = q['values'][0] + next = -1 + for i in q['date_range']: + next += 1 + mongey = money_dict[i] + add = number[next] * mongey + add_money.append(add) + q['proid_money'] = add_money + # 首充金额分布 + # if item['groupby'][0] == 'money' and analysis.events[0]['event_name'] == 'pay': + # # 将proid字段和金额money按对应关系组合成字典并算出对应的总额返回给前端 + # money_dict = await crud.proid_map.get_all_show_money(db, game) + # add_money = [] + # number = q['values'][0] + # next = -1 + # for i in q['date_range']: + # next += 1 + # mongey = money_dict[i] + # add = number[next] * mongey + # add_money.append(add) + # q['proid_money'] = add_money res.append(q) continue diff --git a/crud/__init__.py b/crud/__init__.py index 78b2e7b..82f8670 100644 --- a/crud/__init__.py +++ b/crud/__init__.py @@ -14,4 +14,5 @@ from .crud_role import role from .crud_check_data import check_data from .user_label import user_label from .select_map import select_map -from .crud_project_number import project_number \ No newline at end of file +from .crud_project_number import project_number +from .crud_proid_map import proid_map \ No newline at end of file diff --git a/crud/crud_proid_map.py b/crud/crud_proid_map.py new file mode 100644 index 0000000..28a249b --- /dev/null +++ b/crud/crud_proid_map.py @@ -0,0 +1,29 @@ +import pymongo +from bson import ObjectId +from motor.motor_asyncio import AsyncIOMotorDatabase + +import schemas +from crud.base import CRUDBase +from schemas import * + +__all__ = 'proid_map', + + +class CRUDProidmap(CRUDBase): + # 将两个字段按对应关系组合成字典返回 + async def get_all_show_name(self, db: AsyncIOMotorDatabase, game: str): + cursor = self.find(db, {'game': game}) + res = {} + async for item in self.to_list(cursor): + res[item['proid']] = item['name'] + return res + + #将proid字段和金额money按对应关系组合成字典返回 + async def get_all_show_money(self, db: AsyncIOMotorDatabase, game: str): + cursor = self.find(db, {'game': game}) + res = {} + async for item in self.to_list(cursor): + res[item['proid']] = item['money'] + return res + +proid_map = CRUDProidmap('proid_map') \ No newline at end of file diff --git a/schemas/__init__.py b/schemas/__init__.py index e0dfbbf..50c7fcb 100644 --- a/schemas/__init__.py +++ b/schemas/__init__.py @@ -18,4 +18,5 @@ from .role import * from .check_data import * from .userlabel import * from .select_map import * -from .project_number import * \ No newline at end of file +from .project_number import * +from .proid_map import * \ No newline at end of file diff --git a/schemas/proid_map.py b/schemas/proid_map.py new file mode 100644 index 0000000..e69de29