diff --git a/README.md b/README.md index c4454b226675c7cbdba97c1170022cafbbe6a5b3..e6442553c911423f2244a5c5f9e03de4272c4731 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@
-
+
@@ -17,6 +17,7 @@
+
## 平台简介
RuoYi-Vue-FastAPI是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
diff --git a/ruoyi-fastapi-backend/.env.dev b/ruoyi-fastapi-backend/.env.dev
index 099fdbbc9b3151fc7a9be6a67fba4312e1cdc40c..6249b39f8240c8cd3cbf38c2e801722c5b6b4da2 100644
--- a/ruoyi-fastapi-backend/.env.dev
+++ b/ruoyi-fastapi-backend/.env.dev
@@ -10,7 +10,7 @@ APP_HOST = '0.0.0.0'
# 应用端口
APP_PORT = 9099
# 应用版本
-APP_VERSION= '1.1.1'
+APP_VERSION= '1.1.2'
# 应用是否开启热重载
APP_RELOAD = true
# 应用是否开启IP归属区域查询
@@ -42,6 +42,14 @@ DB_PASSWORD = 'mysqlroot'
DB_DATABASE = 'ruoyi-fastapi'
# 是否开启sqlalchemy日志
DB_ECHO = true
+# 允许溢出连接池大小的最大连接数
+DB_MAX_OVERFLOW = 10
+# 连接池大小,0表示连接数无限制
+DB_POOL_SIZE = 50
+# 连接回收时间(单位:秒)
+DB_POOL_RECYCLE = 3600
+# 连接池中没有线程可用时,最多等待的时间(单位:秒)
+DB_POOL_TIMEOUT = 30
# -------- Redis配置 --------
# Redis主机
diff --git a/ruoyi-fastapi-backend/.env.prod b/ruoyi-fastapi-backend/.env.prod
index a4c6607e75572b2f3e3ce41ea17cde1564eee8db..c9e201f14b2acb52a091fc197284f50743bba802 100644
--- a/ruoyi-fastapi-backend/.env.prod
+++ b/ruoyi-fastapi-backend/.env.prod
@@ -10,7 +10,7 @@ APP_HOST = '0.0.0.0'
# 应用端口
APP_PORT = 9099
# 应用版本
-APP_VERSION= '1.1.1'
+APP_VERSION= '1.1.2'
# 应用是否开启热重载
APP_RELOAD = false
# 应用是否开启IP归属区域查询
@@ -42,6 +42,14 @@ DB_PASSWORD = 'root'
DB_DATABASE = 'ruoyi-fastapi'
# 是否开启sqlalchemy日志
DB_ECHO = true
+# 允许溢出连接池大小的最大连接数
+DB_MAX_OVERFLOW = 10
+# 连接池大小,0表示连接数无限制
+DB_POOL_SIZE = 50
+# 连接回收时间(单位:秒)
+DB_POOL_RECYCLE = 3600
+# 连接池中没有线程可用时,最多等待的时间(单位:秒)
+DB_POOL_TIMEOUT = 30
# -------- Redis配置 --------
# Redis主机
diff --git a/ruoyi-fastapi-backend/config/database.py b/ruoyi-fastapi-backend/config/database.py
index 4f00f8b73d941698ad19824c8eed134ba2afc1d9..cb871ecb816a3ad308b6ca2758209f92da6d21e4 100644
--- a/ruoyi-fastapi-backend/config/database.py
+++ b/ruoyi-fastapi-backend/config/database.py
@@ -8,7 +8,12 @@ SQLALCHEMY_DATABASE_URL = f"mysql+pymysql://{DataBaseConfig.db_username}:{quote_
f"{DataBaseConfig.db_host}:{DataBaseConfig.db_port}/{DataBaseConfig.db_database}"
engine = create_engine(
- SQLALCHEMY_DATABASE_URL, echo=DataBaseConfig.db_echo
+ SQLALCHEMY_DATABASE_URL,
+ echo=DataBaseConfig.db_echo,
+ max_overflow=DataBaseConfig.db_max_overflow,
+ pool_size=DataBaseConfig.db_pool_size,
+ pool_recycle=DataBaseConfig.db_pool_recycle,
+ pool_timeout=DataBaseConfig.db_pool_timeout
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
diff --git a/ruoyi-fastapi-backend/config/env.py b/ruoyi-fastapi-backend/config/env.py
index 236b53ea8b7aad97dee4eb10fe3041e950a7d179..71718f926d1e6eb17fc7d33aafe133a5291f0761 100644
--- a/ruoyi-fastapi-backend/config/env.py
+++ b/ruoyi-fastapi-backend/config/env.py
@@ -41,6 +41,10 @@ class DataBaseSettings(BaseSettings):
db_password: str = 'mysqlroot'
db_database: str = 'ruoyi-fastapi'
db_echo: bool = True
+ db_max_overflow: int = 10
+ db_pool_size: int = 50
+ db_pool_recycle: int = 3600
+ db_pool_timeout: int = 30
class RedisSettings(BaseSettings):
diff --git a/ruoyi-fastapi-backend/module_admin/annotation/log_annotation.py b/ruoyi-fastapi-backend/module_admin/annotation/log_annotation.py
index 079bfd0f2720e8e43e075733ab842afbf653cfb5..e86439159831e608f63938539d7f0c4344a73c59 100644
--- a/ruoyi-fastapi-backend/module_admin/annotation/log_annotation.py
+++ b/ruoyi-fastapi-backend/module_admin/annotation/log_annotation.py
@@ -1,4 +1,4 @@
-from functools import wraps
+from functools import wraps, lru_cache
from fastapi import Request
from fastapi.responses import JSONResponse, ORJSONResponse, UJSONResponse
import inspect
@@ -52,21 +52,7 @@ def log_decorator(title: str, business_type: int, log_type: Optional[str] = 'ope
oper_ip = request.headers.get("X-Forwarded-For")
oper_location = '内网IP'
if AppConfig.app_ip_location_query:
- try:
- if oper_ip != '127.0.0.1' and oper_ip != 'localhost':
- ip_result = requests.get(f'https://qifu-api.baidubce.com/ip/geo/v1/district?ip={oper_ip}')
- if ip_result.status_code == 200:
- prov = ip_result.json().get('data').get('prov')
- city = ip_result.json().get('data').get('city')
- if prov or city:
- oper_location = f'{prov}-{city}'
- else:
- oper_location = '未知'
- else:
- oper_location = '未知'
- except Exception as e:
- oper_location = '未知'
- print(e)
+ oper_location = get_ip_location(oper_ip)
# 根据不同的请求类型使用不同的方法获取请求参数
content_type = request.headers.get("Content-Type")
if content_type and ("multipart/form-data" in content_type or 'application/x-www-form-urlencoded' in content_type):
@@ -175,3 +161,26 @@ def log_decorator(title: str, business_type: int, log_type: Optional[str] = 'ope
return wrapper
return decorator
+
+
+@lru_cache()
+def get_ip_location(oper_ip: str):
+ """
+ 查询ip归属区域
+ :param oper_ip: 需要查询的ip
+ :return: ip归属区域
+ """
+ oper_location = '内网IP'
+ try:
+ if oper_ip != '127.0.0.1' and oper_ip != 'localhost':
+ oper_location = '未知'
+ ip_result = requests.get(f'https://qifu-api.baidubce.com/ip/geo/v1/district?ip={oper_ip}')
+ if ip_result.status_code == 200:
+ prov = ip_result.json().get('data').get('prov')
+ city = ip_result.json().get('data').get('city')
+ if prov or city:
+ oper_location = f'{prov}-{city}'
+ except Exception as e:
+ oper_location = '未知'
+ print(e)
+ return oper_location
diff --git a/ruoyi-fastapi-backend/module_admin/service/user_service.py b/ruoyi-fastapi-backend/module_admin/service/user_service.py
index 29a04b6810bcefd0c76f99a13c74f5bb7b84ea8d..9f8f1e3bf6cb36a1c56ccd9f732b350acdac1dc3 100644
--- a/ruoyi-fastapi-backend/module_admin/service/user_service.py
+++ b/ruoyi-fastapi-backend/module_admin/service/user_service.py
@@ -206,7 +206,7 @@ class UserService:
:param page_object: 重置用户对象
:return: 重置用户校验结果
"""
- reset_user = page_object.model_dump(exclude_unset=True)
+ reset_user = page_object.model_dump(exclude_unset=True, exclude={'admin'})
if page_object.old_password:
user = UserDao.get_user_detail_by_id(query_db, user_id=page_object.user_id).get('user_basic_info')
if not PwdUtil.verify_password(page_object.old_password, user.password):
diff --git a/ruoyi-fastapi-frontend/package.json b/ruoyi-fastapi-frontend/package.json
index bb0aff529362aa4a62a8e754f9f4d1cea5fa6f67..8b59cc2d8d853d023be9447ed12ff995f3c5cb16 100644
--- a/ruoyi-fastapi-frontend/package.json
+++ b/ruoyi-fastapi-frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "vfadmin",
- "version": "1.1.1",
+ "version": "1.1.2",
"description": "vfadmin管理系统",
"author": "insistence",
"license": "MIT",