package com.jy.system.service;

import com.jy.system.model.dto.EditPwdDto;
import com.jy.system.model.dto.LoginDto;
import com.jy.system.model.dto.UserInfoDto;
import com.jy.system.model.vo.CaptchaImageVo;
import com.jy.system.model.vo.LoginInfoVo;
import com.jy.system.model.vo.UserInfoVo;

import java.util.Set;

public interface AuthService {

    /**
     * 生成验证码
     *
     * @return 验证码信息
     */
    CaptchaImageVo getCaptchaImage();

    /**
     * 登录
     *
     * @param dto 登录信息
     * @return jwt
     */
    LoginInfoVo login(LoginDto dto);

    /**
     * 退出登录
     */
    void logout();

    /**
     * 获取基本信息
     *
     * @return 基本信息
     */
    LoginInfoVo getLoginInfo();

    /**
     * 获取用户信息
     *
     * @return 用户信息
     */
    UserInfoVo getUserInfo();

    /**
     * 用户修改基本信息
     *
     * @param dto 用户信息
     */
    void editUserInfo(UserInfoDto dto);

    /**
     * 用户修改密码
     *
     * @param dto 新旧密码
     */
    void editPwd(EditPwdDto dto);

    /**
     * 获取可访问数据用户Id集合
     *
     * @return 可访问数据用户Id集合
     */
    Set<Long> getUserPermissionSet();

}
