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