Skip to content

Commit

Permalink
Merge pull request #139 from teamterning/develop
Browse files Browse the repository at this point in the history
[🔀 merge] [2차] 코드 리펙토링 사항 적용 (4)
  • Loading branch information
junggyo1020 authored Sep 20, 2024
2 parents 379ab91 + 3026059 commit 5cbc03e
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public ResponseEntity<SuccessResponse<AccessTokenGetResponseDto>> reissueToken(

@PostMapping("/sign-up")
public ResponseEntity<SuccessResponse<SignUpResponseDto>> signUp(
@RequestHeader("authId") String authId,
@RequestHeader("Authorization") String authId,
@RequestBody SignUpRequestDto request
) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@

import java.util.List;

import static org.terning.terningserver.exception.enums.SuccessMessage.SUCCESS_GET_ANNOUNCEMENTS;
import static org.terning.terningserver.exception.enums.SuccessMessage.SUCCESS_GET_UPCOMING_ANNOUNCEMENTS;
import static org.terning.terningserver.exception.enums.SuccessMessage.*;

@RestController
@RequiredArgsConstructor
Expand All @@ -41,8 +40,17 @@ public ResponseEntity<SuccessResponse<List<UpcomingScrapResponseDto>>> getUpcomi
@AuthenticationPrincipal Long userId
){

List<UpcomingScrapResponseDto> scrapList = scrapService.getUpcomingScrap(userId);
boolean hasScrapped = scrapService.hasUserScrapped(userId);
List<UpcomingScrapResponseDto.ScrapDetail> scrapList = scrapService.getUpcomingScrap(userId);

return ResponseEntity.ok(SuccessResponse.of(SUCCESS_GET_UPCOMING_ANNOUNCEMENTS, scrapList));
UpcomingScrapResponseDto responseDto = new UpcomingScrapResponseDto(hasScrapped, scrapList);

if(!hasScrapped){
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_GET_UPCOMING_ANNOUNCEMENTS_NO_SCRAP, responseDto));
} else if (scrapList.isEmpty()) {
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_GET_UPCOMING_ANNOUNCEMENTS_EMPTY_LIST, responseDto));
} else {
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_GET_UPCOMING_ANNOUNCEMENTS, responseDto));
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.terning.terningserver.controller.swagger;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -20,23 +21,27 @@ public interface AuthSwagger {

@Operation(summary = "소셜 로그인", description = "AuthType에 맞는 소셜 로그인 API")
ResponseEntity<SuccessResponse<SignInResponseDto>> signIn(
@Parameter(name = "Authorization", description = "", example = "authAccessToken")
@RequestHeader("Authorization") String authAccessToken,
@RequestBody SignInRequestDto request
);

@Operation(summary = "토큰 재발급", description = "토큰 재발급 API")
ResponseEntity<SuccessResponse<AccessTokenGetResponseDto>> reissueToken(
@Parameter(name = "Authorization", description = "", example = "refreshToken")
@RequestHeader("Authorization") String refreshToken
);

@Operation(summary = "사용자 필터링 정보 생성", description = "사용자 필터링 정보 생성 API")
ResponseEntity<SuccessResponse<SignUpFilterResponseDto>> filter(
@Parameter(name = "User-Id", description = "", example = "userId")
@RequestHeader("User-Id") Long userId,
@RequestBody SignUpFilterRequestDto request
);

@Operation(summary = "회원가입", description = "회원가입 API")
ResponseEntity<SuccessResponse<SignUpResponseDto>> signUp(
@Parameter(name = "Authorization", description = "", example = "authId")
@RequestHeader("authId") String authId,
@RequestBody SignUpRequestDto request
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,41 @@
import org.terning.terningserver.domain.Scrap;
import org.terning.terningserver.util.DateUtil;

import java.util.List;

@Builder
public record UpcomingScrapResponseDto(
Long internshipAnnouncementId,
String companyImage,
String dDay,
String title,
String workingPeriod,
boolean isScrapped,
String color,
String deadline,
String startYearMonth,
String companyInfo
boolean hasScrapped,
List<ScrapDetail> scraps
) {
public static UpcomingScrapResponseDto of(final Scrap scrap){
String startYearMonth = scrap.getInternshipAnnouncement().getStartYear() + "년 " + scrap.getInternshipAnnouncement().getStartMonth() + "월";
@Builder
public record ScrapDetail(
Long internshipAnnouncementId,
String companyImage,
String dDay,
String title,
String workingPeriod,
boolean isScrapped,
String color,
String deadline,
String startYearMonth,
String companyInfo
) {
public static ScrapDetail of(final Scrap scrap) {
String startYearMonth = scrap.getInternshipAnnouncement().getStartYear() + "년 " + scrap.getInternshipAnnouncement().getStartMonth() + "월";

return UpcomingScrapResponseDto.builder()
.internshipAnnouncementId(scrap.getInternshipAnnouncement().getId())
.companyImage(scrap.getInternshipAnnouncement().getCompany().getCompanyImage())
.dDay(DateUtil.convert(scrap.getInternshipAnnouncement().getDeadline()))
.title(scrap.getInternshipAnnouncement().getTitle())
.deadline(DateUtil.convertDeadline(scrap.getInternshipAnnouncement().getDeadline()))
.isScrapped(true) // 스크랩된 항목이므로 항상 true
.color(scrap.getColorToHexValue())
.workingPeriod(scrap.getInternshipAnnouncement().getWorkingPeriod())
.startYearMonth(startYearMonth)
.companyInfo(scrap.getInternshipAnnouncement().getCompany().getCompanyInfo())
.build();
return ScrapDetail.builder()
.internshipAnnouncementId(scrap.getInternshipAnnouncement().getId())
.companyImage(scrap.getInternshipAnnouncement().getCompany().getCompanyImage())
.dDay(DateUtil.convert(scrap.getInternshipAnnouncement().getDeadline()))
.title(scrap.getInternshipAnnouncement().getTitle())
.deadline(DateUtil.convertDeadline(scrap.getInternshipAnnouncement().getDeadline()))
.isScrapped(true) // 스크랩된 항목이므로 항상 true
.color(scrap.getColorToHexValue())
.workingPeriod(scrap.getInternshipAnnouncement().getWorkingPeriod())
.startYearMonth(startYearMonth)
.companyInfo(scrap.getInternshipAnnouncement().getCompany().getCompanyInfo())
.build();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public enum SuccessMessage {
// 홈 화면
SUCCESS_GET_ANNOUNCEMENTS(200, "인턴 공고 불러오기를 성공했습니다"),
SUCCESS_GET_UPCOMING_ANNOUNCEMENTS(200, "곧 마감인 인턴 공고 요청을 성공했습니다"),
SUCCESS_GET_UPCOMING_ANNOUNCEMENTS_NO_SCRAP(200, "아직 스크랩된 인턴 공고가 없어요!"),
SUCCESS_GET_UPCOMING_ANNOUNCEMENTS_EMPTY_LIST(200, "일주일 내에 마감인 공고가 없어요\n캘린더에서 스크랩한 공고 일정을 확인해 보세요"),

// 소셜 로그인
SUCCESS_SIGN_IN(200, "소셜 로그인에 성공하였습니다"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public interface ScrapRepository extends JpaRepository<Scrap, Long>, ScrapReposi

void deleteByInternshipAnnouncementIdAndUserId(Long internshipId, Long userId);

List<Scrap> findByUserIdAndInternshipAnnouncement_DeadlineBetween(Long userId, LocalDate start, LocalDate end);
boolean existsByUserId(Long userId);

}

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import java.util.List;

public interface ScrapService {
List<UpcomingScrapResponseDto> getUpcomingScrap(Long userId);

boolean hasUserScrapped(long userId);
List<UpcomingScrapResponseDto.ScrapDetail> getUpcomingScrap(long userId);

void createScrap(Long internshipAnnouncementId, CreateScrapRequestDto request, Long userId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,16 @@ public class ScrapServiceImpl implements ScrapService {
private final UserRepository userRepository;

@Override
public List<UpcomingScrapResponseDto> getUpcomingScrap(Long userId){
public boolean hasUserScrapped(long userId) {
return scrapRepository.existsByUserId(userId);
}

@Override
public List<UpcomingScrapResponseDto.ScrapDetail> getUpcomingScrap(long userId){
LocalDate today = LocalDate.now();
LocalDate oneWeekFromToday = today.plusDays(7);
return scrapRepository.findScrapsByUserIdAndDeadlineBetweenOrderByDeadline(userId, today, oneWeekFromToday).stream()
.map(UpcomingScrapResponseDto::of)
.map(UpcomingScrapResponseDto.ScrapDetail::of)
.toList();
}

Expand Down

0 comments on commit 5cbc03e

Please sign in to comment.