package com.keao.edu.auth.service;

import com.keao.edu.auth.api.dto.SysUserInfo;
import com.keao.edu.auth.api.entity.LoginEntity;
import com.keao.edu.auth.api.entity.SysUser;
import com.keao.edu.common.service.BaseService;
import com.keao.edu.im.api.entity.ImUserModel;

public interface SysUserService extends BaseService<Integer, SysUser> {

	/**
	 * 根据用户名查询对象
	 * @param username
	 * @return
	 */
	SysUser queryByUsername(String username);

	/**
	 * 根据手机号查询对象
	 * @param phone
	 * @return
	 */
	SysUser queryByPhone(String phone);

	/**
	 * 根据手机号查询对象
	 * @param phone
	 * @return
	 */
	SysUser queryByPhoneAndClient(String phone,String client);

	/**
	 * 根据用户名获取系统用户详细信息
	 * @param username
	 * @return
	 */
	SysUserInfo queryUserInfoByUsername(String username);

	/**
	 * 根据手机号获取系统用户详细信息
	 * @param phone
	 * @return
	 */
	SysUserInfo queryUserInfoByPhone(String phone,String clientId);

	/**
	 * 根据手机号获取系统用户详细信息
	 * @param phone
	 * @return
	 */
	SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client);

	/**
	 * 删除指定用户
	 * @param id
	 * @return
	 */
	boolean deleteById(Integer id);

	/**
	 * 根据用户手机号修改密码
	 * @param mobile
	 * @param password
	 */
	void updatePassword(String mobile, String password);

	/**
	 * 新增用户
	 * @param sysUser
	 * @return
	 */
    Integer add(SysUser sysUser);

	/**
	 * 获取用户基本信息
	 * @param userId
	 * @return
	 */
	ImUserModel getBasic(Integer userId);

	/**
	 * 修改用户基本信息
	 * @param sysUser
	 */
    void updateBaseInfo(SysUser sysUser);

	/**
	 * 获取用户基本信息
	 * @param userId
	 * @return
	 */
	SysUser queryUserInfo(Integer userId);

	/**
	 * 刷新token
	 * @param sysUser
	 */
    void refreshImToken(SysUser sysUser);

	/**
	 * 学员注册
	 * @return
	 */
	SysUserInfo initUser(LoginEntity loginEntity);

	/**
	 * 获取用户tenantId
	 * @param clientId
	 * @param userId
	 * @return
	 */
	Integer queryUserTenantId(String clientId, Integer userId);

	/**
	 * 获取用户organId
	 * @param clientId
	 * @param userId
	 * @return
	 */
    Integer queryUserOrganId(String clientId, Integer userId);
}