package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.store.LifeSysRole;

import java.util.List;

/**
 * 平台角色信息表 服务类
 *
 * @author system
 * @since 2025-01-XX
 */
public interface LifeSysRoleService extends IService<LifeSysRole> {

    /**
     * 分页查询角色列表
     *
     * @param page     页码
     * @param size     页容
     * @param roleName 角色名称（支持模糊查询）
     * @param roleKey  角色权限字符串（支持模糊查询）
     * @param status   角色状态（0正常 1停用）
     * @return IPage<LifeSysRole>
     */
    IPage<LifeSysRole> getRolePage(int page, int size, String roleName, String roleKey, String status);

    /**
     * 根据ID查询角色详情
     *
     * @param roleId 角色ID
     * @return LifeSysRole
     */
    LifeSysRole getRoleById(Long roleId);

    /**
     * 新增角色
     *
     * @param role 角色信息
     * @return boolean
     */
    boolean saveRole(LifeSysRole role);

    /**
     * 修改角色
     *
     * @param role 角色信息
     * @return boolean
     */
    boolean updateRole(LifeSysRole role);

    /**
     * 删除角色（逻辑删除）
     *
     * @param roleId 角色ID
     * @return boolean
     */
    boolean deleteRole(Long roleId);

    /**
     * 修改角色状态
     *
     * @param roleId 角色ID
     * @param status 角色状态（0正常 1停用）
     * @return boolean
     */
    boolean updateStatus(Long roleId, String status);

    /**
     * 查询所有正常状态的角色列表
     *
     * @return List<LifeSysRole>
     */
    List<LifeSysRole> getAllNormalRoles();

     /**
      * 根据用户ID查询角色
      *
      * @param userId 用户ID
      * @return List<LifeSysRole> 角色列表
      */
    List<LifeSysRole> getRoleByUserId(Long userId);
}

