package cn.iocoder.yudao.module.system.api.permission;

import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 角色 API 实现类
 *
 * @author 芋道源码
 */
@Service
public class RoleApiImpl implements RoleApi {

    @Resource
    private RoleService roleService;

    @Override
    public void validRoleList(Collection<Long> ids) {
        roleService.validateRoleList(ids);
    }

    /**
     * 查询角色列表
     * @author 小李
     * @date 15:03 2024/8/14
     **/
    @Override
    public List<RoleReqDTO> getRoleList(){
        List<RoleDO> roleList = roleService.getRoleList();
        List<RoleReqDTO> result = roleList.stream().map(item -> {
            RoleReqDTO roleReqDTO = new RoleReqDTO();
            BeanUtil.copyProperties(item, roleReqDTO);
            return roleReqDTO;
        }).collect(Collectors.toList());
        return result;
    }

    @Override
    public RoleReqDTO getRoleInfo(String code) {
        RoleDO roleDO = roleService.queryRole(code);
        RoleReqDTO roleReqDTO =new RoleReqDTO();
        roleReqDTO.setCode(roleDO.getCode());
        roleReqDTO.setId(roleDO.getId());
        roleReqDTO.setName(roleDO.getName());
        return roleReqDTO;
    }

    /**
     * 查询某个角色的用户
     *
     * @param code
     * @author zcy
     */
    @Override
    public List<UserDTO> selectUserListByRoleCode(Long tenantId,String code) {
        return roleService.selectByRoleCode(tenantId,code);
    }
}
