Browse Source

style: 使用ruff格式化参数配置模块,优化导入

master
insistence 7 months ago
parent
commit
749fe85cad
  1. 67
      ruoyi-fastapi-backend/module_admin/controller/config_controller.py
  2. 52
      ruoyi-fastapi-backend/module_admin/dao/config_dao.py
  3. 5
      ruoyi-fastapi-backend/module_admin/entity/do/config_do.py
  4. 10
      ruoyi-fastapi-backend/module_admin/entity/vo/config_vo.py
  5. 58
      ruoyi-fastapi-backend/module_admin/service/config_service.py

67
ruoyi-fastapi-backend/module_admin/controller/config_controller.py

@ -1,23 +1,32 @@
from fastapi import APIRouter from datetime import datetime
from fastapi import Depends from fastapi import APIRouter, Depends, Request
from pydantic_validation_decorator import ValidateFields from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
from config.get_db import get_db from config.get_db import get_db
from module_admin.service.login_service import LoginService, CurrentUserModel
from module_admin.service.config_service import *
from module_admin.aspect.interface_auth import CheckUserInterfaceAuth
from module_admin.annotation.log_annotation import log_decorator from module_admin.annotation.log_annotation import log_decorator
from config.enums import BusinessType from module_admin.aspect.interface_auth import CheckUserInterfaceAuth
from utils.response_util import * from module_admin.entity.vo.config_vo import ConfigModel, ConfigPageQueryModel, DeleteConfigModel
from utils.log_util import * from module_admin.entity.vo.user_vo import CurrentUserModel
from utils.page_util import * from module_admin.service.config_service import ConfigService
from module_admin.service.login_service import LoginService
from utils.common_util import bytes2file_response from utils.common_util import bytes2file_response
from utils.log_util import logger
from utils.page_util import PageResponseModel
from utils.response_util import ResponseUtil
configController = APIRouter(prefix='/system/config', dependencies=[Depends(LoginService.get_current_user)]) configController = APIRouter(prefix='/system/config', dependencies=[Depends(LoginService.get_current_user)])
@configController.get("/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:config:list'))]) @configController.get(
async def get_system_config_list(request: Request, config_page_query: ConfigPageQueryModel = Depends(ConfigPageQueryModel.as_query), query_db: AsyncSession = Depends(get_db)): '/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:config:list'))]
)
async def get_system_config_list(
request: Request,
config_page_query: ConfigPageQueryModel = Depends(ConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据 # 获取分页数据
config_page_query_result = await ConfigService.get_config_list_services(query_db, config_page_query, is_page=True) config_page_query_result = await ConfigService.get_config_list_services(query_db, config_page_query, is_page=True)
logger.info('获取成功') logger.info('获取成功')
@ -25,10 +34,15 @@ async def get_system_config_list(request: Request, config_page_query: ConfigPage
return ResponseUtil.success(model_content=config_page_query_result) return ResponseUtil.success(model_content=config_page_query_result)
@configController.post("", dependencies=[Depends(CheckUserInterfaceAuth('system:config:add'))]) @configController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:config:add'))])
@ValidateFields(validate_model='add_config') @ValidateFields(validate_model='add_config')
@log_decorator(title='参数管理', business_type=BusinessType.INSERT) @log_decorator(title='参数管理', business_type=BusinessType.INSERT)
async def add_system_config(request: Request, add_config: ConfigModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): async def add_system_config(
request: Request,
add_config: ConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
add_config.create_by = current_user.user.user_name add_config.create_by = current_user.user.user_name
add_config.create_time = datetime.now() add_config.create_time = datetime.now()
add_config.update_by = current_user.user.user_name add_config.update_by = current_user.user.user_name
@ -39,10 +53,15 @@ async def add_system_config(request: Request, add_config: ConfigModel, query_db:
return ResponseUtil.success(msg=add_config_result.message) return ResponseUtil.success(msg=add_config_result.message)
@configController.put("", dependencies=[Depends(CheckUserInterfaceAuth('system:config:edit'))]) @configController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:config:edit'))])
@ValidateFields(validate_model='edit_config') @ValidateFields(validate_model='edit_config')
@log_decorator(title='参数管理', business_type=BusinessType.UPDATE) @log_decorator(title='参数管理', business_type=BusinessType.UPDATE)
async def edit_system_config(request: Request, edit_config: ConfigModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): async def edit_system_config(
request: Request,
edit_config: ConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_config.update_by = current_user.user.user_name edit_config.update_by = current_user.user.user_name
edit_config.update_time = datetime.now() edit_config.update_time = datetime.now()
edit_config_result = await ConfigService.edit_config_services(request, query_db, edit_config) edit_config_result = await ConfigService.edit_config_services(request, query_db, edit_config)
@ -51,7 +70,7 @@ async def edit_system_config(request: Request, edit_config: ConfigModel, query_d
return ResponseUtil.success(msg=edit_config_result.message) return ResponseUtil.success(msg=edit_config_result.message)
@configController.delete("/refreshCache", dependencies=[Depends(CheckUserInterfaceAuth('system:config:remove'))]) @configController.delete('/refreshCache', dependencies=[Depends(CheckUserInterfaceAuth('system:config:remove'))])
@log_decorator(title='参数管理', business_type=BusinessType.UPDATE) @log_decorator(title='参数管理', business_type=BusinessType.UPDATE)
async def refresh_system_config(request: Request, query_db: AsyncSession = Depends(get_db)): async def refresh_system_config(request: Request, query_db: AsyncSession = Depends(get_db)):
refresh_config_result = await ConfigService.refresh_sys_config_services(request, query_db) refresh_config_result = await ConfigService.refresh_sys_config_services(request, query_db)
@ -60,7 +79,7 @@ async def refresh_system_config(request: Request, query_db: AsyncSession = Depen
return ResponseUtil.success(msg=refresh_config_result.message) return ResponseUtil.success(msg=refresh_config_result.message)
@configController.delete("/{config_ids}", dependencies=[Depends(CheckUserInterfaceAuth('system:config:remove'))]) @configController.delete('/{config_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:config:remove'))])
@log_decorator(title='参数管理', business_type=BusinessType.DELETE) @log_decorator(title='参数管理', business_type=BusinessType.DELETE)
async def delete_system_config(request: Request, config_ids: str, query_db: AsyncSession = Depends(get_db)): async def delete_system_config(request: Request, config_ids: str, query_db: AsyncSession = Depends(get_db)):
delete_config = DeleteConfigModel(configIds=config_ids) delete_config = DeleteConfigModel(configIds=config_ids)
@ -70,7 +89,9 @@ async def delete_system_config(request: Request, config_ids: str, query_db: Asyn
return ResponseUtil.success(msg=delete_config_result.message) return ResponseUtil.success(msg=delete_config_result.message)
@configController.get("/{config_id}", response_model=ConfigModel, dependencies=[Depends(CheckUserInterfaceAuth('system:config:query'))]) @configController.get(
'/{config_id}', response_model=ConfigModel, dependencies=[Depends(CheckUserInterfaceAuth('system:config:query'))]
)
async def query_detail_system_config(request: Request, config_id: int, query_db: AsyncSession = Depends(get_db)): async def query_detail_system_config(request: Request, config_id: int, query_db: AsyncSession = Depends(get_db)):
config_detail_result = await ConfigService.config_detail_services(query_db, config_id) config_detail_result = await ConfigService.config_detail_services(query_db, config_id)
logger.info(f'获取config_id为{config_id}的信息成功') logger.info(f'获取config_id为{config_id}的信息成功')
@ -78,7 +99,7 @@ async def query_detail_system_config(request: Request, config_id: int, query_db:
return ResponseUtil.success(data=config_detail_result) return ResponseUtil.success(data=config_detail_result)
@configController.get("/configKey/{config_key}") @configController.get('/configKey/{config_key}')
async def query_system_config(request: Request, config_key: str): async def query_system_config(request: Request, config_key: str):
# 获取全量数据 # 获取全量数据
config_query_result = await ConfigService.query_config_list_from_cache_services(request.app.state.redis, config_key) config_query_result = await ConfigService.query_config_list_from_cache_services(request.app.state.redis, config_key)
@ -87,9 +108,13 @@ async def query_system_config(request: Request, config_key: str):
return ResponseUtil.success(msg=config_query_result) return ResponseUtil.success(msg=config_query_result)
@configController.post("/export", dependencies=[Depends(CheckUserInterfaceAuth('system:config:export'))]) @configController.post('/export', dependencies=[Depends(CheckUserInterfaceAuth('system:config:export'))])
@log_decorator(title='参数管理', business_type=BusinessType.EXPORT) @log_decorator(title='参数管理', business_type=BusinessType.EXPORT)
async def export_system_config_list(request: Request, config_page_query: ConfigPageQueryModel = Depends(ConfigPageQueryModel.as_form), query_db: AsyncSession = Depends(get_db)): async def export_system_config_list(
request: Request,
config_page_query: ConfigPageQueryModel = Depends(ConfigPageQueryModel.as_form),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据 # 获取全量数据
config_query_result = await ConfigService.get_config_list_services(query_db, config_page_query, is_page=False) config_query_result = await ConfigService.get_config_list_services(query_db, config_page_query, is_page=False)
config_export_result = await ConfigService.export_config_list_services(config_query_result) config_export_result = await ConfigService.export_config_list_services(config_query_result)

52
ruoyi-fastapi-backend/module_admin/dao/config_dao.py

@ -1,9 +1,9 @@
from sqlalchemy import select, update, delete from datetime import datetime, time
from sqlalchemy import delete, select, update
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.config_do import SysConfig from module_admin.entity.do.config_do import SysConfig
from module_admin.entity.vo.config_vo import * from module_admin.entity.vo.config_vo import ConfigModel, ConfigPageQueryModel
from utils.page_util import PageUtil from utils.page_util import PageUtil
from datetime import datetime, time
class ConfigDao: class ConfigDao:
@ -19,10 +19,7 @@ class ConfigDao:
:param config_id: 参数配置id :param config_id: 参数配置id
:return: 参数配置信息对象 :return: 参数配置信息对象
""" """
config_info = (await db.execute( config_info = (await db.execute(select(SysConfig).where(SysConfig.config_id == config_id))).scalars().first()
select(SysConfig)
.where(SysConfig.config_id == config_id)
)).scalars().first()
return config_info return config_info
@ -34,11 +31,18 @@ class ConfigDao:
:param config: 参数配置参数对象 :param config: 参数配置参数对象
:return: 参数配置信息对象 :return: 参数配置信息对象
""" """
config_info = (await db.execute( config_info = (
select(SysConfig) (
.where(SysConfig.config_key == config.config_key if config.config_key else True, await db.execute(
SysConfig.config_value == config.config_value if config.config_value else True) select(SysConfig).where(
)).scalars().first() SysConfig.config_key == config.config_key if config.config_key else True,
SysConfig.config_value == config.config_value if config.config_value else True,
)
)
)
.scalars()
.first()
)
return config_info return config_info
@ -51,15 +55,21 @@ class ConfigDao:
:param is_page: 是否开启分页 :param is_page: 是否开启分页
:return: 参数配置列表信息对象 :return: 参数配置列表信息对象
""" """
query = select(SysConfig) \ query = (
.where(SysConfig.config_name.like(f'%{query_object.config_name}%') if query_object.config_name else True, select(SysConfig)
.where(
SysConfig.config_name.like(f'%{query_object.config_name}%') if query_object.config_name else True,
SysConfig.config_key.like(f'%{query_object.config_key}%') if query_object.config_key else True, SysConfig.config_key.like(f'%{query_object.config_key}%') if query_object.config_key else True,
SysConfig.config_type == query_object.config_type if query_object.config_type else True, SysConfig.config_type == query_object.config_type if query_object.config_type else True,
SysConfig.create_time.between( SysConfig.create_time.between(
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(00, 00, 00)), datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(00, 00, 00)),
datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59))) datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59)),
if query_object.begin_time and query_object.end_time else True) \ )
if query_object.begin_time and query_object.end_time
else True,
)
.distinct() .distinct()
)
config_list = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) config_list = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
return config_list return config_list
@ -86,10 +96,7 @@ class ConfigDao:
:param config: 需要更新的参数配置字典 :param config: 需要更新的参数配置字典
:return: :return:
""" """
await db.execute( await db.execute(update(SysConfig), [config])
update(SysConfig),
[config]
)
@classmethod @classmethod
async def delete_config_dao(cls, db: AsyncSession, config: ConfigModel): async def delete_config_dao(cls, db: AsyncSession, config: ConfigModel):
@ -99,7 +106,4 @@ class ConfigDao:
:param config: 参数配置对象 :param config: 参数配置对象
:return: :return:
""" """
await db.execute( await db.execute(delete(SysConfig).where(SysConfig.config_id.in_([config.config_id])))
delete(SysConfig)
.where(SysConfig.config_id.in_([config.config_id]))
)

5
ruoyi-fastapi-backend/module_admin/entity/do/config_do.py

@ -1,12 +1,13 @@
from sqlalchemy import Column, Integer, String, DateTime
from config.database import Base
from datetime import datetime from datetime import datetime
from sqlalchemy import Column, DateTime, Integer, String
from config.database import Base
class SysConfig(Base): class SysConfig(Base):
""" """
参数配置表 参数配置表
""" """
__tablename__ = 'sys_config' __tablename__ = 'sys_config'
config_id = Column(Integer, primary_key=True, autoincrement=True, comment='参数主键') config_id = Column(Integer, primary_key=True, autoincrement=True, comment='参数主键')

10
ruoyi-fastapi-backend/module_admin/entity/vo/config_vo.py

@ -1,15 +1,16 @@
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size from pydantic_validation_decorator import NotBlank, Size
from typing import Union, Optional, List, Literal from typing import Literal, Optional
from datetime import datetime from module_admin.annotation.pydantic_annotation import as_form, as_query
from module_admin.annotation.pydantic_annotation import as_query, as_form
class ConfigModel(BaseModel): class ConfigModel(BaseModel):
""" """
参数配置表对应pydantic模型 参数配置表对应pydantic模型
""" """
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
config_id: Optional[int] = Field(default=None, description='参数主键') config_id: Optional[int] = Field(default=None, description='参数主键')
@ -48,6 +49,7 @@ class ConfigQueryModel(ConfigModel):
""" """
参数配置管理不分页查询模型 参数配置管理不分页查询模型
""" """
begin_time: Optional[str] = Field(default=None, description='开始时间') begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
@ -58,6 +60,7 @@ class ConfigPageQueryModel(ConfigQueryModel):
""" """
参数配置管理分页查询模型 参数配置管理分页查询模型
""" """
page_num: int = Field(default=1, description='当前页码') page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数') page_size: int = Field(default=10, description='每页记录数')
@ -66,6 +69,7 @@ class DeleteConfigModel(BaseModel):
""" """
删除参数配置模型 删除参数配置模型
""" """
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
config_ids: str = Field(description='需要删除的参数主键') config_ids: str = Field(description='需要删除的参数主键')

58
ruoyi-fastapi-backend/module_admin/service/config_service.py

@ -1,10 +1,13 @@
from fastapi import Request from fastapi import Request
from module_admin.dao.config_dao import * from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.vo.common_vo import CrudResponseModel from typing import List
from config.constant import CommonConstant from config.constant import CommonConstant
from config.env import RedisInitKeyConfig from config.env import RedisInitKeyConfig
from exceptions.exception import ServiceException from exceptions.exception import ServiceException
from utils.common_util import export_list2excel, CamelCaseUtil from module_admin.dao.config_dao import ConfigDao
from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.entity.vo.config_vo import ConfigModel, ConfigPageQueryModel, DeleteConfigModel
from utils.common_util import CamelCaseUtil, export_list2excel
class ConfigService: class ConfigService:
@ -13,7 +16,9 @@ class ConfigService:
""" """
@classmethod @classmethod
async def get_config_list_services(cls, query_db: AsyncSession, query_object: ConfigPageQueryModel, is_page: bool = False): async def get_config_list_services(
cls, query_db: AsyncSession, query_object: ConfigPageQueryModel, is_page: bool = False
):
""" """
获取参数配置列表信息service 获取参数配置列表信息service
:param query_db: orm对象 :param query_db: orm对象
@ -40,7 +45,10 @@ class ConfigService:
await redis.delete(*keys) await redis.delete(*keys)
config_all = await ConfigDao.get_config_list(query_db, ConfigPageQueryModel(**dict()), is_page=False) config_all = await ConfigDao.get_config_list(query_db, ConfigPageQueryModel(**dict()), is_page=False)
for config_obj in config_all: for config_obj in config_all:
await redis.set(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{config_obj.get('configKey')}", config_obj.get('configValue')) await redis.set(
f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{config_obj.get('configKey')}",
config_obj.get('configValue'),
)
@classmethod @classmethod
async def query_config_list_from_cache_services(cls, redis, config_key: str): async def query_config_list_from_cache_services(cls, redis, config_key: str):
@ -83,7 +91,9 @@ class ConfigService:
try: try:
await ConfigDao.add_config_dao(query_db, page_object) await ConfigDao.add_config_dao(query_db, page_object)
await query_db.commit() await query_db.commit()
await request.app.state.redis.set(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{page_object.config_key}", page_object.config_value) await request.app.state.redis.set(
f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{page_object.config_key}", page_object.config_value
)
return CrudResponseModel(is_success=True, message='新增成功') return CrudResponseModel(is_success=True, message='新增成功')
except Exception as e: except Exception as e:
await query_db.rollback() await query_db.rollback()
@ -108,8 +118,12 @@ class ConfigService:
await ConfigDao.edit_config_dao(query_db, edit_config) await ConfigDao.edit_config_dao(query_db, edit_config)
await query_db.commit() await query_db.commit()
if config_info.config_key != page_object.config_key: if config_info.config_key != page_object.config_key:
await request.app.state.redis.delete(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{config_info.config_key}") await request.app.state.redis.delete(
await request.app.state.redis.set(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{page_object.config_key}", page_object.config_value) f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{config_info.config_key}"
)
await request.app.state.redis.set(
f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{page_object.config_key}", page_object.config_value
)
return CrudResponseModel(is_success=True, message='更新成功') return CrudResponseModel(is_success=True, message='更新成功')
except Exception as e: except Exception as e:
await query_db.rollback() await query_db.rollback()
@ -136,7 +150,9 @@ class ConfigService:
raise ServiceException(message=f'内置参数{config_info.config_key}不能删除') raise ServiceException(message=f'内置参数{config_info.config_key}不能删除')
else: else:
await ConfigDao.delete_config_dao(query_db, ConfigModel(configId=int(config_id))) await ConfigDao.delete_config_dao(query_db, ConfigModel(configId=int(config_id)))
delete_config_key_list.append(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{config_info.config_key}") delete_config_key_list.append(
f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{config_info.config_key}"
)
await query_db.commit() await query_db.commit()
if delete_config_key_list: if delete_config_key_list:
await request.app.state.redis.delete(*delete_config_key_list) await request.app.state.redis.delete(*delete_config_key_list)
@ -172,16 +188,16 @@ class ConfigService:
""" """
# 创建一个映射字典,将英文键映射到中文键 # 创建一个映射字典,将英文键映射到中文键
mapping_dict = { mapping_dict = {
"configId": "参数主键", 'configId': '参数主键',
"configName": "参数名称", 'configName': '参数名称',
"configKey": "参数键名", 'configKey': '参数键名',
"configValue": "参数键值", 'configValue': '参数键值',
"configType": "系统内置", 'configType': '系统内置',
"createBy": "创建者", 'createBy': '创建者',
"createTime": "创建时间", 'createTime': '创建时间',
"updateBy": "更新者", 'updateBy': '更新者',
"updateTime": "更新时间", 'updateTime': '更新时间',
"remark": "备注", 'remark': '备注',
} }
data = config_list data = config_list
@ -191,7 +207,9 @@ class ConfigService:
item['configType'] = '' item['configType'] = ''
else: else:
item['configType'] = '' item['configType'] = ''
new_data = [{mapping_dict.get(key): value for key, value in item.items() if mapping_dict.get(key)} for item in data] new_data = [
{mapping_dict.get(key): value for key, value in item.items() if mapping_dict.get(key)} for item in data
]
binary_data = export_list2excel(new_data) binary_data = export_list2excel(new_data)
return binary_data return binary_data

Loading…
Cancel
Save