package com.ema.admin.modules.system.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.ema.admin.modules.system.entity.SysUser;
import com.ema.admin.modules.system.vo.SysUserInfoVo;
import com.ema.admin.modules.system.vo.SysUserQueryVo;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * 系统用户信息表 服务层。
 *
 * @author LIJIAN
 * @since 2026-03-23
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 根据账号获取用户信息
     * @param account 账号
     * @return 用户信息
     */
    SysUser getByAccount(@NotBlank(message = "账号不能为空") String account);

    /**
     * 保存用户角色关联
     * @param userId 用户ID
     * @param roleId 角色ID
     */
    void saveUserRole(String userId, String roleId);

    /**
     * 分页查询系统用户信息表。
     *
     * @param queryVo 查询参数
     * @return 分页对象
     */
    Page<SysUserInfoVo> page(SysUserQueryVo queryVo);

    /**
     * 给用户分配角色
     * @param userId 用户ID
     * @param roleIds 角色ID列表
     */
    void assignRolesToUser(String userId, List<String> roleIds);

    /**
     * 分页查询系统用户信息表。
     *
     * @param queryVo 查询参数
     * @return 分页对象
     */
    Page<SysUser> pageSysUser(SysUserQueryVo queryVo);
}
