/**
 * Copyright 2018 人人开源 https://www.renren.io
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.mybatis.entity.DataScope;
import com.epmet.dto.StaffRoleDTO;
import com.epmet.dto.form.CommonUserFormDTO;
import com.epmet.dto.form.CustomerStaffRoleListFormDTO;
import com.epmet.dto.form.GetRoleKeyListFormDTO;
import com.epmet.dto.form.GridStaffFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.StaffRoleEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
 * 工作人员-角色关系表
 *
 * @author generator generator@elink-cn.com
 * @since v1.0.0 2020-04-22
 */
@Mapper
public interface StaffRoleDao extends BaseDao {
    /**
     * 查询具有某角色的staff列表
     * @param roleKey
     * @param orgId
     * @return
     */
    //@DataFilter(tableAliases = { "sr" }, gridIdArgName = "gridId", deptIdArgName = "deptId")
    List listStaffIdsByRoleKeyAndOrgId(@Param("roleKey") String roleKey, @Param("orgId") String orgId,
                                                              @Param("dataScope") DataScope dataScope);
    /**
     * 删除工作人员权限
     * @param dto
     * @return
     */
    boolean delStaffRoles(StaffRoleDTO dto);
    /**
     * @Description 得到指定客户下的某个用户的全部角色
     * @Param getCustomerId :: getUserId
     * @return StaffRolesResultDTO
     * @Author wangc
     * @Date 2020.04.26 11:01
     **/
    //@DataFilter(tableAliases = { "role" })
    StaffRolesResultDTO getStaffRoles(CommonUserFormDTO commonUserFormDTO);
    /**
     * @Description 查询特定身份的员工Id
     * @param roleKeys
     * @param userIds
     * @param customerId
     * @author wangc
     * @date 2020.04.29 23:38
    **/
    List selectSpecificRolesStaffs(@Param("roleKeys")List roleKeys,@Param("userIds")List userIds,@Param("customerId")String customerId);
    /**
     * @param staffIdList
     * @return
     * @Author sun
     * @Description 根据staffId集合查询人员拥有的所有角色信息
     **/
    List  selectStaffRoleList(@Param("staffIdList") List staffIdList);
    /**
     * @Description 根据客户Id和staffId查询一个员工在指定客户下的角色列表
     * @Author sun
     **/
    List selectCustomerStaffRoleList(CustomerStaffRoleListFormDTO formDTO);
    /**
     * 根据staffId查询人员拥有的所有角色信息
     * @author zhaoqifeng
     * @date 2020/6/2 15:54
     * @param staffId
     * @return java.util.List
     */
    List selectStaffRoles(@Param("staffId") String staffId);
    List listStaffRoleEntytiesByStaffIdAndOrgId(@Param("agencyId") String agencyId, @Param("staffId") String staffId);
    /**
     * 根据用户id、角色id,查询 工作人员-角色关系表
     *
     * @param staffId
     * @param roleId
     * @return com.epmet.dto.StaffRoleDTO
     * @Author zhangyong
     * @Date 10:45 2020-08-25
     **/
    StaffRoleDTO selectStaffRoleByStaffIdAndRoleId(@Param("staffId") String staffId, @Param("roleId") String roleId);
    /**
     * 更改角色所属组织
     * @author zhaoqifeng
     * @date 2020/8/31 10:33
     * @param dto
     * @return void
     */
    void updateStaffRoleOrgId(StaffRoleDTO dto);
    /**
     * @param  formDTO
     * @return
     * @Author sun
     * @Description  工作端-查询用户角色key列表
     **/
    List selectStaffRoleKeyList(GetRoleKeyListFormDTO formDTO);
    /**
     * @Description  查询是网格员的人
     * @Param forms
     * @author zxc
     * @date 2021/6/8 4:53 下午
     */
    List staffGridRole(@Param("forms") List forms);
    /**
     * @Description  查询角色
     * @Param userIds
     * @author zxc
     * @date 2021/6/15 3:51 下午
     */
    List getRolesByDB(@Param("userId")String userId);
    /**
     * @Description  查询所有用户角色
     * @Param
     * @author zxc
     * @date 2021/6/15 5:54 下午
     */
    List selectAllUserRoles();
    /**
     * 根据角色,查询里面的人,去重
     *
     * @param roleIds
     * @param customerId
     * @return  java.util.Set
     * @author yinzuomei
     * @date 2021/8/19 11:16 上午
     */
    Set selectRoleStaffIds(@Param("customerId") String customerId,@Param("roleIds") Set roleIds);
    /**
     * @Author sun
     * @Description 【事件】网格员服务电话
     **/
    List staffRoleList(@Param("staffIds") List staffIds);
    /**
     * desc: 条件获取工作人员list
     *
     * @param formDTO
     * @return java.util.List
     * @author LiuJanJun
     * @date 2022/1/17 2:45 下午
     */
    List getStaffList(GridStaffFormDTO formDTO);
}