Skip to content

Commit 9a9035e

Browse files
authored
Api-v0.0.3-8
2 parents cb0eb71 + ca880bd commit 9a9035e

File tree

18 files changed

+79
-40
lines changed

18 files changed

+79
-40
lines changed

Whatnow-Api/src/main/kotlin/com/depromeet/whatnow/api/image/controller/ImageController.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.depromeet.whatnow.api.image.controller
22

33
import com.depromeet.whatnow.api.image.dto.ImageCommentElement
4+
import com.depromeet.whatnow.api.image.dto.ImageDto
45
import com.depromeet.whatnow.api.image.dto.ImageUrlResponse
56
import com.depromeet.whatnow.api.image.dto.PromiseImageDetailResponse
67
import com.depromeet.whatnow.api.image.dto.PromiseImageResponse
@@ -50,8 +51,8 @@ class ImageController(
5051
@PathVariable imageKey: String,
5152
@RequestParam fileExtension: ImageFileExtension,
5253
@RequestParam promiseImageCommentType: PromiseImageCommentType,
53-
) {
54-
successUseCase.promiseUploadImageSuccess(promiseId, imageKey, fileExtension, promiseImageCommentType)
54+
): ImageDto {
55+
return successUseCase.promiseUploadImageSuccess(promiseId, imageKey, fileExtension, promiseImageCommentType)
5556
}
5657

5758
@Tag(name = "6-1 [약속 이미지]")
@@ -94,7 +95,7 @@ class ImageController(
9495
@Tag(name = "6-2 [유저 이미지]")
9596
@Operation(summary = "유저 프로필 이미지 업로드 성공 요청")
9697
@PostMapping("/{imageKey}/users/me")
97-
fun userUploadImageSuccess(@PathVariable imageKey: String, @RequestParam fileExtension: ImageFileExtension) {
98-
successUseCase.userUploadImageSuccess(imageKey, fileExtension)
98+
fun userUploadImageSuccess(@PathVariable imageKey: String, @RequestParam fileExtension: ImageFileExtension): ImageDto {
99+
return successUseCase.userUploadImageSuccess(imageKey, fileExtension)
99100
}
100101
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.depromeet.whatnow.api.image.dto
2+
3+
data class ImageDto(
4+
val imageUrl: String,
5+
) {
6+
companion object {
7+
fun from(imageUrl: String): ImageDto {
8+
return ImageDto(imageUrl)
9+
}
10+
}
11+
}

Whatnow-Api/src/main/kotlin/com/depromeet/whatnow/api/image/usecase/ImageUploadSuccessUseCase.kt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.depromeet.whatnow.api.image.usecase
22

33
import com.depromeet.whatnow.annotation.UseCase
4+
import com.depromeet.whatnow.api.image.dto.ImageDto
45
import com.depromeet.whatnow.config.s3.ImageFileExtension
56
import com.depromeet.whatnow.config.security.SecurityUtils
67
import com.depromeet.whatnow.domains.image.domain.PromiseImageCommentType
@@ -15,13 +16,21 @@ class ImageUploadSuccessUseCase(
1516
imageKey: String,
1617
fileExtension: ImageFileExtension,
1718
promiseImageCommentType: PromiseImageCommentType,
18-
) {
19+
): ImageDto {
1920
val currentUserId: Long = SecurityUtils.currentUserId
20-
imageDomainService.promiseImageUploadSuccess(currentUserId, promiseId, imageKey, fileExtension, promiseImageCommentType)
21+
val imageUrl = imageDomainService.promiseImageUploadSuccess(
22+
currentUserId,
23+
promiseId,
24+
imageKey,
25+
fileExtension,
26+
promiseImageCommentType,
27+
)
28+
return ImageDto.from(imageUrl)
2129
}
2230

23-
fun userUploadImageSuccess(imageKey: String, fileExtension: ImageFileExtension) {
31+
fun userUploadImageSuccess(imageKey: String, fileExtension: ImageFileExtension): ImageDto {
2432
val currentUserId: Long = SecurityUtils.currentUserId
25-
imageDomainService.userImageUploadSuccess(currentUserId, imageKey, fileExtension)
33+
val imageUrl = imageDomainService.userImageUploadSuccess(currentUserId, imageKey, fileExtension)
34+
return ImageDto.from(imageUrl)
2635
}
2736
}

Whatnow-Api/src/main/kotlin/com/depromeet/whatnow/api/location/helper/NcpHelper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.depromeet.whatnow.annotation.Helper
44
import com.depromeet.whatnow.api.NcpLocalSearchClient
55
import com.depromeet.whatnow.api.dto.NcpMapInfoResponse
66
import com.depromeet.whatnow.config.NcpProperties
7+
import com.depromeet.whatnow.consts.NCP_LOCAL_SEARCH_DISPLAY_COUNT
78

89
@Helper
910
class NcpHelper(
@@ -14,6 +15,6 @@ class NcpHelper(
1415

1516
// 검색 키워드 조회
1617
fun getLocalSearch(keyword: String): NcpMapInfoResponse {
17-
return ncpClient.searchByKeyword(ncpPropertie.accessKey, ncpPropertie.secretKey, keyword)
18+
return ncpClient.searchByKeyword(ncpPropertie.accessKey, ncpPropertie.secretKey, NCP_LOCAL_SEARCH_DISPLAY_COUNT, keyword)
1819
}
1920
}

Whatnow-Api/src/main/kotlin/com/depromeet/whatnow/api/promise/usecase/PromiseRegisterUseCase.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import com.depromeet.whatnow.common.vo.PlaceVo
77
import com.depromeet.whatnow.domains.promise.adaptor.PromiseAdaptor
88
import com.depromeet.whatnow.domains.promise.domain.Promise
99
import com.depromeet.whatnow.domains.promise.service.PromiseDomainService
10+
import org.springframework.transaction.annotation.Transactional
1011
import java.time.LocalDateTime
1112

1213
@UseCase
1314
class PromiseRegisterUseCase(
1415
val promiseAdaptor: PromiseAdaptor,
1516
val promiseDomainService: PromiseDomainService,
1617
) {
18+
@Transactional
1719
fun createPromise(promiseRequest: PromiseRequest): PromiseDto {
1820
val promise = promiseDomainService.save(
1921
Promise(
@@ -23,6 +25,7 @@ class PromiseRegisterUseCase(
2325
endTime = promiseRequest.endTime,
2426
),
2527
)
28+
promise.createPromiseEvent()
2629
return PromiseDto.from(promise)
2730
}
2831

Whatnow-Api/src/test/kotlin/com/depromeet/whatnow/api/image/usecase/PromiseImageUploadSuccessUseCaseTest.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import org.junit.jupiter.api.extension.ExtendWith
1010
import org.mockito.InjectMocks
1111
import org.mockito.Mock
1212
import org.mockito.junit.jupiter.MockitoExtension
13+
import org.mockito.kotlin.given
1314
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
1415
import org.springframework.security.core.authority.SimpleGrantedAuthority
1516
import org.springframework.security.core.context.SecurityContextHolder
@@ -33,8 +34,9 @@ class PromiseImageUploadSuccessUseCaseTest {
3334
@Test
3435
fun `약속 이미지 업로드 성공 요청시 정상적이라면 에러가 발생하지 않는다`() {
3536
// given
37+
given(imageDomainService.promiseImageUploadSuccess(1, 1, "imageKey", ImageFileExtension.JPG, PromiseImageCommentType.SORRY_LATE))
38+
.willReturn("imageUrl")
3639
// when
37-
3840
// then
3941
assertThatCode {
4042
imageUploadSuccessUseCase.promiseUploadImageSuccess(1, "imageKey", ImageFileExtension.JPG, PromiseImageCommentType.SORRY_LATE)
@@ -44,7 +46,8 @@ class PromiseImageUploadSuccessUseCaseTest {
4446
@Test
4547
fun `유저 프로필 업로드 성공 요청시 정상적이라면 에러가 발생하지 않는다`() {
4648
// given
47-
49+
given(imageDomainService.userImageUploadSuccess(1, "imageKey", ImageFileExtension.JPG))
50+
.willReturn("imageUrl")
4851
// when
4952

5053
// then

Whatnow-Common/src/main/kotlin/com/depromeet/whatnow/consts/WhatNowStatic.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ const val DEV = "dev"
2626
const val LOCAL = "local"
2727
const val WITHDRAW_PREFIX = "withdraw"
2828
const val RADIUS_WAIT_CONFIRM = 200
29+
const val SLACK_MAX_LENGTH = 1000
2930

31+
const val NCP_LOCAL_SEARCH_DISPLAY_COUNT = 10
3032
const val IMAGE_DOMAIN = "https://image.whatnow.kr"
3133
const val ASSERT_IMAGE_DOMAIN = "https://image.whatnow.kr/assert"
3234
const val USER_DEFAULT_PROFILE_IMAGE = "https://image.whatnow.kr/assert/users/default.svg"

Whatnow-Domain/src/main/kotlin/com/depromeet/whatnow/domains/image/service/ImageDomainService.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,22 @@ class ImageDomainService(
3232
imageKey: String,
3333
fileExtension: ImageFileExtension,
3434
promiseImageCommentType: PromiseImageCommentType,
35-
) {
35+
): String {
3636
val promiseUser = promiseUserAdapter.findByPromiseIdAndUserId(promiseId, userId)
3737
validatePromiseUserType(promiseUser.promiseUserType!!, promiseImageCommentType)
3838

3939
val imageUrl = IMAGE_DOMAIN + "/" + springEnvironmentHelper.activeProfile + "/" + "promise/$promiseId/$imageKey"
4040
promiseImageAdapter.save(
4141
PromiseImage.of(promiseId, userId, imageUrl, imageKey, fileExtension, promiseImageCommentType),
4242
)
43+
return imageUrl
4344
}
4445

4546
@Transactional
46-
fun userImageUploadSuccess(userId: Long, imageKey: String, fileExtension: ImageFileExtension) {
47+
fun userImageUploadSuccess(userId: Long, imageKey: String, fileExtension: ImageFileExtension): String {
4748
val imageUrl = IMAGE_DOMAIN + "/" + springEnvironmentHelper.activeProfile + "/" + "user/$userId/$imageKey"
4849
userImageAdapter.save(UserImage.of(userId, imageUrl, imageKey, fileExtension))
50+
return imageUrl
4951
}
5052

5153
private fun validatePromiseUserType(promiseUserType: PromiseUserType, promiseImageCommentType: PromiseImageCommentType) {

Whatnow-Domain/src/main/kotlin/com/depromeet/whatnow/domains/promise/domain/Promise.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import java.time.LocalDateTime
1111
import javax.persistence.Column
1212
import javax.persistence.Embedded
1313
import javax.persistence.Entity
14+
import javax.persistence.EnumType
1415
import javax.persistence.Enumerated
1516
import javax.persistence.GeneratedValue
1617
import javax.persistence.GenerationType
1718
import javax.persistence.Id
18-
import javax.persistence.PostPersist
1919
import javax.persistence.Table
2020

2121
@Entity
@@ -33,7 +33,7 @@ class Promise(
3333
@Embedded
3434
var meetPlace: PlaceVo? = null,
3535

36-
@Enumerated
36+
@Enumerated(EnumType.STRING)
3737
var promiseType: PromiseType = PromiseType.BEFORE,
3838

3939
@Id
@@ -44,7 +44,6 @@ class Promise(
4444
// 차후 이벤트 domain 설계 되면 생성시에 Domain 계층에서 validate 하겠습니다
4545
// var promiseValidator: PromiseValidator,
4646
) : BaseTimeEntity() {
47-
@PostPersist
4847
fun createPromiseEvent() {
4948
Events.raise(PromiseRegisterEvent(this.id!!, this.mainUserId))
5049
}

Whatnow-Domain/src/main/kotlin/com/depromeet/whatnow/domains/promiseuser/domain/PromiseUser.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import com.depromeet.whatnow.events.domainEvent.PromiseUserRegisterEvent
88
import javax.persistence.Column
99
import javax.persistence.Embedded
1010
import javax.persistence.Entity
11+
import javax.persistence.EnumType
12+
import javax.persistence.Enumerated
1113
import javax.persistence.GeneratedValue
1214
import javax.persistence.GenerationType
1315
import javax.persistence.Id
14-
import javax.persistence.PostPersist
1516
import javax.persistence.PostUpdate
1617
import javax.persistence.Table
1718

@@ -23,10 +24,10 @@ class PromiseUser(
2324
var userId: Long,
2425

2526
@Embedded
26-
var userLocation: CoordinateVo? = null,
27+
var userLocation: CoordinateVo = CoordinateVo(0.0, 0.0),
2728

28-
@Embedded
29-
var promiseUserType: PromiseUserType? = PromiseUserType.READY,
29+
@Enumerated(EnumType.STRING)
30+
var promiseUserType: PromiseUserType = PromiseUserType.READY,
3031

3132
@Id
3233
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -41,7 +42,6 @@ class PromiseUser(
4142
Events.raise(PromiseUserCancelEvent(this.promiseId, this.userId, this.id!!))
4243
}
4344

44-
@PostPersist
4545
fun createPromiseUserEvent() {
4646
Events.raise(PromiseUserRegisterEvent(this.promiseId, this.userId, this.id!!))
4747
}
@@ -56,10 +56,10 @@ class PromiseUser(
5656
}
5757

5858
fun updatePromiseUserType(promiseUserType: PromiseUserType?) {
59-
this.promiseUserType = promiseUserType
59+
this.promiseUserType = promiseUserType!!
6060
}
6161
fun updatePromiseUserLocation(userLocation: CoordinateVo?) {
62-
this.userLocation = userLocation
62+
this.userLocation = userLocation!!
6363
}
6464
fun userLocationInit() {
6565
this.userLocation = CoordinateVo(0.0, 0.0)

0 commit comments

Comments
 (0)