package com.yfd.platform.system.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.system.domain.SysOrganization;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 系统组织框架 服务类
 * </p>
 *
 *
 * @since 2021-12-15
 */
public interface ISysOrganizationService extends IService<SysOrganization> {

    /***********************************
     * 用途说明：获取组织结构树
     * 参数说明
     *parentid      上级id
     * params       名称（根据名称查询二级）
     * 返回值说明:  组织树集合
     ***********************************/
    List<Map<String, Object>> getOrgTree(String parentid, String params);

    /***********************************
     * 用途说明：新增系统组织框架
     * 参数说明
     * sysOrganization     系统组织框架对象
     * 返回值说明:  是否新增成功
     ***********************************/
    boolean addOrg(SysOrganization sysOrganization);

    /***********************************
     * 用途说明：根据企业ID查询组织详情
     * 参数说明
     * id        企业id
     * 返回值说明:  系统组织框架对象
     ***********************************/
    List<Map<String,Object>> getOrganizationById(String id,String orgName);

    /***********************************
     * 用途说明：获取组织范围树结构
     * 参数说明
     *roleId      角色id
     * 返回值说明: 组织树集合
     ***********************************/
    List<Map<String, Object>> getOrgScopeTree(String roleId);

    /**********************************
     * 用途说明: 修改角色组织范围
     * 参数说明 roleId     角色id
     * 参数说明 orgscope   组织id集合
     * 返回值说明: boolean 是否修改成功
     ***********************************/
    boolean updateOrgScopeByRoleId(String roleId, String orgscope);

    /**********************************
    * 用途说明: 获取用户所对应的组织
    * 参数说明
    * 返回值说明: java.util.Set<java.lang.String>
    ***********************************/
    Set<String> getOrgCodeByUser(String id);

    /**********************************
     * 用途说明: 新增系统组织框架
     * 参数说明 sysOrganization
     * 返回值说明: boolean
     ***********************************/
    boolean addOrganization(SysOrganization sysOrganization);


    /**********************************
    * 用途说明: 修改系统组织框架
    * 参数说明 sysOrganization
    * 返回值说明: boolean
    ***********************************/
    boolean updateOrganization(SysOrganization sysOrganization);

    /**********************************
     * 用途说明: 设置组织是否有效
     * 参数说明 sysOrganization
     * 返回值说明: boolean
     ***********************************/
    boolean setIsValid(String id, String isvaild);

    /**********************************
    * 用途说明: 根据id删除系统组织框架
    * 参数说明 id
    * 返回值说明: boolean
    ***********************************/
    boolean deleteById(String id);
}
