This commit is contained in:
kf_wuhao 2021-04-02 17:40:21 +08:00
parent 369efd9da7
commit d2d35ec9b8
4 changed files with 47 additions and 18 deletions

View File

@ -2,27 +2,47 @@ import hashlib
from settings import settings from settings import settings
__all__ = 'restore_field', 'sort_kv', 'check_sign' __all__ = 'restore_field', 'sort_kv', 'check_sign', 'check_preset'
def restore_field(data: dict) -> dict: def restore_field(data: dict) -> dict:
"""
不在预置字段 去掉前置#
:param data:
:return:
"""
res = dict() res = dict()
for k, v in data.items(): for k, v in data.items():
map_name = settings.FIELD_MAP.get(k) res[settings.FIELD_MAP.get(k) or k] = v
if map_name:
res[map_name] = v
elif k.startswith('#'):
res[k[1:]] = v
else:
res[k] = v
return res return res
def check_preset(data: dict):
preset_name = set(settings.FIELD_MAP.values())
illegality_name = dict()
for k, v in data.items():
if k.startswith('#') and k not in preset_name:
illegality_name[k] = v
for k, v in illegality_name.items():
del data[k]
data[k[1:]] = v
return data
# def restore_field(data: dict) -> dict:
# """
# 不在预置字段 去掉前置#
# :param data:
# :return:
# """
# res = dict()
# for k, v in data.items():
# map_name = settings.FIELD_MAP.get(k)
# if map_name:
# res[map_name] = v
# elif k.startswith('#'):
# res[k[1:]] = v
# else:
# res[k] = v
# return res
def sort_kv(*args: dict): def sort_kv(*args: dict):
return '&'.join(map(lambda item: '&'.join(map(lambda x: f'{x[0]}={x[1]}', sorted(item.items()))), args)) return '&'.join(map(lambda item: '&'.join(map(lambda x: f'{x[0]}={x[1]}', sorted(item.items()))), args))

View File

@ -50,6 +50,7 @@ async def to_date(request, rdb, data):
:return: :return:
""" """
data['#time'] = arrow.get(data['#time'], tzinfo='Asia/Shanghai').strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] data['#time'] = arrow.get(data['#time'], tzinfo='Asia/Shanghai').strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
data['#event_time'] = data['#time']
@TaHandler @TaHandler
@ -62,9 +63,9 @@ async def device_label(request, rdb, data):
:return: :return:
""" """
# 条件 # 条件
if data.get('type') == 'user_add': if data.get('#type') == 'user' and data.get('#event_name') == 'add':
v = await rdb.execute('sadd', f'{data.game}.devices', data.properties.get('#device_id', '')) v = await rdb.execute('sadd', f'{data["#app_id"]}.devices', data.get('#device_id', ''))
if v: if v:
data.properties['is_new_device'] = 1 data['properties']['is_new_device'] = 1
else: else:
data.properties['is_new_device'] = 0 data['properties']['is_new_device'] = 0

View File

@ -1,4 +1,5 @@
import asyncio import asyncio
import traceback
from fastapi import APIRouter, Request from fastapi import APIRouter, Request
@ -26,6 +27,7 @@ async def point(request: Request, items: DataModel):
# continue # continue
return {"code": -1, 'msg': '签名错误'} return {"code": -1, 'msg': '签名错误'}
single_data = dict(**public_data, **data, properties=properties) single_data = dict(**public_data, **data, properties=properties)
check_preset(single_data)
await asyncio.gather( await asyncio.gather(
*map(lambda o: asyncio.create_task(o(request, rdb, single_data)), data_factory.handler_link)) *map(lambda o: asyncio.create_task(o(request, rdb, single_data)), data_factory.handler_link))
msg = data_factory.format_data(single_data) msg = data_factory.format_data(single_data)
@ -33,4 +35,5 @@ async def point(request: Request, items: DataModel):
return {"code": 0, 'msg': 'ok'} return {"code": 0, 'msg': 'ok'}
except Exception as e: except Exception as e:
return {"code": -1, 'msg': '数据异常'} msg = traceback.format_exc()
return {"code": -1, 'msg': msg}

View File

@ -45,7 +45,12 @@ class Config:
"a35": "#mp_platform", "a35": "#mp_platform",
"a36": "#app_crashed_reason", "a36": "#app_crashed_reason",
"a37": "#zone_offset", "a37": "#zone_offset",
"b01": "#app_id", "b01": "#app_id",
"b02": "#type",
"b03": "#time",
"b06": "#event_time" "b06": "#event_time"
} }