1.实现获取系统统计数据接口

This commit is contained in:
haotian 2025-08-01 11:01:58 +08:00
parent 9fcc92a0fc
commit f5ad9266f8
4 changed files with 103 additions and 40 deletions

View File

@ -19,55 +19,70 @@ from utils.response_util import ResponseUtil
sys_statisticsController = APIRouter(prefix='/system/sys_statistics', dependencies=[Depends(LoginService.get_current_user)])
# 获取统计数据
@sys_statisticsController.get(
'/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:list'))]
'/get_data'
)
async def get_system_sys_statistics_list(
async def get_statistics_data(
request: Request,
sys_statistics_page_query: Sys_statisticsPageQueryModel = Depends(Sys_statisticsPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
sys_statistics_page_query_result = await Sys_statisticsService.get_sys_statistics_list_services(query_db, sys_statistics_page_query, is_page=True)
logger.info('获取成功')
return ResponseUtil.success(model_content=sys_statistics_page_query_result)
data = await Sys_statisticsService.get_statistics_data_services(query_db)
return ResponseUtil.success(data=data)
@sys_statisticsController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:add'))])
@ValidateFields(validate_model='add_sys_statistics')
@Log(title='系统统计数据', business_type=BusinessType.INSERT)
async def add_system_sys_statistics(
request: Request,
add_sys_statistics: Sys_statisticsModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
add_sys_statistics.create_time = datetime.now()
add_sys_statistics.create_by = current_user.user.user_name
add_sys_statistics.update_time = datetime.now()
add_sys_statistics.update_by = current_user.user.user_name
add_sys_statistics_result = await Sys_statisticsService.add_sys_statistics_services(query_db, add_sys_statistics)
logger.info(add_sys_statistics_result.message)
return ResponseUtil.success(msg=add_sys_statistics_result.message)
# @sys_statisticsController.get(
# '/list', response_model=PageResponseModel
# # , dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:list'))]
# )
# async def get_system_sys_statistics_list(
# request: Request,
# sys_statistics_page_query: Sys_statisticsPageQueryModel = Depends(Sys_statisticsPageQueryModel.as_query),
# query_db: AsyncSession = Depends(get_db),
# ):
# # 获取分页数据
# sys_statistics_page_query_result = await Sys_statisticsService.get_sys_statistics_list_services(query_db, sys_statistics_page_query, is_page=True)
# logger.info('获取成功')
#
# return ResponseUtil.success(model_content=sys_statistics_page_query_result)
@sys_statisticsController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:edit'))])
@ValidateFields(validate_model='edit_sys_statistics')
@Log(title='系统统计数据', business_type=BusinessType.UPDATE)
async def edit_system_sys_statistics(
request: Request,
edit_sys_statistics: Sys_statisticsModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_sys_statistics.update_by = current_user.user.user_name
edit_sys_statistics.update_time = datetime.now()
edit_sys_statistics_result = await Sys_statisticsService.edit_sys_statistics_services(query_db, edit_sys_statistics)
logger.info(edit_sys_statistics_result.message)
return ResponseUtil.success(msg=edit_sys_statistics_result.message)
# @sys_statisticsController.post(''
# , dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:add'))]
# )
# @ValidateFields(validate_model='add_sys_statistics')
# @Log(title='系统统计数据', business_type=BusinessType.INSERT)
# async def add_system_sys_statistics(
# request: Request,
# add_sys_statistics: Sys_statisticsModel,
# query_db: AsyncSession = Depends(get_db),
# current_user: CurrentUserModel = Depends(LoginService.get_current_user),
# ):
# add_sys_statistics.create_time = datetime.now()
# add_sys_statistics.create_by = current_user.user.user_name
# add_sys_statistics.update_time = datetime.now()
# add_sys_statistics.update_by = current_user.user.user_name
# add_sys_statistics_result = await Sys_statisticsService.add_sys_statistics_services(query_db, add_sys_statistics)
# logger.info(add_sys_statistics_result.message)
#
# return ResponseUtil.success(msg=add_sys_statistics_result.message)
#
#
# @sys_statisticsController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:edit'))])
# @ValidateFields(validate_model='edit_sys_statistics')
# @Log(title='系统统计数据', business_type=BusinessType.UPDATE)
# async def edit_system_sys_statistics(
# request: Request,
# edit_sys_statistics: Sys_statisticsModel,
# query_db: AsyncSession = Depends(get_db),
# current_user: CurrentUserModel = Depends(LoginService.get_current_user),
# ):
# edit_sys_statistics.update_by = current_user.user.user_name
# edit_sys_statistics.update_time = datetime.now()
# edit_sys_statistics_result = await Sys_statisticsService.edit_sys_statistics_services(query_db, edit_sys_statistics)
# logger.info(edit_sys_statistics_result.message)
#
# return ResponseUtil.success(msg=edit_sys_statistics_result.message)
# @sys_statisticsController.delete('/{statistic_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:sys_statistics:remove'))])

View File

@ -3,6 +3,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.sys_statistics_do import SysStatistics
from module_admin.entity.vo.sys_statistics_vo import Sys_statisticsModel, Sys_statisticsPageQueryModel
from utils.page_util import PageUtil
from datetime import datetime, date
class Sys_statisticsDao:
@ -10,6 +11,15 @@ class Sys_statisticsDao:
系统统计数据模块数据库操作层
"""
@classmethod
async def get_statistics_data(cls, db: AsyncSession, dd: date):
stmt = (
select(SysStatistics.llm_call,SysStatistics.access_control_count, SysStatistics.visitor_guide, SysStatistics.exhibition_explanation)
.where(SysStatistics.stat_date == dd)
)
return (await db.execute(stmt)).mappings().first()
@classmethod
async def get_sys_statistics_detail_by_id(cls, db: AsyncSession, statistic_id: int):
"""

View File

@ -7,6 +7,7 @@ from module_admin.dao.sys_statistics_dao import Sys_statisticsDao
from module_admin.entity.vo.sys_statistics_vo import DeleteSys_statisticsModel, Sys_statisticsModel, Sys_statisticsPageQueryModel
from utils.common_util import CamelCaseUtil
from utils.excel_util import ExcelUtil
from datetime import datetime, timedelta
class Sys_statisticsService:
@ -14,6 +15,41 @@ class Sys_statisticsService:
系统统计数据模块服务层
"""
@classmethod
async def get_statistics_data_services(cls, query_db: AsyncSession):
# 当前日期
today = datetime.now().date()
yesterday = today - timedelta(days=1)
data_1 = await Sys_statisticsDao.get_statistics_data(query_db, yesterday)
data_2 = await Sys_statisticsDao.get_statistics_data(query_db, today)
if data_1 is None:
data_1 = {
"llm_call": 0,
"access_control_count": 0,
"visitor_guide": 0,
"exhibition_explanation": 0
}
else:
data_1 =dict(data_1)
if data_2 is None:
data_2 = {
"llm_call": 0,
"access_control_count": 0,
"visitor_guide": 0,
"exhibition_explanation": 0
}
else:
data_2 =dict(data_2)
#
for k, v in data_1.items():
data_1[k] = data_2[k] - v
return {
'change': data_1,
'today': data_2
}
@classmethod
async def get_sys_statistics_list_services(
cls, query_db: AsyncSession, query_object: Sys_statisticsPageQueryModel, is_page: bool = False

View File

@ -30,6 +30,7 @@ from module_admin.controller.message_controller import messageController
from module_admin.controller.robot_role_pairing_controller import pairingController
from module_admin.controller.explanation_content_controller import explanationContentController
from module_admin.controller.explanation_style_robot_pair_controller import explanation_style_robot_pairController
from module_admin.controller.sys_statistics_controller import sys_statisticsController
from sub_applications.handle import handle_sub_applications
from utils.common_util import worship
@ -94,6 +95,7 @@ controller_list = [
{'router': pairingController, 'tags': ['机器人角色']},
{'router': explanationContentController, 'tags': ['讲解管理']},
{'router': explanation_style_robot_pairController, 'tags': ['讲解风格管理']},
{'router': sys_statisticsController, 'tags': ['系统统计数据管理']},
]