Skip to content

Commit a3f815c

Browse files
committed
feat: 日志管理模块新增字段排序查询
1 parent f3dc961 commit a3f815c

File tree

6 files changed

+43
-8
lines changed

6 files changed

+43
-8
lines changed

dash-fastapi-backend/module_admin/dao/log_dao.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from sqlalchemy import asc, desc
12
from sqlalchemy.orm import Session
23
from module_admin.entity.do.log_do import SysOperLog, SysLogininfor
34
from module_admin.entity.vo.log_vo import OperLogModel, LogininforModel, OperLogQueryModel, LoginLogQueryModel
@@ -32,6 +33,12 @@ def get_operation_log_list(cls, db: Session, query_object: OperLogQueryModel):
3233
:param query_object: 查询参数对象
3334
:return: 操作日志列表信息对象
3435
"""
36+
if query_object.is_asc == 'ascend':
37+
order_by_column = asc(getattr(SysOperLog, query_object.order_by_column, None))
38+
elif query_object.is_asc == 'descend':
39+
order_by_column = desc(getattr(SysOperLog, query_object.order_by_column, None))
40+
else:
41+
order_by_column = asc(SysOperLog.oper_time)
3542
operation_log_list = db.query(SysOperLog) \
3643
.filter(SysOperLog.title.like(f'%{query_object.title}%') if query_object.title else True,
3744
SysOperLog.oper_name.like(f'%{query_object.oper_name}%') if query_object.oper_name else True,
@@ -42,7 +49,7 @@ def get_operation_log_list(cls, db: Session, query_object: OperLogQueryModel):
4249
datetime.combine(datetime.strptime(query_object.oper_time_end, '%Y-%m-%d'), time(23, 59, 59)))
4350
if query_object.oper_time_start and query_object.oper_time_end else True
4451
)\
45-
.distinct().all()
52+
.distinct().order_by(order_by_column).all()
4653

4754
return list_format_datetime(operation_log_list)
4855

@@ -96,6 +103,12 @@ def get_login_log_list(cls, db: Session, query_object: LoginLogQueryModel):
96103
:param query_object: 查询参数对象
97104
:return: 登录日志列表信息对象
98105
"""
106+
if query_object.is_asc == 'ascend':
107+
order_by_column = asc(getattr(SysLogininfor, query_object.order_by_column, None))
108+
elif query_object.is_asc == 'descend':
109+
order_by_column = desc(getattr(SysLogininfor, query_object.order_by_column, None))
110+
else:
111+
order_by_column = asc(SysLogininfor.login_time)
99112
login_log_list = db.query(SysLogininfor) \
100113
.filter(SysLogininfor.ipaddr.like(f'%{query_object.ipaddr}%') if query_object.ipaddr else True,
101114
SysLogininfor.user_name.like(f'%{query_object.user_name}%') if query_object.user_name else True,
@@ -105,7 +118,7 @@ def get_login_log_list(cls, db: Session, query_object: LoginLogQueryModel):
105118
datetime.combine(datetime.strptime(query_object.login_time_end, '%Y-%m-%d'), time(23, 59, 59)))
106119
if query_object.login_time_start and query_object.login_time_end else True
107120
)\
108-
.distinct().all()
121+
.distinct().order_by(order_by_column).all()
109122

110123
return list_format_datetime(login_log_list)
111124

dash-fastapi-backend/module_admin/entity/vo/log_vo.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class OperLogQueryModel(OperLogModel):
5050
"""
5151
操作日志管理不分页查询模型
5252
"""
53+
order_by_column: Optional[str]
54+
is_asc: Optional[str]
5355
oper_time_start: Optional[str]
5456
oper_time_end: Optional[str]
5557

@@ -91,6 +93,8 @@ class LoginLogQueryModel(LogininforModel):
9193
"""
9294
登录日志管理不分页查询模型
9395
"""
96+
order_by_column: Optional[str]
97+
is_asc: Optional[str]
9498
login_time_start: Optional[str]
9599
login_time_end: Optional[str]
96100

dash-fastapi-frontend/callbacks/monitor_c/logininfor_c.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
inputs=dict(
2222
search_click=Input('login_log-search', 'nClicks'),
2323
refresh_click=Input('login_log-refresh', 'nClicks'),
24+
sorter=Input('login_log-list-table', 'sorter'),
2425
pagination=Input('login_log-list-table', 'pagination'),
2526
operations=Input('login_log-operations-store', 'data')
2627
),
@@ -33,7 +34,7 @@
3334
),
3435
prevent_initial_call=True
3536
)
36-
def get_login_log_table_data(search_click, refresh_click, pagination, operations, ipaddr, user_name, status_select, login_time_range, button_perms):
37+
def get_login_log_table_data(search_click, refresh_click, sorter, pagination, operations, ipaddr, user_name, status_select, login_time_range, button_perms):
3738
"""
3839
获取登录日志表格数据回调(进行表格相关增删查改操作后均会触发此回调)
3940
"""
@@ -49,17 +50,21 @@ def get_login_log_table_data(search_click, refresh_click, pagination, operations
4950
status=status_select,
5051
login_time_start=login_time_start,
5152
login_time_end=login_time_end,
53+
order_by_column=sorter.get('columns')[0] if sorter else None,
54+
is_asc=sorter.get('orders')[0] if sorter else None,
5255
page_num=1,
5356
page_size=10
5457
)
55-
triggered_id = dash.ctx.triggered_id
56-
if triggered_id == 'login_log-list-table':
58+
triggered_prop = dash.ctx.triggered[0].get('prop_id')
59+
if triggered_prop == 'login_log-list-table.pagination':
5760
query_params = dict(
5861
ipaddr=ipaddr,
5962
user_name=user_name,
6063
status=status_select,
6164
login_time_start=login_time_start,
6265
login_time_end=login_time_end,
66+
order_by_column=sorter.get('columns')[0] if sorter else None,
67+
is_asc=sorter.get('orders')[0] if sorter else None,
6368
page_num=pagination['current'],
6469
page_size=pagination['pageSize']
6570
)

dash-fastapi-frontend/callbacks/monitor_c/operlog_c.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
inputs=dict(
2424
search_click=Input('operation_log-search', 'nClicks'),
2525
refresh_click=Input('operation_log-refresh', 'nClicks'),
26+
sorter=Input('operation_log-list-table', 'sorter'),
2627
pagination=Input('operation_log-list-table', 'pagination'),
2728
operations=Input('operation_log-operations-store', 'data')
2829
),
@@ -36,7 +37,7 @@
3637
),
3738
prevent_initial_call=True
3839
)
39-
def get_operation_log_table_data(search_click, refresh_click, pagination, operations, title, oper_name, business_type, status_select, oper_time_range, button_perms):
40+
def get_operation_log_table_data(search_click, refresh_click, sorter, pagination, operations, title, oper_name, business_type, status_select, oper_time_range, button_perms):
4041
"""
4142
获取操作日志表格数据回调(进行表格相关增删查改操作后均会触发此回调)
4243
"""
@@ -53,18 +54,22 @@ def get_operation_log_table_data(search_click, refresh_click, pagination, operat
5354
status=status_select,
5455
oper_time_start=oper_time_start,
5556
oper_time_end=oper_time_end,
57+
order_by_column=sorter.get('columns')[0] if sorter else None,
58+
is_asc=sorter.get('orders')[0] if sorter else None,
5659
page_num=1,
5760
page_size=10
5861
)
59-
triggered_id = dash.ctx.triggered_id
60-
if triggered_id == 'operation_log-list-table':
62+
triggered_prop = dash.ctx.triggered[0].get('prop_id')
63+
if triggered_prop == 'operation_log-list-table.pagination':
6164
query_params = dict(
6265
title=title,
6366
oper_name=oper_name,
6467
business_type=business_type,
6568
status=status_select,
6669
oper_time_start=oper_time_start,
6770
oper_time_end=oper_time_end,
71+
order_by_column=sorter.get('columns')[0] if sorter else None,
72+
is_asc=sorter.get('orders')[0] if sorter else None,
6873
page_num=pagination['current'],
6974
page_size=pagination['pageSize']
7075
)

dash-fastapi-frontend/views/monitor/logininfor/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,10 @@ def render(button_perms):
331331
rowSelectionType='checkbox',
332332
rowSelectionWidth=50,
333333
bordered=True,
334+
sortOptions={
335+
'sortDataIndexes': ['user_name', 'login_time'],
336+
'multiple': False
337+
},
334338
pagination={
335339
'pageSize': page_size,
336340
'current': page_num,

dash-fastapi-frontend/views/monitor/operlog/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,10 @@ def render(button_perms):
361361
rowSelectionType='checkbox',
362362
rowSelectionWidth=50,
363363
bordered=True,
364+
sortOptions={
365+
'sortDataIndexes': ['oper_name', 'oper_time'],
366+
'multiple': False
367+
},
364368
pagination={
365369
'pageSize': page_size,
366370
'current': page_num,

0 commit comments

Comments
 (0)