package com.supServer.project.service;


import com.supServer.framework.web.domain.AjaxResult;
import com.supServer.project.entity.dto.UserDto;
import com.supServer.project.entity.UserInfo;
import com.supServer.project.entity.vo.ForgotPasswordVo;
import com.supServer.project.entity.vo.UserResetPwdVo;
import com.supServer.project.entity.vo.UserUpdateVo;

public interface UserInfoService {

    UserInfo selectUserByUserName(String username);

    /**
     * 校验用户名称是否唯一
     *
     * @param userName 用户名称
     * @return 结果
     */
    String checkUserNameUnique(String userName);

    /**
     * 检查用户手机号是否唯一
     * @param phone
     * @return
     */
    String checkUserPhoneUnique(String phone);

    /**
     * 用户注册
     * @param userInfo
     * @return
     */
    int registerUser(UserInfo userInfo);

    /**
     * 找回密码
     * @param userInfo
     * @return
     */
    int resetPwd(UserInfo userInfo);




    /**
     * 重置密码
     * @param userInfoVo
     * @return
     */
    AjaxResult resetPwd(UserResetPwdVo userInfoVo);

    /***
     *@Description: 修改
     *@Param:
     *@return: int
     *@Author: Dgm
     *@date: 2022/3/31 15:25
     */
    int updateUserInfo(UserUpdateVo userUpdateVo);

    /***
     *@Description: 注销账号
     *@Param:
     *@return: int
     *@Author: Dgm
     *@date: 2022/3/31 16:29
     */
   /* int cancelUserInfo();*/

    /**
     * 根据用户id查询用户信息
     * @param userId
     * @return
     */
    UserDto getByUserId(String userId);

    /**
     * 修改登陆时间
     * @param userId
     * @return
     */
    int updateLoginTime(String userId);

    /**
     * 根据手机号获取用户信息
     * @param phone
     * @return
     */
    UserInfo selectUserByPhone(String phone);

    UserInfo selectUserByNumber(String userName);

    AjaxResult forgotPassword(ForgotPasswordVo forgotPasswordVo);
}
