Marketplace
마켓플레이스 요금제는 각 판매 상품을 갖고 있음.
사이트별 상품 판매정보로 가격 정의 가능 (멤버쉽별 판매가격 정의 가능)
Feature 에 대해 Apply 되면
사용자 마켓플레이스 요금제(userMarketplacePricingPlans) 생성
Feature : ManagerGroup = 1 : 1
Feature : userMarketplacePricingPlans = 1 : 1
brandSite 예외
[Feature, brandSite] : userMarketplacePricingPlans = 1 : 1
마켓플레이스 이용 정보 생성 (MarketplaceUsageInfo)
SubscriptionPayment : MarketplaceUsageInfo = 1 : N
마켓플레이스 요금제 처리
멤버쉽 요금제가 변경될때
change membership
이전 멤버쉽 subscriptionPayment 사용 종료
이전 멤버쉽 Free 인 경우 skip
subscriptionPayment 하위 marketplaceUsageInfo 사용 종료
이후 멤버쉽 subscriptionPayment 생성
이후 멤버쉽 Free 인 경우 skip
new subscriptionPayment 하위 marketplaceUsageInfo 생성
subscriptionPayment
totalMembershipUsagePrice
,totalMarketplaceUsagePrice
일할 계산하여 갱신membershipDataService.change
commerceSubscriptionService.changeMembership
if (MembershipUtils.isFromPaidToFree(membershipEt, changeMembershipType)) { MembershipSubscriptionEt membershipSubscriptionEt = membershipUsageInfoService.endOfUse(membershipEt); endOfUsePayment(context, null, membershipSubscriptionEt); membershipSubscription.regularPayCompleted(); membershipSubscription.updatePlansList(true); // 마켓플레이스이용정보 처리 } else { // List<Node> featureApplyList = NodeUtils.getNodeList("featureApply", "status_matching=apply&managerGroup_matching=" + managerGroup); for (Node featureApply : featureApplyList) { Node feature = featureApply.getReferenceNode("feature"); if (feature != null) { if (StringUtils.equals(feature.getId(), "brandSite")) { List<Node> brandSites = NodeUtils.getNodeList("site", "siteType_matching=brand&group_matching=" + managerGroup); for (Node brandSite : brandSites) { // 브랜드 사이트별 마켓플레이스이용정보 처리 membershipSubscriptionService.applyDefaultPlan(managerGroup, feature, brandSite.getId()); } } else { // 마켓플레이스이용정보 처리 membershipSubscriptionService.applyDefaultPlan(managerGroup, feature, null); } } else { logger.error("changeMembership Not Found Feature {} {}", featureApply.getStringValue("feature"), managerGroup); } } }
사용자가 마켓플레이스 요금제 변경할때
현재 멤버쉽 기준 이용가능한 마켓플레이스 요금제 내에서 변경 가능.
userMarketplacePricingPlans 수정.
이전 marketplaceUsageInfo 사용 종료
이후 marketplaceUsageInfo 사용 시작
subscriptionPayment.
totalMarketplaceUsagePrice
일할 계산하여 갱신marketplacePricingPlansDataService
.change
Feature Apply 할때
현재 멤버쉽 기준 이용가능한 마켓플레이스 요금제 존재 체크
현재 멤버쉽에서 이용가능한 요금제에서 default 요금제 사용
userMarketplacePricingPlans , 사용자별 마켓플레이스 요금제 이용 정보 생성
멤버쉽 구독중이면 subscriptionPayment 존재
subscriptionPayment 하위 marketplaceUsageInfo 생성
MarketplacePricingPlansDataService
.featureApply
Feature Unapply 할때
userMarketplacePricingPlans 사용 중지. 중단사유
featureUnapply
subscriptionPayment 하위 marketplaceUsageInfo 사용 종료
subscriptionPayment.
totalMarketplaceUsagePrice
일할 계산하여 갱신MarketplacePricingPlansDataService
.featureUnapply
store/customers/marketplacePricingPlans
마켓플레이스 요금제 정보
id | label | name | feature/value | pricingPlansType/value | membershipTypes/0/value | orderNo | isDefaultPlan |
101 | 스탠다드 요금제 | 스탠다드 요금제 | brandSite | premium | pro | 1 | true |
102 | 프리미엄 요금제 | 프리미엄 요금제 | brandSite | premium | pro | 2 | false |
103 | 스타트 요금제 | 스타트 요금제 | naverCommerce | start | free | 1 | true |
104 | 베이직 요금제 | 베이직 요금제 | naverCommerce | basic | pro | 2 | true |
105 | 프리미엄 요금제 | 프리미엄 요금제 | naverCommerce | premium | pro | 3 | false |
106 | 스타트 요금제 | 스타트 요금제 | inquiryChat | start | free | 1 | true |
107 | 베이직 요금제 | 베이직 요금제 | inquiryChat | basic | pro | 2 | true |
108 | 프리미엄 요금제 | 프리미엄 요금제 | inquiryChat | premium | pro | 3 | false |
109 | 베이직 요금제 | 베이직 요금제 | momo | basic | pro | 1 | true |
{
"id": "101",
"label": "스탠다드 요금제",
"name": "스탠다드 요금제",
"feature": {
"value": "brandSite",
"label": "사이트 관리",
"refId": "brandSite"
},
"pricingPlansType": {
"value": "premium",
"label": "프리미엄"
},
"membershipTypes": [
{
"value": "pro",
"label": "Pro"
}
],
"orderNo": 1,
"isDefaultPlan": true,
"planDescription": "<p style=\"text-align:center\"><strong>스탠다드 요금제</strong></p>\n\n<p style=\"text-align:center\">페이지 방문 월 10만건</p>\n",
"brandSite": {
"id": "101",
"label": "101",
"parentId": {
"value": "101",
"label": "스탠다드 요금제",
"refId": "101"
},
"pageHits": 100000,
"pageHitsPeriod": "P1M"
},
"owner": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"created": "20240226183518",
"modifier": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"changed": "20240528214516"
}
store/products/product
store/products/siteProduct
마켓플레이스 상품 정보
id | name | productKind/value | marketplaceProduct/id | marketplaceProduct/feature/value | marketplaceProduct/marketplacePricingPlans/value | marketplaceProduct/marketplacePricingPlans/label |
601 | 스탠다드 | marketplace | 601 | brandSite | 101 | 스탠다드 요금제 |
602 | 프리미엄 | marketplace | 602 | brandSite | 102 | 프리미엄 요금제 |
603 | 스타트 | marketplace | 603 | naverCommerce | 103 | 스타트 요금제 |
604 | 베이직 | marketplace | 604 | naverCommerce | 104 | 베이직 요금제 |
605 | 프리미엄 | marketplace | 605 | naverCommerce | 105 | 프리미엄 요금제 |
606 | 스타트 | marketplace | 606 | inquiryChat | 106 | 스타트 요금제 |
607 | 베이직 | marketplace | 607 | inquiryChat | 107 | 베이직 요금제 |
608 | 프리미엄 | marketplace | 608 | inquiryChat | 108 | 프리미엄 요금제 |
609 | 베이직 | marketplace | 609 | momo | 109 | 베이직 요금제 |
{
"id": 601,
"label": "스탠다드",
"name": "스탠다드",
"productKind": {
"value": "marketplace",
"label": "마켓플레이스"
},
"marketplaceProduct": {
"id": "601",
"label": "601",
"parentId": {
"value": "601",
"label": "스탠다드",
"refId": "601"
},
"feature": {
"value": "brandSite",
"label": "사이트 관리",
"refId": "brandSite"
},
"marketplacePricingPlans": {
"value": "101",
"label": "스탠다드 요금제",
"refId": "101"
}
},
"productSaleInfo": {
"id": "146582560",
"label": "146582560",
"supplyPrice": 11000,
"salePrice": 11000,
"useDiscount": false,
"discountSalePrice": 11000,
"discountSalePriceMobile": 11000,
"stockQuantityLimit": false,
"useSku": false,
"stockQuantity": 0,
"minOrderQuantity": 1,
"maxOrderType": {
"value": "unlimited",
"label": "무제한"
},
"priceNegotiable": false,
"priceNegotiationMinOrderQuantity": 0,
"priceNegotiationMinOrderPrice": 0,
"regularDelivery": false,
"regularDeliveryDiscountRate": null,
"sendGift": false,
"deferredPayment": false
}
},
id | name | baseProduct/value | site/value | siteProductSaleInfo/salePrice |
1136925730 | 무제한 | 605 | metaflyerFree | 5500 |
1147887049 | 무제한 | 605 | metaflyerEnterprise | 5500 |
1328714239 | 스타트 | 603 | metaflyerFree | 0 |
1441122641 | 베이직 | 607 | metaflyerPro | 0 |
1486476162 | 스타트 | 603 | metaflyerEnterprise | 0 |
1569203349 | 무제한 | 602 | metaflyerPro | 33000 |
1613235927 | 프리미엄 | 608 | metaflyerPro | 11000 |
1635352366 | 베이직 | 607 | metaflyerFree | 0 |
1660829044 | 스타트 | 603 | metaflyerPro | 0 |
166909009 | 프리미엄 | 608 | metaflyerFree | 11000 |
167390205 | 무제한 | 602 | metaflyerFree | 33000 |
1766525681 | 베이직 | 604 | metaflyerPro | 0 |
1896793513 | 스타트 | 606 | metaflyerFree | 0 |
1929262489 | 베이직 | 601 | metaflyerFree | 11000 |
232264775 | 무제한 | 602 | metaflyerEnterprise | 33000 |
259933162 | 베이직 | 607 | metaflyerEnterprise | 0 |
263251391 | 베이직 | 604 | metaflyerEnterprise | 0 |
303020927 | 베이직 | 601 | metaflyerEnterprise | 11000 |
539623287 | 스타트 | 606 | metaflyerPro | 0 |
640060135 | 베이직 | 604 | metaflyerFree | 0 |
676727289 | 스타트 | 606 | metaflyerEnterprise | 0 |
734537071 | 베이직 | 601 | metaflyerPro | 11000 |
851605865 | 무제한 | 605 | metaflyerPro | 5500 |
971798275 | 프리미엄 | 608 | metaflyerEnterprise | 11000 |
1121130200 | 베이직 | 609 | metaflyerEnterprise | 0 |
1186211937 | 베이직 | 609 | metaflyerFree | 0 |
1631442067 | 베이직 | 609 | metaflyerPro | 0 |