diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3f37259a..c096b20f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -91,6 +91,11 @@ android:exported="false" android:screenOrientation="portrait" /> + + \ No newline at end of file diff --git a/domain/src/main/kotlin/co/orange/domain/entity/response/SellDetailModel.kt b/domain/src/main/kotlin/co/orange/domain/entity/response/SellDetailModel.kt new file mode 100644 index 00000000..a4cce85f --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/entity/response/SellDetailModel.kt @@ -0,0 +1,18 @@ +package co.orange.domain.entity.response + +import co.orange.domain.enums.ItemStatus +import co.orange.domain.enums.OrderStatus + +data class SellDetailModel( + val itemId: String, + val itemStatus: ItemStatus, + val productName: String, + val imgUrl: String, + val originPrice: Int, + val salePrice: Int, + val orderId: String, + val orderStatus: OrderStatus, + val buyerNickname: String, + val addressInfo: List, + val paymentInfo: List, +) diff --git a/domain/src/main/kotlin/co/orange/domain/entity/response/SellItemModel.kt b/domain/src/main/kotlin/co/orange/domain/entity/response/SellProductModel.kt similarity index 83% rename from domain/src/main/kotlin/co/orange/domain/entity/response/SellItemModel.kt rename to domain/src/main/kotlin/co/orange/domain/entity/response/SellProductModel.kt index dcf2a1a1..16ce6a39 100644 --- a/domain/src/main/kotlin/co/orange/domain/entity/response/SellItemModel.kt +++ b/domain/src/main/kotlin/co/orange/domain/entity/response/SellProductModel.kt @@ -1,6 +1,6 @@ package co.orange.domain.entity.response -data class SellItemModel( +data class SellProductModel( val productId: Long, val productName: String, val originPrice: Int, diff --git a/domain/src/main/kotlin/co/orange/domain/enums/ItemStatus.kt b/domain/src/main/kotlin/co/orange/domain/enums/ItemStatus.kt new file mode 100644 index 00000000..bb563620 --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/enums/ItemStatus.kt @@ -0,0 +1,8 @@ +package co.orange.domain.enums + +enum class ItemStatus { + ON_SALE, + IN_TRANSACTION, + CLOSED, + EXPIRED, +} diff --git a/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmActivity.kt b/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmActivity.kt index 8b7bde5d..70b375be 100644 --- a/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmActivity.kt @@ -4,7 +4,7 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.activity.viewModels -import co.orange.domain.entity.response.SellItemModel +import co.orange.domain.entity.response.SellProductModel import co.orange.presentation.sell.push.SellPushActivity import coil.load import dagger.hilt.android.AndroidEntryPoint @@ -59,7 +59,7 @@ class SellConfirmActivity : viewModel.productId = intent.getLongExtra(EXTRA_PRODUCT_ID, -1) } - private fun setIntentUi(item: SellItemModel) { + private fun setIntentUi(item: SellProductModel) { with(binding) { tvSellInfoName.text = item.productName tvSellInfoOriginPrice.text = item.originPrice.setNumberForm() diff --git a/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmViewModel.kt b/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmViewModel.kt index f058fe8f..2f4b4b3b 100644 --- a/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmViewModel.kt +++ b/presentation/src/main/java/co/orange/presentation/sell/confirm/SellConfirmViewModel.kt @@ -1,7 +1,7 @@ package co.orange.presentation.sell.confirm import androidx.lifecycle.ViewModel -import co.orange.domain.entity.response.SellItemModel +import co.orange.domain.entity.response.SellProductModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @@ -14,7 +14,7 @@ class SellConfirmViewModel var productId: Long = -1 var mockSellInfo = - SellItemModel( + SellProductModel( 1102303002, "딴지 키링 세트", 9000, diff --git a/presentation/src/main/java/co/orange/presentation/sell/finished/SellFinishedActivity.kt b/presentation/src/main/java/co/orange/presentation/sell/finished/SellFinishedActivity.kt index 4397048c..7ad652d2 100644 --- a/presentation/src/main/java/co/orange/presentation/sell/finished/SellFinishedActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/sell/finished/SellFinishedActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import androidx.activity.viewModels import co.orange.domain.entity.response.SellInfoModel import co.orange.presentation.main.MainActivity +import co.orange.presentation.sell.info.SellInfoActivity import coil.load import dagger.hilt.android.AndroidEntryPoint import kr.genti.core.base.BaseActivity @@ -41,7 +42,9 @@ class SellFinishedActivity : private fun initDetailBtnListener() { binding.btnProductDetail.setOnSingleClickListener { - // TODO + SellInfoActivity.createIntent(this, viewModel.itemId).apply { + startActivity(this) + } } } diff --git a/presentation/src/main/java/co/orange/presentation/sell/info/SellInfoActivity.kt b/presentation/src/main/java/co/orange/presentation/sell/info/SellInfoActivity.kt new file mode 100644 index 00000000..6ec732b0 --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/sell/info/SellInfoActivity.kt @@ -0,0 +1,79 @@ +package co.orange.presentation.sell.info + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.viewModels +import co.orange.domain.entity.response.SellDetailModel +import coil.load +import dagger.hilt.android.AndroidEntryPoint +import kr.genti.core.base.BaseActivity +import kr.genti.core.extension.breakLines +import kr.genti.core.extension.setNumberForm +import kr.genti.core.extension.setOnSingleClickListener +import kr.genti.presentation.R +import kr.genti.presentation.databinding.ActivitySellInfoBinding + +@AndroidEntryPoint +class SellInfoActivity : + BaseActivity(R.layout.activity_sell_info) { + private val viewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + initExitBtnListener() + initFixPurchaseBtnListener() + getIntentInfo() + setIntentUi(viewModel.mockSellInfo) + } + + private fun initExitBtnListener() { + binding.btnExit.setOnSingleClickListener { finish() } + } + + private fun initFixPurchaseBtnListener() { + // TODO + binding.btnFixSell.setOnSingleClickListener { } + } + + private fun getIntentInfo() { + viewModel.productId = intent.getLongExtra(EXTRA_PRODUCT_ID, -1) + } + + private fun setIntentUi(item: SellDetailModel) { + with(binding) { + tvInfoTransaction.text = getString(R.string.transaction_id, item.orderId).breakLines() + ivInfoProduct.load(item.imgUrl) + tvInfoProductName.text = item.productName + tvInfoProductPrice.text = item.originPrice.setNumberForm() + tvInfoBuyerNickname.text = item.buyerNickname + tvInfoDeliveryName.text = item.addressInfo[0].recipient + tvInfoDeliveryAddress.text = + getString( + R.string.address_format, + item.addressInfo[0].zipCode, + item.addressInfo[0].address, + ).breakLines() + tvInfoDeliveryPhone.text = item.addressInfo[0].phone + tvInfoTransactionMethod.text = item.paymentInfo[0].method + tvInfoTransactionDate.text = item.paymentInfo[0].completedAt + tvInfoPayKakao.text = item.originPrice.setNumberForm() + tvInfoPayReal.text = item.salePrice.setNumberForm() + tvInfoPayTotal.text = item.salePrice.setNumberForm() + } + } + + companion object { + private const val EXTRA_PRODUCT_ID = "EXTRA_PRODUCT_ID" + + @JvmStatic + fun createIntent( + context: Context, + productId: Long, + ): Intent = + Intent(context, SellInfoActivity::class.java).apply { + putExtra(EXTRA_PRODUCT_ID, productId) + } + } +} diff --git a/presentation/src/main/java/co/orange/presentation/sell/info/SellInfoViewModel.kt b/presentation/src/main/java/co/orange/presentation/sell/info/SellInfoViewModel.kt new file mode 100644 index 00000000..5df78515 --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/sell/info/SellInfoViewModel.kt @@ -0,0 +1,46 @@ +package co.orange.presentation.sell.info + +import androidx.lifecycle.ViewModel +import co.orange.domain.entity.response.AddressInfoModel +import co.orange.domain.entity.response.PaymentInfoModel +import co.orange.domain.entity.response.SellDetailModel +import co.orange.domain.enums.ItemStatus +import co.orange.domain.enums.OrderStatus +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class SellInfoViewModel + @Inject + constructor( + // private val feedRepository: FeedRepository, + ) : ViewModel() { + var productId: Long = -1 + + val mockSellInfo = + SellDetailModel( + "1", + ItemStatus.ON_SALE, + "상품이름은 한줄로만 보여줄거에야야야야야야", + "https://github.com/Marchbreeze/Marchbreeze/assets/97405341/cd2c0454-92b4-41e7-ae2f-319f83e2426f", + 24000, + 21000, + "123e4567-e89b-12d3-a456-426614174000", + OrderStatus.ORDER_PLACED, + "등둔", + listOf( + AddressInfoModel( + "김상호", + "04567", + "서울특벌시 성동구 성수이로 137 107동 903호", + "010-3259-0327", + ), + ), + listOf( + PaymentInfoModel( + "NAVERPAY", + "2024.06.06", + ), + ), + ) + } diff --git a/presentation/src/main/res/drawable/ic_tooltip_bottom.xml b/presentation/src/main/res/drawable/ic_tooltip_bottom.xml new file mode 100644 index 00000000..d79f74b6 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_tooltip_bottom.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/shape_red_fill_5_rect.xml b/presentation/src/main/res/drawable/shape_red_fill_5_rect.xml new file mode 100644 index 00000000..21c3e9eb --- /dev/null +++ b/presentation/src/main/res/drawable/shape_red_fill_5_rect.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/activity_sell_info.xml b/presentation/src/main/res/layout/activity_sell_info.xml new file mode 100644 index 00000000..8b82e8e0 --- /dev/null +++ b/presentation/src/main/res/layout/activity_sell_info.xml @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 9f751ff8..f111c073 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -128,5 +128,13 @@ 주문 확인 후 거래가 진행됩니다. 근데 여기서 뭔가 설명문을 좀 적어야 할 것 같은데? 상품 등록 확인 상품 추가 등록 + 판매 상세 + 입금 완료 + 구매자 정보 + 판매 정보 + 카카오톡 선물하기 가격 + 판매가 + 판매 확정하기 + 판매를 확정하고, 배송정보를 입력하세요 \ No newline at end of file