35 lines
1003 B
Python
35 lines
1003 B
Python
import asyncio
|
|
import json
|
|
|
|
from fastapi import APIRouter, Request
|
|
|
|
from common import *
|
|
from models import DataModel
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/point/")
|
|
async def point(request: Request, items: DataModel):
|
|
# 还原字段名 和 组装数据
|
|
data_list = []
|
|
public_data = restore_field(items.public)
|
|
rdb = request.app.state.redis
|
|
data_factory = request.app.state.data_factory
|
|
output_factory = request.app.state.output_factory
|
|
for item in items.data:
|
|
data = restore_field(item)
|
|
sign = data.pop('sign')
|
|
# 验签
|
|
if not check_sign(sign, public_data, data):
|
|
return {"code": -1, 'msg': '签名错误'}
|
|
data.update(public_data)
|
|
data_list.append(data)
|
|
|
|
for item in data_list:
|
|
await asyncio.gather(*map(lambda o: asyncio.create_task(o(request, rdb, item)), data_factory.handler_link))
|
|
msg = data_factory.format_data(item)
|
|
output_factory.send(msg)
|
|
|
|
return {"code": 0, 'msg': 'ok'}
|