package com.uas.platform.b2b.dao;

import com.uas.platform.b2b.model.Role;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface RoleDao extends JpaRepository<Role, Long> {

	/**
	 * 查询企业角色
	 *
	 * @param enUU 企业UU
	 * @return
	 */
	@Query("from Role r where r.enUU = :enUU order by id")
	List<Role> findByEnUU(@Param("enUU") long enUU);

	/**
	 * 按角色描述查找角色
	 * 
	 * @param enUU 企业UU
	 * @param desc 角色描述
	 * @return
	 */
	List<Role> findByEnUUAndDesc(Long enUU, String desc);

	/**
	 * 查询企业默认角色
	 *
	 * @param enUU 企业UU
	 * @param yes 是否默认
	 * @return
	 */
    List<Role> findByEnUUAndIssys(Long enUU, short yes);

	/**
	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理<br>
	 *
	 * 分配客户需要
	 *
	 * @param enUU 企业UU
	 * @param userUU 用户UU
	 * @param roles 角色
	 * @return
	 */
	@Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enUU and u.user_uu = :userUU and r.role_name IN (:roles)", nativeQuery = true)
	Double findByEnUUAndUserUU(@Param("enUU") Long enUU, @Param("userUU") Long userUU, @Param("roles") List<String> roles);

	/**
	 * 查询角色表的INDEX值
	 *
	 * @param enUU
	 * @return
	 */
	@Query(value = "select IFNULL(max(role_index), 0) from sec$roles where role_enuu = :enUU", nativeQuery = true)
	Long findIndexByEnUU(@Param("enUU") Long enUU);
}
