package com.xkrs.service;

import com.xkrs.model.entity.SysUserEntity;
import com.xkrs.model.qo.SysUserQo;
import com.xkrs.model.qo.UserUpdate;
import com.xkrs.model.vo.SysUserVo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 系统用户服务接口
 * @author tajochen
 */
public interface SysUserService {

    /**
     * 检查用户名
     * @param userName
     * @return
     */
    boolean checkUserName(String userName);

    /**
     * 获取所有用户
     * @return
     */
    //Iterable<SysUserVo> getAllSysUser();

    /**
     * 保存用户
     * @param sysUserQo
     */
    void addUser(SysUserQo sysUserQo);

    /**
     * 获取系统用户实体根据用户名
     * @param userName
     * @return
     */
    SysUserEntity getSysUserByUserName(String userName);

    /**
     * 获取用户信息
     * @param userName
     * @return
     */
    SysUserVo selectUserByUserName(String userName);

    /**
     * 用户登录更新
     * @param userName
     * @param ipAddress
     * @return
     */
    int updateSysUserLogin(String userName, String ipAddress);

    /**
     * 系统用户更新
     * @param sysUserQo
     * @return
     */
    int updateSysUser(SysUserQo sysUserQo);

    /**
     * 软删除系统用户
     * @param id
     * @return
     */
    int softDeleteGeneralUser(Integer id);

    /**
     * 用户绑定手机号
     * @param userId
     * @param phone
     * @return
     */
    String bindPhone(Integer userId, String phone);

    /**
     * 手机号登录
     * @param phone
     * @param verificationCode
     * @return
     */
    String loginByPhone(String phone, String verificationCode);

    /**
     * 用户完善个人信息
     * @param
     * @param
     * @param userId
     * @return
     */
    String updateUserByUserId(String avatar, String nickName, Integer userId) throws IOException;

    /**
     * 启用
     * @param userId
     */
    void updateEnable(Integer userId);

    /**
     * 禁用
     * @param userId
     */
    void updateDisable(Integer userId);

    /**
     * 用户修改密码
     * @param oldPassword
     * @param newPassword
     * @param confirmPassword
     * @param userName
     * @param sysUserEntity
     * @return
     */
    String updatePassword(String oldPassword,String newPassword,String confirmPassword,String userName,SysUserEntity sysUserEntity);
}
