style: 使用ruff格式化岗位管理模块,优化导入
This commit is contained in:
@@ -1,24 +1,32 @@
|
||||
from fastapi import APIRouter, Request
|
||||
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.post_service import *
|
||||
from module_admin.entity.vo.post_vo 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.service.login_service import LoginService
|
||||
from module_admin.service.post_service import PostService
|
||||
from module_admin.entity.vo.post_vo import DeletePostModel, PostModel, PostPageQueryModel
|
||||
from module_admin.entity.vo.user_vo import CurrentUserModel
|
||||
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
|
||||
|
||||
|
||||
postController = APIRouter(prefix='/system/post', dependencies=[Depends(LoginService.get_current_user)])
|
||||
|
||||
|
||||
@postController.get("/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:post:list'))])
|
||||
async def get_system_post_list(request: Request, post_page_query: PostPageQueryModel = Depends(PostPageQueryModel.as_query), query_db: AsyncSession = Depends(get_db)):
|
||||
@postController.get(
|
||||
'/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('system:post:list'))]
|
||||
)
|
||||
async def get_system_post_list(
|
||||
request: Request,
|
||||
post_page_query: PostPageQueryModel = Depends(PostPageQueryModel.as_query),
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
# 获取分页数据
|
||||
post_page_query_result = await PostService.get_post_list_services(query_db, post_page_query, is_page=True)
|
||||
logger.info('获取成功')
|
||||
@@ -26,10 +34,15 @@ async def get_system_post_list(request: Request, post_page_query: PostPageQueryM
|
||||
return ResponseUtil.success(model_content=post_page_query_result)
|
||||
|
||||
|
||||
@postController.post("", dependencies=[Depends(CheckUserInterfaceAuth('system:post:add'))])
|
||||
@postController.post('', dependencies=[Depends(CheckUserInterfaceAuth('system:post:add'))])
|
||||
@ValidateFields(validate_model='add_post')
|
||||
@log_decorator(title='岗位管理', business_type=BusinessType.INSERT)
|
||||
async def add_system_post(request: Request, add_post: PostModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
|
||||
async def add_system_post(
|
||||
request: Request,
|
||||
add_post: PostModel,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
|
||||
):
|
||||
add_post.create_by = current_user.user.user_name
|
||||
add_post.create_time = datetime.now()
|
||||
add_post.update_by = current_user.user.user_name
|
||||
@@ -40,10 +53,15 @@ async def add_system_post(request: Request, add_post: PostModel, query_db: Async
|
||||
return ResponseUtil.success(msg=add_post_result.message)
|
||||
|
||||
|
||||
@postController.put("", dependencies=[Depends(CheckUserInterfaceAuth('system:post:edit'))])
|
||||
@postController.put('', dependencies=[Depends(CheckUserInterfaceAuth('system:post:edit'))])
|
||||
@ValidateFields(validate_model='edit_post')
|
||||
@log_decorator(title='岗位管理', business_type=BusinessType.UPDATE)
|
||||
async def edit_system_post(request: Request, edit_post: PostModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
|
||||
async def edit_system_post(
|
||||
request: Request,
|
||||
edit_post: PostModel,
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
|
||||
):
|
||||
edit_post.update_by = current_user.user.user_name
|
||||
edit_post.update_time = datetime.now()
|
||||
edit_post_result = await PostService.edit_post_services(query_db, edit_post)
|
||||
@@ -52,7 +70,7 @@ async def edit_system_post(request: Request, edit_post: PostModel, query_db: Asy
|
||||
return ResponseUtil.success(msg=edit_post_result.message)
|
||||
|
||||
|
||||
@postController.delete("/{post_ids}", dependencies=[Depends(CheckUserInterfaceAuth('system:post:remove'))])
|
||||
@postController.delete('/{post_ids}', dependencies=[Depends(CheckUserInterfaceAuth('system:post:remove'))])
|
||||
@log_decorator(title='岗位管理', business_type=BusinessType.DELETE)
|
||||
async def delete_system_post(request: Request, post_ids: str, query_db: AsyncSession = Depends(get_db)):
|
||||
delete_post = DeletePostModel(postIds=post_ids)
|
||||
@@ -62,7 +80,9 @@ async def delete_system_post(request: Request, post_ids: str, query_db: AsyncSes
|
||||
return ResponseUtil.success(msg=delete_post_result.message)
|
||||
|
||||
|
||||
@postController.get("/{post_id}", response_model=PostModel, dependencies=[Depends(CheckUserInterfaceAuth('system:post:query'))])
|
||||
@postController.get(
|
||||
'/{post_id}', response_model=PostModel, dependencies=[Depends(CheckUserInterfaceAuth('system:post:query'))]
|
||||
)
|
||||
async def query_detail_system_post(request: Request, post_id: int, query_db: AsyncSession = Depends(get_db)):
|
||||
post_detail_result = await PostService.post_detail_services(query_db, post_id)
|
||||
logger.info(f'获取post_id为{post_id}的信息成功')
|
||||
@@ -70,9 +90,13 @@ async def query_detail_system_post(request: Request, post_id: int, query_db: Asy
|
||||
return ResponseUtil.success(data=post_detail_result)
|
||||
|
||||
|
||||
@postController.post("/export", dependencies=[Depends(CheckUserInterfaceAuth('system:post:export'))])
|
||||
@postController.post('/export', dependencies=[Depends(CheckUserInterfaceAuth('system:post:export'))])
|
||||
@log_decorator(title='岗位管理', business_type=BusinessType.EXPORT)
|
||||
async def export_system_post_list(request: Request, post_page_query: PostPageQueryModel = Depends(PostPageQueryModel.as_form), query_db: AsyncSession = Depends(get_db)):
|
||||
async def export_system_post_list(
|
||||
request: Request,
|
||||
post_page_query: PostPageQueryModel = Depends(PostPageQueryModel.as_form),
|
||||
query_db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
# 获取全量数据
|
||||
post_query_result = await PostService.get_post_list_services(query_db, post_page_query, is_page=False)
|
||||
post_export_result = await PostService.export_post_list_services(post_query_result)
|
||||
|
@@ -1,8 +1,8 @@
|
||||
from sqlalchemy import select, update, delete, func
|
||||
from sqlalchemy import delete, func, select, update
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from module_admin.entity.do.post_do import SysPost
|
||||
from module_admin.entity.do.user_do import SysUserPost
|
||||
from module_admin.entity.vo.post_vo import *
|
||||
from module_admin.entity.vo.post_vo import PostModel, PostPageQueryModel
|
||||
from utils.page_util import PageUtil
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ class PostDao:
|
||||
:param post_id: 岗位id
|
||||
:return: 在用岗位信息对象
|
||||
"""
|
||||
post_info = (await db.execute(
|
||||
select(SysPost)
|
||||
.where(SysPost.post_id == post_id,
|
||||
SysPost.status == '0')
|
||||
)).scalars().first()
|
||||
post_info = (
|
||||
(await db.execute(select(SysPost).where(SysPost.post_id == post_id, SysPost.status == '0')))
|
||||
.scalars()
|
||||
.first()
|
||||
)
|
||||
|
||||
return post_info
|
||||
|
||||
@@ -35,10 +35,7 @@ class PostDao:
|
||||
:param post_id: 岗位id
|
||||
:return: 岗位信息对象
|
||||
"""
|
||||
post_info = (await db.execute(
|
||||
select(SysPost)
|
||||
.where(SysPost.post_id == post_id)
|
||||
)).scalars().first()
|
||||
post_info = (await db.execute(select(SysPost).where(SysPost.post_id == post_id))).scalars().first()
|
||||
|
||||
return post_info
|
||||
|
||||
@@ -50,12 +47,19 @@ class PostDao:
|
||||
:param post: 岗位参数对象
|
||||
:return: 岗位信息对象
|
||||
"""
|
||||
post_info = (await db.execute(
|
||||
select(SysPost)
|
||||
.where(SysPost.post_name == post.post_name if post.post_name else True,
|
||||
SysPost.post_code == post.post_code if post.post_code else True,
|
||||
SysPost.post_sort == post.post_sort if post.post_sort else True)
|
||||
)).scalars().first()
|
||||
post_info = (
|
||||
(
|
||||
await db.execute(
|
||||
select(SysPost).where(
|
||||
SysPost.post_name == post.post_name if post.post_name else True,
|
||||
SysPost.post_code == post.post_code if post.post_code else True,
|
||||
SysPost.post_sort == post.post_sort if post.post_sort else True,
|
||||
)
|
||||
)
|
||||
)
|
||||
.scalars()
|
||||
.first()
|
||||
)
|
||||
|
||||
return post_info
|
||||
|
||||
@@ -68,12 +72,16 @@ class PostDao:
|
||||
:param is_page: 是否开启分页
|
||||
:return: 岗位列表信息对象
|
||||
"""
|
||||
query = select(SysPost) \
|
||||
.where(SysPost.post_code.like(f'%{query_object.post_code}%') if query_object.post_code else True,
|
||||
SysPost.post_name.like(f'%{query_object.post_name}%') if query_object.post_name else True,
|
||||
SysPost.status == query_object.status if query_object.status else True) \
|
||||
.order_by(SysPost.post_sort) \
|
||||
query = (
|
||||
select(SysPost)
|
||||
.where(
|
||||
SysPost.post_code.like(f'%{query_object.post_code}%') if query_object.post_code else True,
|
||||
SysPost.post_name.like(f'%{query_object.post_name}%') if query_object.post_name else True,
|
||||
SysPost.status == query_object.status if query_object.status else True,
|
||||
)
|
||||
.order_by(SysPost.post_sort)
|
||||
.distinct()
|
||||
)
|
||||
post_list = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
|
||||
|
||||
return post_list
|
||||
@@ -100,10 +108,7 @@ class PostDao:
|
||||
:param post: 需要更新的岗位字典
|
||||
:return:
|
||||
"""
|
||||
await db.execute(
|
||||
update(SysPost),
|
||||
[post]
|
||||
)
|
||||
await db.execute(update(SysPost), [post])
|
||||
|
||||
@classmethod
|
||||
async def delete_post_dao(cls, db: AsyncSession, post: PostModel):
|
||||
@@ -113,10 +118,7 @@ class PostDao:
|
||||
:param post: 岗位对象
|
||||
:return:
|
||||
"""
|
||||
await db.execute(
|
||||
delete(SysPost)
|
||||
.where(SysPost.post_id.in_([post.post_id]))
|
||||
)
|
||||
await db.execute(delete(SysPost).where(SysPost.post_id.in_([post.post_id])))
|
||||
|
||||
@classmethod
|
||||
async def count_user_post_dao(cls, db: AsyncSession, post_id: int):
|
||||
@@ -126,10 +128,8 @@ class PostDao:
|
||||
:param post_id: 岗位id
|
||||
:return: 岗位关联的用户数量
|
||||
"""
|
||||
user_post_count = (await db.execute(
|
||||
select(func.count('*'))
|
||||
.select_from(SysUserPost)
|
||||
.where(SysUserPost.post_id == post_id)
|
||||
)).scalar()
|
||||
user_post_count = (
|
||||
await db.execute(select(func.count('*')).select_from(SysUserPost).where(SysUserPost.post_id == post_id))
|
||||
).scalar()
|
||||
|
||||
return user_post_count
|
||||
|
@@ -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 SysPost(Base):
|
||||
"""
|
||||
岗位信息表
|
||||
"""
|
||||
|
||||
__tablename__ = 'sys_post'
|
||||
|
||||
post_id = Column(Integer, primary_key=True, autoincrement=True, comment='岗位ID')
|
||||
|
@@ -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 PostModel(BaseModel):
|
||||
"""
|
||||
岗位信息表对应pydantic模型
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
|
||||
|
||||
post_id: Optional[int] = Field(default=None, description='岗位ID')
|
||||
@@ -47,6 +48,7 @@ class PostQueryModel(PostModel):
|
||||
"""
|
||||
岗位管理不分页查询模型
|
||||
"""
|
||||
|
||||
begin_time: Optional[str] = Field(default=None, description='开始时间')
|
||||
end_time: Optional[str] = Field(default=None, description='结束时间')
|
||||
|
||||
@@ -57,6 +59,7 @@ class PostPageQueryModel(PostQueryModel):
|
||||
"""
|
||||
岗位管理分页查询模型
|
||||
"""
|
||||
|
||||
page_num: int = Field(default=1, description='当前页码')
|
||||
page_size: int = Field(default=10, description='每页记录数')
|
||||
|
||||
@@ -65,6 +68,7 @@ class DeletePostModel(BaseModel):
|
||||
"""
|
||||
删除岗位模型
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(alias_generator=to_camel)
|
||||
|
||||
post_ids: str = Field(description='需要删除的岗位ID')
|
||||
|
@@ -1,16 +1,22 @@
|
||||
from module_admin.dao.post_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 exceptions.exception import ServiceException
|
||||
from utils.common_util import export_list2excel, CamelCaseUtil
|
||||
from module_admin.dao.post_dao import PostDao
|
||||
from module_admin.entity.vo.common_vo import CrudResponseModel
|
||||
from module_admin.entity.vo.post_vo import DeletePostModel, PostModel, PostPageQueryModel
|
||||
from utils.common_util import CamelCaseUtil, export_list2excel
|
||||
|
||||
|
||||
class PostService:
|
||||
"""
|
||||
岗位管理模块服务层
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
async def get_post_list_services(cls, query_db: AsyncSession, query_object: PostPageQueryModel, is_page: bool = False):
|
||||
async def get_post_list_services(
|
||||
cls, query_db: AsyncSession, query_object: PostPageQueryModel, is_page: bool = False
|
||||
):
|
||||
"""
|
||||
获取岗位列表信息service
|
||||
:param query_db: orm对象
|
||||
@@ -146,16 +152,16 @@ class PostService:
|
||||
"""
|
||||
# 创建一个映射字典,将英文键映射到中文键
|
||||
mapping_dict = {
|
||||
"postId": "岗位编号",
|
||||
"postCode": "岗位编码",
|
||||
"postName": "岗位名称",
|
||||
"postSort": "显示顺序",
|
||||
"status": "状态",
|
||||
"createBy": "创建者",
|
||||
"createTime": "创建时间",
|
||||
"updateBy": "更新者",
|
||||
"updateTime": "更新时间",
|
||||
"remark": "备注",
|
||||
'postId': '岗位编号',
|
||||
'postCode': '岗位编码',
|
||||
'postName': '岗位名称',
|
||||
'postSort': '显示顺序',
|
||||
'status': '状态',
|
||||
'createBy': '创建者',
|
||||
'createTime': '创建时间',
|
||||
'updateBy': '更新者',
|
||||
'updateTime': '更新时间',
|
||||
'remark': '备注',
|
||||
}
|
||||
|
||||
data = post_list
|
||||
@@ -165,7 +171,9 @@ class PostService:
|
||||
item['status'] = '正常'
|
||||
else:
|
||||
item['status'] = '停用'
|
||||
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