package com.sckw.system.dao;

import com.sckw.system.model.KwsDept;
import com.sckw.system.model.KwsUser;
import com.sckw.system.model.KwsUserDept;
import com.sckw.system.model.vo.res.KwsUserResVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * 用户
 * @author zk
 * @date 2023-05-31
 */
@Mapper
public interface KwsUserDao {
    /**
     * 新增
     * @param record
     * @return
     */
    int insert(KwsUser record);

    /**
     * 更新
     * @param record
     * @return
     */
    int update(KwsUser record);

    /**
     * 详情查询
     * @param id
     * @return
     */
    KwsUser selectByKey(Long id);

    /**
     * 详情查询
     * @param list
     * @return
     */
    List<KwsUser> selectByKeys(List<Long> list);

    /**
     * 查询
     * @param params
     * @return
     * @throws Exception
     */
    List<KwsUserResVo> findPage(Map<String, Object> params);

    /**
     * 查询
     * @param params
     * @return
     */
    List<KwsUserResVo> findList(Map<String, Object> params);

    /**
     * 根据用户id查用户机构
     * @param userId
     * @return
     */
    List<KwsUserDept> queryUserDeptByUserId(Long userId);

    /**
     * 根据id查机构
     * @param list
     * @return
     */
    List<KwsDept> queryDeptByIds(List<Long> list);

    /**
     * @param entId 企业id
     * @return KwsUser
     * @desc: 根据企业id查用户
     * @author: czh
     * @date: 2023/6/26
     */
    List<KwsUser> selectByEntId(Long entId);

    /**
     * @param roleIdList 角色id集合
     * @return KwsUser
     * @desc: 根据角色查用户
     * @author: czh
     * @date: 2023/7/21
     */
    List<KwsUser> selectByRoleIds(@Param(value = "roleIdList") List<Long> roleIdList);

    /**
     * 根据用户姓名模糊查用户信息
     * @param name 用户姓名
     * @return list
     */
    List<KwsUser> getUserByName(String name);

    /**
     * @param deptIds 机构id
     * @return KwsUser
     * @desc: 查机构下的用户
     * @author: czh
     * @date: 2023/9/4
     */
    List<KwsUser> selectByDeptIds(@Param(value = "list") List<Long> deptIds);
}
