Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.gltkorea.icebang.common.dto;

import org.springframework.http.HttpStatus;

import lombok.Data;

@Data
public class ApiResponse<T> {
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 <T> ApiResponse<T> success(T data) {
return new ApiResponse<>(true, data, "OK", HttpStatus.OK);
}

public static <T> ApiResponse<T> success(T data, String message) {
return new ApiResponse<>(true, data, message, HttpStatus.OK);
}

public static <T> ApiResponse<T> success(T data, String message, HttpStatus status) {
return new ApiResponse<>(true, data, message, status);
}

public static <T> ApiResponse<T> error(String message, HttpStatus status) {
return new ApiResponse<>(false, null, message, status);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -18,8 +23,13 @@ public class OrganizationController {
private final OrganizationService organizationService;

@GetMapping("")
public List<OrganizationCardDto> getOrganizations() {
public ResponseEntity<ApiResponse<List<OrganizationCardDto>>> getOrganizations() {
return ResponseEntity.ok(ApiResponse.success(organizationService.getAllOrganizationList()));
}

return organizationService.getAllOrganizationList();
@GetMapping("/{id}/options")
public ResponseEntity<ApiResponse<OrganizationOptionsDto>> getOrganizationDetails(
@PathVariable BigInteger id) {
return ResponseEntity.ok(ApiResponse.success(organizationService.getOrganizationOptions(id)));
}
}
Original file line number Diff line number Diff line change
@@ -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<DepartmentsCardDto> departments;
List<PositionCardDto> positions;
List<RolesCardDto> roles;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -19,4 +24,16 @@ public class OrganizationService {
public List<OrganizationCardDto> getAllOrganizationList() {
return organizationMapper.findAllOrganizations();
}

public OrganizationOptionsDto getOrganizationOptions(BigInteger id) {
List<DepartmentsCardDto> departments = organizationMapper.findDepartmentsByOrganizationId(id);
List<PositionCardDto> positions = organizationMapper.findPositionsByOrganizationId(id);
List<RolesCardDto> roles = organizationMapper.findRolesByOrganizationId(id);

return OrganizationOptionsDto.builder()
.departments(departments)
.positions(positions)
.roles(roles)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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;
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<OrganizationCardDto> findAllOrganizations();

List<DepartmentsCardDto> findDepartmentsByOrganizationId(
@Param("organizationId") BigInteger organizationId);

List<PositionCardDto> findPositionsByOrganizationId(
@Param("organizationId") BigInteger organizationId);

List<RolesCardDto> findRolesByOrganizationId(@Param("organizationId") BigInteger organizationId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,38 @@
id,
name as organizationName
FROM organizations
ORDER BY name
</select>

<select id="findDepartmentsByOrganizationId"
resultType="com.gltkorea.icebang.domain.department.dto.DepartmentsCardDto">
SELECT
id,
name
FROM departments
WHERE organization_id = #{organizationId}
ORDER BY name
</select>

<select id="findPositionsByOrganizationId"
resultType="com.gltkorea.icebang.domain.position.dto.PositionCardDto">
SELECT
id,
title
FROM positions
WHERE organization_id = #{organizationId}
ORDER BY title
</select>

<select id="findRolesByOrganizationId"
resultType="com.gltkorea.icebang.domain.roles.dto.RolesCardDto">
SELECT
id,
name,
description
FROM roles
WHERE organization_id = #{organizationId}
ORDER BY name
</select>

</mapper>
Loading