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

[BSVR-148/FEAT] 시야 후기 등록 서버 통신 2차 구현 #41

Merged
merged 56 commits into from
Jul 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
a539189
[fix/#33] 블럭별 좌석 열/번 범위 조회 API 연결 및 특정 구역 열별 UI 분기 처리
minju1459 Jul 18, 2024
e40c27d
[feat/#33] 열/번 에러 처리 UI 분기 처리
minju1459 Jul 18, 2024
c457a14
[feat/#33] 리뷰 이미지 업로드용 presigned url 생성 API data, domain 연결
minju1459 Jul 18, 2024
e37fe77
[feat/#33] svg 파일 coil 확장 함수 업로드
minju1459 Jul 18, 2024
5917caf
[fix/#33] 직관 후기 등록 API endPoint, dto 수정사항 적용
minju1459 Jul 18, 2024
9c03716
[fix/#33] image 업로드 svg -> png 변경
minju1459 Jul 19, 2024
571695d
[feat/#33] 리뷰 이미지 url 생성 API data, domain 수정
minju1459 Jul 19, 2024
3701f5c
[feat/#33] 리뷰 이미지 url 생성 API 서버 통신 구현
minju1459 Jul 19, 2024
7afa08a
[feat/#33] 리뷰 등록 API domain, data 수정
minju1459 Jul 19, 2024
eac5dbe
[feat/#33] 리뷰 등록 API 서버 통신
minju1459 Jul 19, 2024
3a7123a
[feat/#33] 임시 토큰 저장 및 야구장 이름 리스트 dto 수정
minju1459 Jul 20, 2024
e71520e
[feat/#33] 열번 처리 에러 수정
minju1459 Jul 21, 2024
a3ad1e9
[feat/#33] preSignedUrl URL 요청 API 수정
minju1459 Jul 21, 2024
8b409d5
[fix/#33] 직관 후기 등록 API request memberId 필드 삭제
minju1459 Jul 21, 2024
6a78632
[fix/#33] 열/번 에러 처리 dto 수정 및 로직 변경
minju1459 Jul 21, 2024
e8091e5
[fix/#33] 시야 후기 개수 로직 변경
minju1459 Jul 21, 2024
2459672
[fix/#33] 좌석 선택 열, 번 maxlength 적용
minju1459 Jul 21, 2024
0e93488
[fix/#33] 임시 token 인터셉터 삭제
minju1459 Jul 21, 2024
c47ffb0
Merge remote-tracking branch 'origin/main' into feat/#33-seat-review-…
minju1459 Jul 21, 2024
cf79fd3
[fix/#33] manifest exported true -> false
minju1459 Jul 21, 2024
ce6e383
[fix/#33] 불필요한 dependency 제거
minju1459 Jul 21, 2024
ab90c58
[fix/#33] 블럭별 좌석 열/번 범위 조회 API 연결 및 특정 구역 열별 UI 분기 처리
minju1459 Jul 18, 2024
3f6f680
[feat/#33] 열/번 에러 처리 UI 분기 처리
minju1459 Jul 18, 2024
85306c2
[feat/#33] 리뷰 이미지 업로드용 presigned url 생성 API data, domain 연결
minju1459 Jul 18, 2024
74ae1e5
[feat/#33] svg 파일 coil 확장 함수 업로드
minju1459 Jul 18, 2024
5a31f70
[fix/#33] 직관 후기 등록 API endPoint, dto 수정사항 적용
minju1459 Jul 18, 2024
1a90521
[fix/#33] image 업로드 svg -> png 변경
minju1459 Jul 19, 2024
f359026
[feat/#33] 리뷰 이미지 url 생성 API data, domain 수정
minju1459 Jul 19, 2024
e1b9bec
[feat/#33] 리뷰 이미지 url 생성 API 서버 통신 구현
minju1459 Jul 19, 2024
e395ed6
[feat/#33] 리뷰 등록 API domain, data 수정
minju1459 Jul 19, 2024
da64205
[feat/#33] 리뷰 등록 API 서버 통신
minju1459 Jul 19, 2024
0345b46
[feat/#33] 임시 토큰 저장 및 야구장 이름 리스트 dto 수정
minju1459 Jul 20, 2024
bb30205
[feat/#33] 열번 처리 에러 수정
minju1459 Jul 21, 2024
4341a7f
[feat/#33] preSignedUrl URL 요청 API 수정
minju1459 Jul 21, 2024
747f9b4
[fix/#33] 직관 후기 등록 API request memberId 필드 삭제
minju1459 Jul 21, 2024
d602126
[fix/#33] 열/번 에러 처리 dto 수정 및 로직 변경
minju1459 Jul 21, 2024
4320b0f
[fix/#33] 시야 후기 개수 로직 변경
minju1459 Jul 21, 2024
43229ec
[fix/#33] 좌석 선택 열, 번 maxlength 적용
minju1459 Jul 21, 2024
0c76b0e
[fix/#33] 임시 token 인터셉터 삭제
minju1459 Jul 21, 2024
32479fd
[fix/#33] manifest exported true -> false
minju1459 Jul 21, 2024
31ad404
[fix/#33] 불필요한 dependency 제거
minju1459 Jul 21, 2024
7e3712c
[fix/#33] 직관 후기 등록 DTO 수정사항 반영
minju1459 Jul 25, 2024
d88ca19
[fix/#33] preSignedUrl DTO 수정사항 반영
minju1459 Jul 26, 2024
d73a139
[fix/#33] 직관 후기 등록 API 서버 수정사항 반영
minju1459 Jul 27, 2024
26f973f
Merge remote-tracking branch 'origin/main' into feat/#33-seat-review-…
minju1459 Jul 27, 2024
111c949
[feat/#33] upload image API, 직관 후기 등록 API 작동 확인
minju1459 Jul 27, 2024
f2f24ae
Merge remote-tracking branch 'origin/feat/#33-seat-review-final-api' …
minju1459 Jul 27, 2024
cd251dd
Merge remote-tracking branch 'origin/feat/#33-seat-review-final-api' …
minju1459 Jul 27, 2024
764bde5
Merge remote-tracking branch 'origin/feat/#33-seat-review-final-api' …
minju1459 Jul 27, 2024
64d5988
[fix/#33] 날짜 format 변경 및 Date 관련 리팩토링
minju1459 Jul 28, 2024
069bd43
[fix/#33] 함수명 변경 및 홈 이동 플로우 추가
minju1459 Jul 29, 2024
0e35b51
[fix/#33] manifest true -> false
minju1459 Jul 29, 2024
6b5e0af
[fix/#33] 다중 이미지 직관 등록 API 중복 통신 수정
minju1459 Jul 29, 2024
f88c017
Merge remote-tracking branch 'origin/main' into feat/#33-seat-review-…
minju1459 Jul 29, 2024
003bfe7
Merge remote-tracking branch 'origin/feat/#33-seat-review-final-api' …
minju1459 Jul 29, 2024
ebd315d
[fix/#33] 직관 등록뷰 git 오류 수정
minju1459 Jul 29, 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: 1 addition & 1 deletion buildSrc/build/kotlin/buildSrcjar-classes.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/AndroidXDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/ClassPathPlugins.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/ComposeDependency.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/Constants.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/DependenciesKt.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/FirebaseDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/KaptDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/KotlinDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/MaterialDesignDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/TestDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/ThirdPartyDependencies.class:/Users/ssongsik/AndroidStudioProjects/SPOT-Android/buildSrc/build/classes/kotlin/main/Versions.class
/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/AndroidXDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/ClassPathPlugins.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/ComposeDependency.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/Constants.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/DependenciesKt.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/FirebaseDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/KaptDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/KotlinDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/MaterialDesignDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/TestDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/ThirdPartyDependencies.class:/Users/minju1459/DepromeetAndroid/buildSrc/build/classes/kotlin/main/Versions.class
Binary file modified buildSrc/build/kotlin/compileKotlin/cacheable/last-build.bin
Binary file not shown.
Binary file not shown.
Binary file modified buildSrc/build/libs/buildSrc.jar
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.depromeet.data.datasource

import com.depromeet.data.model.request.RequestSeatReviewDto
import com.depromeet.data.model.response.seatReview.ResponsePreSignedUrlDto
import com.depromeet.data.model.response.seatReview.ResponseSeatBlockDto
import com.depromeet.data.model.response.seatReview.ResponseSeatMaxDto
import com.depromeet.data.model.response.seatReview.ResponseSeatRangeDto
import com.depromeet.data.model.response.seatReview.ResponseStadiumNameDto
import com.depromeet.data.model.response.seatReview.ResponseStadiumSectionDto

Expand All @@ -18,12 +19,23 @@ interface SeatReviewDataSource {
sectionId: Int,
): List<ResponseSeatBlockDto>

suspend fun getSeatMaxData(
suspend fun getSeatRangeData(
stadiumId: Int,
sectionId: Int,
): ResponseSeatMaxDto
): List<ResponseSeatRangeDto>

suspend fun postImagePreSignedData(
fileExtension: String,
): ResponsePreSignedUrlDto

suspend fun putReviewImageData(
presignedUrl: String,
image: ByteArray,
)

suspend fun postSeatReviewData(
blockId: Int,
seatNumber: Int,
requestSeatReviewDto: RequestSeatReviewDto,
)
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package com.depromeet.data.datasource.remote

import com.depromeet.data.datasource.SeatReviewDataSource
import com.depromeet.data.model.request.RequestPreSignedUrlDto
import com.depromeet.data.model.request.RequestSeatReviewDto
import com.depromeet.data.model.response.seatReview.ResponsePreSignedUrlDto
import com.depromeet.data.model.response.seatReview.ResponseSeatBlockDto
import com.depromeet.data.model.response.seatReview.ResponseSeatMaxDto
import com.depromeet.data.model.response.seatReview.ResponseSeatRangeDto
import com.depromeet.data.model.response.seatReview.ResponseStadiumNameDto
import com.depromeet.data.model.response.seatReview.ResponseStadiumSectionDto
import com.depromeet.data.remote.SeatReviewService
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.toRequestBody
import javax.inject.Inject

class SeatReviewDataSourceImpl @Inject constructor(
Expand All @@ -29,14 +33,38 @@ class SeatReviewDataSourceImpl @Inject constructor(
return seatReviewService.getSeatBlock(stadiumId, sectionId)
}

override suspend fun getSeatMaxData(
override suspend fun getSeatRangeData(
stadiumId: Int,
sectionId: Int,
): ResponseSeatMaxDto {
return seatReviewService.getSeatMax(stadiumId, sectionId)
): List<ResponseSeatRangeDto> {
return seatReviewService.getSeatRange(stadiumId, sectionId)
}

override suspend fun postSeatReviewData(requestSeatReviewDto: RequestSeatReviewDto) {
return seatReviewService.postSeatReview(requestSeatReviewDto)
override suspend fun postImagePreSignedData(
fileExtension: String,
): ResponsePreSignedUrlDto {
return seatReviewService.postImagePreSignedUrl(
RequestPreSignedUrlDto(fileExtension),
)
}

override suspend fun putReviewImageData(
presignedUrl: String,
image: ByteArray,
) {
val mediaType = "image/*".toMediaTypeOrNull()
return seatReviewService.putProfileImage(presignedUrl, image.toRequestBody(mediaType))
}

override suspend fun postSeatReviewData(
blockId: Int,
seatNumber: Int,
requestSeatReviewDto: RequestSeatReviewDto,
) {
return seatReviewService.postSeatReview(
blockId,
seatNumber,
requestSeatReviewDto,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.depromeet.data.model.request

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class RequestPreSignedUrlDto(
@SerialName("fileExtension")
val fileExtension: String,
)
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,21 @@ import kotlinx.serialization.Serializable

@Serializable
data class RequestSeatReviewDto(
@SerialName("stadiumId")
val stadiumId: Int,
@SerialName("blockId")
val blockId: Int,
@SerialName("rowId")
val rowId: Int,
@SerialName("seatNumber")
val seatNumber: Int,
@SerialName("images")
val images: List<String>,
@SerialName("date")
val date: String,
@SerialName("dateTime")
val dateTime: String,
@SerialName("good")
val good: List<String>,
@SerialName("bad")
val bad: List<String>,
@SerialName("content")
val content: String,
val content: String?,
)

fun SeatReviewModel.toSeatReview() = RequestSeatReviewDto(
stadiumId = stadiumId,
blockId = blockId,
rowId = rowId,
seatNumber = seatNumber,
images = images,
date = date,
dateTime = dateTime,
good = good,
bad = bad,
content = content,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.depromeet.data.model.response.seatReview

import com.depromeet.domain.entity.response.seatReview.ResponsePresignedUrlModel
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponsePreSignedUrlDto(
@SerialName("presignedUrl")
val presignedUrl: String,
) {

fun toResponsePreSignedUrl(): ResponsePresignedUrlModel {
return ResponsePresignedUrlModel(presignedUrl)
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.depromeet.data.model.response.seatReview

import com.depromeet.domain.entity.response.seatReview.SeatMaxModel
import com.depromeet.domain.entity.response.seatReview.SeatRangeModel
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponseSeatMaxDto(
data class ResponseSeatRangeDto(
@SerialName("id")
val id: Int,
@SerialName("code")
Expand All @@ -19,23 +19,20 @@ data class ResponseSeatMaxDto(
val id: Int,
@SerialName("number")
val number: Int,
@SerialName("minSeatNum")
val minSeatNum: Int,
@SerialName("maxSeatNum")
val maxSeatNum: Int,
@SerialName("seatNumList")
val seatNumList: List<Int>,
) {
fun toRowInfo(): SeatMaxModel.RowInfo {
return SeatMaxModel.RowInfo(
fun toRowInfo(): SeatRangeModel.RowInfo {
return SeatRangeModel.RowInfo(
id = id,
number = number,
minSeatNum = minSeatNum,
maxSeatNum = maxSeatNum,
seatNumList = seatNumList,
)
}
}

fun toSeatMax(): SeatMaxModel {
return SeatMaxModel(
fun toSeatRange(): SeatRangeModel {
return SeatRangeModel(
id = id,
code = code,
rowInfo = rowInfo.map { it.toRowInfo() },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ data class ResponseStadiumNameDto(
val id: Int,
@SerialName("name")
val name: String,
@SerialName("isActive")
val isActive: Boolean,
) {
fun toStadiumName(): StadiumNameModel {
return StadiumNameModel(
id = id,
name = name,
isActive = isActive,
)
}
}
26 changes: 22 additions & 4 deletions data/src/main/java/com/depromeet/data/remote/SeatReviewService.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
package com.depromeet.data.remote

import com.depromeet.data.model.request.RequestPreSignedUrlDto
import com.depromeet.data.model.request.RequestSeatReviewDto
import com.depromeet.data.model.response.seatReview.ResponsePreSignedUrlDto
import com.depromeet.data.model.response.seatReview.ResponseSeatBlockDto
import com.depromeet.data.model.response.seatReview.ResponseSeatMaxDto
import com.depromeet.data.model.response.seatReview.ResponseSeatRangeDto
import com.depromeet.data.model.response.seatReview.ResponseStadiumNameDto
import com.depromeet.data.model.response.seatReview.ResponseStadiumSectionDto
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Path
import retrofit2.http.Url

interface SeatReviewService {
@GET("/api/v1/stadiums/names")
Expand All @@ -26,13 +31,26 @@ interface SeatReviewService {
): List<ResponseSeatBlockDto>

@GET("/api/v1/stadiums/{stadiumId}/sections/{sectionId}/blocks/rows")
suspend fun getSeatMax(
suspend fun getSeatRange(
@Path("stadiumId") stadiumId: Int,
@Path("sectionId") sectionId: Int,
): ResponseSeatMaxDto
): List<ResponseSeatRangeDto>

@POST("/api/v1/reviews")
@POST("/api/v1/reviews/images")
suspend fun postImagePreSignedUrl(
@Body body: RequestPreSignedUrlDto,
): ResponsePreSignedUrlDto

@PUT
suspend fun putProfileImage(
@Url preSignedUrl: String,
@Body image: RequestBody,
)

@POST("/api/v1/blocks/{blockId}/seats/{seatNumber}/reviews")
suspend fun postSeatReview(
@Path("blockId") blockId: Int,
@Path("seatNumber") seatNumber: Int,
@Body requestPostSignupDto: RequestSeatReviewDto,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package com.depromeet.data.repository
import com.depromeet.data.datasource.SeatReviewDataSource
import com.depromeet.data.model.request.toSeatReview
import com.depromeet.domain.entity.request.SeatReviewModel
import com.depromeet.domain.entity.response.seatReview.ResponsePresignedUrlModel
import com.depromeet.domain.entity.response.seatReview.SeatBlockModel
import com.depromeet.domain.entity.response.seatReview.SeatMaxModel
import com.depromeet.domain.entity.response.seatReview.SeatRangeModel
import com.depromeet.domain.entity.response.seatReview.StadiumNameModel
import com.depromeet.domain.entity.response.seatReview.StadiumSectionModel
import com.depromeet.domain.repository.SeatReviewRepository
Expand Down Expand Up @@ -41,23 +42,47 @@ class SeatReviewRepositoryImpl @Inject constructor(
}
}

override suspend fun getSeatMax(
override suspend fun getSeatRange(
stadiumId: Int,
sectionId: Int,
): Result<SeatMaxModel?> {
): Result<List<SeatRangeModel>> {
return runCatching {
seatReviewDataSource.getSeatMaxData(
stadiumId,
sectionId,
).toSeatMax()
val response = seatReviewDataSource.getSeatRangeData(stadiumId, sectionId)
response.map { it.toSeatRange() }
}
}

override suspend fun postReviewImagePresigned(
fileExtension: String,
): Result<ResponsePresignedUrlModel> {
return runCatching {
seatReviewDataSource.postImagePreSignedData(
fileExtension,
).toResponsePreSignedUrl()
}
}

override suspend fun putImagePreSignedUrl(
presignedUrl: String,
image: ByteArray,
): Result<Unit> {
return runCatching {
seatReviewDataSource.putReviewImageData(
presignedUrl,
image,
)
}
}

override suspend fun postSeatReview(
blockId: Int,
seatNumber: Int,
seatReviewInfo: SeatReviewModel,
): Result<Unit> {
return runCatching {
seatReviewDataSource.postSeatReviewData(
blockId,
seatNumber,
seatReviewInfo.toSeatReview(),
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.depromeet.domain.entity.request

data class RequestUploadUrlModel(
val fileExtension: String,
)
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package com.depromeet.domain.entity.request

data class SeatReviewModel(
val stadiumId: Int,
val blockId: Int,
val rowId: Int,
val seatNumber: Int,
val images: List<String>,
val date: String,
val dateTime: String,
val good: List<String>,
val bad: List<String>,
val content: String,
val content: String?,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.depromeet.domain.entity.response.seatReview

data class ResponsePresignedUrlModel(
val presignedUrl: String = "",
)
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.depromeet.domain.entity.response.seatReview

data class SeatMaxModel(
data class SeatRangeModel(
val id: Int,
val code: String,
val rowInfo: List<RowInfo>,
) {
data class RowInfo(
val id: Int,
val number: Int,
val minSeatNum: Int,
val maxSeatNum: Int,
val seatNumList: List<Int>,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ package com.depromeet.domain.entity.response.seatReview
data class StadiumNameModel(
var id: Int,
val name: String,
val isActive: Boolean
)
Loading
Loading