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

계약에 따라 동작할 수 있도록 수정한다. #19

Merged
merged 10 commits into from
May 15, 2024
Merged
10 changes: 10 additions & 0 deletions .github/workflows/actions_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ jobs:
- name: ☑️ Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b

- name: ✅ Contract Test with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: contractTest

- name: ✅ Publish To Maven Local
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: publishToMavenLocal

- name: ✅ Test with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,14 @@ import com.example.estdelivery.coupon.application.port.out.UpdateMemberStatePort
import com.example.estdelivery.coupon.application.utils.TransactionArea
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.member.Member
import org.springframework.stereotype.Service

@Service
class GiftCouponService(
loadMemberStatePort: LoadMemberStatePort,
loadCouponStatePort: LoadCouponStatePort,
updateMemberStatePort: UpdateMemberStatePort,
private val transactionArea: TransactionArea,
private val getReceiver: (GiftCouponCommand) -> Member = {
loadMemberStatePort.findById(
it.receiverId
)
},
private val getSender: (GiftCouponCommand) -> Member = {
loadMemberStatePort.findById(
it.senderId
)
},
private val getCoupon: (GiftCouponCommand) -> Coupon = {
loadCouponStatePort.findById(
it.couponId
)
},
private val updateMember: (Member) -> Unit = { updateMemberStatePort.update(it) },
) : GiftCouponUseCase {
/**
* 선물 할 쿠폰과 선물 할 회원의 식별자를 입력해 쿠폰을 나눠준다.
Expand Down Expand Up @@ -57,4 +43,17 @@ class GiftCouponService(
updateMember(sender)
}
}

private val getReceiver: (GiftCouponCommand) -> Member = {
loadMemberStatePort.findMember(it.receiverId)
}
private val getSender: (GiftCouponCommand) -> Member = {
loadMemberStatePort.findMember(it.senderId)
}
private val getCoupon: (GiftCouponCommand) -> Coupon = {
loadCouponStatePort.findById(
it.couponId
)
}
private val updateMember: (Member) -> Unit = { updateMemberStatePort.updateMembersCoupon(it) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,15 @@ import com.example.estdelivery.coupon.application.port.out.UpdateShopOwnerStateP
import com.example.estdelivery.coupon.application.utils.TransactionArea
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.shop.ShopOwner
import org.springframework.stereotype.Service

@Service
class HandoutCouponService(
loadShopOwnerStatePort: LoadShopOwnerStatePort,
loadCouponStatePort: LoadCouponStatePort,
updateShopOwnerStatePort: UpdateShopOwnerStatePort,
createCouponStatePort: CreateCouponStatePort,
private val transactionArea: TransactionArea,
private val getShopOwner: (HandoutCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findById(
it.shopOwnerId
)
},
private val notExistCoupon: (Long) -> Boolean = { loadCouponStatePort.exists(it).not() },
private val getCoupon: (Long) -> Coupon = { loadCouponStatePort.findById(it) },
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.update(it) },
private val createCoupon: (Coupon) -> Coupon = { createCouponStatePort.create(it) },
) : HandoutCouponUseCase {
/**
* 1. 가게 주인 정보를 조회한다.
Expand All @@ -50,4 +43,14 @@ class HandoutCouponService(

return getCoupon(id)
}

private val getShopOwner: (HandoutCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findById(
it.shopOwnerId
)
}
private val notExistCoupon: (Long) -> Boolean = { loadCouponStatePort.exists(it).not() }
private val getCoupon: (Long) -> Coupon = { loadCouponStatePort.findById(it) }
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.updateShopOwnersCoupons(it) }
private val createCoupon: (Coupon) -> Coupon = { createCouponStatePort.create(it) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,16 @@ import com.example.estdelivery.coupon.application.utils.TransactionArea
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.member.Member
import com.example.estdelivery.coupon.domain.shop.ShopOwner
import org.springframework.stereotype.Service

@Service
class IssuePublishedCouponService(
loadMemberStatePort: LoadMemberStatePort,
loadCouponStatePort: LoadCouponStatePort,
loadShopOwnerStatePort: LoadShopOwnerStatePort,
updateMemberStatePort: UpdateMemberStatePort,
updateShopOwnerStatePort: UpdateShopOwnerStatePort,
private val transactionArea: TransactionArea,
private val getMember: (IssuePublishedCouponCommand) -> Member = {
loadMemberStatePort.findById(
it.memberId
)
},
private val getCoupon: (IssuePublishedCouponCommand) -> Coupon = {
loadCouponStatePort.findById(
it.couponId
)
},
private val getShopOwner: (IssuePublishedCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findByShopId(
it.shopId
)
},
private val updateMember: (Member) -> Unit = { updateMemberStatePort.update(it) },
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.update(it) },
) : IssuePublishedCouponUseCase {
/**
* 1. 회원 정보를 조회한다.
Expand Down Expand Up @@ -63,7 +48,25 @@ class IssuePublishedCouponService(
) {
if (!shopOwner.showRoyalCustomersInShop().contains(member)) {
shopOwner.addRoyalCustomersInShop(member)
updateShopOwner(shopOwner)
updateRoyalCustomers(shopOwner, member)
}
}

private val getMember: (IssuePublishedCouponCommand) -> Member = {
loadMemberStatePort.findMember(it.memberId)
}
private val getCoupon: (IssuePublishedCouponCommand) -> Coupon = {
loadCouponStatePort.findById(
it.couponId
)
}
private val getShopOwner: (IssuePublishedCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findByShopId(
it.shopId
)
}
private val updateMember: (Member) -> Unit = { updateMemberStatePort.updateMembersCoupon(it) }
private val updateRoyalCustomers: (ShopOwner, Member) -> Unit = { shopOwner, royalCustomer ->
updateShopOwnerStatePort.updateRoyalCustomers(shopOwner, royalCustomer)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@ import com.example.estdelivery.coupon.application.port.out.LoadShopOwnerStatePor
import com.example.estdelivery.coupon.application.port.out.UpdateMemberStatePort
import com.example.estdelivery.coupon.application.port.out.UpdateRandomCouponIssueEventStatePort
import com.example.estdelivery.coupon.application.port.out.UpdateShopOwnerStatePort
import com.example.estdelivery.coupon.application.port.out.state.UpdateRandomCouponIssueEventState
import com.example.estdelivery.coupon.application.utils.TransactionArea
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.event.RandomCouponIssueEvent
import com.example.estdelivery.coupon.domain.member.Member
import com.example.estdelivery.coupon.domain.shop.ShopOwner
import org.springframework.stereotype.Service

@Service
class IssueRandomCouponService(
loadMemberStatePort: LoadMemberStatePort,
loadRandomCouponIssueEventStatePort: LoadRandomCouponIssueEventStatePort,
Expand All @@ -25,21 +26,6 @@ class IssueRandomCouponService(
updateRandomCouponIssueEventStatePort: UpdateRandomCouponIssueEventStatePort,
createCouponStatePort: CreateCouponStatePort,
private val transactionArea: TransactionArea,
private val getMember: (IssueEventCouponCommand) -> Member = {
loadMemberStatePort.findById(it.memberId)
},
private val getCouponIssueRandomCouponIssueEvent: (IssueEventCouponCommand) -> RandomCouponIssueEvent = {
loadRandomCouponIssueEventStatePort.findById(it.eventId).toEvent()
},
private val getShopOwner: (IssueEventCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findByShopId(it.shopId)
},
private val createCoupon: (Coupon) -> Coupon = { createCouponStatePort.create(it) },
private val updateMember: (Member) -> Unit = { updateMemberStatePort.update(it) },
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.update(it) },
private val updateEvent: (RandomCouponIssueEvent) -> Unit = {
updateRandomCouponIssueEventStatePort.update(UpdateRandomCouponIssueEventState.from(it))
},
) : IssueEventCouponUseCase {
/**
* 1. 회원 정보를 조회한다.
Expand All @@ -56,7 +42,23 @@ class IssueRandomCouponService(
member.receiveCoupon(eventCoupon)
updateMember(member)
updateShopOwner(shopOwner)
updateEvent(event)
participateEvent(event, member)
}
}

private val getMember: (IssueEventCouponCommand) -> Member = {
loadMemberStatePort.findMember(it.memberId)
}
private val getCouponIssueRandomCouponIssueEvent: (IssueEventCouponCommand) -> RandomCouponIssueEvent = {
loadRandomCouponIssueEventStatePort.findEvent(it.eventId)
}
private val getShopOwner: (IssueEventCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findByShopId(it.shopId)
}
private val createCoupon: (Coupon) -> Coupon = { createCouponStatePort.create(it) }
private val updateMember: (Member) -> Unit = { updateMemberStatePort.updateMembersCoupon(it) }
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.updateShopOwnersCoupons(it) }
private val participateEvent: (RandomCouponIssueEvent, Member) -> Unit = { event, member ->
updateRandomCouponIssueEventStatePort.participate(event, member)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,14 @@ import com.example.estdelivery.coupon.application.port.out.UpdateShopOwnerStateP
import com.example.estdelivery.coupon.application.utils.TransactionArea
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.shop.ShopOwner
import org.springframework.stereotype.Service

@Service
class PublishCouponService(
loadShopOwnerPort: LoadShopOwnerStatePort,
createCouponStatePort: CreateCouponStatePort,
updateShopOwnerStatePort: UpdateShopOwnerStatePort,
private val transactionArea: TransactionArea,
private val findShopOwner: (PublishCouponCommand) -> ShopOwner = {
loadShopOwnerPort.findById(
it.shopOwnerId
)
},
private val createCoupon: (PublishCouponCommand) -> Coupon = {
createCouponStatePort.create(
it.coupon
)
},
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.update(it) },
) : PublishCouponUseCase {
/**
* 1. 가게 주인 정보를 조회한다.
Expand All @@ -42,4 +33,16 @@ class PublishCouponService(
updateShopOwner(shopOwner)
}
}

private val findShopOwner: (PublishCouponCommand) -> ShopOwner = {
loadShopOwnerPort.findById(
it.shopOwnerId
)
}
private val createCoupon: (PublishCouponCommand) -> Coupon = {
createCouponStatePort.create(
it.coupon
)
}
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.updateShopOwnersCoupons(it) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,16 @@ import com.example.estdelivery.coupon.application.utils.TransactionArea
import com.example.estdelivery.coupon.domain.coupon.Coupon
import com.example.estdelivery.coupon.domain.member.Member
import com.example.estdelivery.coupon.domain.shop.ShopOwner
import org.springframework.stereotype.Service

@Service
class UseCouponService(
loadMemberStatePort: LoadMemberStatePort,
loadCouponStatePort: LoadCouponStatePort,
loadShopOwnerStatePort: LoadShopOwnerStatePort,
updateMemberStatePort: UpdateMemberStatePort,
updateShopOwnerStatePort: UpdateShopOwnerStatePort,
private val transactionArea: TransactionArea,
private val getMember: (UseCouponCommand) -> Member = {
loadMemberStatePort.findById(
it.memberId
)
},
private val getCoupon: (UseCouponCommand) -> Coupon = {
loadCouponStatePort.findById(
it.couponId
)
},
private val getShopOwner: (UseCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findByShopId(
it.shopId
)
},
private val updateMember: (Member) -> Unit = { updateMemberStatePort.update(it) },
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.update(it) },
) : UseCouponUseCase {
/**
* 1. 회원 정보를 조회한다.
Expand All @@ -58,4 +43,22 @@ class UseCouponService(
updateShopOwner(shopOwner)
}
}

private val getMember: (UseCouponCommand) -> Member = {
loadMemberStatePort.findMember(
it.memberId
)
}
private val getCoupon: (UseCouponCommand) -> Coupon = {
loadCouponStatePort.findById(
it.couponId
)
}
private val getShopOwner: (UseCouponCommand) -> ShopOwner = {
loadShopOwnerStatePort.findByShopId(
it.shopId
)
}
private val updateMember: (Member) -> Unit = { updateMemberStatePort.updateMembersCoupon(it) }
private val updateShopOwner: (ShopOwner) -> Unit = { updateShopOwnerStatePort.updateShopOwnersCoupons(it) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package com.example.estdelivery.coupon.application.port.out
import com.example.estdelivery.coupon.domain.member.Member

interface LoadMemberStatePort {
fun findById(memberId: Long): Member
fun findMember(memberId: Long): Member
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.estdelivery.coupon.application.port.out

import com.example.estdelivery.coupon.application.port.out.state.LoadRandomCouponIssueEventState
import com.example.estdelivery.coupon.domain.event.RandomCouponIssueEvent

interface LoadRandomCouponIssueEventStatePort {
fun findById(eventId: Long): LoadRandomCouponIssueEventState
fun findEvent(eventId: Long): RandomCouponIssueEvent
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package com.example.estdelivery.coupon.application.port.out
import com.example.estdelivery.coupon.domain.member.Member

interface UpdateMemberStatePort {
fun update(member: Member)
fun updateMembersCoupon(member: Member)
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.example.estdelivery.coupon.application.port.out

import com.example.estdelivery.coupon.application.port.out.state.UpdateRandomCouponIssueEventState
import com.example.estdelivery.coupon.domain.event.RandomCouponIssueEvent
import com.example.estdelivery.coupon.domain.member.Member

interface UpdateRandomCouponIssueEventStatePort {
fun update(event: UpdateRandomCouponIssueEventState)
fun participate(event: RandomCouponIssueEvent, participatedMember: Member)
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.example.estdelivery.coupon.application.port.out

import com.example.estdelivery.coupon.domain.member.Member
import com.example.estdelivery.coupon.domain.shop.ShopOwner

interface UpdateShopOwnerStatePort {
fun update(shopOwner: ShopOwner)
fun updateShopOwnersCoupons(shopOwner: ShopOwner)
fun updateRoyalCustomers(shopOwner: ShopOwner, royalCustomer: Member)
}
Loading
Loading