package com.ruoyi.cs.mapper;

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

import com.ruoyi.cs.domain.CsOrderMemberUser;
import com.ruoyi.cs.domain.TeamUserVO;
import org.apache.ibatis.annotations.Param;

/**
 * 使用人员信息Mapper接口
 *
 * @author cc
 * @date 2024-04-23
 */
public interface CsOrderMemberUserMapper
{
    /**
     * 查询使用人员信息
     *
     * @param memberUserId 使用人员信息主键
     * @return 使用人员信息
     */
    public CsOrderMemberUser selectCsUserInfoByMemberUserId(String memberUserId);

    /**
     * 查询使用人员信息列表
     *
     * @param csOrderMemberUser 使用人员信息
     * @return 使用人员信息集合
     */
    public List<CsOrderMemberUser> selectCsUserInfoList(CsOrderMemberUser csOrderMemberUser);

    /**
     * 新增使用人员信息
     *
     * @param csOrderMemberUser 使用人员信息
     * @return 结果
     */
    public int insertCsUserInfo(CsOrderMemberUser csOrderMemberUser);

    /**
     * 修改使用人员信息
     *
     * @param csOrderMemberUser 使用人员信息
     * @return 结果
     */
    public int updateCsUserInfo(CsOrderMemberUser csOrderMemberUser);

    /**
     * 删除使用人员信息
     *
     * @param memberUserId 使用人员信息主键
     * @return 结果
     */
    public int deleteCsUserInfoByMemberUserId(String memberUserId);

    /**
     * 批量删除使用人员信息
     *
     * @param memberUserIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCsUserInfoByMemberUserIds(String[] memberUserIds);

    /**
     * 查询用户信息
     * @param memberUserId 用户ID
     * @param email 邮箱
     * @param phone 用户电话
     * @return 结果
     */
    public CsOrderMemberUser getMemberUserInfo(@Param("memberUserId") String memberUserId,
                                               @Param("email") String email,
                                               @Param("phone") String phone);

    /**
     * 查询工单用户信息列表
     *
     * @param csOrderMemberUser 工单用户信息
     * @return 工单用户信息集合
     */
    public List<CsOrderMemberUser> selectCsOrderMemberUserList(CsOrderMemberUser csOrderMemberUser);

    /**
     * 查询管理端人员相关统计
     *
     * @param beginAt 开始时间
     * @param endAt 结束时间
     * @return 人员数量集合
     */
    public Map<String,Object> selectUserStatistics(@Param("beginAt") String beginAt, @Param("endAt") String endAt);

    /**
     * 查询工单用户、资源用户、特殊资源用户信息列表
     *
     * @param csOrderMemberUser 工单用户信息
     * @return 工单用户信息集合
     */
    public List<CsOrderMemberUser> selectAllUserListByUserType(CsOrderMemberUser csOrderMemberUser);

    /**
     * 查询团队信息列表
     *
     * @param csOrderMemberUser 用户信息
     * @return 工单用户信息集合
     */
    public List<TeamUserVO> selectTeamUserList(CsOrderMemberUser csOrderMemberUser);

    /**
     * 查询团队信息
     *
     * @param memberUserId 用户ID
     * @return 团队信息
     */
    public CsOrderMemberUser selectTeamUserInfoByMemberUserId(String memberUserId);

    /**
     * 查询团队成员列表
     *
     * @param csOrderMemberUser 用户信息
     * @return 工单用户信息集合
     */
    public List<CsOrderMemberUser> selectTeamMemberList(CsOrderMemberUser csOrderMemberUser);
}
