Skip to content

Commit 69b767f

Browse files
authored
Merge pull request #83 from ON-GI/develop
관리자 마이페이지 배포
2 parents 0439fc7 + c2051ce commit 69b767f

File tree

11 files changed

+190
-5
lines changed

11 files changed

+190
-5
lines changed

src/main/java/com/ongi/backend/common/config/SecurityConfig.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import lombok.RequiredArgsConstructor;
77
import org.springframework.context.annotation.Bean;
88
import org.springframework.context.annotation.Configuration;
9+
import org.springframework.http.HttpMethod;
910
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1011
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
1112
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
@@ -53,9 +54,10 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
5354

5455
.requestMatchers("/api/v1/caregiver/**").hasRole("CAREGIVER")
5556
.requestMatchers("/api/v1/senior/**").hasAnyRole("CENTER_MANAGER", "SOCIAL_WORKER")
56-
.requestMatchers("/api/v1/center/**").hasAnyRole("CENTER_MANAGER")
5757
.requestMatchers("/api/v1/center-staff/**").hasAnyRole("CENTER_MANAGER", "SOCIAL_WORKER")
58-
.requestMatchers("/api/v1/senior/**").hasAnyRole("CENTER_MANAGER", "SOCIAL_WORKER")
58+
.requestMatchers("/api/v1/center/matching/**").hasAnyRole("CENTER_MANAGER", "SOCIAL_WORKER")
59+
.requestMatchers(HttpMethod.GET, "/api/v1/center/**").hasAnyRole("CENTER_MANAGER", "SOCIAL_WORKER")
60+
.requestMatchers("/api/v1/center/**").hasAnyRole("CENTER_MANAGER")
5961
.anyRequest().authenticated()
6062
);
6163

src/main/java/com/ongi/backend/domain/center/controller/CenterController.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.ongi.backend.domain.center.controller;
22

33
import com.ongi.backend.common.response.CommonResponse;
4+
import com.ongi.backend.domain.center.dto.request.CenterEssentialRequestDto;
5+
import com.ongi.backend.domain.center.dto.request.CenterOptionalRequestDto;
46
import com.ongi.backend.domain.center.dto.request.CenterRequestDto;
7+
import com.ongi.backend.domain.center.dto.response.CenterEssentialResponseDto;
8+
import com.ongi.backend.domain.center.dto.response.CenterOptionalResponseDto;
9+
import com.ongi.backend.domain.center.dto.response.CenterProfileResponseDto;
510
import com.ongi.backend.domain.center.dto.response.CenterResponseDto;
611
import com.ongi.backend.domain.center.service.CenterService;
712
import jakarta.validation.Valid;
813
import lombok.RequiredArgsConstructor;
914
import lombok.extern.slf4j.Slf4j;
10-
import org.springframework.security.core.AuthenticatedPrincipal;
1115
import org.springframework.security.core.context.SecurityContextHolder;
1216
import org.springframework.web.bind.annotation.*;
1317
import org.springframework.web.multipart.MultipartFile;
@@ -66,4 +70,39 @@ public CommonResponse<String> deleteCenter(
6670
centerService.deleteCenter(centerId);
6771
return CommonResponse.success("센터 삭제가 완료되었습니다.");
6872
}
73+
74+
@GetMapping("/essential")
75+
public CommonResponse<CenterEssentialResponseDto> getCenterEssential() {
76+
Long centerId = (Long) SecurityContextHolder.getContext().getAuthentication().getCredentials();
77+
CenterEssentialResponseDto response = centerService.getCenterEssential(centerId);
78+
return CommonResponse.success(response);
79+
}
80+
81+
@PutMapping("/essential")
82+
public CommonResponse<Object> updateCenterEssential(@Valid @RequestBody CenterEssentialRequestDto request) {
83+
Long centerId = (Long) SecurityContextHolder.getContext().getAuthentication().getCredentials();
84+
centerService.updateCenterEssential(centerId, request);
85+
return CommonResponse.success();
86+
}
87+
88+
@GetMapping("/optional")
89+
public CommonResponse<CenterOptionalResponseDto> getCenterOptional() {
90+
Long centerId = (Long) SecurityContextHolder.getContext().getAuthentication().getCredentials();
91+
CenterOptionalResponseDto response = centerService.getCenterOptional(centerId);
92+
return CommonResponse.success(response);
93+
}
94+
95+
@PutMapping("/optional")
96+
public CommonResponse<Object> updateCenterOptional(@Valid @RequestBody CenterOptionalRequestDto request) {
97+
Long centerId = (Long) SecurityContextHolder.getContext().getAuthentication().getCredentials();
98+
centerService.updateCenterOptional(centerId, request);
99+
return CommonResponse.success();
100+
}
101+
102+
@GetMapping("/profile")
103+
public CommonResponse<CenterProfileResponseDto> getProfile() {
104+
Long centerId = (Long) SecurityContextHolder.getContext().getAuthentication().getCredentials();
105+
CenterProfileResponseDto response = centerService.getProfile(centerId);
106+
return CommonResponse.success(response);
107+
}
69108
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.ongi.backend.domain.center.dto.request;
2+
3+
import jakarta.validation.constraints.NotBlank;
4+
5+
public record CenterEssentialRequestDto(
6+
@NotBlank(message = "센터명을 입력하세요.")
7+
String centerName,
8+
9+
@NotBlank(message = "전화번호를 입력하세요.")
10+
String contact,
11+
12+
@NotBlank(message = "주소를 입력하세요.")
13+
String address
14+
) {
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.ongi.backend.domain.center.dto.request;
2+
3+
import jakarta.validation.constraints.NotNull;
4+
5+
import java.time.LocalDate;
6+
7+
public record CenterOptionalRequestDto(
8+
String centerGrade,
9+
LocalDate establishmentDate,
10+
String description,
11+
12+
@NotNull(message = "차량 소유 여부를 작성하세요.")
13+
boolean hasVehicle
14+
) {
15+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.ongi.backend.domain.center.dto.response;
2+
3+
import com.ongi.backend.domain.center.entity.Center;
4+
import lombok.AccessLevel;
5+
import lombok.Builder;
6+
7+
@Builder(access = AccessLevel.PRIVATE)
8+
public record CenterEssentialResponseDto(
9+
String centerName,
10+
String contact,
11+
String address,
12+
String profileImageUrl
13+
) {
14+
15+
public static CenterEssentialResponseDto from(Center center) {
16+
return CenterEssentialResponseDto.builder()
17+
.centerName(center.getName())
18+
.contact(center.getContact())
19+
.address(center.getAddress())
20+
.profileImageUrl(center.getProfileImageUrl())
21+
.build();
22+
}
23+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.ongi.backend.domain.center.dto.response;
2+
3+
import com.ongi.backend.domain.center.entity.Center;
4+
import lombok.AccessLevel;
5+
import lombok.Builder;
6+
7+
import java.time.LocalDate;
8+
9+
@Builder(access = AccessLevel.PRIVATE)
10+
public record CenterOptionalResponseDto(
11+
String centerGrade,
12+
LocalDate establishmentDate,
13+
String description,
14+
boolean hasVehicle
15+
) {
16+
17+
public static CenterOptionalResponseDto from(Center center) {
18+
return CenterOptionalResponseDto.builder()
19+
.centerGrade(center.getCenterGrade() == null ? null : center.getCenterGrade().name())
20+
.establishmentDate(center.getEstablishmentDate())
21+
.description(center.getDescription())
22+
.hasVehicle(center.getHasVehicle())
23+
.build();
24+
}
25+
26+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.ongi.backend.domain.center.dto.response;
2+
3+
public record CenterProfileResponseDto(String profileImageURL) {
4+
}

src/main/java/com/ongi/backend/domain/center/entity/Center.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.ongi.backend.domain.center.entity;
22

33
import com.ongi.backend.common.entity.BaseEntity;
4+
import com.ongi.backend.domain.center.dto.request.CenterEssentialRequestDto;
45
import com.ongi.backend.domain.center.dto.request.CenterInitializerRequestDto;
6+
import com.ongi.backend.domain.center.dto.request.CenterOptionalRequestDto;
57
import com.ongi.backend.domain.center.dto.request.CenterRequestDto;
68
import com.ongi.backend.domain.center.entity.enums.CenterGrade;
79
import com.ongi.backend.domain.center.entity.enums.CenterStatus;
@@ -93,4 +95,18 @@ public void updateProfileImageUrl(String profileImageUrl) {
9395
public void updateCenterDocumentUrl(String centerDocumentUrl) {
9496
this.centerDocumentUrl = centerDocumentUrl;
9597
}
98+
99+
public void updateCenterEssential(CenterEssentialRequestDto request) {
100+
this.name = request.centerName();
101+
this.contact = request.contact();
102+
this.address = request.address();
103+
}
104+
105+
public void updateCenterOptional(CenterOptionalRequestDto request) {
106+
this.centerGrade = request.centerGrade() == null
107+
? null : CenterGrade.fromString(request.centerGrade());
108+
this.establishmentDate = request.establishmentDate();
109+
this.description = request.description();
110+
this.hasVehicle = request.hasVehicle();
111+
}
96112
}
Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
package com.ongi.backend.domain.center.entity.enums;
22

3+
import com.ongi.backend.common.exception.ApplicationException;
4+
import com.ongi.backend.domain.center.exception.CenterErrorCase;
5+
6+
import java.util.Arrays;
7+
38
public enum CenterGrade {
4-
A, B, C, D, E
9+
A, B, C, D, E;
10+
11+
public static CenterGrade fromString(String value) {
12+
return Arrays.stream(CenterGrade.values())
13+
.filter(type -> type.name().equals(value))
14+
.findFirst()
15+
.orElseThrow(() -> new ApplicationException(CenterErrorCase.INVALID_CENTER_GRADE));
16+
}
517
}

src/main/java/com/ongi/backend/domain/center/exception/CenterErrorCase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ public enum CenterErrorCase implements ErrorCase {
1010

1111
CENTER_NOT_FOUND(404,1000, "센터를 찾을 수 없습니다."),
1212
CENTER_EMAIL_NOT_EXIST(400,1001, "센터 이메일이 등록되어 있지 않습니다."),
13-
INVALID_SEARCH_CONDITION(400,1002, "올바르지 않은 검색 조건입니다.");
13+
INVALID_SEARCH_CONDITION(400,1002, "올바르지 않은 검색 조건입니다."),
14+
INVALID_CENTER_GRADE(400, 1003, "올바르지 않은 센터 등급입니다.");
1415

1516
private final Integer httpStatusCode;
1617
private final Integer errorCode;

0 commit comments

Comments
 (0)