package com.xhpc.user.mapper;

import com.xhpc.system.api.domain.SysUser;
import com.xhpc.user.domain.XhpcOperator;
import org.apache.ibatis.annotations.Param;

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

/**
 * 运营商信息 数据层
 *
 * @author ruoyi
 */
public interface XhpcOperatorMapper {

    /**
     * 修改运营商信息
     *
     * @param xhpcOperator 运营商信息
     * @return 结果
     */
    public int update(XhpcOperator xhpcOperator);

    /**
     * 新增运营商信息
     *
     * @param xhpcOperator 运营商信息
     * @return 结果
     */
    public int insert(XhpcOperator xhpcOperator);

    /**
     * 批量删除运营商信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteByIds(String[] ids);

    /**
     * 校验账号是否唯一
     *
     * @param phone 用户手机号
     * @return 结果
     */
    public XhpcOperator checkAccountUnique(@Param("phone") String phone);

    /**
     * 查询运营商详情
     *
     * @param operatorId 运营商id
     * @return 结果
     */
    public Map<String, Object> info(@Param("operatorId") Long operatorId);

    /**
     * 获取运营商分页列表
     *
     * @param name         运营商名称
     * @param contactName  联系人
     * @param contactPhone 联系人电话
     * @return 结果
     */
    public List<Map<String, Object>> selectOperatorList(@Param("operatorId") Long operatorId, @Param("name") String name, @Param("contactName") String contactName, @Param("contactPhone") String contactPhone, @Param("createTimeStart") String createTimeStart, @Param("createTimeEnd") String createTimeEnd,@Param("tenantId")String tenantId,@Param("type")Integer type,@Param("logOperatorId")Long logOperatorId);

    /**
     * 通过用户ID删除用户和角色关联
     *
     * @param userId 用户ID
     * @return 结果
     */
    public int deleteUserRoleByUserId(@Param("userId") Long userId);

    /**
     * 通过用户ID删除用户和岗位关联
     *
     * @param userId 用户ID
     * @return 结果
     */
    public int deleteUserPostByUserId(@Param("userId") Long userId);

    /**
     * 删除角色信息
     *
     * @param roleName 角色名称
     * @return 结果
     */
    public int deleteRoleByName(@Param("roleName") String roleName);

    /**
     * 通过用户ID删除用户
     *
     * @param sysUser 用户
     * @return 结果
     */
    public int deleteUserById(SysUser sysUser);

    /**
     * 通过运营商ID查询用户
     *
     * @param operatorId 运营商ID
     * @return 结果
     */
    public SysUser getUserByOperatorId(@Param("operatorId") Long operatorId);

    /**
     * 查询运营商列表
     *
     * @return 结果
     */
    public List<Map<String, Object>> getOperatorId();

    List<XhpcOperator> selectListByTenantId(@Param("tenantId")String tenantId);
}
