|
|
@ -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) |
|
|
|
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() |
|
|
|
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='岗位不存在') |
|
|
|
|
|
|
|
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) |
|
|
|
if post: |
|
|
|
result = PostModel(**CamelCaseUtil.transform_result(post)) |
|
|
|
else: |
|
|
|
result = PostModel(**dict()) |
|
|
|
|
|
|
|
return result |
|
|
|
|
|
|
|