Skip to content

Commit 9ae3f8f

Browse files
authored
Merge pull request #47 from ItRecode/feature/BE-30
[BE-30] λ ˆμ½”λ“œ μž‘μ„±, λ ˆμ½”λ“œ 쑰회
2 parents 5049563 + 1736fd7 commit 9ae3f8f

16 files changed

+298
-16
lines changed

β€Žsrc/main/java/com/recordit/server/controller/RecordController.javaβ€Ž

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.recordit.server.controller;
22

3+
import java.util.List;
4+
35
import javax.validation.Valid;
46

7+
import org.springframework.http.HttpStatus;
58
import org.springframework.http.MediaType;
69
import org.springframework.http.ResponseEntity;
710
import org.springframework.web.bind.annotation.GetMapping;
@@ -14,6 +17,7 @@
1417

1518
import com.recordit.server.dto.record.RecordDetailResponseDto;
1619
import com.recordit.server.dto.record.WriteRecordRequestDto;
20+
import com.recordit.server.dto.record.WriteRecordResponseDto;
1721
import com.recordit.server.exception.ErrorMessage;
1822
import com.recordit.server.service.RecordService;
1923

@@ -44,11 +48,11 @@ public class RecordController {
4448
)
4549
})
4650
@PostMapping(consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
47-
public ResponseEntity<?> writeRecord(
51+
public ResponseEntity<WriteRecordResponseDto> writeRecord(
4852
@ApiParam(required = true) @RequestPart(required = true) @Valid WriteRecordRequestDto writeRecordRequestDto,
49-
@ApiParam @RequestPart MultipartFile file
53+
@ApiParam @RequestPart(required = false) List<MultipartFile> files
5054
) {
51-
return null;
55+
return ResponseEntity.status(HttpStatus.CREATED).body(recordService.writeRecord(writeRecordRequestDto, files));
5256
}
5357

5458
@ApiOperation(
@@ -68,7 +72,7 @@ public ResponseEntity<?> writeRecord(
6872
@GetMapping("/{recordId}")
6973
public ResponseEntity<RecordDetailResponseDto> getDetailRecord(
7074
@PathVariable("recordId") Long recordId) {
71-
return null;
75+
return ResponseEntity.ok().body(recordService.getDetailRecord(recordId));
7276
}
7377

7478
}

β€Žsrc/main/java/com/recordit/server/domain/Record.javaβ€Ž

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.hibernate.annotations.SQLDelete;
1414
import org.hibernate.annotations.Where;
1515

16+
import com.recordit.server.dto.record.WriteRecordRequestDto;
17+
1618
import lombok.AccessLevel;
1719
import lombok.Getter;
1820
import lombok.NoArgsConstructor;
@@ -54,4 +56,40 @@ public class Record extends BaseEntity {
5456
@JoinColumn(name = "RECORD_ICON_ID")
5557
private RecordIcon recordIcon;
5658

59+
private Record(
60+
RecordCategory recordCategory,
61+
Member writer,
62+
String title,
63+
String content,
64+
Integer numOfImage,
65+
RecordColor recordColor,
66+
RecordIcon recordIcon
67+
) {
68+
this.recordCategory = recordCategory;
69+
this.writer = writer;
70+
this.title = title;
71+
this.content = content;
72+
this.numOfImage = numOfImage;
73+
this.recordColor = recordColor;
74+
this.recordIcon = recordIcon;
75+
}
76+
77+
public static Record of(
78+
WriteRecordRequestDto writeRecordRequestDto,
79+
RecordCategory recordCategory,
80+
Member member,
81+
Integer numOfImage,
82+
RecordColor recordColor,
83+
RecordIcon recordIcon
84+
) {
85+
return new Record(
86+
recordCategory,
87+
member,
88+
writeRecordRequestDto.getTitle(),
89+
writeRecordRequestDto.getContent(),
90+
numOfImage,
91+
recordColor,
92+
recordIcon
93+
);
94+
}
5795
}

β€Žsrc/main/java/com/recordit/server/dto/record/RecordDetailResponseDto.javaβ€Ž

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.recordit.server.dto.record;
22

33
import java.time.LocalDateTime;
4+
import java.util.List;
45

56
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
67
import com.fasterxml.jackson.databind.annotation.JsonNaming;
@@ -18,21 +19,39 @@
1819
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1920
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
2021
public class RecordDetailResponseDto {
22+
private Long recordId;
23+
private Long categoryId;
24+
private String categoryName;
2125
private String title;
2226
private String content;
23-
private String hex;
27+
private String writer;
28+
private String colorName;
2429
private String iconName;
2530
private LocalDateTime createdAt;
26-
private String imageUrl;
31+
private List<String> imageUrls;
2732

2833
@Builder
29-
public RecordDetailResponseDto(String title, String content, String hex, String iconName, LocalDateTime createdAt,
30-
String imageUrl) {
34+
public RecordDetailResponseDto(
35+
Long recordId,
36+
Long categoryId,
37+
String categoryName,
38+
String title,
39+
String content,
40+
String writer,
41+
String colorName,
42+
String iconName,
43+
LocalDateTime createdAt,
44+
List<String> imageUrls
45+
) {
46+
this.recordId = recordId;
47+
this.categoryId = categoryId;
48+
this.categoryName = categoryName;
3149
this.title = title;
3250
this.content = content;
33-
this.hex = hex;
51+
this.writer = writer;
52+
this.colorName = colorName;
3453
this.iconName = iconName;
3554
this.createdAt = createdAt;
36-
this.imageUrl = imageUrl;
55+
this.imageUrls = imageUrls;
3756
}
3857
}

β€Žsrc/main/java/com/recordit/server/dto/record/WriteRecordRequestDto.javaβ€Ž

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import javax.validation.constraints.NotBlank;
44
import javax.validation.constraints.NotNull;
5-
import javax.validation.constraints.Pattern;
65
import javax.validation.constraints.Size;
76

87
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
@@ -32,18 +31,24 @@ public class WriteRecordRequestDto {
3231
@NotBlank(message = "λ ˆμ½”λ“œ λ‚΄μš©μ€ 빈 값일 수 μ—†μŠ΅λ‹ˆλ‹€.")
3332
private String content;
3433

35-
@Pattern(regexp = "^#[A-Z0-9]{6}", message = "'#FFBF00'의 ν˜•νƒœλ‘œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.")
36-
private String hex;
34+
@NotBlank(message = "컬러 이름은 빈 값일 수 μ—†μŠ΅λ‹ˆλ‹€.")
35+
private String colorName;
3736

38-
@NotBlank(message = "μ•„μ΄μ½˜μ΄λ¦„μ€ 빈 값일 수 μ—†μŠ΅λ‹ˆλ‹€.")
37+
@NotBlank(message = "μ•„μ΄μ½˜ 이름은 빈 값일 수 μ—†μŠ΅λ‹ˆλ‹€.")
3938
private String iconName;
4039

4140
@Builder
42-
public WriteRecordRequestDto(Long recordCategoryId, String title, String content, String hex, String iconName) {
41+
public WriteRecordRequestDto(
42+
Long recordCategoryId,
43+
String title,
44+
String content,
45+
String colorName,
46+
String iconName
47+
) {
4348
this.recordCategoryId = recordCategoryId;
4449
this.title = title;
4550
this.content = content;
46-
this.hex = hex;
51+
this.colorName = colorName;
4752
this.iconName = iconName;
4853
}
4954
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.recordit.server.dto.record;
2+
3+
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
4+
import com.fasterxml.jackson.databind.annotation.JsonNaming;
5+
6+
import io.swagger.annotations.ApiModel;
7+
import lombok.AccessLevel;
8+
import lombok.Builder;
9+
import lombok.Getter;
10+
import lombok.NoArgsConstructor;
11+
import lombok.ToString;
12+
13+
@Getter
14+
@ToString
15+
@ApiModel
16+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
17+
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
18+
public class WriteRecordResponseDto {
19+
private Long recordId;
20+
21+
@Builder
22+
public WriteRecordResponseDto(Long recordId) {
23+
this.recordId = recordId;
24+
}
25+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.recordit.server.exception.member;
2+
3+
public class MemberNotFoundException extends RuntimeException {
4+
public MemberNotFoundException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.recordit.server.exception.record;
2+
3+
public class RecordColorNotFoundException extends RuntimeException {
4+
public RecordColorNotFoundException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.recordit.server.exception.record;
2+
3+
import org.springframework.http.HttpStatus;
4+
import org.springframework.http.ResponseEntity;
5+
import org.springframework.web.bind.annotation.ExceptionHandler;
6+
import org.springframework.web.bind.annotation.RestControllerAdvice;
7+
8+
import com.recordit.server.controller.RecordController;
9+
import com.recordit.server.exception.ErrorMessage;
10+
import com.recordit.server.exception.member.MemberNotFoundException;
11+
12+
import lombok.extern.slf4j.Slf4j;
13+
14+
@Slf4j
15+
@RestControllerAdvice(basePackageClasses = RecordController.class)
16+
public class RecordExceptionHandler {
17+
@ExceptionHandler(MemberNotFoundException.class)
18+
public ResponseEntity<ErrorMessage> handleMemberNotFoundException(
19+
MemberNotFoundException exception) {
20+
return ResponseEntity.badRequest()
21+
.body(ErrorMessage.of(exception, HttpStatus.BAD_REQUEST));
22+
}
23+
24+
@ExceptionHandler(RecordColorNotFoundException.class)
25+
public ResponseEntity<ErrorMessage> handleRecordColorNotFoundException(
26+
RecordColorNotFoundException exception) {
27+
return ResponseEntity.badRequest()
28+
.body(ErrorMessage.of(exception, HttpStatus.BAD_REQUEST));
29+
}
30+
31+
@ExceptionHandler(RecordNotFoundException.class)
32+
public ResponseEntity<ErrorMessage> handleRecordNotFoundException(
33+
RecordNotFoundException exception) {
34+
return ResponseEntity.badRequest()
35+
.body(ErrorMessage.of(exception, HttpStatus.BAD_REQUEST));
36+
}
37+
}
38+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.recordit.server.exception.record;
2+
3+
public class RecordIconNotFoundException extends RuntimeException {
4+
public RecordIconNotFoundException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.recordit.server.exception.record;
2+
3+
public class RecordNotFoundException extends RuntimeException {
4+
public RecordNotFoundException(String message) {
5+
super(message);
6+
}
7+
}

0 commit comments

Comments
Β (0)