Merge pull request #14 from 1014TaoTao/dev

feat(operation_log): 新增登录位置和处理时间字段
This commit is contained in:
1014TaoTao
2025-05-18 18:52:21 +08:00
committed by GitHub
16 changed files with 273 additions and 223 deletions
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from datetime import datetime from datetime import datetime
from sqlalchemy import Column, ForeignKey, String, Integer, Text, DateTime from sqlalchemy import Column, ForeignKey, String, Integer, Text, DateTime, Float
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.core.base_model import ModelBase from app.core.base_model import ModelBase
@@ -17,10 +17,12 @@ class OperationLogModel(ModelBase):
request_method = Column(String(10), nullable=True, comment="请求方式", index=True) request_method = Column(String(10), nullable=True, comment="请求方式", index=True)
request_payload = Column(Text, nullable=True, comment="请求体") request_payload = Column(Text, nullable=True, comment="请求体")
request_ip = Column(String(50), nullable=True, comment="请求IP地址") request_ip = Column(String(50), nullable=True, comment="请求IP地址")
login_location=Column(String(255), nullable=True, comment="登录位置")
request_os = Column(String(64), nullable=True, comment="操作系统") request_os = Column(String(64), nullable=True, comment="操作系统")
request_browser = Column(String(64), nullable=True, comment="浏览器") request_browser = Column(String(64), nullable=True, comment="浏览器")
response_code = Column(Integer, nullable=True, comment="响应状态码") response_code = Column(Integer, nullable=True, comment="响应状态码")
response_json = Column(Text, nullable=True, comment="响应体") response_json = Column(Text, nullable=True, comment="响应体")
process_time = Column(Float, nullable=True, comment="处理时间")
# 审计字段 # 审计字段
description = Column(Text, nullable=True, comment="备注说明") description = Column(Text, nullable=True, comment="备注说明")
@@ -12,10 +12,12 @@ class OperationLogCreateSchema(BaseModel):
request_method: Optional[str] = Field(default=None, description="请求方法") request_method: Optional[str] = Field(default=None, description="请求方法")
request_payload: Optional[str] = Field(default=None, description="请求负载") request_payload: Optional[str] = Field(default=None, description="请求负载")
request_ip: Optional[str] = Field(default=None, description="请求 IP 地址") request_ip: Optional[str] = Field(default=None, description="请求 IP 地址")
login_location: Optional[str] = Field(default=None, description="登录位置")
request_os: Optional[str] = Field(default=None, description="请求操作系统") request_os: Optional[str] = Field(default=None, description="请求操作系统")
request_browser: Optional[str] = Field(default=None, description="请求浏览器") request_browser: Optional[str] = Field(default=None, description="请求浏览器")
response_code: Optional[int] = Field(default=None, description="响应状态码") response_code: Optional[int] = Field(default=None, description="响应状态码")
response_json: Optional[str] = Field(default=None, description="响应 JSON 数据") response_json: Optional[str] = Field(default=None, description="响应 JSON 数据")
process_time: Optional[float] = Field(default=None, description="处理时间")
description: Optional[str] = Field(default=None, max_length=255, description="备注") description: Optional[str] = Field(default=None, max_length=255, description="备注")
creator_id: Optional[int] = Field(default=None, description="创建人ID") creator_id: Optional[int] = Field(default=None, description="创建人ID")
@@ -66,10 +66,12 @@ class OperationLogService:
'request_method': '请求方式', 'request_method': '请求方式',
'request_payload': '请求参数', 'request_payload': '请求参数',
'request_ip': '操作地址', 'request_ip': '操作地址',
'login_location': '登录位置',
'request_os': '操作系统', 'request_os': '操作系统',
'request_browser': '浏览器', 'request_browser': '浏览器',
'response_json': '返回参数', 'response_json': '返回参数',
'response_code': '操作状态', 'response_code': '相应状态',
'process_time': '处理时间',
'description': '备注', 'description': '备注',
'created_at': '创建时间', 'created_at': '创建时间',
'updated_at': '更新时间', 'updated_at': '更新时间',
+5 -4
View File
@@ -172,11 +172,12 @@ class Settings(BaseSettings):
# ================================================= # # ================================================= #
# ***************** 演示模型配置 ***************** # # ***************** 演示模型配置 ***************** #
# ================================================= # # ================================================= #
DEMO_ENABLE: bool = False # 是否开启演示模式 DEMO_ENABLE: bool # 是否开启演示模式
DEMO_WHITE_LIST_PATH: List[str] = [ # 演示白名单 DEMO_WHITE_LIST_PATH: List[str] = [ # 演示白名单
"/system/auth/login", "/api/v1/system/auth/login",
"/system/auth/token/refresh", "/api/v1/system/auth/token/refresh",
"/system/auth/captcha/get" "/api/v1/system/auth/captcha/get",
"/api/v1/system/auth/logout",
] ]
DEMO_BLACK_LIST_PATH: List[str] = [ # 演示黑名单 DEMO_BLACK_LIST_PATH: List[str] = [ # 演示黑名单
"/auth/login" "/auth/login"
+2 -8
View File
@@ -79,15 +79,9 @@ class DemoEnvMiddleware(BaseHTTPMiddleware):
if settings.DEMO_ENABLE and request.method != "GET": if settings.DEMO_ENABLE and request.method != "GET":
path = request.scope.get("path") path = request.scope.get("path")
if path in settings.DEMO_BLACK_LIST_PATH: if path in settings.DEMO_BLACK_LIST_PATH:
return ErrorResponse( return ErrorResponse(msg="演示环境,禁止操作",)
msg="演示环境,该接口已被禁用",
status=status.HTTP_403_FORBIDDEN
)
elif path not in settings.DEMO_WHITE_LIST_PATH: elif path not in settings.DEMO_WHITE_LIST_PATH:
return ErrorResponse( return ErrorResponse(msg="演示环境,禁止操作",)
msg="演示环境,禁止修改操作",
status=status.HTTP_403_FORBIDDEN
)
return await call_next(request) return await call_next(request)
+13 -1
View File
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import time
from typing import Any, Callable, Coroutine from typing import Any, Callable, Coroutine
from fastapi import Request, Response from fastapi import Request, Response
from fastapi.routing import APIRoute from fastapi.routing import APIRoute
@@ -10,6 +11,7 @@ from app.api.v1.schemas.system.operation_log_schema import OperationLogCreateSch
from app.api.v1.services.system.operation_log_service import OperationLogService from app.api.v1.services.system.operation_log_service import OperationLogService
from app.core.database import session_connect from app.core.database import session_connect
from app.config.setting import settings from app.config.setting import settings
from app.utils.ip_local_util import IpLocalUtil
""" """
在 FastAPI 中,route_class 参数用于自定义路由的行为。 在 FastAPI 中,route_class 参数用于自定义路由的行为。
@@ -23,6 +25,7 @@ class OperationLogRoute(APIRoute):
original_route_handler = super().get_route_handler() original_route_handler = super().get_route_handler()
async def custom_route_handler(request: Request) -> Response: async def custom_route_handler(request: Request) -> Response:
start_time = time.time()
# 请求前的处理 # 请求前的处理
response: Response = await original_route_handler(request) response: Response = await original_route_handler(request)
@@ -53,22 +56,31 @@ class OperationLogRoute(APIRoute):
payload = str(oper_param) payload = str(oper_param)
response_data = response.body if "application/json" in response.headers.get("Content-Type", "") else b"{}" response_data = response.body if "application/json" in response.headers.get("Content-Type", "") else b"{}"
process_time = time.time() - start_time
async with session_connect() as session: async with session_connect() as session:
async with session.begin(): async with session.begin():
auth = AuthSchema(db=session) auth = AuthSchema(db=session)
# 获取当前用户ID,如果是登录接口则为空 # 获取当前用户ID,如果是登录接口则为空
current_user_id = request.scope.get("user_id") if "user_id" in request.scope else None login_location = None
current_user_id = None
if "user_id" in request.scope:
current_user_id = request.scope.get("user_id")
if request.url.path == '/api/v1/system/auth/login':
# 只有登录的才会获取登录地址
login_location = IpLocalUtil.get_ip_location(request.client.host)
await OperationLogService.create_log_service(data=OperationLogCreateSchema( await OperationLogService.create_log_service(data=OperationLogCreateSchema(
request_path = request.url.path, request_path = request.url.path,
request_method = request.method, request_method = request.method,
request_payload = payload, request_payload = payload,
request_ip = request.client.host, request_ip = request.client.host,
login_location=login_location,
request_os = user_agent.os.family, request_os = user_agent.os.family,
request_browser = user_agent.browser.family, request_browser = user_agent.browser.family,
response_code = response.status_code, response_code = response.status_code,
response_json = response_data.decode(), response_json = response_data.decode(),
process_time = process_time,
description = route.summary, description = route.summary,
creator_id = current_user_id creator_id = current_user_id
), auth = auth) ), auth = auth)
+3 -3
View File
@@ -2,9 +2,9 @@
{ {
"id": 1, "id": 1,
"title": "FastAPI Vue Admin", "title": "FastAPI Vue Admin",
"favicon": "http://localhost:8000/api/v1/static/image/favicon.ico", "favicon": "http://localhost:8001/api/v1/static/image/favicon.ico",
"logo": "http://localhost:8000/api/v1/static/image/logo.png", "logo": "http://localhost:8001/api/v1/static/image/logo.png",
"background": "http://localhost:8000/api/v1/static/image/background.png", "background": "http://localhost:8001/api/v1/static/image/background.png",
"description": "FastAPI Vue Admin 是完全开源的权限管理系统", "description": "FastAPI Vue Admin 是完全开源的权限管理系统",
"copyright": "Copyright © 2021-2025 fastapi-vue-admin.com 版权所有", "copyright": "Copyright © 2021-2025 fastapi-vue-admin.com 版权所有",
"keep_record": "晋ICP备18005113号-3", "keep_record": "晋ICP备18005113号-3",
+18 -18
View File
@@ -36,7 +36,7 @@ class IpLocalUtil:
return "未知" return "未知"
# 内网IP直接返回 # 内网IP直接返回
if ip == '127.0.0.1' or ip.startswith('192.168.') or ip.startswith('10.') or ip.startswith('172.'): if ip == '127.0.0.1' or ip == 'localhost':
return '内网IP' return '内网IP'
try: try:
@@ -46,25 +46,25 @@ class IpLocalUtil:
timeout=5 timeout=5
) )
if ip_result.status_code == 200: if ip_result.status_code == 200:
data = ip_result.json().get('data', {})
prov = data.get('prov', '')
city = data.get('city', '')
if prov or city:
return f'{prov}-{city}'
# 备用淘宝API data = ip_result.json().get('data', {})
response = requests.get( # "continent": "亚洲",
f"http://ip.taobao.com/service/getIpInfo.php?ip={ip}", # "country": "中国",
timeout=5 # "zipcode": "710061",
) # "owner": "中国移动",
if response.status_code == 200: # "isp": "中国移动",
data = response.json().get('data', {}) # "adcode": "610113",
country = data.get('country', '') # "prov": "陕西省",
region = data.get('region', '') # "city": "西安市",
city = data.get('city', '') # "district": "雁塔区"
return f"{country}{region}{city}" country = data.get('country', '未知国家')
owner = data.get('owner', '未知运营商')
prov = data.get('prov', '未知省份')
city = data.get('city', '未知城市')
district = data.get('district', '未知地区')
return f'{owner}】-{country}-{prov}-{city}-{district}'
except Exception as e: except Exception as e:
logger.error(f"获取IP归属地失败: {e}") logger.error(f"获取IP归属地失败: {e}")
return "未知" return "未知"
Binary file not shown.
+2
View File
@@ -26,6 +26,8 @@ DOCS_URL = "/docs" # Swagger UI路径
REDOC_URL = "/redoc" # ReDoc路径 REDOC_URL = "/redoc" # ReDoc路径
ROOT_PATH = "/api/v1" # API路由前缀 ROOT_PATH = "/api/v1" # API路由前缀
DEMO_ENABLE = False # 是否启用演示模式
# 数据库配置 # 数据库配置
DB_DRIVER = "sqlite" # sqlite、mysql、postgresql DB_DRIVER = "sqlite" # sqlite、mysql、postgresql
+2
View File
@@ -26,6 +26,8 @@ DOCS_URL = "/docs" # Swagger UI路径
REDOC_URL = "/redoc" # ReDoc路径 REDOC_URL = "/redoc" # ReDoc路径
ROOT_PATH = "/api/v1" # API路由前缀 ROOT_PATH = "/api/v1" # API路由前缀
DEMO_ENABLE = True # 是否启用演示模式
# 数据库配置 # 数据库配置
DB_DRIVER = "mysql" # sqlite、mysql、postgresql DB_DRIVER = "mysql" # sqlite、mysql、postgresql
File diff suppressed because one or more lines are too long
@@ -1016,10 +1016,12 @@ CREATE TABLE public.system_operation_log (
request_method character varying(10), request_method character varying(10),
request_payload text, request_payload text,
request_ip character varying(50), request_ip character varying(50),
login_location character varying(255),
request_os character varying(64), request_os character varying(64),
request_browser character varying(64), request_browser character varying(64),
response_code integer, response_code integer,
response_json text, response_json text,
process_time double precision,
description text, description text,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
@@ -1071,6 +1073,13 @@ COMMENT ON COLUMN public.system_operation_log.request_payload IS '请求体';
COMMENT ON COLUMN public.system_operation_log.request_ip IS '请求IP地址'; COMMENT ON COLUMN public.system_operation_log.request_ip IS '请求IP地址';
--
-- Name: COLUMN system_operation_log.login_location; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_operation_log.login_location IS '登录位置';
-- --
-- Name: COLUMN system_operation_log.request_os; Type: COMMENT; Schema: public; Owner: tao -- Name: COLUMN system_operation_log.request_os; Type: COMMENT; Schema: public; Owner: tao
-- --
@@ -1099,6 +1108,13 @@ COMMENT ON COLUMN public.system_operation_log.response_code IS '响应状态码'
COMMENT ON COLUMN public.system_operation_log.response_json IS '响应体'; COMMENT ON COLUMN public.system_operation_log.response_json IS '响应体';
--
-- Name: COLUMN system_operation_log.process_time; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_operation_log.process_time IS '处理时间';
-- --
-- Name: COLUMN system_operation_log.description; Type: COMMENT; Schema: public; Owner: tao -- Name: COLUMN system_operation_log.description; Type: COMMENT; Schema: public; Owner: tao
-- --
@@ -1744,7 +1760,7 @@ ALTER TABLE ONLY public.system_users ALTER COLUMN id SET DEFAULT nextval('public
-- --
COPY public.system_config (id, title, favicon, logo, background, copyright, keep_record, help_url, privacy_url, clause_url, code_url, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_config (id, title, favicon, logo, background, copyright, keep_record, help_url, privacy_url, clause_url, code_url, description, created_at, updated_at, creator_id) FROM stdin;
1 FastAPI Vue Admin http://localhost:8000/api/v1/static/image/favicon.ico http://localhost:8000/api/v1/static/image/logo.png http://localhost:8000/api/v1/static/image/background.png Copyright © 2021-2025 fastapi-vue-admin.com ICP备18005113号-3 https://gitee.com/tao__tao/fastapi_vue3_admin.git https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE https://gitee.com/tao__tao/fastapi_vue3_admin.git FastAPI Vue Admin 2025-04-15 19:03:45.917465 2025-04-15 19:03:45.917466 1 1 FastAPI Vue Admin http://8.137.99.5:8001/api/v1/static/image/favicon.ico http://8.137.99.5:8001/api/v1/static/image/logo.png http://8.137.99.5:8001/api/v1/static/image/background.png Copyright © 2021-2025 fastapi-vue-admin.com ICP备18005113号-3 https://gitee.com/tao__tao/fastapi_vue3_admin.git https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE https://gitee.com/tao__tao/fastapi_vue3_admin.git FastAPI Vue Admin 2025-05-18 18:28:07.914297 2025-05-18 18:28:07.914298 1
\. \.
@@ -1753,17 +1769,17 @@ COPY public.system_config (id, title, favicon, logo, background, copyright, keep
-- --
COPY public.system_dept (id, name, "order", parent_id, available, description, created_at, updated_at) FROM stdin; COPY public.system_dept (id, name, "order", parent_id, available, description, created_at, updated_at) FROM stdin;
1 1 \N t 2025-04-15 19:03:45.888171 2025-04-15 19:03:45.888175 1 1 \N t 2025-05-18 18:28:07.885848 2025-05-18 18:28:07.885852
2 西 1 1 t 西 2025-04-15 19:03:45.888175 2025-04-15 19:03:45.888176 2 西 1 1 t 西 2025-05-18 18:28:07.885853 2025-05-18 18:28:07.885853
3 2 1 t 2025-04-15 19:03:45.888176 2025-04-15 19:03:45.888177 3 2 1 t 2025-05-18 18:28:07.885854 2025-05-18 18:28:07.885854
4 1 2 t 2025-04-15 19:03:45.888177 2025-04-15 19:03:45.888177 4 1 2 t 2025-05-18 18:28:07.885854 2025-05-18 18:28:07.885855
5 2 2 t 2025-04-15 19:03:45.888178 2025-04-15 19:03:45.888178 5 2 2 t 2025-05-18 18:28:07.885855 2025-05-18 18:28:07.885855
6 3 2 t 2025-04-15 19:03:45.888179 2025-04-15 19:03:45.888179 6 3 2 t 2025-05-18 18:28:07.885856 2025-05-18 18:28:07.885856
7 1 3 t 2025-04-15 19:03:45.888179 2025-04-15 19:03:45.88818 7 1 3 t 2025-05-18 18:28:07.885856 2025-05-18 18:28:07.885857
8 2 3 t 2025-04-15 19:03:45.88818 2025-04-15 19:03:45.88818 8 2 3 t 2025-05-18 18:28:07.885857 2025-05-18 18:28:07.885857
9 3 3 t 2025-04-15 19:03:45.888181 2025-04-15 19:03:45.888181 9 3 3 t 2025-05-18 18:28:07.885858 2025-05-18 18:28:07.885858
10 4 3 t 2025-04-15 19:03:45.888181 2025-04-15 19:03:45.888182 10 4 3 t 2025-05-18 18:28:07.885859 2025-05-18 18:28:07.885859
11 5 3 t 2025-04-15 19:03:45.888182 2025-04-15 19:03:45.888182 11 5 3 t 2025-05-18 18:28:07.885859 2025-05-18 18:28:07.88586
\. \.
@@ -1772,48 +1788,48 @@ COPY public.system_dept (id, name, "order", parent_id, available, description, c
-- --
COPY public.system_dict_data (id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, available, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_dict_data (id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, available, description, created_at, updated_at, creator_id) FROM stdin;
1 1 0 sys_user_sex blue \N t t 2025-04-15 19:03:45.922912 2025-04-15 19:03:45.922913 1 1 1 0 sys_user_sex blue \N t t 2025-05-18 18:28:07.919332 2025-05-18 18:28:07.919333 1
2 2 1 sys_user_sex pink \N f t 2025-04-15 19:03:45.922913 2025-04-15 19:03:45.922914 1 2 2 1 sys_user_sex pink \N f t 2025-05-18 18:28:07.919333 2025-05-18 18:28:07.919333 1
3 3 2 sys_user_sex red \N f t 2025-04-15 19:03:45.922914 2025-04-15 19:03:45.922915 1 3 3 2 sys_user_sex red \N f t 2025-05-18 18:28:07.919334 2025-05-18 18:28:07.919334 1
4 4 0 sys_show_hide btn btn-success btn-xs primary t t 2025-04-15 19:03:45.922915 2025-04-15 19:03:45.922915 1 4 4 0 sys_show_hide btn btn-success btn-xs primary t t 2025-05-18 18:28:07.919335 2025-05-18 18:28:07.919335 1
5 2 1 sys_show_hide danger f t 2025-04-15 19:03:45.922916 2025-04-15 19:03:45.922916 1 5 2 1 sys_show_hide danger f t 2025-05-18 18:28:07.919335 2025-05-18 18:28:07.919336 1
6 1 0 sys_normal_disable primary t t 2025-04-15 19:03:45.922917 2025-04-15 19:03:45.922917 1 6 1 0 sys_normal_disable primary t t 2025-05-18 18:28:07.919336 2025-05-18 18:28:07.919336 1
7 2 1 sys_normal_disable danger f t 2025-04-15 19:03:45.922917 2025-04-15 19:03:45.922918 1 7 2 1 sys_normal_disable danger f t 2025-05-18 18:28:07.919337 2025-05-18 18:28:07.919337 1
8 1 0 sys_job_status primary t t 2025-04-15 19:03:45.922918 2025-04-15 19:03:45.922918 1 8 1 0 sys_job_status primary t t 2025-05-18 18:28:07.919337 2025-05-18 18:28:07.919337 1
9 2 1 sys_job_status danger f t 2025-04-15 19:03:45.922919 2025-04-15 19:03:45.922919 1 9 2 1 sys_job_status danger f t 2025-05-18 18:28:07.919338 2025-05-18 18:28:07.919338 1
10 1 (Memory) default sys_job_group \N t t 2025-04-15 19:03:45.92292 2025-04-15 19:03:45.92292 1 10 1 (Memory) default sys_job_group \N t t 2025-05-18 18:28:07.919338 2025-05-18 18:28:07.919339 1
11 2 sqlalchemy sys_job_group \N f t 2025-04-15 19:03:45.92292 2025-04-15 19:03:45.922921 1 11 2 sqlalchemy sys_job_group \N f t 2025-05-18 18:28:07.919339 2025-05-18 18:28:07.919339 1
12 3 redis redis sys_job_group \N f t reids分组 2025-04-15 19:03:45.922921 2025-04-15 19:03:45.922921 1 12 3 redis redis sys_job_group \N f t reids分组 2025-05-18 18:28:07.91934 2025-05-18 18:28:07.91934 1
13 1 default sys_job_executor \N f t 线 2025-04-15 19:03:45.922922 2025-04-15 19:03:45.922922 1 13 1 default sys_job_executor \N f t 线 2025-05-18 18:28:07.91934 2025-05-18 18:28:07.919341 1
14 2 processpool sys_job_executor \N f t 2025-04-15 19:03:45.922922 2025-04-15 19:03:45.922923 1 14 2 processpool sys_job_executor \N f t 2025-05-18 18:28:07.919341 2025-05-18 18:28:07.919341 1
15 1 true sys_yes_no primary t t 2025-04-15 19:03:45.922923 2025-04-15 19:03:45.922923 1 15 1 true sys_yes_no primary t t 2025-05-18 18:28:07.919342 2025-05-18 18:28:07.919342 1
16 2 false sys_yes_no danger f t 2025-04-15 19:03:45.922924 2025-04-15 19:03:45.922924 1 16 2 false sys_yes_no danger f t 2025-05-18 18:28:07.919342 2025-05-18 18:28:07.919343 1
17 1 1 sys_notice_type blue warning t t 2025-04-15 19:03:45.922924 2025-04-15 19:03:45.922925 1 17 1 1 sys_notice_type blue warning t t 2025-05-18 18:28:07.919343 2025-05-18 18:28:07.919343 1
18 2 2 sys_notice_type orange success f t 2025-04-15 19:03:45.922925 2025-04-15 19:03:45.922926 1 18 2 2 sys_notice_type orange success f t 2025-05-18 18:28:07.919344 2025-05-18 18:28:07.919344 1
19 1 0 sys_notice_status primary t t 2025-04-15 19:03:45.922926 2025-04-15 19:03:45.922926 1 19 1 0 sys_notice_status primary t t 2025-05-18 18:28:07.919344 2025-05-18 18:28:07.919345 1
20 2 1 sys_notice_status danger f t 2025-04-15 19:03:45.922927 2025-04-15 19:03:45.922927 1 20 2 1 sys_notice_status danger f t 2025-05-18 18:28:07.919345 2025-05-18 18:28:07.919345 1
21 99 0 sys_oper_type info f t 2025-04-15 19:03:45.922927 2025-04-15 19:03:45.922928 1 21 99 0 sys_oper_type info f t 2025-05-18 18:28:07.919346 2025-05-18 18:28:07.919346 1
22 1 1 sys_oper_type info f t 2025-04-15 19:03:45.922928 2025-04-15 19:03:45.922928 1 22 1 1 sys_oper_type info f t 2025-05-18 18:28:07.919346 2025-05-18 18:28:07.919347 1
23 2 2 sys_oper_type info f t 2025-04-15 19:03:45.922929 2025-04-15 19:03:45.922929 1 23 2 2 sys_oper_type info f t 2025-05-18 18:28:07.919347 2025-05-18 18:28:07.919347 1
24 3 3 sys_oper_type danger f t 2025-04-15 19:03:45.922929 2025-04-15 19:03:45.92293 1 24 3 3 sys_oper_type danger f t 2025-05-18 18:28:07.919348 2025-05-18 18:28:07.919348 1
25 4 4 sys_oper_type primary f t 2025-04-15 19:03:45.92293 2025-04-15 19:03:45.92293 1 25 4 4 sys_oper_type primary f t 2025-05-18 18:28:07.919348 2025-05-18 18:28:07.919349 1
26 5 5 sys_oper_type warning f t 2025-04-15 19:03:45.922931 2025-04-15 19:03:45.922931 1 26 5 5 sys_oper_type warning f t 2025-05-18 18:28:07.919349 2025-05-18 18:28:07.919349 1
27 6 6 sys_oper_type warning f t 2025-04-15 19:03:45.922932 2025-04-15 19:03:45.922932 1 27 6 6 sys_oper_type warning f t 2025-05-18 18:28:07.91935 2025-05-18 18:28:07.91935 1
28 7 退 7 sys_oper_type danger f t 退 2025-04-15 19:03:45.922932 2025-04-15 19:03:45.922933 1 28 7 退 7 sys_oper_type danger f t 退 2025-05-18 18:28:07.91935 2025-05-18 18:28:07.91935 1
29 8 8 sys_oper_type warning f t 2025-04-15 19:03:45.922933 2025-04-15 19:03:45.922933 1 29 8 8 sys_oper_type warning f t 2025-05-18 18:28:07.919351 2025-05-18 18:28:07.919351 1
30 9 9 sys_oper_type danger f t 2025-04-15 19:03:45.922934 2025-04-15 19:03:45.922934 1 30 9 9 sys_oper_type danger f t 2025-05-18 18:28:07.919351 2025-05-18 18:28:07.919352 1
31 1 0 sys_common_status primary f t 2025-04-15 19:03:45.922934 2025-04-15 19:03:45.922935 1 31 1 0 sys_common_status primary f t 2025-05-18 18:28:07.919352 2025-05-18 18:28:07.919352 1
32 2 1 sys_common_status danger f t 2025-04-15 19:03:45.922935 2025-04-15 19:03:45.922935 1 32 2 1 sys_common_status danger f t 2025-05-18 18:28:07.919353 2025-05-18 18:28:07.919353 1
33 1 scheduler_test.job sys_job_function \N t t 2025-04-15 19:03:45.922936 2025-04-15 19:03:45.922936 1 33 1 scheduler_test.job sys_job_function \N t t 2025-05-18 18:28:07.919353 2025-05-18 18:28:07.919354 1
34 1 (date) date sys_job_trigger \N t t 2025-04-15 19:03:45.922936 2025-04-15 19:03:45.922937 1 34 1 (date) date sys_job_trigger \N t t 2025-05-18 18:28:07.919354 2025-05-18 18:28:07.919354 1
35 2 (interval) interval sys_job_trigger \N f t 2025-04-15 19:03:45.922937 2025-04-15 19:03:45.922937 1 35 2 (interval) interval sys_job_trigger \N f t 2025-05-18 18:28:07.919355 2025-05-18 18:28:07.919355 1
36 3 cron表达式 cron sys_job_trigger \N f t 2025-04-15 19:03:45.922938 2025-04-15 19:03:45.922938 1 36 3 cron表达式 cron sys_job_trigger \N f t 2025-05-18 18:28:07.919355 2025-05-18 18:28:07.919356 1
37 1 (default) default sys_dictdata_list_class \N t t 2025-04-15 19:03:45.922938 2025-04-15 19:03:45.922939 1 37 1 (default) default sys_dictdata_list_class \N t t 2025-05-18 18:28:07.919356 2025-05-18 18:28:07.919356 1
38 2 (primary) primary sys_dictdata_list_class \N f t 2025-04-15 19:03:45.922939 2025-04-15 19:03:45.92294 1 38 2 (primary) primary sys_dictdata_list_class \N f t 2025-05-18 18:28:07.919357 2025-05-18 18:28:07.919357 1
39 3 (success) success sys_dictdata_list_class \N f t 2025-04-15 19:03:45.92294 2025-04-15 19:03:45.92294 1 39 3 (success) success sys_dictdata_list_class \N f t 2025-05-18 18:28:07.919357 2025-05-18 18:28:07.919358 1
40 4 (info) info sys_dictdata_list_class \N f t 2025-04-15 19:03:45.922941 2025-04-15 19:03:45.922941 1 40 4 (info) info sys_dictdata_list_class \N f t 2025-05-18 18:28:07.919358 2025-05-18 18:28:07.919358 1
41 5 (warning) warning sys_dictdata_list_class \N f t 2025-04-15 19:03:45.922941 2025-04-15 19:03:45.922942 1 41 5 (warning) warning sys_dictdata_list_class \N f t 2025-05-18 18:28:07.919358 2025-05-18 18:28:07.919359 1
42 6 (danger) danger sys_dictdata_list_class \N f t 2025-04-15 19:03:45.922942 2025-04-15 19:03:45.922942 1 42 6 (danger) danger sys_dictdata_list_class \N f t 2025-05-18 18:28:07.919359 2025-05-18 18:28:07.919359 1
\. \.
@@ -1822,20 +1838,20 @@ COPY public.system_dict_data (id, dict_sort, dict_label, dict_value, dict_type,
-- --
COPY public.system_dict_type (id, dict_name, dict_type, available, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_dict_type (id, dict_name, dict_type, available, description, created_at, updated_at, creator_id) FROM stdin;
1 sys_user_sex t 2025-04-15 19:03:45.919629 2025-04-15 19:03:45.91963 1 1 sys_user_sex t 2025-05-18 18:28:07.916168 2025-05-18 18:28:07.916169 1
2 sys_show_hide t 2025-04-15 19:03:45.91963 2025-04-15 19:03:45.919631 1 2 sys_show_hide t 2025-05-18 18:28:07.916169 2025-05-18 18:28:07.91617 1
3 sys_normal_disable t 2025-04-15 19:03:45.919631 2025-04-15 19:03:45.919632 1 3 sys_normal_disable t 2025-05-18 18:28:07.91617 2025-05-18 18:28:07.91617 1
4 sys_job_status t 2025-04-15 19:03:45.919632 2025-04-15 19:03:45.919632 1 4 sys_job_status t 2025-05-18 18:28:07.916171 2025-05-18 18:28:07.916171 1
5 sys_job_group t 2025-04-15 19:03:45.919633 2025-04-15 19:03:45.919633 1 5 sys_job_group t 2025-05-18 18:28:07.916171 2025-05-18 18:28:07.916172 1
6 sys_job_executor t 2025-04-15 19:03:45.919634 2025-04-15 19:03:45.919634 1 6 sys_job_executor t 2025-05-18 18:28:07.916172 2025-05-18 18:28:07.916172 1
7 sys_yes_no t 2025-04-15 19:03:45.919634 2025-04-15 19:03:45.919635 1 7 sys_yes_no t 2025-05-18 18:28:07.916173 2025-05-18 18:28:07.916173 1
8 sys_notice_type t 2025-04-15 19:03:45.919635 2025-04-15 19:03:45.919636 1 8 sys_notice_type t 2025-05-18 18:28:07.916173 2025-05-18 18:28:07.916174 1
9 sys_notice_status t 2025-04-15 19:03:45.919636 2025-04-15 19:03:45.919636 1 9 sys_notice_status t 2025-05-18 18:28:07.916174 2025-05-18 18:28:07.916174 1
10 sys_oper_type t 2025-04-15 19:03:45.919637 2025-04-15 19:03:45.919637 1 10 sys_oper_type t 2025-05-18 18:28:07.916175 2025-05-18 18:28:07.916175 1
11 sys_common_status t 2025-04-15 19:03:45.919637 2025-04-15 19:03:45.919638 1 11 sys_common_status t 2025-05-18 18:28:07.916175 2025-05-18 18:28:07.916175 1
12 sys_job_function t 2025-04-15 19:03:45.919638 2025-04-15 19:03:45.919638 1 12 sys_job_function t 2025-05-18 18:28:07.916176 2025-05-18 18:28:07.916176 1
13 sys_job_trigger t 2025-04-15 19:03:45.919639 2025-04-15 19:03:45.919639 1 13 sys_job_trigger t 2025-05-18 18:28:07.916176 2025-05-18 18:28:07.916177 1
14 sys_dictdata_list_class t 2025-04-15 19:03:45.91964 2025-04-15 19:03:45.91964 1 14 sys_dictdata_list_class t 2025-05-18 18:28:07.916177 2025-05-18 18:28:07.916177 1
\. \.
@@ -1844,9 +1860,9 @@ COPY public.system_dict_type (id, dict_name, dict_type, available, description,
-- --
COPY public.system_job (id, name, jobstore, executor, trigger, trigger_args, func, args, kwargs, "coalesce", max_instances, start_date, end_date, status, message, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_job (id, name, jobstore, executor, trigger, trigger_args, func, args, kwargs, "coalesce", max_instances, start_date, end_date, status, message, description, created_at, updated_at, creator_id) FROM stdin;
1 default default cron 0 0 12 * * ? scheduler_test.job \N \N f 1 \N \N f \N \N 2025-04-15 19:03:45.925718 2025-04-15 19:03:45.925719 1 1 default default cron 0 0 12 * * ? scheduler_test.job \N \N f 1 \N \N f \N \N 2025-05-18 18:28:07.921962 2025-05-18 18:28:07.921963 1
2 default default cron 0 0 12 * * ? scheduler_test.job test \N f 1 \N \N f \N \N 2025-04-15 19:03:45.92572 2025-04-15 19:03:45.92572 1 2 default default cron 0 0 12 * * ? scheduler_test.job test \N f 1 \N \N f \N \N 2025-05-18 18:28:07.921963 2025-05-18 18:28:07.921963 1
3 default default cron 0 0 12 * * ? scheduler_test.job new {"test": 111} f 1 \N \N f \N \N 2025-04-15 19:03:45.92572 2025-04-15 19:03:45.925721 1 3 default default cron 0 0 12 * * ? scheduler_test.job new {"test": 111} f 1 \N \N f \N \N 2025-05-18 18:28:07.921964 2025-05-18 18:28:07.921964 1
\. \.
@@ -1855,79 +1871,79 @@ COPY public.system_job (id, name, jobstore, executor, trigger, trigger_args, fun
-- --
COPY public.system_menu (id, name, type, "order", permission, available, icon, route_name, route_path, component_path, redirect, hidden, cache, parent_id, description, created_at, updated_at) FROM stdin; COPY public.system_menu (id, name, type, "order", permission, available, icon, route_name, route_path, component_path, redirect, hidden, cache, parent_id, description, created_at, updated_at) FROM stdin;
1 1 1 t DashboardOutlined Dashboard /dashboard \N /dashboard/workplace f t \N 2025-04-15 19:03:45.894563 2025-04-15 19:03:45.894565 1 1 1 t DashboardOutlined Dashboard /dashboard \N /dashboard/workplace f t \N 2025-05-18 18:28:07.892792 2025-05-18 18:28:07.892796
2 1 2 \N t SettingOutlined System /system \N /system/menu f t \N 2025-04-15 19:03:45.894566 2025-04-15 19:03:45.894566 2 1 2 \N t SettingOutlined System /system \N /system/menu f t \N 2025-05-18 18:28:07.892797 2025-05-18 18:28:07.892797
3 2 1 system:menu:query t \N Menu /system/menu system/menu/index \N f t 2 2025-04-15 19:03:45.894567 2025-04-15 19:03:45.894567 3 2 1 system:menu:query t \N Menu /system/menu system/menu/index \N f t 2 2025-05-18 18:28:07.892798 2025-05-18 18:28:07.892798
4 2 2 system:dept:query t \N Dept /system/dept system/dept/index \N f t 2 2025-04-15 19:03:45.894568 2025-04-15 19:03:45.894568 4 2 2 system:dept:query t \N Dept /system/dept system/dept/index \N f t 2 2025-05-18 18:28:07.892798 2025-05-18 18:28:07.892799
5 2 3 system:position:query t \N Position /system/position system/position/index \N f t 2 2025-04-15 19:03:45.894568 2025-04-15 19:03:45.894569 5 2 3 system:position:query t \N Position /system/position system/position/index \N f t 2 2025-05-18 18:28:07.892799 2025-05-18 18:28:07.892799
6 2 4 system:role:query t \N Role /system/role system/role/index \N f t 2 2025-04-15 19:03:45.894569 2025-04-15 19:03:45.894569 6 2 4 system:role:query t \N Role /system/role system/role/index \N f t 2 2025-05-18 18:28:07.8928 2025-05-18 18:28:07.8928
7 2 5 system:user:query t \N User /system/user system/user/index \N f t 2 2025-04-15 19:03:45.89457 2025-04-15 19:03:45.89457 7 2 5 system:user:query t \N User /system/user system/user/index \N f t 2 2025-05-18 18:28:07.892801 2025-05-18 18:28:07.892801
8 2 6 system:log:query t \N Log /system/log system/log/index \N f t 2 2025-04-15 19:03:45.894571 2025-04-15 19:03:45.894571 8 2 6 system:log:query t \N Log /system/log system/log/index \N f t 2 2025-05-18 18:28:07.892801 2025-05-18 18:28:07.892802
9 3 1 system:menu:create t \N \N \N \N \N f t 3 2025-04-15 19:03:45.894572 2025-04-15 19:03:45.894572 9 3 1 system:menu:create t \N \N \N \N \N f t 3 2025-05-18 18:28:07.892802 2025-05-18 18:28:07.892802
10 3 2 system:menu:update t \N \N \N \N \N f t 3 2025-04-15 19:03:45.894572 2025-04-15 19:03:45.894573 10 3 2 system:menu:update t \N \N \N \N \N f t 3 2025-05-18 18:28:07.892803 2025-05-18 18:28:07.892803
11 3 3 system:menu:delete t \N \N \N \N \N f t 3 2025-04-15 19:03:45.894573 2025-04-15 19:03:45.894573 11 3 3 system:menu:delete t \N \N \N \N \N f t 3 2025-05-18 18:28:07.892803 2025-05-18 18:28:07.892804
12 3 4 system:menu:patch t \N \N \N \N \N f t 3 2025-04-15 19:03:45.894574 2025-04-15 19:03:45.894574 12 3 4 system:menu:patch t \N \N \N \N \N f t 3 2025-05-18 18:28:07.892804 2025-05-18 18:28:07.892804
13 3 1 system:dept:create t \N \N \N \N \N f t 4 2025-04-15 19:03:45.894575 2025-04-15 19:03:45.894575 13 3 1 system:dept:create t \N \N \N \N \N f t 4 2025-05-18 18:28:07.892805 2025-05-18 18:28:07.892805
14 3 2 system:dept:update t \N \N \N \N \N f t 4 2025-04-15 19:03:45.894575 2025-04-15 19:03:45.894576 14 3 2 system:dept:update t \N \N \N \N \N f t 4 2025-05-18 18:28:07.892806 2025-05-18 18:28:07.892806
15 3 3 system:dept:delete t \N \N \N \N \N f t 4 2025-04-15 19:03:45.894576 2025-04-15 19:03:45.894576 15 3 3 system:dept:delete t \N \N \N \N \N f t 4 2025-05-18 18:28:07.892806 2025-05-18 18:28:07.892807
16 3 4 system:dept:patch t \N \N \N \N \N f t 4 2025-04-15 19:03:45.894577 2025-04-15 19:03:45.894577 16 3 4 system:dept:patch t \N \N \N \N \N f t 4 2025-05-18 18:28:07.892807 2025-05-18 18:28:07.892807
17 3 1 system:position:create t \N \N \N \N \N f t 5 2025-04-15 19:03:45.894577 2025-04-15 19:03:45.894578 17 3 1 system:position:create t \N \N \N \N \N f t 5 2025-05-18 18:28:07.892808 2025-05-18 18:28:07.892808
18 3 2 system:position:update t \N \N \N \N \N f t 5 2025-04-15 19:03:45.894578 2025-04-15 19:03:45.894578 18 3 2 system:position:update t \N \N \N \N \N f t 5 2025-05-18 18:28:07.892808 2025-05-18 18:28:07.892809
19 3 3 system:position:delete t \N \N \N \N \N f t 5 2025-04-15 19:03:45.894579 2025-04-15 19:03:45.894579 19 3 3 system:position:delete t \N \N \N \N \N f t 5 2025-05-18 18:28:07.892809 2025-05-18 18:28:07.89281
20 3 4 system:position:patch t \N \N \N \N \N f t 5 2025-04-15 19:03:45.89458 2025-04-15 19:03:45.89458 20 3 4 system:position:patch t \N \N \N \N \N f t 5 2025-05-18 18:28:07.89281 2025-05-18 18:28:07.89281
21 3 5 system:position:export t \N \N \N \N \N f t 5 2025-04-15 19:03:45.89458 2025-04-15 19:03:45.894581 21 3 5 system:position:export t \N \N \N \N \N f t 5 2025-05-18 18:28:07.892811 2025-05-18 18:28:07.892811
22 3 1 system:role:create t \N \N \N \N \N f t 6 2025-04-15 19:03:45.894581 2025-04-15 19:03:45.894581 22 3 1 system:role:create t \N \N \N \N \N f t 6 2025-05-18 18:28:07.892811 2025-05-18 18:28:07.892812
23 3 2 system:role:update t \N \N \N \N \N f t 6 2025-04-15 19:03:45.894582 2025-04-15 19:03:45.894582 23 3 2 system:role:update t \N \N \N \N \N f t 6 2025-05-18 18:28:07.892812 2025-05-18 18:28:07.892812
24 3 3 system:role:delete t \N \N \N \N \N f t 6 2025-04-15 19:03:45.894582 2025-04-15 19:03:45.894583 24 3 3 system:role:delete t \N \N \N \N \N f t 6 2025-05-18 18:28:07.892813 2025-05-18 18:28:07.892813
25 3 4 system:role:patch t \N \N \N \N \N f t 6 2025-04-15 19:03:45.894583 2025-04-15 19:03:45.894583 25 3 4 system:role:patch t \N \N \N \N \N f t 6 2025-05-18 18:28:07.892813 2025-05-18 18:28:07.892814
26 3 5 system:role:permission t \N \N \N \N \N f t 6 2025-04-15 19:03:45.894584 2025-04-15 19:03:45.894584 26 3 5 system:role:permission t \N \N \N \N \N f t 6 2025-05-18 18:28:07.892814 2025-05-18 18:28:07.892814
27 3 6 system:role:export t \N \N \N \N \N f t 6 2025-04-15 19:03:45.894585 2025-04-15 19:03:45.894585 27 3 6 system:role:export t \N \N \N \N \N f t 6 2025-05-18 18:28:07.892815 2025-05-18 18:28:07.892815
28 3 1 system:user:create t \N \N \N \N \N f t 7 2025-04-15 19:03:45.894585 2025-04-15 19:03:45.894586 28 3 1 system:user:create t \N \N \N \N \N f t 7 2025-05-18 18:28:07.892816 2025-05-18 18:28:07.892816
29 3 2 system:user:update t \N \N \N \N \N f t 7 2025-04-15 19:03:45.894586 2025-04-15 19:03:45.894586 29 3 2 system:user:update t \N \N \N \N \N f t 7 2025-05-18 18:28:07.892816 2025-05-18 18:28:07.892817
30 3 3 system:user:delete t \N \N \N \N \N f t 7 2025-04-15 19:03:45.894587 2025-04-15 19:03:45.894587 30 3 3 system:user:delete t \N \N \N \N \N f t 7 2025-05-18 18:28:07.892817 2025-05-18 18:28:07.892817
31 3 4 system:user:patch t \N \N \N \N \N f t 7 2025-04-15 19:03:45.894588 2025-04-15 19:03:45.894588 31 3 4 system:user:patch t \N \N \N \N \N f t 7 2025-05-18 18:28:07.892818 2025-05-18 18:28:07.892818
32 3 5 system:user:export t \N \N \N \N \N f t 7 2025-04-15 19:03:45.894588 2025-04-15 19:03:45.894589 32 3 5 system:user:export t \N \N \N \N \N f t 7 2025-05-18 18:28:07.892818 2025-05-18 18:28:07.892819
33 3 6 system:user:import t \N \N \N \N \N f t 7 2025-04-15 19:03:45.894589 2025-04-15 19:03:45.894589 33 3 6 system:user:import t \N \N \N \N \N f t 7 2025-05-18 18:28:07.892819 2025-05-18 18:28:07.892819
34 3 1 system:operation_log:delete t \N \N \N \N \N f t 8 2025-04-15 19:03:45.89459 2025-04-15 19:03:45.89459 34 3 1 system:operation_log:delete t \N \N \N \N \N f t 8 2025-05-18 18:28:07.89282 2025-05-18 18:28:07.89282
35 3 2 system:operation_log:export t \N \N \N \N \N f t 8 2025-04-15 19:03:45.89459 2025-04-15 19:03:45.894591 35 3 2 system:operation_log:export t \N \N \N \N \N f t 8 2025-05-18 18:28:07.892821 2025-05-18 18:28:07.892821
36 1 3 \N t MonitorOutlined Monitor /monitor \N /monitor/online f t \N 2025-04-15 19:03:45.894591 2025-04-15 19:03:45.894591 36 1 3 \N t MonitorOutlined Monitor /monitor \N /monitor/online f t \N 2025-05-18 18:28:07.892821 2025-05-18 18:28:07.892822
37 线 2 1 monitor:online:query t \N MonitorOnline /monitor/online monitor/online/index \N f t 36 2025-04-15 19:03:45.894592 2025-04-15 19:03:45.894592 37 线 2 1 monitor:online:query t \N MonitorOnline /monitor/online monitor/online/index \N f t 36 2025-05-18 18:28:07.892822 2025-05-18 18:28:07.892822
38 线线 3 1 monitor:online:delete t \N \N \N \N \N f t 37 2025-04-15 19:03:45.894592 2025-04-15 19:03:45.894593 38 线线 3 1 monitor:online:delete t \N \N \N \N \N f t 37 2025-05-18 18:28:07.892823 2025-05-18 18:28:07.892823
39 2 2 monitor:server:query t \N MonitorServer /monitor/server monitor/server/index \N f t 36 2025-04-15 19:03:45.894593 2025-04-15 19:03:45.894593 39 2 2 monitor:server:query t \N MonitorServer /monitor/server monitor/server/index \N f t 36 2025-05-18 18:28:07.892823 2025-05-18 18:28:07.892824
40 2 3 monitor:cache:query t \N MonitorCache /monitor/cache monitor/cache/index \N f t 36 2025-04-15 19:03:45.894594 2025-04-15 19:03:45.894594 40 2 3 monitor:cache:query t \N MonitorCache /monitor/cache monitor/cache/index \N f t 36 2025-05-18 18:28:07.892824 2025-05-18 18:28:07.892824
41 3 1 monitor:cache:delete t \N \N \N \N \N f t 40 2025-04-15 19:03:45.894595 2025-04-15 19:03:45.894595 41 3 1 monitor:cache:delete t \N \N \N \N \N f t 40 2025-05-18 18:28:07.892825 2025-05-18 18:28:07.892825
42 1 4 \N t ApiOutlined Common /common \N /common/docs f t \N 2025-04-15 19:03:45.894595 2025-04-15 19:03:45.894596 42 1 4 \N t ApiOutlined Common /common \N /common/docs f t \N 2025-05-18 18:28:07.892826 2025-05-18 18:28:07.892826
43 2 1 common:docs:query t \N Docs /common/docs common/docs/index \N f t 42 2025-04-15 19:03:45.894596 2025-04-15 19:03:45.894596 43 2 1 common:docs:query t \N Docs /common/docs common/docs/index \N f t 42 2025-05-18 18:28:07.892826 2025-05-18 18:28:07.892827
44 2 2 common:redoc:query t \N Redoc /common/redoc common/redoc/index \N f t 42 2025-04-15 19:03:45.894597 2025-04-15 19:03:45.894597 44 2 2 common:redoc:query t \N Redoc /common/redoc common/redoc/index \N f t 42 2025-05-18 18:28:07.892827 2025-05-18 18:28:07.892827
45 2 7 system:notice:query t \N Notice /system/notice system/notice/index \N f t 2 2025-04-15 19:03:45.894597 2025-04-15 19:03:45.894598 45 2 7 system:notice:query t \N Notice /system/notice system/notice/index \N f t 2 2025-05-18 18:28:07.892828 2025-05-18 18:28:07.892828
46 3 1 system:notice:create t \N \N \N \N \N f t 45 2025-04-15 19:03:45.894598 2025-04-15 19:03:45.894598 46 3 1 system:notice:create t \N \N \N \N \N f t 45 2025-05-18 18:28:07.892828 2025-05-18 18:28:07.892829
47 3 2 system:notice:update t \N \N \N \N \N f t 45 2025-04-15 19:03:45.894599 2025-04-15 19:03:45.894599 47 3 2 system:notice:update t \N \N \N \N \N f t 45 2025-05-18 18:28:07.892829 2025-05-18 18:28:07.892829
48 3 3 system:notice:delete t \N \N \N \N \N f t 45 2025-04-15 19:03:45.8946 2025-04-15 19:03:45.8946 48 3 3 system:notice:delete t \N \N \N \N \N f t 45 2025-05-18 18:28:07.89283 2025-05-18 18:28:07.89283
49 3 4 system:notice:export t \N \N \N \N \N f t 45 2025-04-15 19:03:45.8946 2025-04-15 19:03:45.894601 49 3 4 system:notice:export t \N \N \N \N \N f t 45 2025-05-18 18:28:07.89283 2025-05-18 18:28:07.892831
50 3 5 system:notice:patch t \N \N \N \N \N f t 45 2025-04-15 19:03:45.894601 2025-04-15 19:03:45.894601 50 3 5 system:notice:patch t \N \N \N \N \N f t 45 2025-05-18 18:28:07.892831 2025-05-18 18:28:07.892831
51 2 8 system:config:query t \N Config /system/config system/config/index \N f t 2 2025-04-15 19:03:45.894602 2025-04-15 19:03:45.894602 51 2 8 system:config:query t \N Config /system/config system/config/index \N f t 2 2025-05-18 18:28:07.892832 2025-05-18 18:28:07.892832
52 3 1 system:config:create t \N \N \N \N \N f t 51 2025-04-15 19:03:45.894602 2025-04-15 19:03:45.894603 52 3 1 system:config:create t \N \N \N \N \N f t 51 2025-05-18 18:28:07.892832 2025-05-18 18:28:07.892833
53 3 2 system:config:update t \N \N \N \N \N f t 51 2025-04-15 19:03:45.894603 2025-04-15 19:03:45.894603 53 3 2 system:config:update t \N \N \N \N \N f t 51 2025-05-18 18:28:07.892833 2025-05-18 18:28:07.892833
54 3 3 system:config:delete t \N \N \N \N \N f t 51 2025-04-15 19:03:45.894604 2025-04-15 19:03:45.894604 54 3 3 system:config:delete t \N \N \N \N \N f t 51 2025-05-18 18:28:07.892834 2025-05-18 18:28:07.892834
55 3 4 system:config:update t \N \N \N \N \N f t 51 2025-04-15 19:03:45.894604 2025-04-15 19:03:45.894605 55 3 4 system:config:update t \N \N \N \N \N f t 51 2025-05-18 18:28:07.892835 2025-05-18 18:28:07.892835
56 3 5 system:config:upload t \N \N \N \N \N f t 51 2025-04-15 19:03:45.894605 2025-04-15 19:03:45.894605 56 3 5 system:config:upload t \N \N \N \N \N f t 51 2025-05-18 18:28:07.892835 2025-05-18 18:28:07.892836
57 2 9 system:dict_type:query t \N Dict /system/dict system/dict/index \N f t 2 2025-04-15 19:03:45.894606 2025-04-15 19:03:45.894606 57 2 9 system:dict_type:query t \N Dict /system/dict system/dict/index \N f t 2 2025-05-18 18:28:07.892836 2025-05-18 18:28:07.892836
58 3 1 system:dict_type:create t \N \N \N \N \N f t 57 2025-04-15 19:03:45.894606 2025-04-15 19:03:45.894607 58 3 1 system:dict_type:create t \N \N \N \N \N f t 57 2025-05-18 18:28:07.892837 2025-05-18 18:28:07.892837
59 3 2 system:dict_type:update t \N \N \N \N \N f t 57 2025-04-15 19:03:45.894607 2025-04-15 19:03:45.894607 59 3 2 system:dict_type:update t \N \N \N \N \N f t 57 2025-05-18 18:28:07.892837 2025-05-18 18:28:07.892838
60 3 3 system:dict_type:delete t \N \N \N \N \N f t 57 2025-04-15 19:03:45.894608 2025-04-15 19:03:45.894608 60 3 3 system:dict_type:delete t \N \N \N \N \N f t 57 2025-05-18 18:28:07.892838 2025-05-18 18:28:07.892838
61 3 4 system:dict_type:export t \N \N \N \N \N f t 57 2025-04-15 19:03:45.894609 2025-04-15 19:03:45.894609 61 3 4 system:dict_type:export t \N \N \N \N \N f t 57 2025-05-18 18:28:07.892839 2025-05-18 18:28:07.892839
62 2 10 system:dict_data:query t \N DictData /system/dict_data system/dict/data \N t t 2 2025-04-15 19:03:45.894609 2025-04-15 19:03:45.89461 62 2 10 system:dict_data:query t \N DictData /system/dict_data system/dict/data \N t t 2 2025-05-18 18:28:07.892839 2025-05-18 18:28:07.89284
63 3 1 system:dict_data:create t \N \N \N \N \N f t 62 2025-04-15 19:03:45.89461 2025-04-15 19:03:45.89461 63 3 1 system:dict_data:create t \N \N \N \N \N f t 62 2025-05-18 18:28:07.89284 2025-05-18 18:28:07.89284
64 3 2 system:dict_data:update t \N \N \N \N \N f t 62 2025-04-15 19:03:45.894611 2025-04-15 19:03:45.894611 64 3 2 system:dict_data:update t \N \N \N \N \N f t 62 2025-05-18 18:28:07.892841 2025-05-18 18:28:07.892841
65 3 3 system:dict_data:delete t \N \N \N \N \N f t 62 2025-04-15 19:03:45.894611 2025-04-15 19:03:45.894612 65 3 3 system:dict_data:delete t \N \N \N \N \N f t 62 2025-05-18 18:28:07.892841 2025-05-18 18:28:07.892842
66 3 4 system:dict_data:export t \N \N \N \N \N f t 62 2025-04-15 19:03:45.894612 2025-04-15 19:03:45.894612 66 3 4 system:dict_data:export t \N \N \N \N \N f t 62 2025-05-18 18:28:07.892842 2025-05-18 18:28:07.892842
67 2 11 system:job:query t \N Job /system/job system/job/index \N f t 2 2025-04-15 19:03:45.894613 2025-04-15 19:03:45.894613 67 2 11 system:job:query t \N Job /system/job system/job/index \N f t 2 2025-05-18 18:28:07.892843 2025-05-18 18:28:07.892843
68 3 1 system:job:create t \N \N \N \N \N f t 67 2025-04-15 19:03:45.894614 2025-04-15 19:03:45.894614 68 3 1 system:job:create t \N \N \N \N \N f t 67 2025-05-18 18:28:07.892844 2025-05-18 18:28:07.892844
69 3 2 system:job:update t \N \N \N \N \N f t 67 2025-04-15 19:03:45.894614 2025-04-15 19:03:45.894615 69 3 2 system:job:update t \N \N \N \N \N f t 67 2025-05-18 18:28:07.892844 2025-05-18 18:28:07.892845
70 3 3 system:job:delete t \N \N \N \N \N f t 67 2025-04-15 19:03:45.894615 2025-04-15 19:03:45.894615 70 3 3 system:job:delete t \N \N \N \N \N f t 67 2025-05-18 18:28:07.892845 2025-05-18 18:28:07.892845
71 3 4 system:job:export t \N \N \N \N \N f t 67 2025-04-15 19:03:45.894616 2025-04-15 19:03:45.894616 71 3 4 system:job:export t \N \N \N \N \N f t 67 2025-05-18 18:28:07.892846 2025-05-18 18:28:07.892846
72 2 1 dashboard:workplace:query t Workplace /dashboard/workplace dashboard/workplace \N f t 1 2025-04-15 19:03:45.894616 2025-04-15 19:03:45.894617 72 2 1 dashboard:workplace:query t Workplace /dashboard/workplace dashboard/workplace \N f t 1 2025-05-18 18:28:07.892846 2025-05-18 18:28:07.892847
73 2 2 dashboard:analysis:query t Analysis /dashboard/analysis dashboard/analysis \N f t 1 2025-04-15 19:03:45.894618 2025-04-15 19:03:45.894619 73 2 2 dashboard:analysis:query t Analysis /dashboard/analysis dashboard/analysis \N f t 1 2025-05-18 18:28:07.892847 2025-05-18 18:28:07.892847
\. \.
@@ -1936,10 +1952,10 @@ COPY public.system_menu (id, name, type, "order", permission, available, icon, r
-- --
COPY public.system_notice (id, notice_title, notice_type, notice_content, available, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_notice (id, notice_title, notice_type, notice_content, available, description, created_at, updated_at, creator_id) FROM stdin;
1 1 20999912:00 t 2025-04-15 19:03:45.915217 2025-04-15 19:03:45.915219 1 1 1 20999912:00 t 2025-05-18 18:28:07.912395 2025-05-18 18:28:07.912398 1
2 2 20999912:00 t 2025-04-15 19:03:45.91522 2025-04-15 19:03:45.91522 1 2 2 20999912:00 t 2025-05-18 18:28:07.912398 2025-05-18 18:28:07.912399 1
3 1 20999912:00 f 2025-04-15 19:03:45.915221 2025-04-15 19:03:45.915221 1 3 1 20999912:00 f 2025-05-18 18:28:07.912399 2025-05-18 18:28:07.9124 1
4 2 20999912:00 f 2025-04-15 19:03:45.915221 2025-04-15 19:03:45.915222 1 4 2 20999912:00 f 2025-05-18 18:28:07.9124 2025-05-18 18:28:07.9124 1
\. \.
@@ -1947,7 +1963,7 @@ COPY public.system_notice (id, notice_title, notice_type, notice_content, availa
-- Data for Name: system_operation_log; Type: TABLE DATA; Schema: public; Owner: tao -- Data for Name: system_operation_log; Type: TABLE DATA; Schema: public; Owner: tao
-- --
COPY public.system_operation_log (id, request_path, request_method, request_payload, request_ip, request_os, request_browser, response_code, response_json, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_operation_log (id, request_path, request_method, request_payload, request_ip, login_location, request_os, request_browser, response_code, response_json, process_time, description, created_at, updated_at, creator_id) FROM stdin;
\. \.
@@ -1956,13 +1972,13 @@ COPY public.system_operation_log (id, request_path, request_method, request_payl
-- --
COPY public.system_position (id, name, "order", available, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_position (id, name, "order", available, description, created_at, updated_at, creator_id) FROM stdin;
1 1 t 2025-04-15 19:03:45.901163 2025-04-15 19:03:45.901164 1 1 1 t 2025-05-18 18:28:07.89892 2025-05-18 18:28:07.898921 1
2 2 t 2025-04-15 19:03:45.901165 2025-04-15 19:03:45.901165 1 2 2 t 2025-05-18 18:28:07.898921 2025-05-18 18:28:07.898922 1
3 3 t 2025-04-15 19:03:45.901166 2025-04-15 19:03:45.901166 1 3 3 t 2025-05-18 18:28:07.898922 2025-05-18 18:28:07.898922 1
4 4 t 2025-04-15 19:03:45.901167 2025-04-15 19:03:45.901167 1 4 4 t 2025-05-18 18:28:07.898923 2025-05-18 18:28:07.898923 1
5 5 t 2025-04-15 19:03:45.901168 2025-04-15 19:03:45.901168 1 5 5 t 2025-05-18 18:28:07.898923 2025-05-18 18:28:07.898924 1
6 6 t 2025-04-15 19:03:45.901169 2025-04-15 19:03:45.901169 1 6 6 t 2025-05-18 18:28:07.898924 2025-05-18 18:28:07.898924 1
7 7 t 2025-04-15 19:03:45.90117 2025-04-15 19:03:45.90117 1 7 7 t 2025-05-18 18:28:07.898925 2025-05-18 18:28:07.898925 1
\. \.
@@ -1971,8 +1987,8 @@ COPY public.system_position (id, name, "order", available, description, created_
-- --
COPY public.system_role (id, name, "order", data_scope, available, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_role (id, name, "order", data_scope, available, description, created_at, updated_at, creator_id) FROM stdin;
1 1 4 t 2025-04-15 19:03:45.905282 2025-04-15 19:03:45.905283 1 1 1 4 t 2025-05-18 18:28:07.902325 2025-05-18 18:28:07.902326 1
2 2 5 t 2025-04-15 19:03:45.905284 2025-04-15 19:03:45.905284 1 2 2 5 t 2025-05-18 18:28:07.902327 2025-05-18 18:28:07.902327 1
\. \.
@@ -2096,8 +2112,8 @@ COPY public.system_user_roles (user_id, role_id) FROM stdin;
-- --
COPY public.system_users (id, username, password, name, mobile, email, gender, avatar, available, is_superuser, last_login, dept_id, description, created_at, updated_at, creator_id) FROM stdin; COPY public.system_users (id, username, password, name, mobile, email, gender, avatar, available, is_superuser, last_login, dept_id, description, created_at, updated_at, creator_id) FROM stdin;
1 admin $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 15382112222 admin@qq.com 0 https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png t t \N 1 2025-04-15 19:03:45.898902 2025-04-15 19:03:45.898904 \N 1 admin $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 15382112222 admin@qq.com 0 https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png t t \N 1 2025-05-18 18:28:07.896901 2025-05-18 18:28:07.896902 \N
2 demo $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 15382112121 demo@qq.com 1 https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png t f \N 6 2025-04-15 19:03:45.898904 2025-04-15 19:03:45.898905 1 2 demo $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 15382112121 demo@qq.com 1 https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png t f \N 6 2025-05-18 18:28:07.896903 2025-05-18 18:28:07.896903 1
\. \.
+2 -5
View File
@@ -372,11 +372,8 @@ const onInfoFormFinish = async (values: any) => {
await userStore.getUserInfo; await userStore.getUserInfo;
} catch (error) { } catch (error) {
console.error('更新基本信息失败:', error); console.error(error);
message.error({
content: '更新基本信息失败',
icon: h(CloseCircleOutlined, { style: "color: #ff4d4f" })
});
} finally { } finally {
infoSubmitting.value = false; infoSubmitting.value = false;
} }
+19 -3
View File
@@ -92,6 +92,7 @@
<a-tag :color="getRequestMethodColor(detailState.request_method)">{{ detailState.request_method }}</a-tag> <a-tag :color="getRequestMethodColor(detailState.request_method)">{{ detailState.request_method }}</a-tag>
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="IP地址">{{ detailState.request_ip }}</a-descriptions-item> <a-descriptions-item label="IP地址">{{ detailState.request_ip }}</a-descriptions-item>
<a-descriptions-item label="登录地址">{{ detailState.login_location }}</a-descriptions-item>
<a-descriptions-item label="浏览器">{{ detailState.request_browser }}</a-descriptions-item> <a-descriptions-item label="浏览器">{{ detailState.request_browser }}</a-descriptions-item>
<a-descriptions-item label="系统">{{ detailState.request_os }}</a-descriptions-item> <a-descriptions-item label="系统">{{ detailState.request_os }}</a-descriptions-item>
<a-descriptions-item label="响应码" :span="2"> <a-descriptions-item label="响应码" :span="2">
@@ -102,6 +103,7 @@
<a-descriptions-item label="返回信息" :span="2"> <a-descriptions-item label="返回信息" :span="2">
<div class="scrollable-content">{{ detailState.response_json }}</div> <div class="scrollable-content">{{ detailState.response_json }}</div>
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="处理时间" :span="2">{{ detailState.process_time }} </a-descriptions-item>
<a-descriptions-item label="创建人">{{ detailState.creator ? detailState.creator.name : '-' }}</a-descriptions-item> <a-descriptions-item label="创建人">{{ detailState.creator ? detailState.creator.name : '-' }}</a-descriptions-item>
<a-descriptions-item label="创建时间">{{ detailState.created_at }}</a-descriptions-item> <a-descriptions-item label="创建时间">{{ detailState.created_at }}</a-descriptions-item>
<a-descriptions-item label="修改时间">{{ detailState.updated_at }}</a-descriptions-item> <a-descriptions-item label="修改时间">{{ detailState.updated_at }}</a-descriptions-item>
@@ -161,7 +163,7 @@ const columns: TableColumnsType = [
dataIndex: 'request_method', dataIndex: 'request_method',
ellipsis: true, ellipsis: true,
// align: 'center', // align: 'center',
width: 120 width: 80
}, },
{ {
title: 'IP地址', title: 'IP地址',
@@ -170,25 +172,39 @@ const columns: TableColumnsType = [
// align: 'center', // align: 'center',
width: 100 width: 100
}, },
{
title: '登录地点',
dataIndex: 'login_location',
ellipsis: true,
// align: 'center',
width: 120
},
{ {
title: '浏览器', title: '浏览器',
dataIndex: 'request_browser', dataIndex: 'request_browser',
ellipsis: true, ellipsis: true,
// align: 'center', // align: 'center',
width: 120 width: 80
}, },
{ {
title: '系统', title: '系统',
dataIndex: 'request_os', dataIndex: 'request_os',
ellipsis: true, ellipsis: true,
// align: 'center', // align: 'center',
width: 120 width: 80
}, },
{ {
title: '响应码', title: '响应码',
dataIndex: 'response_code', dataIndex: 'response_code',
ellipsis: true, ellipsis: true,
// align: 'center', // align: 'center',
width: 80
},
{
title: '处理时间',
dataIndex: 'process_time',
ellipsis: true,
// align: 'center',
width: 120 width: 120
}, },
{ {
+2
View File
@@ -11,11 +11,13 @@ export interface tableDataType {
request_path?: string; request_path?: string;
request_method?: string; request_method?: string;
request_ip?: string; request_ip?: string;
login_location?: string;
request_browser?: string; request_browser?: string;
request_os?: string; request_os?: string;
response_code?: number; response_code?: number;
request_payload?: string; request_payload?: string;
response_json?: string; response_json?: string;
process_time?: number;
description?: string; description?: string;
creator?: creatorType; creator?: creatorType;
created_at?: string; created_at?: string;