Skip to content

Commit

Permalink
Merge pull request #104 from Team-UMC/refactor/#97/university
Browse files Browse the repository at this point in the history
[REFACTOR] University API ๋ฆฌํŽ™ํ† ๋ง
  • Loading branch information
ShimFFF authored May 9, 2024
2 parents a2cba16 + 6b879b7 commit 75d9513
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

Expand All @@ -27,35 +29,37 @@ public class StaffUniversityController {
private final UniversityServiceImpl universityService;

@Operation(summary = "ํ•™๊ต ์ƒ์„ฑํ•˜๊ธฐ API",description = "ํ•™๊ต ์ƒ์„ฑํ•˜๊ธฐ API")
@PostMapping("")
@PostMapping(value = "", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public BaseResponse<UniversityResponse.UniversityId>
createUniversity(
@CurrentMember Member member,
@RequestBody @Valid UniversityRequest.universityInfo request
@Valid @RequestPart("request") UniversityRequest.universityInfo request,
@RequestPart(name = "file", required = false) MultipartFile universityLogo,
@RequestPart(name = "file", required = false) MultipartFile semesterLogo
)
{
return BaseResponse.onSuccess(universityService.createUniversity(request));
return BaseResponse.onSuccess(universityService.createUniversity(request, universityLogo, semesterLogo));
}

@Operation(summary = "ํ•™๊ต ์‚ญ์ œํ•˜๊ธฐ API",description = "ํ•™๊ต ์‚ญ์ œํ•˜๊ธฐ API")
@DeleteMapping("/{universityId}")
public BaseResponse<UniversityResponse.UniversityId>
deleteUniversity(
@CurrentMember Member member,
@PathVariable @Valid UUID universityId
){
return BaseResponse.onSuccess(universityService.deleteUniversity(universityId));
}

@Operation(summary = "ํ•™๊ต ์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ API",description = "ํ•™๊ต ์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ API")
@PatchMapping("/{universityId}")
@PatchMapping(value = "/{universityId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public BaseResponse<UniversityResponse.UniversityId>
patchUniversity(
@CurrentMember Member member,
@PathVariable @Valid UUID universityId,
@RequestBody @Valid UniversityRequest.universityInfo request
@Valid @RequestPart("request") UniversityRequest.universityInfo request,
@RequestPart(name = "file", required = false) MultipartFile universityLogo,
@RequestPart(name = "file", required = false) MultipartFile semesterLogo

){
return BaseResponse.onSuccess(universityService.patchUniversity(request, universityId));
return BaseResponse.onSuccess(universityService.patchUniversity(request, universityId, universityLogo, semesterLogo));
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ public class UniversityRequest {
public static class universityInfo {
//todo: ๋งˆ์Šค์ฝ”ํŠธ ์ฒ˜๋ฆฌ
String universityName;
MultipartFile universityLogo;
MultipartFile semesterLogo;
Semester semester;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,21 @@ public void updateUniversity(String name, String universityLogo, String semester
this.semesterLogo = semesterLogo;
}

// ํ•™๊ต ์ด๋ฆ„ ๋ณ€๊ฒฝ
public void updateUniversityName(String name) {
this.name = name;
}

// ํ•™๊ต ๋กœ๊ณ  ๋ณ€๊ฒฝ
public void updateUniversityLogo(String universityLogo) {
this.universityLogo = universityLogo;
}

// ๊ธฐ์ˆ˜ ๋กœ๊ณ  ๋ณ€๊ฒฝ
public void updateSemesterLogo(String semesterLogo) {
this.semesterLogo = semesterLogo;
}

//๋ ˆ๋ฒจ ์ฆ๊ฐ€
public void setLevel(Integer level) {
this.currentLevel=level;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ public UniversityResponse.JoinUniversityMascotFeed feedUniversityMascot(Member m
}

@Transactional //ํ•™๊ต ์ƒ์„ฑ
public UniversityResponse.UniversityId createUniversity(UniversityRequest.universityInfo request) {
public UniversityResponse.UniversityId createUniversity(UniversityRequest.universityInfo request, MultipartFile universityLogo, MultipartFile semesterLogo) {
if (universityRepository.findByName(request.getUniversityName()).isPresent()) {
throw new RestApiException(UniversityErrorCode.DUPLICATE_UNIVERSITY_NAME);
}
Expand All @@ -177,8 +177,8 @@ public UniversityResponse.UniversityId createUniversity(UniversityRequest.univer
universityRepository.save(University.builder()
.name(request.getUniversityName())
.mascot(mascotService.getMascotByStartLevel(1, mascotType))
.universityLogo(uploadImage("university", request.getUniversityLogo()))
.semesterLogo(uploadImage("semester", request.getSemesterLogo()))
.universityLogo(uploadImage("university", universityLogo))
.semesterLogo(uploadImage("semester", semesterLogo))
.build()).getId()
).build();

Expand All @@ -195,15 +195,20 @@ public UniversityResponse.UniversityId deleteUniversity(UUID universityId) {
}

@Transactional //ํ•™๊ต ์ •๋ณด ์ˆ˜์ •
public UniversityResponse.UniversityId patchUniversity(UniversityRequest.universityInfo request, UUID universityId) {
public UniversityResponse.UniversityId patchUniversity(UniversityRequest.universityInfo request, UUID universityId, MultipartFile universityLogo, MultipartFile semesterLogo) {

University university = universityRepository.findById(universityId)
.orElseThrow(() -> new RestApiException(UniversityErrorCode.EMPTY_UNIVERSITY));

university.updateUniversity(
request.getUniversityName()
, uploadImage("university", request.getUniversityLogo())
, uploadImage("semester", request.getSemesterLogo()));
university.updateUniversityName(request.getUniversityName());
if(universityLogo != null&&!universityLogo.isEmpty()){
deleteImage(university.getUniversityLogo()); //๊ธฐ์กด ์ด๋ฏธ์ง€ ์‚ญ์ œ
university.updateUniversityLogo(uploadImage("university", universityLogo)); //์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
}
if(semesterLogo != null&&!semesterLogo.isEmpty()){
deleteImage(university.getSemesterLogo()); //๊ธฐ์กด ์ด๋ฏธ์ง€ ์‚ญ์ œ
university.updateSemesterLogo(uploadImage("semester", semesterLogo)); //์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
}

return UniversityResponse.UniversityId.builder()
.universityId(university.getId())
Expand All @@ -218,6 +223,14 @@ public String uploadImage(String category, MultipartFile imageFile) {
return s3FileComponent.uploadFile(category, imageFile);
}

//s3์— ์ด๋ฏธ์ง€ ์‚ญ์ œ
public void deleteImage(String imageUrl) {
if (imageUrl == null || imageUrl.isEmpty()) {
return;
}
s3FileComponent.deleteFile(imageUrl);
}

//๋™์ ์ž ์ฒ˜๋ฆฌ (๊ธฐ์—ฌ๋„) (๋™์ ์ฐจ๋Š” ๋™์ผํ•œ ์ˆœ์œ„ ๋ถ€์—ฌ ํ›„ ๋žญํ‚น ๊ฑด๋„ˆ๋›ฐ๊ธฐ)
private UniversityResponse.JoinContributionRanks handleTiedContributionRanks(UniversityResponse.JoinContributionRanks ranks) {
int currentRank = 1;
Expand Down

0 comments on commit 75d9513

Please sign in to comment.