package com.keyware.shandan.system.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.keyware.shandan.common.entity.Result;
import com.keyware.shandan.system.entity.SysOrg;
import com.keyware.shandan.common.service.IBaseService;
import com.keyware.shandan.system.entity.SysUser;

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

/**
 * <p>
 * 部门表 服务类
 * </p>
 *
 * @author GuoXin
 * @since 2021-05-11
 */
public interface SysOrgService extends IBaseService<SysOrg, String> {

    /**
     * 更新部门管理员
     *
     * @param orgId  部门id
     * @param leader 管理员
     */
    void setOrgLeader(String orgId, SysUser leader);

    void removeOrgLeader(String orgId);

    /**
     * 获取部门树
     *
     * @param parentId
     * @return
     */
    Result<List<SysOrg>> getOrgTree(String parentId);

    /**
     * 获取部门的所有子部门，不包含当前部门
     *
     * @param orgId
     * @return
     */
    List<SysOrg> getOrgAllChildren(String orgId);

    /**
     * 查询部门管理员
     *
     * @param orgId
     * @return
     */
    List<SysUser> getOrgAdmins(String orgId);

    List<SysOrg> tree(String parentId);

    List<SysOrg> tree(QueryWrapper<SysOrg> wrapper);

    void moveUsersToNewOrg(Collection<SysUser> users, SysOrg newOrg);
}
