package cn.meowrain.aioj.backend.userservice.service;

import cn.meowrain.aioj.backend.userservice.dao.entity.User;

import cn.meowrain.aioj.backend.userservice.dto.req.ChangePasswordRequestDTO;
import cn.meowrain.aioj.backend.userservice.dto.req.UserProfileUpdateRequestDTO;
import cn.meowrain.aioj.backend.userservice.dto.req.UserRegisterRequestDTO;
import cn.meowrain.aioj.backend.userservice.dto.resp.UserAuthRespDTO;
import cn.meowrain.aioj.backend.userservice.dto.resp.UserProfileRespDTO;
import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<User> {

	/**
	 * 用户注册
	 * @param request
	 * {@link cn.meowrain.aioj.backend.userservice.dto.req.UserRegisterRequestDTO}
	 * @return {@link Long}
	 */
	Long userRegister(UserRegisterRequestDTO request);

	/**
	 * 根据用户账号查找用户认证信息
	 * @param userAccount
	 * @return
	 */
	UserAuthRespDTO findAuthInfoByUserAccount(String userAccount);

	/**
	 * 根据用户id查找用户认证信息
	 */
	UserAuthRespDTO findAuthInfoByUserId(Long userId);


	/**
	 * 发送邮箱验证码
	 */
	void sendEmailCode(String email);

	/**
	 * 绑定邮箱
	 */
	void bindEmail(String email, String code);

	/**
	 * 解绑邮箱
	 */
	void unbindEmail();

	/**
	 * 设置用户头像
	 * @param fileId
	 * @return
	 */
    void setProfileAvatar(Long fileId);

	/**
	 * 修改密码
	 */
    void changePassword(ChangePasswordRequestDTO dto);

	/**
	 * 更新用户个人资料
	 */
	void updateUserProfile(UserProfileUpdateRequestDTO dto);

	/**
	 * 获取用户个人资料
	 */
	UserProfileRespDTO getUserProfile();
}
