package com.njcn.msgpush.module.system.service.dept;

import com.njcn.msgpush.module.system.controller.admin.dept.vo.orgleader.OrgLeaderRelationSaveReqVO;
import com.njcn.msgpush.module.system.dal.dataobject.dept.OrgLeaderRelationDO;
import com.njcn.msgpush.module.system.dal.dataobject.user.AdminUserDO;

import java.util.List;

/**
 * 组织负责人关系 Service
 */
public interface OrgLeaderRelationService {

    /**
     * 创建组织负责人关系
     *
     * @param createReqVO 创建请求
     * @return 负责人关系 ID
     */
    Long createOrgLeaderRelation(OrgLeaderRelationSaveReqVO createReqVO);

    /**
     * 更新组织负责人关系
     *
     * @param updateReqVO 更新请求
     */
    void updateOrgLeaderRelation(OrgLeaderRelationSaveReqVO updateReqVO);

    /**
     * 删除组织负责人关系
     *
     * @param id 关系 ID
     */
    void deleteOrgLeaderRelation(Long id);

    /**
     * 查询指定组织下的负责人关系列表
     *
     * @param deptId 组织 ID
     * @return 负责人关系列表
     */
    List<OrgLeaderRelationDO> getOrgLeaderRelationListByDeptId(Long deptId);

    /**
     * 查询组织负责人候选用户
     *
     * @param deptId 组织 ID
     * @return 候选用户列表
     */
    List<AdminUserDO> getCandidateUsersByDeptId(Long deptId);

}
