package com.jiayue.ssi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jiayue.ssi.entity.SysApprove;
import com.jiayue.ssi.entity.SysUser;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
* 用户管理接口
* @author xsl
* @date 2023/2/16
*/
public interface SysUserService extends IService<SysUser> {
    /**
    * 获取所有用户
    * @return  List<SysUser>
    */
    List<SysUser> queryAllUsers();
    /**
     * 保存用户
     * @param sysUser
     * @return boolean
     */
    boolean saveUser(SysUser sysUser);
    /**
     * 更新用户
     * @param sysUser
     * @return boolean
     */
    boolean updateUser(SysUser sysUser);
    /**
     * 删除用户
     * @param id
     * @return
     */
    boolean deleteUser(String id);
    /**
     * 根据账号查找
     * @param username
     * @return SysUser
     */
    SysUser queryUserName(String username);
    /**
     * 根据邮箱查找
     * @param mailbox
     * @return SysUser
     */
    SysUser queryMailBox(String mailbox);
    /**
     * 删除用户
     * @param sysUser
     * @return
     */
    boolean removeUserById(SysUser sysUser);
    /**
     * 初始/重置密码
     * @param id            主键id
     * @param initPassword  初始密码
     * @return
     */
    boolean resetPassword(Integer id,String initPassword,String checkPassword,String bakPassword);
    /**
     * 解锁用户
     * @param id
     * @return
     */
    boolean relockUserById(Integer id,String expDate);
    /**
     * 用户授权角色
     *
     * @param userId 用户ID
     * @param roleId 角色组
     */
    int insertUserAuth(Long userId, Long roleId);
    /**
     * 通过角色ID查找用户
     * @param roleId 角色Id
     * @return
     */
    List<SysUser> selectUserByRole(String roleId);
    /**
     * 获取全部用户数据，并且字段解密后的
     * @return
     */
    List<SysUser> queryAllUserByDecrypt();
    /**
     * 新增用户
     * @param id
     * @param sysApprove
     * @return
     */
    boolean addUserByApprove(Long id, SysApprove sysApprove);
}
