package go.kr.project.system.user.service.impl;

import go.kr.project.system.user.mapper.UserGroupMapper;
import go.kr.project.system.user.model.UserGroupPopupSearchVO;
import go.kr.project.system.user.service.UserGroupService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 사용자 그룹 관리 서비스 구현 클래스
 * 그룹, 역할, 메뉴 관련 비즈니스 로직을 처리합니다.
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class UserGroupServiceImpl implements UserGroupService {

    private final UserGroupMapper userGroupMapper;

    /**
     * 그룹 목록 조회
     * 
     * @param searchVO 검색 조건을 담은 VO 객체
     * @return 그룹 목록
     */
    @Override
    public List<go.kr.project.system.group.model.GroupVO> selectGroupList(UserGroupPopupSearchVO searchVO) {
        return userGroupMapper.selectGroupList(searchVO);
    }

    /**
     * 그룹별 역할 목록 조회
     * 
     * @param searchVO 검색 조건을 담은 VO 객체 (groupId 필수)
     * @return 역할 목록
     */
    @Override
    public List<go.kr.project.system.auth.model.GroupRoleVO> selectGroupRoleList(UserGroupPopupSearchVO searchVO) {
        return userGroupMapper.selectGroupRoleList(searchVO);
    }

    /**
     * 역할별 메뉴 목록 조회
     * 
     * @param searchVO 검색 조건을 담은 VO 객체 (roleId 필수)
     * @return 메뉴 목록
     */
    @Override
    public List<go.kr.project.system.auth.model.RoleMenuVO> selectRoleMenuList(UserGroupPopupSearchVO searchVO) {
        return userGroupMapper.selectRoleMenuList(searchVO);
    }
}