perf: 优化岗位管理模块service层及异常处理
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from module_admin.dao.post_dao import *
|
||||
from module_admin.entity.vo.common_vo import CrudResponseModel
|
||||
from config.constant import CommonConstant
|
||||
from exceptions.exception import ServiceException
|
||||
from utils.common_util import export_list2excel, CamelCaseUtil
|
||||
|
||||
|
||||
@@ -20,6 +22,34 @@ class PostService:
|
||||
|
||||
return post_list_result
|
||||
|
||||
@classmethod
|
||||
async def check_post_name_unique_services(cls, query_db: AsyncSession, page_object: PostModel):
|
||||
"""
|
||||
检查岗位名称是否唯一service
|
||||
:param query_db: orm对象
|
||||
:param page_object: 岗位对象
|
||||
:return: 校验结果
|
||||
"""
|
||||
post_id = -1 if page_object.post_id is None else page_object.post_id
|
||||
post = await PostDao.get_post_detail_by_info(query_db, PostModel(postName=page_object.post_name))
|
||||
if post and post.post_id != post_id:
|
||||
return CommonConstant.NOT_UNIQUE
|
||||
return CommonConstant.UNIQUE
|
||||
|
||||
@classmethod
|
||||
async def check_post_code_unique_services(cls, query_db: AsyncSession, page_object: PostModel):
|
||||
"""
|
||||
检查岗位编码是否唯一service
|
||||
:param query_db: orm对象
|
||||
:param page_object: 岗位对象
|
||||
:return: 校验结果
|
||||
"""
|
||||
post_id = -1 if page_object.post_id is None else page_object.post_id
|
||||
post = await PostDao.get_post_detail_by_info(query_db, PostModel(postCode=page_object.post_code))
|
||||
if post and post.post_id != post_id:
|
||||
return CommonConstant.NOT_UNIQUE
|
||||
return CommonConstant.UNIQUE
|
||||
|
||||
@classmethod
|
||||
async def add_post_services(cls, query_db: AsyncSession, page_object: PostModel):
|
||||
"""
|
||||
@@ -28,20 +58,19 @@ class PostService:
|
||||
:param page_object: 新增岗位对象
|
||||
:return: 新增岗位校验结果
|
||||
"""
|
||||
post = await PostDao.get_post_detail_by_info(query_db, PostModel(postName=page_object.post_name))
|
||||
if post:
|
||||
result = dict(is_success=False, message='岗位名称已存在')
|
||||
if not await cls.check_post_name_unique_services(query_db, page_object):
|
||||
raise ServiceException(message=f'新增岗位{page_object.post_name}失败,岗位名称已存在')
|
||||
elif not await cls.check_post_code_unique_services(query_db, page_object):
|
||||
raise ServiceException(message=f'新增岗位{page_object.post_name}失败,岗位编码已存在')
|
||||
else:
|
||||
try:
|
||||
await PostDao.add_post_dao(query_db, page_object)
|
||||
await query_db.commit()
|
||||
result = dict(is_success=True, message='新增成功')
|
||||
return CrudResponseModel(is_success=True, message='新增成功')
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
raise e
|
||||
|
||||
return CrudResponseModel(**result)
|
||||
|
||||
@classmethod
|
||||
async def edit_post_services(cls, query_db: AsyncSession, page_object: PostModel):
|
||||
"""
|
||||
@@ -51,24 +80,22 @@ class PostService:
|
||||
:return: 编辑岗位校验结果
|
||||
"""
|
||||
edit_post = page_object.model_dump(exclude_unset=True)
|
||||
post_info = await cls.post_detail_services(query_db, edit_post.get('post_id'))
|
||||
if post_info:
|
||||
if post_info.post_name != page_object.post_name:
|
||||
post = await PostDao.get_post_detail_by_info(query_db, PostModel(postName=page_object.post_name))
|
||||
if post:
|
||||
result = dict(is_success=False, message='岗位名称已存在')
|
||||
return CrudResponseModel(**result)
|
||||
try:
|
||||
await PostDao.edit_post_dao(query_db, edit_post)
|
||||
await query_db.commit()
|
||||
result = dict(is_success=True, message='更新成功')
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
raise e
|
||||
post_info = await cls.post_detail_services(query_db, page_object.post_id)
|
||||
if post_info.post_id:
|
||||
if not await cls.check_post_name_unique_services(query_db, page_object):
|
||||
raise ServiceException(message=f'修改岗位{page_object.post_name}失败,岗位名称已存在')
|
||||
elif not await cls.check_post_code_unique_services(query_db, page_object):
|
||||
raise ServiceException(message=f'修改岗位{page_object.post_name}失败,岗位编码已存在')
|
||||
else:
|
||||
try:
|
||||
await PostDao.edit_post_dao(query_db, edit_post)
|
||||
await query_db.commit()
|
||||
return CrudResponseModel(is_success=True, message='更新成功')
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
raise e
|
||||
else:
|
||||
result = dict(is_success=False, message='岗位不存在')
|
||||
|
||||
return CrudResponseModel(**result)
|
||||
raise ServiceException(message='岗位不存在')
|
||||
|
||||
@classmethod
|
||||
async def delete_post_services(cls, query_db: AsyncSession, page_object: DeletePostModel):
|
||||
@@ -82,15 +109,17 @@ class PostService:
|
||||
post_id_list = page_object.post_ids.split(',')
|
||||
try:
|
||||
for post_id in post_id_list:
|
||||
post = await cls.post_detail_services(query_db, int(post_id))
|
||||
if (await PostDao.count_user_post_dao(query_db, int(post_id))) > 0:
|
||||
raise ServiceException(message=f'{post.post_name}已分配,不能删除')
|
||||
await PostDao.delete_post_dao(query_db, PostModel(postId=post_id))
|
||||
await query_db.commit()
|
||||
result = dict(is_success=True, message='删除成功')
|
||||
return CrudResponseModel(is_success=True, message='删除成功')
|
||||
except Exception as e:
|
||||
await query_db.rollback()
|
||||
raise e
|
||||
else:
|
||||
result = dict(is_success=False, message='传入岗位id为空')
|
||||
return CrudResponseModel(**result)
|
||||
raise ServiceException(message='传入岗位id为空')
|
||||
|
||||
@classmethod
|
||||
async def post_detail_services(cls, query_db: AsyncSession, post_id: int):
|
||||
@@ -101,7 +130,10 @@ class PostService:
|
||||
:return: 岗位id对应的信息
|
||||
"""
|
||||
post = await PostDao.get_post_detail_by_id(query_db, post_id=post_id)
|
||||
result = PostModel(**CamelCaseUtil.transform_result(post))
|
||||
if post:
|
||||
result = PostModel(**CamelCaseUtil.transform_result(post))
|
||||
else:
|
||||
result = PostModel(**dict())
|
||||
|
||||
return result
|
||||
|
||||
|
Reference in New Issue
Block a user