update
This commit is contained in:
parent
3876ba7225
commit
d2ab33b1a9
@ -62,8 +62,10 @@ async def add_report(data_in: schemas.AddReport,
|
|||||||
):
|
):
|
||||||
"""添加报表"""
|
"""添加报表"""
|
||||||
reports = [item.dict() for item in data_in.report_ids]
|
reports = [item.dict() for item in data_in.report_ids]
|
||||||
res = await crud.dashboard.update_one(db, {'_id': data_in.id},
|
# res = await crud.dashboard.update_one(db, {'_id': data_in.id},
|
||||||
{'$push': {'reports': {'$each': reports}}})
|
# {'$push': {'reports': {'$each': reports}}})
|
||||||
|
await crud.dashboard.update_one(db, {'_id': data_in.id},
|
||||||
|
{'$set': {'reports': reports}})
|
||||||
return schemas.Msg(code=0, msg='ok', data='ok')
|
return schemas.Msg(code=0, msg='ok', data='ok')
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,6 +101,7 @@ async def event_model(
|
|||||||
q['values'].append(df['values'].to_list())
|
q['values'].append(df['values'].to_list())
|
||||||
q['sum'].append(int(df['values'].sum()))
|
q['sum'].append(int(df['values'].sum()))
|
||||||
q['date_range'] = [d.strftime('%Y-%m-%d %H:%M:%S') for d in q['date_range']]
|
q['date_range'] = [d.strftime('%Y-%m-%d %H:%M:%S') for d in q['date_range']]
|
||||||
|
# q['eventNameDisplay']=item['event_name_display']
|
||||||
res.append(q)
|
res.append(q)
|
||||||
return schemas.Msg(code=0, msg='ok', data=res)
|
return schemas.Msg(code=0, msg='ok', data=res)
|
||||||
|
|
||||||
|
@ -11,8 +11,6 @@ from api import deps
|
|||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/create")
|
@router.post("/create")
|
||||||
async def create(
|
async def create(
|
||||||
request: Request,
|
request: Request,
|
||||||
@ -30,6 +28,22 @@ async def create(
|
|||||||
return schemas.Msg(code=0, msg='ok', data='创建成功')
|
return schemas.Msg(code=0, msg='ok', data='创建成功')
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/edit")
|
||||||
|
async def edit(
|
||||||
|
request: Request,
|
||||||
|
data_in: schemas.ReportEdit,
|
||||||
|
game: str,
|
||||||
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
||||||
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
||||||
|
) -> schemas.Msg:
|
||||||
|
"""编辑报表"""
|
||||||
|
|
||||||
|
await crud.report.update_one(db, {'_id': data_in.report_id},
|
||||||
|
{'$set': {'query': data_in.query, 'name': data_in.name, 'desc': data_in.desc}})
|
||||||
|
|
||||||
|
return schemas.Msg(code=0, msg='ok', data='编辑成功')
|
||||||
|
|
||||||
|
|
||||||
@router.post("/read_report")
|
@router.post("/read_report")
|
||||||
async def read_report(
|
async def read_report(
|
||||||
request: Request,
|
request: Request,
|
||||||
|
2
main.py
2
main.py
@ -110,4 +110,4 @@ async def add_process_time_header(request: Request, call_next):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
uvicorn.run(app='main:app', host="0.0.0.0", port=9861, reload=True, debug=True)
|
uvicorn.run(app='main:app', host="0.0.0.0", port=7889, reload=True, debug=True)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
|
import arrow
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -42,6 +43,11 @@ class BehaviorAnalysis:
|
|||||||
report = await crud.report.get(db, id=self.data_in.report_id)
|
report = await crud.report.get(db, id=self.data_in.report_id)
|
||||||
self.event_view = report['query']['eventView']
|
self.event_view = report['query']['eventView']
|
||||||
self.events = report['query']['events']
|
self.events = report['query']['events']
|
||||||
|
e_days, s_days = self.event_view['recentDay'].split('-')
|
||||||
|
self.event_view['endTime'] = arrow.get().shift(days=-int(e_days)).strftime('%Y-%m-%d 23:59:59')
|
||||||
|
self.event_view['startTime'] = arrow.get().shift(days=-int(s_days)).strftime('%Y-%m-%d 00:00:00')
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.event_view = self.data_in.eventView
|
self.event_view = self.data_in.eventView
|
||||||
self.events = self.data_in.events
|
self.events = self.data_in.events
|
||||||
@ -190,19 +196,19 @@ class BehaviorAnalysis:
|
|||||||
return func.sum(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name, 1, 0))
|
return func.sum(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name, 1, 0))
|
||||||
elif comp == 'touch_user_count':
|
elif comp == 'touch_user_count':
|
||||||
return func.uniqCombined(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name,
|
return func.uniqCombined(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name,
|
||||||
getattr(self.event_tbl.c, 'binduid'), 0))
|
getattr(self.event_tbl.c, 'binduid'), ''))
|
||||||
elif comp == 'touch_user_avg':
|
elif comp == 'touch_user_avg':
|
||||||
return func.divide(
|
return func.divide(
|
||||||
func.sum(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name, 1, 0)),
|
func.sum(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name, 1, 0)),
|
||||||
func.uniqCombined(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name,
|
func.uniqCombined(getattr(func, 'if')(getattr(self.event_tbl.c, '#event_name') == event_name,
|
||||||
getattr(self.event_tbl.c, 'binduid'), 0)))
|
getattr(self.event_tbl.c, 'binduid'), '')))
|
||||||
|
|
||||||
opt = ({'+', '-', '*', '/'} & set(s)).pop()
|
opt = ({'+', '-', '*', '/'} & set(s)).pop()
|
||||||
a, b = s.split(opt)
|
a, b = s.split(opt)
|
||||||
r1 = a.split('.')
|
r1 = a.split('.')
|
||||||
r2 = b.split('.')
|
r2 = b.split('.')
|
||||||
return {'event_name': [r1[0], r2[0]],
|
return {'event_name': [r1[0], r2[0]],
|
||||||
'select': (settings.ARITHMETIC[opt](f(r1), f(r2))).label('values')
|
'select': func.round(settings.ARITHMETIC[opt](f(r1), f(r2)), 2).label('values')
|
||||||
}
|
}
|
||||||
|
|
||||||
def event_model_sql(self):
|
def event_model_sql(self):
|
||||||
@ -210,6 +216,7 @@ class BehaviorAnalysis:
|
|||||||
event_time_col = getattr(self.event_tbl.c, '#event_time')
|
event_time_col = getattr(self.event_tbl.c, '#event_time')
|
||||||
|
|
||||||
for event in self.events:
|
for event in self.events:
|
||||||
|
event_name_display = event.get('eventNameDisplay')
|
||||||
select_exprs = [
|
select_exprs = [
|
||||||
settings.TIME_GRAIN_EXPRESSIONS[self.time_particle](event_time_col, self.zone_time)]
|
settings.TIME_GRAIN_EXPRESSIONS[self.time_particle](event_time_col, self.zone_time)]
|
||||||
|
|
||||||
@ -273,7 +280,7 @@ class BehaviorAnalysis:
|
|||||||
sqls.append({'sql': sql,
|
sqls.append({'sql': sql,
|
||||||
'groupby': [i.key for i in self.groupby],
|
'groupby': [i.key for i in self.groupby],
|
||||||
'date_range': self.date_range,
|
'date_range': self.date_range,
|
||||||
'event_name': event_name
|
'event_name': event_name_display or event_name,
|
||||||
})
|
})
|
||||||
|
|
||||||
return sqls
|
return sqls
|
||||||
|
@ -40,6 +40,7 @@ class DashboardMove(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class Report(BaseModel):
|
class Report(BaseModel):
|
||||||
|
name: str
|
||||||
report_id: str
|
report_id: str
|
||||||
graph_type: str
|
graph_type: str
|
||||||
model: str
|
model: str
|
||||||
|
@ -23,6 +23,13 @@ class ReportCreate(ReportBase):
|
|||||||
cat: str
|
cat: str
|
||||||
|
|
||||||
|
|
||||||
|
class ReportEdit(BaseModel):
|
||||||
|
report_id: str
|
||||||
|
query: dict
|
||||||
|
name: str
|
||||||
|
desc: str
|
||||||
|
|
||||||
|
|
||||||
class ReportDelete(DBBase):
|
class ReportDelete(DBBase):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user