package com.qiaoba.api.system.service;

import com.qiaoba.api.system.entity.SysUser;
import com.qiaoba.api.system.entity.dto.SysUserDto;

import java.util.List;
import java.util.Set;

/**
 * 用户对外暴露接口
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023-04-23 20:33:43
 */
public interface SysUserApiService {

    /**
     * 新增或更新用户
     *
     * @param dto      dto
     * @param isUpdate 是->更新
     * @return > 0 = success
     */
    int saveOrUpdate(SysUserDto dto, Boolean isUpdate);

    /**
     * 检查是否允许新增或修改
     *
     * @param sysUser sysUser
     */
    void checkAddOrUpdate(SysUser sysUser);

    /**
     * 查询用户
     *
     * @param userId      userId
     * @param hasPassword 是否需要密码
     * @return SysUser
     */
    SysUser selectById(String userId, Boolean hasPassword);

    /**
     * 查询用户
     *
     * @param username 登录账号
     * @return SysUser
     */
    SysUser selectByUsername(String username);

    /**
     * 批量删除
     *
     * @param userIds userIds
     * @return 结果
     */
    int deleteByIds(List<String> userIds);

    /**
     * 用户绑定角色
     *
     * @param userId   userId
     * @param roleIds  roleIds
     * @param isUpdate 是否是更新操作
     */
    void handleUserRole(String userId, Set<String> roleIds, boolean isUpdate);

    /**
     * 用户更改
     *
     * @param sysUser sysUser
     * @return 结果
     */
    int updateById(SysUser sysUser);
}
