package com.lesingle.creation.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lesingle.creation.entity.Role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 角色 Mapper 接口
 */
@Mapper
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 根据租户 ID 和角色编码查询角色
     *
     * @param tenantId 租户 ID
     * @param code 角色编码
     * @return 角色实体
     */
    @Select("SELECT * FROM t_auth_role WHERE tenant_id = #{tenantId} AND code = #{code} AND deleted = 0")
    Role selectByCode(@Param("tenantId") Long tenantId, @Param("code") String code);

    /**
     * 根据租户 ID 和角色编码查询角色（排除指定 ID）
     *
     * @param tenantId  租户 ID
     * @param code      角色编码
     * @param excludeId 排除的 ID
     * @return 角色实体
     */
    @Select("SELECT * FROM t_auth_role WHERE tenant_id = #{tenantId} AND code = #{code} AND id != #{excludeId} AND deleted = 0")
    Role selectByCodeExclude(@Param("tenantId") Long tenantId, @Param("code") String code, @Param("excludeId") Long excludeId);
}
