style: 使用ruff格式化参数配置模块,优化导入
This commit is contained in:
@@ -1,23 +1,32 @@
|
||||
from fastapi import APIRouter
|
||||
from fastapi import Depends
|
||||
from datetime import datetime
|
||||
from fastapi import APIRouter, Depends, Request
|
||||
from pydantic_validation_decorator import ValidateFields
|
||||
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 sqlalchemy.ext.asyncio import AsyncSession
|
||||
from config.enums import BusinessType
|
||||
from utils.response_util import *
|
||||
from utils.log_util import *
|
||||
from utils.page_util import *
|
||||
from config.get_db import get_db
|
||||
from module_admin.annotation.log_annotation import log_decorator
|
||||
from module_admin.aspect.interface_auth import CheckUserInterfaceAuth
|
||||
from module_admin.entity.vo.config_vo import ConfigModel, ConfigPageQueryModel, DeleteConfigModel
|
||||
from module_admin.entity.vo.user_vo import CurrentUserModel
|
||||
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.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.get("/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)):
|
||||
@configController.get(
|
||||
'/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)
|
||||
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)
|
||||
|
||||
|
||||
@configController.post("", dependencies=[Depends(CheckUserInterfaceAuth('system:config:add'))])
|
||||
@configController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:config:add'))])
|
||||
@ValidateFields(validate_model='add_config')
|
||||
@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_time = datetime.now()
|
||||
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)
|
||||
|
||||
|
||||
@configController.put("", dependencies=[Depends(CheckUserInterfaceAuth('system:config:edit'))])
|
||||
@configController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:config:edit'))])
|
||||
@ValidateFields(validate_model='edit_config')
|
||||
@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_time = datetime.now()
|
||||
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)
|
||||
|
||||
|
||||
@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)
|
||||
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)
|
||||
@@ -60,7 +79,7 @@ async def refresh_system_config(request: Request, query_db: AsyncSession = Depen
|
||||
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)
|
||||
async def delete_system_config(request: Request, config_ids: str, query_db: AsyncSession = Depends(get_db)):
|
||||
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)
|
||||
|
||||
|
||||
@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)):
|
||||
config_detail_result = await ConfigService.config_detail_services(query_db, 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)
|
||||
|
||||
|
||||
@configController.get("/configKey/{config_key}")
|
||||
@configController.get('/configKey/{config_key}')
|
||||
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)
|
||||
@@ -87,9 +108,13 @@ async def query_system_config(request: Request, config_key: str):
|
||||
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)
|
||||
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_export_result = await ConfigService.export_config_list_services(config_query_result)
|
||||
|
@@ -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 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 datetime import datetime, time
|
||||
|
||||
|
||||
class ConfigDao:
|
||||
@@ -19,10 +19,7 @@ class ConfigDao:
|
||||
:param config_id: 参数配置id
|
||||
:return: 参数配置信息对象
|
||||
"""
|
||||
config_info = (await db.execute(
|
||||
select(SysConfig)
|
||||
.where(SysConfig.config_id == config_id)
|
||||
)).scalars().first()
|
||||
config_info = (await db.execute(select(SysConfig).where(SysConfig.config_id == config_id))).scalars().first()
|
||||
|
||||
return config_info
|
||||
|
||||
@@ -34,11 +31,18 @@ class ConfigDao:
|
||||
:param config: 参数配置参数对象
|
||||
:return: 参数配置信息对象
|
||||
"""
|
||||
config_info = (await db.execute(
|
||||
select(SysConfig)
|
||||
.where(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()
|
||||
config_info = (
|
||||
(
|
||||
await db.execute(
|
||||
select(SysConfig).where(
|
||||
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
|
||||
|
||||
@@ -51,15 +55,21 @@ class ConfigDao:
|
||||
:param is_page: 是否开启分页
|
||||
:return: 参数配置列表信息对象
|
||||
"""
|
||||
query = 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_type == query_object.config_type if query_object.config_type else True,
|
||||
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.end_time, '%Y-%m-%d'), time(23, 59, 59)))
|
||||
if query_object.begin_time and query_object.end_time else True) \
|
||||
query = (
|
||||
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_type == query_object.config_type if query_object.config_type else True,
|
||||
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.end_time, '%Y-%m-%d'), time(23, 59, 59)),
|
||||
)
|
||||
if query_object.begin_time and query_object.end_time
|
||||
else True,
|
||||
)
|
||||
.distinct()
|
||||
)
|
||||
config_list = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
|
||||
|
||||
return config_list
|
||||
@@ -86,10 +96,7 @@ class ConfigDao:
|
||||
:param config: 需要更新的参数配置字典
|
||||
:return:
|
||||
"""
|
||||
await db.execute(
|
||||
update(SysConfig),
|
||||
[config]
|
||||
)
|
||||
await db.execute(update(SysConfig), [config])
|
||||
|
||||
@classmethod
|
||||
async def delete_config_dao(cls, db: AsyncSession, config: ConfigModel):
|
||||
@@ -99,7 +106,4 @@ class ConfigDao:
|
||||
:param config: 参数配置对象
|
||||
:return:
|
||||
"""
|
||||
await db.execute(
|
||||
delete(SysConfig)
|
||||
.where(SysConfig.config_id.in_([config.config_id]))
|
||||
)
|
||||
await db.execute(delete(SysConfig).where(SysConfig.config_id.in_([config.config_id])))
|
||||
|
@@ -1,12 +1,13 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from config.database import Base
|
||||
from datetime import datetime
|
||||
from sqlalchemy import Column, DateTime, Integer, String
|
||||
from config.database import Base
|
||||
|
||||
|
||||
class SysConfig(Base):
|
||||
"""
|
||||
参数配置表
|
||||
"""
|
||||
|
||||
__tablename__ = 'sys_config'
|
||||
|
||||
config_id = Column(Integer, primary_key=True, autoincrement=True, comment='参数主键')
|
||||
@@ -18,4 +19,4 @@ class SysConfig(Base):
|
||||
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
|
||||
update_by = Column(String(64), nullable=True, default='', comment='更新者')
|
||||
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
|
||||
remark = Column(String(500), nullable=True, default='', comment='备注')
|
||||
remark = Column(String(500), nullable=True, default='', comment='备注')
|
||||
|
@@ -1,15 +1,16 @@
|
||||
from datetime import datetime
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from pydantic.alias_generators import to_camel
|
||||
from pydantic_validation_decorator import NotBlank, Size
|
||||
from typing import Union, Optional, List, Literal
|
||||
from datetime import datetime
|
||||
from module_admin.annotation.pydantic_annotation import as_query, as_form
|
||||
from typing import Literal, Optional
|
||||
from module_admin.annotation.pydantic_annotation import as_form, as_query
|
||||
|
||||
|
||||
class ConfigModel(BaseModel):
|
||||
"""
|
||||
参数配置表对应pydantic模型
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
|
||||
|
||||
config_id: Optional[int] = Field(default=None, description='参数主键')
|
||||
@@ -48,6 +49,7 @@ class ConfigQueryModel(ConfigModel):
|
||||
"""
|
||||
参数配置管理不分页查询模型
|
||||
"""
|
||||
|
||||
begin_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_size: int = Field(default=10, description='每页记录数')
|
||||
|
||||
@@ -66,6 +69,7 @@ class DeleteConfigModel(BaseModel):
|
||||
"""
|
||||
删除参数配置模型
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(alias_generator=to_camel)
|
||||
|
||||
config_ids: str = Field(description='需要删除的参数主键')
|
||||
|
@@ -1,10 +1,13 @@
|
||||
from fastapi import Request
|
||||
from module_admin.dao.config_dao import *
|
||||
from module_admin.entity.vo.common_vo import CrudResponseModel
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from typing import List
|
||||
from config.constant import CommonConstant
|
||||
from config.env import RedisInitKeyConfig
|
||||
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:
|
||||
@@ -13,7 +16,9 @@ class ConfigService:
|
||||
"""
|
||||
|
||||
@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
|
||||
:param query_db: orm对象
|
||||
@@ -40,7 +45,10 @@ class ConfigService:
|
||||
await redis.delete(*keys)
|
||||
config_all = await ConfigDao.get_config_list(query_db, ConfigPageQueryModel(**dict()), is_page=False)
|
||||
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
|
||||
async def query_config_list_from_cache_services(cls, redis, config_key: str):
|
||||
@@ -83,7 +91,9 @@ class ConfigService:
|
||||
try:
|
||||
await ConfigDao.add_config_dao(query_db, page_object)
|
||||
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='新增成功')
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
@@ -108,8 +118,12 @@ class ConfigService:
|
||||
await ConfigDao.edit_config_dao(query_db, edit_config)
|
||||
await query_db.commit()
|
||||
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.set(f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:{page_object.config_key}", page_object.config_value)
|
||||
await request.app.state.redis.delete(
|
||||
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='更新成功')
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
@@ -136,7 +150,9 @@ class ConfigService:
|
||||
raise ServiceException(message=f'内置参数{config_info.config_key}不能删除')
|
||||
else:
|
||||
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()
|
||||
if delete_config_key_list:
|
||||
await request.app.state.redis.delete(*delete_config_key_list)
|
||||
@@ -172,16 +188,16 @@ class ConfigService:
|
||||
"""
|
||||
# 创建一个映射字典,将英文键映射到中文键
|
||||
mapping_dict = {
|
||||
"configId": "参数主键",
|
||||
"configName": "参数名称",
|
||||
"configKey": "参数键名",
|
||||
"configValue": "参数键值",
|
||||
"configType": "系统内置",
|
||||
"createBy": "创建者",
|
||||
"createTime": "创建时间",
|
||||
"updateBy": "更新者",
|
||||
"updateTime": "更新时间",
|
||||
"remark": "备注",
|
||||
'configId': '参数主键',
|
||||
'configName': '参数名称',
|
||||
'configKey': '参数键名',
|
||||
'configValue': '参数键值',
|
||||
'configType': '系统内置',
|
||||
'createBy': '创建者',
|
||||
'createTime': '创建时间',
|
||||
'updateBy': '更新者',
|
||||
'updateTime': '更新时间',
|
||||
'remark': '备注',
|
||||
}
|
||||
|
||||
data = config_list
|
||||
@@ -191,7 +207,9 @@ class ConfigService:
|
||||
item['configType'] = '是'
|
||||
else:
|
||||
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)
|
||||
|
||||
return binary_data
|
||||
|
Reference in New Issue
Block a user