package com.lesingle.modules.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lesingle.common.result.PageResult;
import com.lesingle.modules.sys.dto.CreateUserDto;
import com.lesingle.modules.sys.dto.UpdateUserDto;
import com.lesingle.modules.sys.entity.SysUser;

import java.util.List;
import java.util.Map;

public interface ISysUserService extends IService<SysUser> {

    /** 创建用户 */
    Map<String, Object> createUser(CreateUserDto dto, Long tenantId);

    /** 查询用户列表 */
    PageResult<Map<String, Object>> findAll(Long page, Long pageSize, Long tenantId,
                                             String keyword, boolean isSuperTenant,
                                             String userType, Long filterTenantId,
                                             String userSource, String status);

    /** 用户统计 */
    Map<String, Object> getStats();

    /** 查询用户详情 */
    Map<String, Object> findDetail(Long id, Long tenantId, boolean isSuperTenant);

    /** 根据用户名查找（用于登录） */
    SysUser findByUsername(String username, Long tenantId);

    /** 更新用户 */
    Map<String, Object> updateUser(Long id, UpdateUserDto dto, Long tenantId);

    /** 更新用户状态 */
    void updateStatus(Long id, String status, Long operatorId);

    /** 删除用户 */
    void removeUser(Long id, Long tenantId);

    /** 查询用户权限码列表 */
    List<String> getPermissions(Long userId);

    /** 查询用户角色码列表 */
    List<String> getRoles(Long userId);
}
