diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/common/dto/ApiResponse.java b/apps/user-service/src/main/java/com/gltkorea/icebang/common/dto/ApiResponse.java new file mode 100644 index 00000000..7cf5edb3 --- /dev/null +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/common/dto/ApiResponse.java @@ -0,0 +1,38 @@ +package com.gltkorea.icebang.common.dto; + +import org.springframework.http.HttpStatus; + +import lombok.Data; + +@Data +public class ApiResponse { + private boolean success; + private T data; + private String message; + private HttpStatus status; // HttpStatus로 변경 + + public ApiResponse() {} + + public ApiResponse(boolean success, T data, String message, HttpStatus status) { + this.success = success; + this.data = data; + this.message = message; + this.status = status; + } + + public static ApiResponse success(T data) { + return new ApiResponse<>(true, data, "OK", HttpStatus.OK); + } + + public static ApiResponse success(T data, String message) { + return new ApiResponse<>(true, data, message, HttpStatus.OK); + } + + public static ApiResponse success(T data, String message, HttpStatus status) { + return new ApiResponse<>(true, data, message, status); + } + + public static ApiResponse error(String message, HttpStatus status) { + return new ApiResponse<>(false, null, message, status); + } +} diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/department/dto/DepartmentsCardDto.java b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/department/dto/DepartmentsCardDto.java new file mode 100644 index 00000000..5f50fabd --- /dev/null +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/department/dto/DepartmentsCardDto.java @@ -0,0 +1,15 @@ +package com.gltkorea.icebang.domain.department.dto; + +import java.math.BigInteger; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +@AllArgsConstructor +public class DepartmentsCardDto { + private BigInteger id; + private String name; +} diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/controller/OrganizationController.java b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/controller/OrganizationController.java index 6861f163..ff3567b9 100644 --- a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/controller/OrganizationController.java +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/controller/OrganizationController.java @@ -1,12 +1,17 @@ package com.gltkorea.icebang.domain.organization.controller; +import java.math.BigInteger; import java.util.List; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import com.gltkorea.icebang.common.dto.ApiResponse; import com.gltkorea.icebang.domain.organization.dto.OrganizationCardDto; +import com.gltkorea.icebang.domain.organization.dto.OrganizationOptionsDto; import com.gltkorea.icebang.domain.organization.service.OrganizationService; import lombok.RequiredArgsConstructor; @@ -18,8 +23,13 @@ public class OrganizationController { private final OrganizationService organizationService; @GetMapping("") - public List getOrganizations() { + public ResponseEntity>> getOrganizations() { + return ResponseEntity.ok(ApiResponse.success(organizationService.getAllOrganizationList())); + } - return organizationService.getAllOrganizationList(); + @GetMapping("/{id}/options") + public ResponseEntity> getOrganizationDetails( + @PathVariable BigInteger id) { + return ResponseEntity.ok(ApiResponse.success(organizationService.getOrganizationOptions(id))); } } diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/dto/OrganizationOptionsDto.java b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/dto/OrganizationOptionsDto.java new file mode 100644 index 00000000..c416d811 --- /dev/null +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/dto/OrganizationOptionsDto.java @@ -0,0 +1,20 @@ +package com.gltkorea.icebang.domain.organization.dto; + +import java.util.List; + +import com.gltkorea.icebang.domain.department.dto.DepartmentsCardDto; +import com.gltkorea.icebang.domain.position.dto.PositionCardDto; +import com.gltkorea.icebang.domain.roles.dto.RolesCardDto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +@Builder +@Data +@AllArgsConstructor +public class OrganizationOptionsDto { + List departments; + List positions; + List roles; +} diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/service/OrganizationService.java b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/service/OrganizationService.java index 44899058..4cebdfe5 100644 --- a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/service/OrganizationService.java +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/organization/service/OrganizationService.java @@ -1,11 +1,16 @@ package com.gltkorea.icebang.domain.organization.service; +import java.math.BigInteger; import java.util.List; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.gltkorea.icebang.domain.department.dto.DepartmentsCardDto; import com.gltkorea.icebang.domain.organization.dto.OrganizationCardDto; +import com.gltkorea.icebang.domain.organization.dto.OrganizationOptionsDto; +import com.gltkorea.icebang.domain.position.dto.PositionCardDto; +import com.gltkorea.icebang.domain.roles.dto.RolesCardDto; import com.gltkorea.icebang.mapper.OrganizationMapper; import lombok.RequiredArgsConstructor; @@ -19,4 +24,16 @@ public class OrganizationService { public List getAllOrganizationList() { return organizationMapper.findAllOrganizations(); } + + public OrganizationOptionsDto getOrganizationOptions(BigInteger id) { + List departments = organizationMapper.findDepartmentsByOrganizationId(id); + List positions = organizationMapper.findPositionsByOrganizationId(id); + List roles = organizationMapper.findRolesByOrganizationId(id); + + return OrganizationOptionsDto.builder() + .departments(departments) + .positions(positions) + .roles(roles) + .build(); + } } diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/position/dto/PositionCardDto.java b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/position/dto/PositionCardDto.java new file mode 100644 index 00000000..e97d7d3f --- /dev/null +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/position/dto/PositionCardDto.java @@ -0,0 +1,17 @@ +package com.gltkorea.icebang.domain.position.dto; + +import java.math.BigInteger; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PositionCardDto { + private BigInteger id; + private String title; +} diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/domain/roles/dto/RolesCardDto.java b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/roles/dto/RolesCardDto.java new file mode 100644 index 00000000..709a08ff --- /dev/null +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/domain/roles/dto/RolesCardDto.java @@ -0,0 +1,18 @@ +package com.gltkorea.icebang.domain.roles.dto; + +import java.math.BigInteger; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RolesCardDto { + private BigInteger id; + private String name; + private String description; +} diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/dto/UserDto.java b/apps/user-service/src/main/java/com/gltkorea/icebang/dto/UserDto.java deleted file mode 100644 index 6763bac9..00000000 --- a/apps/user-service/src/main/java/com/gltkorea/icebang/dto/UserDto.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gltkorea.icebang.dto; - -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public class UserDto { - private String userId; - private String name; - private String email; - // ... 필요한 다른 필드들 -} diff --git a/apps/user-service/src/main/java/com/gltkorea/icebang/mapper/OrganizationMapper.java b/apps/user-service/src/main/java/com/gltkorea/icebang/mapper/OrganizationMapper.java index 899eaef8..2643af9f 100644 --- a/apps/user-service/src/main/java/com/gltkorea/icebang/mapper/OrganizationMapper.java +++ b/apps/user-service/src/main/java/com/gltkorea/icebang/mapper/OrganizationMapper.java @@ -1,12 +1,25 @@ package com.gltkorea.icebang.mapper; +import java.math.BigInteger; import java.util.List; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import com.gltkorea.icebang.domain.department.dto.DepartmentsCardDto; import com.gltkorea.icebang.domain.organization.dto.OrganizationCardDto; +import com.gltkorea.icebang.domain.position.dto.PositionCardDto; +import com.gltkorea.icebang.domain.roles.dto.RolesCardDto; @Mapper public interface OrganizationMapper { List findAllOrganizations(); + + List findDepartmentsByOrganizationId( + @Param("organizationId") BigInteger organizationId); + + List findPositionsByOrganizationId( + @Param("organizationId") BigInteger organizationId); + + List findRolesByOrganizationId(@Param("organizationId") BigInteger organizationId); } diff --git a/apps/user-service/src/main/resources/mybatis/mapper/OrganizationMapper.xml b/apps/user-service/src/main/resources/mybatis/mapper/OrganizationMapper.xml index ac4bf48f..cdc403fb 100644 --- a/apps/user-service/src/main/resources/mybatis/mapper/OrganizationMapper.xml +++ b/apps/user-service/src/main/resources/mybatis/mapper/OrganizationMapper.xml @@ -10,6 +10,38 @@ id, name as organizationName FROM organizations + ORDER BY name + + + + + + + \ No newline at end of file