package com.crunii.micro.service.sysmgr.service;

import com.crunii.micro.common.dto.PageReq;
import com.crunii.micro.common.dto.PageRsp;
import com.crunii.micro.common.dto.Result;
import com.crunii.micro.domain.entity.main.TsmPost;
import com.crunii.micro.service.sysmgr.dto.post.*;
import org.springframework.lang.Nullable;

import java.util.Collection;
import java.util.List;


public interface PostService {

    /**
     * 创建职务
     *
     * @param reqVO 职务信息
     * @return 职务编号
     */
    Long createPost(PostCreateReqVO reqVO);

    /**
     * 更新职务
     *
     * @param reqVO 职务信息
     */
    void updatePost(PostUpdateReqVO reqVO);

    /**
     * 删除职务信息
     *
     * @param id 职务
     */
    void deletePost(Long id);

    /**
     * 获得职务分页列表
     *
     * @param reqVO 分页条件
     * @return 部门分页列表
     */
    PageRsp<PostRespVO> getPostPage(PageReq<PostPageReqVO> reqVO);

    /**
     * 获取职务列表
     * @return
     */
    List<PostListRspVo> getPostList();

    /**
     * 获得职务信息
     *
     * @param id 职务编号
     * @return 职务信息
     */
    PostRespVO getPost(Long id);

    /**
     * 判断职务名称是否已存在
     * @param reqVO
     * @return
     */
    Result<Boolean> getByName(PostReqVO reqVO);

    /**
     * 职务关联角色
     * @param reqVO
     * @return
     */
    Result<Boolean> doCorrelateRole(CorrelatePostReq reqVO);
}
