Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[๐Ÿ”€ merge] [2์ฐจ] ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง ์‚ฌํ•ญ ์ ์šฉ (3) #135

Merged
merged 20 commits into from
Sep 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a6c5638
[โ™ป๏ธrefactor/#127]: grade enum key๊ฐ’ ํƒ€์ž… String์œผ๋กœ ๋ณ€๊ฒฝ
JungYoonShin Sep 6, 2024
8a91200
[โ™ป๏ธrefactor/#127]: WorkingPeriod enum key๊ฐ’ ํƒ€์ž… String์œผ๋กœ ๋ณ€๊ฒฝ
JungYoonShin Sep 6, 2024
45c94c0
[๐Ÿ“file/#127]: ํ•„ํ„ฐ๋ง ์žฌ์„ค์ • request dto๋ช… ๋ณ€๊ฒฝ
JungYoonShin Sep 6, 2024
368e914
[๐Ÿ“file/#127]: ์‚ฌ์šฉ์ž ํ•„ํ„ฐ๋ง ์ •๋ณด response dto๋ช… ๋ณ€๊ฒฝ
JungYoonShin Sep 6, 2024
19faa8b
[โ™ป๏ธrefactor/#127]: UserFilterDetailResponseDto @Builder ์ ‘๊ทผ์ œ์–ด์ž privateโ€ฆ
JungYoonShin Sep 7, 2024
0661eab
[โ™ป๏ธrefactor/#127]: ์Šคํฌ๋žฉ ๋ฐ ํ•„ํ„ฐ๋ง ๊ด€๋ จ API Contoller request ํƒ€์ž… ๋ณ€๊ฒฝ
JungYoonShin Sep 7, 2024
2ff8734
git commit -m "[โœจfeat/#127]: Spring AOP๋ฅผ ์ด์šฉํ•œ ์„ฑ๋Šฅํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•
JungYoonShin Sep 7, 2024
21b9df4
[โ™ป๏ธrefactor/#129]: InternshipDetailResponseDto json ํ•„๋“œ ์ˆœ์„œ ๋ฐ ์ถ”๊ฐ€
JungYoonShin Sep 9, 2024
5f27148
[โ™ป๏ธrefactor/#129]: ๊ณต๊ณ  ์ƒ์„ธ ์ •๋ณด ๋กœ์ง ์ˆ˜์ •
JungYoonShin Sep 9, 2024
822eeda
[โ™ป๏ธrefactor/#129]: ํƒ์ƒ‰ > ์กฐํšŒ์ˆ˜/ํƒ์ƒ‰์ˆ˜ ๋งŽ์€ ๊ณต๊ณ  ์กฐํšŒ ๋กœ์ง ์ˆ˜์ •
JungYoonShin Sep 9, 2024
a7f2de5
[โ™ป๏ธ refactor/#121]: AuthServiceImpl ๋ฆฌํŒฉํ† ๋ง: ๋ฉ”์„œ๋“œ ๋ช…๋ช… ์ผ๊ด€์„ฑ ๋ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๊ฐœ์„ 
jsoonworld Sep 9, 2024
ff5400b
[โ™ป๏ธrefactor/#129]: ๊ฒ€์ƒ‰ ํ™”๋ฉด ํŽ˜์ด์ง•์„ ํ†ตํ•œ ์ธํ„ด๊ณต๊ณ  ์กฐํšŒ์‹œ count ์ฟผ๋ฆฌ ์ˆ˜์ •
JungYoonShin Sep 10, 2024
1c06d46
[โ™ป๏ธrefactor/#129]: ๊ฒ€์ƒ‰ responseDto ํ•„๋“œ ๋ณ€๊ฒฝ
JungYoonShin Sep 10, 2024
25fb5d0
Merge pull request #128 from teamterning/refactor/#127
JungYoonShin Sep 10, 2024
0f59718
[โ™ป๏ธ refactor/#121] getFullToken ๋ฐ deleteUser ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ protected์—์„œโ€ฆ
jsoonworld Sep 10, 2024
3c20eeb
Merge pull request #130 from teamterning/refactor/#121
jsoonworld Sep 11, 2024
b7c6322
[โ™ป๏ธ refactor] ํ™ˆํ™”๋ฉด > ๊ณง ๋งˆ๊ฐ๋˜๋Š” ๊ด€์‹ฌ ๊ณต๊ณ  ์ „๋‹ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ •
junggyo1020 Sep 11, 2024
4e92e6d
[โ™ป๏ธrefactor/#129]: Color enum ์ƒ‰์ƒ ์ฐพ์„ ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ถ”๊ฐ€
JungYoonShin Sep 11, 2024
aef33a5
Merge pull request #132 from teamterning/refactor/#129
JungYoonShin Sep 11, 2024
c78c121
Merge pull request #133 from teamterning/refactor/131
junggyo1020 Sep 11, 2024
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
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ dependencies {
// gson
implementation 'com.google.code.gson:gson:2.8.6'

implementation 'org.springframework.boot:spring-boot-starter-aop'

}

//QueryDSL ์ดˆ๊ธฐ ์„ค์ •
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.terning.terningserver.controller.swagger.FilterSwagger;
import org.terning.terningserver.dto.filter.request.UserFilterRequestDto;
import org.terning.terningserver.dto.filter.response.UserFilterResponseDto;
import org.terning.terningserver.dto.filter.request.UpdateUserFilterRequestDto;
import org.terning.terningserver.dto.filter.response.UserFilterDetailResponseDto;
import org.terning.terningserver.exception.dto.SuccessResponse;
import org.terning.terningserver.service.FilterService;

Expand All @@ -20,8 +20,8 @@ public class FilterController implements FilterSwagger {
private final FilterService filterService;

@GetMapping("/filters")
public ResponseEntity<SuccessResponse<UserFilterResponseDto>> getUserFilter(
@AuthenticationPrincipal Long userId
public ResponseEntity<SuccessResponse<UserFilterDetailResponseDto>> getUserFilter(
@AuthenticationPrincipal long userId
) {
return ResponseEntity.ok(SuccessResponse.of(
SUCCESS_GET_USER_FILTER,
Expand All @@ -31,8 +31,9 @@ public ResponseEntity<SuccessResponse<UserFilterResponseDto>> getUserFilter(

@PutMapping("/filters")
public ResponseEntity<SuccessResponse> updateUserFilter(
@AuthenticationPrincipal Long userId,
@RequestBody UserFilterRequestDto requestDto) {
@AuthenticationPrincipal long userId,
@RequestBody UpdateUserFilterRequestDto requestDto
) {
filterService.updateUserFilter(requestDto, userId);
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_UPDATE_USER_FILTER));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.terning.terningserver.exception.dto.SuccessResponse;
import org.terning.terningserver.jwt.PrincipalHandler;
import org.terning.terningserver.service.ScrapService;
import org.terning.terningserver.util.LogExecutionTime;

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

Expand All @@ -22,25 +23,25 @@ public class ScrapController implements ScrapSwagger {

@PostMapping("/scraps/{internshipAnnouncementId}")
public ResponseEntity<SuccessResponse> createScrap(
@AuthenticationPrincipal Long userId,
@PathVariable Long internshipAnnouncementId,
@AuthenticationPrincipal long userId,
@PathVariable long internshipAnnouncementId,
@RequestBody CreateScrapRequestDto request) {
scrapService.createScrap(internshipAnnouncementId, request, userId);
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_CREATE_SCRAP));
}

@DeleteMapping("/scraps/{internshipAnnouncementId}")
public ResponseEntity<SuccessResponse> deleteScrap(
@AuthenticationPrincipal Long userId,
@PathVariable Long internshipAnnouncementId) {
@AuthenticationPrincipal long userId,
@PathVariable long internshipAnnouncementId) {
scrapService.deleteScrap(internshipAnnouncementId, userId);
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_DELETE_SCRAP));
}

@PatchMapping("/scraps/{internshipAnnouncementId}")
public ResponseEntity<SuccessResponse> updateScrapColor(
@AuthenticationPrincipal Long userId,
@PathVariable Long internshipAnnouncementId,
@AuthenticationPrincipal long userId,
@PathVariable long internshipAnnouncementId,
@RequestBody UpdateScrapRequestDto request) {
scrapService.updateScrapColor(internshipAnnouncementId, request, userId);
return ResponseEntity.ok(SuccessResponse.of(SUCCESS_UPDATE_SCRAP));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,21 @@
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.terning.terningserver.dto.filter.request.UserFilterRequestDto;
import org.terning.terningserver.dto.filter.response.UserFilterResponseDto;
import org.terning.terningserver.dto.filter.request.UpdateUserFilterRequestDto;
import org.terning.terningserver.dto.filter.response.UserFilterDetailResponseDto;
import org.terning.terningserver.exception.dto.SuccessResponse;

@Tag(name = "Filter", description = "์‚ฌ์šฉ์ž ํ•„ํ„ฐ๋ง ๊ด€๋ จ API")
public interface FilterSwagger {

@Operation(summary = "์‚ฌ์šฉ์ž ํ•„ํ„ฐ๋ง ์ •๋ณด ์กฐํšŒ API", description = "์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ํ•„ํ„ฐ๋ง ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” API")
ResponseEntity<SuccessResponse<UserFilterResponseDto>> getUserFilter(
@AuthenticationPrincipal Long userId
ResponseEntity<SuccessResponse<UserFilterDetailResponseDto>> getUserFilter(
@AuthenticationPrincipal long userId
);

@Operation(summary = "์‚ฌ์šฉ์ž ํ•„ํ„ฐ๋ง ์ •๋ณด ์ˆ˜์ • API", description = "์‚ฌ์šฉ์ž ํ•„ํ„ฐ๋ง์„ ์ˆ˜์ •ํ•˜๋Š” API")
ResponseEntity<SuccessResponse> updateUserFilter(
@AuthenticationPrincipal Long userId,
@RequestBody UserFilterRequestDto requestDto
@AuthenticationPrincipal long userId,
@RequestBody UpdateUserFilterRequestDto requestDto
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,21 @@ public interface ScrapSwagger {

@Operation(summary = "์Šคํฌ๋žฉ ์ถ”๊ฐ€", description = "์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋žฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” API")
ResponseEntity<SuccessResponse> createScrap(
@AuthenticationPrincipal Long userId,
@PathVariable Long internshipAnnouncementId, @RequestBody CreateScrapRequestDto request
@AuthenticationPrincipal long userId,
@PathVariable long internshipAnnouncementId,
@RequestBody CreateScrapRequestDto request
);

@Operation(summary = "์Šคํฌ๋žฉ ์ทจ์†Œ", description = "์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋žฉ์„ ์ทจ์†Œํ•˜๋Š” API")
ResponseEntity<SuccessResponse> deleteScrap(
@AuthenticationPrincipal Long userId,
@PathVariable Long internshipAnnouncementId
@AuthenticationPrincipal long userId,
@PathVariable long internshipAnnouncementId
);

@Operation(summary = "์Šคํฌ๋žฉ ์ˆ˜์ •", description = "์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋žฉ ์ƒ‰์ƒ์„ ์ˆ˜์ •ํ•˜๋Š” API")
public ResponseEntity<SuccessResponse> updateScrapColor(
@AuthenticationPrincipal Long userId,
@PathVariable Long scrapId,
@AuthenticationPrincipal long userId,
@PathVariable long scrapId,
@RequestBody UpdateScrapRequestDto request
);

Expand Down
21 changes: 21 additions & 0 deletions src/main/java/org/terning/terningserver/domain/enums/Color.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.terning.terningserver.exception.CustomException;
import org.terning.terningserver.exception.enums.ErrorMessage;

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

import static org.terning.terningserver.exception.enums.ErrorMessage.INVALID_SCRAP_COLOR;

@RequiredArgsConstructor
@Getter
Expand All @@ -22,7 +30,20 @@ public enum Color {
private final String name;
private final String value;

private static final Map<String, Color> colorMap =
Arrays.stream(Color.values())
.collect(Collectors.toMap(Color::getName, color -> color));

public String getColorValue() {
return "#" + value;
}

public static Color findByName(String name) {
Color color = colorMap.get(name);
if (color == null) {
throw new CustomException(INVALID_SCRAP_COLOR);
}
return color;
}

}
14 changes: 7 additions & 7 deletions src/main/java/org/terning/terningserver/domain/enums/Grade.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
@Getter
@RequiredArgsConstructor
public enum Grade {
FRESHMAN(0, "1ํ•™๋…„"),
SOPHOMORE(1, "2ํ•™๋…„"),
JUNIOR(2, "3ํ•™๋…„"),
SENIOR(3, "4ํ•™๋…„");
FRESHMAN("freshman", "1ํ•™๋…„"),
SOPHOMORE("sophomore", "2ํ•™๋…„"),
JUNIOR("junior", "3ํ•™๋…„"),
SENIOR("senior", "4ํ•™๋…„");

private final int key;
private final String key;
private final String value;

public static Grade fromKey(int key){
public static Grade fromKey(String key){
for(Grade grade : Grade.values()){
if(grade.key == key){
if(grade.key.equals(key)){
return grade;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
@Getter
@RequiredArgsConstructor
public enum WorkingPeriod {
OPTION1(0, "1๊ฐœ์›” ~ 3๊ฐœ์›”"),
OPTION2(1, "4๊ฐœ์›” ~ 6๊ฐœ์›”"),
OPTION3(2, "7๊ฐœ์›” ์ด์ƒ");
OPTION1("short", "1๊ฐœ์›” ~ 3๊ฐœ์›”"),
OPTION2("middle", "4๊ฐœ์›” ~ 6๊ฐœ์›”"),
OPTION3("long", "7๊ฐœ์›” ์ด์ƒ");

private final int key;
private final String key;
private final String value;

public static WorkingPeriod fromKey(int key){
public static WorkingPeriod fromKey(String key){
for(WorkingPeriod period : WorkingPeriod.values()){
if(period.key == key){
if(period.key.equals(key)){
return period;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@

@Builder(access = PRIVATE)
public record SignUpFilterRequestDto(
int grade,
int workingPeriod,
String grade,
String workingPeriod,
int startYear,
int startMonth

) {
public static SignUpFilterRequestDto of(int grade, int workingPeriod, int startYear, int startMonth) {
public static SignUpFilterRequestDto of(String grade, String workingPeriod, int startYear, int startMonth) {
return SignUpFilterRequestDto.builder()
.grade(grade)
.workingPeriod(workingPeriod)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.terning.terningserver.dto.filter.request;

public record UserFilterRequestDto(
int grade,
int workingPeriod,
public record UpdateUserFilterRequestDto(
String grade,
String workingPeriod,
int startYear,
int startMonth
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@
import lombok.Builder;
import org.terning.terningserver.domain.Filter;

@Builder
public record UserFilterResponseDto(
Integer grade,
Integer workingPeriod,
import static lombok.AccessLevel.PRIVATE;

@Builder(access = PRIVATE)
public record UserFilterDetailResponseDto(
String grade,
String workingPeriod,
Integer startYear,
Integer startMonth
) {
public static UserFilterResponseDto of(Filter userFilter) {
return UserFilterResponseDto.builder()
public static UserFilterDetailResponseDto of(final Filter userFilter) {
return UserFilterDetailResponseDto.builder()
.grade(userFilter == null ? null : userFilter.getGrade().getKey())
.workingPeriod(userFilter == null ? null : userFilter.getWorkingPeriod().getKey())
.startYear(userFilter == null ? null : userFilter.getStartYear())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,52 @@
import lombok.Builder;
import org.terning.terningserver.domain.Company;
import org.terning.terningserver.domain.InternshipAnnouncement;
import org.terning.terningserver.domain.Scrap;
import org.terning.terningserver.util.DateUtil;

@Builder
import static lombok.AccessLevel.PRIVATE;

@Builder(access = PRIVATE)
public record InternshipDetailResponseDto(
String companyImage,
String dDay,
String title,
String deadline,
String workingPeriod,
String startDate,
boolean isScrapped,
String color,
String deadline,
String startYearMonth,
int scrapCount,
int viewCount,
String company,
String companyCategory,
String companyImage,
String qualification,
String jobType,
String detail,
String url,
Long scrapId
String url
) {
public static InternshipDetailResponseDto of(InternshipAnnouncement announcement, Company company, Long scrapId) {
public static InternshipDetailResponseDto of(
final InternshipAnnouncement announcement,
final Company company,
final Long scrapId,
final String color
) {
return InternshipDetailResponseDto.builder()
.companyImage(company.getCompanyImage())
.dDay(DateUtil.convert(announcement.getDeadline()))
.title(announcement.getTitle())
.deadline(DateUtil.convertDeadline(announcement.getDeadline()))
.workingPeriod(announcement.getWorkingPeriod())
.startDate(announcement.getStartYear() + "๋…„ " + announcement.getStartMonth() + "์›”")
.isScrapped(scrapId!=null)
.color(color)
.deadline(DateUtil.convertDeadline(announcement.getDeadline()))
.startYearMonth(announcement.getStartYear() + "๋…„ " + announcement.getStartMonth() + "์›”")
.scrapCount(announcement.getScrapCount())
.viewCount(announcement.getViewCount())
.company(company.getCompanyInfo())
.companyCategory(company.getCompanyCategory().getValue())
.companyImage(company.getCompanyImage())
.qualification(announcement.getQualifications())
.jobType(announcement.getJobType())
.detail(announcement.getDetail())
.url(announcement.getUrl())
.scrapId(scrapId)
.build();
}
}
Loading