Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
834b8079
Commit
834b8079
authored
Aug 08, 2020
by
ping.wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
套餐优惠计算
parent
5b7daa2b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
81 additions
and
134 deletions
+81
-134
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountRequestDto.java
+26
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
+6
-5
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CalculationServiceImpl.java
+18
-33
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
+31
-96
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountRequestDto.java
View file @
834b8079
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -108,6 +109,30 @@ public class ActivityCalculationDiscountRequestDto {
*/
private
Integer
memberDiscount
;
private
List
<
Material
>
smallMaterial
;
@Data
@NoArgsConstructor
static
public
class
Material
{
/**
* 加料商品ID
*/
private
String
goodsId
;
/**
* 加料数量
*/
private
Integer
goodsQuantity
;
/**
* 加料单价
*/
private
Long
originalPrice
;
/**
* 1 :小料、2:可选搭配
*/
private
int
type
;
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
...
...
@@ -125,4 +150,5 @@ public class ActivityCalculationDiscountRequestDto {
return
Objects
.
hash
(
super
.
hashCode
(),
goodsId
,
category
,
originalPrice
);
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
View file @
834b8079
...
...
@@ -19,6 +19,7 @@ import cn.freemud.service.ActivityService;
import
cn.freemud.service.impl.AssortmentSdkService
;
import
cn.freemud.service.impl.FullSubtractionActivityServiceImpl
;
import
cn.freemud.service.impl.mcoffee.calculation.CalculationServiceImpl
;
import
cn.freemud.service.impl.mcoffee.calculation.CouponDiscountCalculation
;
import
cn.freemud.service.thirdparty.CustomerApplicationClient
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONArray
;
...
...
@@ -27,7 +28,6 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum
;
import
com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
...
...
@@ -75,6 +75,8 @@ public class ShoppingCartMCoffeeServiceImpl {
private
CustomerApplicationClient
customerApplicationClient
;
@Autowired
private
CalculationServiceImpl
calculationService
;
@Autowired
private
CouponDiscountCalculation
couponDiscountCalculation
;
/**
* 添加商品
...
...
@@ -269,7 +271,6 @@ public class ShoppingCartMCoffeeServiceImpl {
if
(
StringUtils
.
isEmpty
(
shoppingCartInfoRequestVo
.
getShopId
()))
{
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
}
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
=
new
ShoppingCartGoodsResponseVo
();
ActivityClassifyCouponBean
availableCoupon
=
new
ActivityClassifyCouponBean
();
// 获取用户信息
CustomerInfoVo
assortmentCustomerInfoVo
=
getCustomerInfoVo
(
shoppingCartInfoRequestVo
.
getSessionId
());
...
...
@@ -277,6 +278,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String
partnerId
=
shoppingCartInfoRequestVo
.
getPartnerId
();
String
storeId
=
shoppingCartInfoRequestVo
.
getShopId
();
String
appId
=
shoppingCartInfoRequestVo
.
getAppId
();
//非商品券券号
String
couponCode
=
shoppingCartInfoRequestVo
.
getCouponCode
();
String
activityCode
=
shoppingCartInfoRequestVo
.
getActivityCode
();
String
menuType
=
shoppingCartInfoRequestVo
.
getMenuType
();
...
...
@@ -286,9 +288,8 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
""
,
shoppingCartBaseService
);
// 促销计算-查询用户券-券码校验可用券
availableCoupon
=
calculationService
.
availableCoupon
(
partnerId
,
storeId
,
userId
,
appId
,
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
(),
menuType
,
receiveId
,
null
,
cartGoodsList
,
new
ArrayList
<>(),
new
ArrayList
<>(),
shoppingCartGoodsResponseVo
);
// 获取购物车商品-查询用户券-券码校验可用券
availableCoupon
=
couponDiscountCalculation
.
availableCoupon
(
partnerId
,
storeId
,
userId
,
couponCode
,
orderType
,
cartGoodsList
);
return
ResponseUtil
.
success
(
availableCoupon
);
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CalculationServiceImpl.java
View file @
834b8079
...
...
@@ -11,12 +11,10 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityChannelEnum
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.CouponFlag
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.CommonService
;
import
cn.freemud.service.thirdparty.ActivityClient
;
import
cn.freemud.utils.LogUtil
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
...
...
@@ -27,7 +25,6 @@ import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import
com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -121,7 +118,7 @@ public class CalculationServiceImpl {
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
=
new
ArrayList
<>();
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
.
getCustomerCode
(),
cartGoods
.
getGoodsId
(),
cartGoods
.
getQty
(),
cartGoods
.
getFinalPrice
(),
cartGoods
.
getMemberDiscount
());
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
.
getCustomerCode
(),
cartGoods
.
getGoodsId
(),
cartGoods
.
getQty
(),
cartGoods
.
getFinalPrice
(),
cartGoods
.
getMemberDiscount
()
,
cartGoods
);
}
if
(
BusinessTypeEnum
.
SAAS_DELIVERY
.
getCode
().
equals
(
menuType
))
{
...
...
@@ -130,7 +127,7 @@ public class CalculationServiceImpl {
// 当加价购商品不为空时
if
(
CollectionUtils
.
isNotEmpty
(
sendGoodsList
))
{
for
(
ShoppingCartInfoRequestVo
.
SendGoods
sendGoods
:
sendGoodsList
)
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
sendGoods
.
getGoodsId
(),
sendGoods
.
getGoodsId
(),
sendGoods
.
getQty
(),
sendGoods
.
getOriginalPrice
(),
100
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
sendGoods
.
getGoodsId
(),
sendGoods
.
getGoodsId
(),
sendGoods
.
getQty
(),
sendGoods
.
getOriginalPrice
(),
100
,
null
);
}
}
calculationDiscountGoodsList
.
removeIf
(
calculationDiscountGoods
->
(
calculationDiscountGoods
.
getGoodsQuantity
().
equals
(
0
)));
...
...
@@ -345,7 +342,7 @@ public class CalculationServiceImpl {
* @param originalPrice
*/
private
void
addCalculationDiscountGoods
(
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
,
String
goodsCode
,
String
goodsId
,
Integer
goodsQuantity
,
Long
originalPrice
,
Integer
memberDiscount
)
{
String
goodsCode
,
String
goodsId
,
Integer
goodsQuantity
,
Long
originalPrice
,
Integer
memberDiscount
,
CartGoods
cartGoods
)
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
calculationDiscountGoods
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
();
calculationDiscountGoods
.
setGoodsCode
(
goodsCode
);
calculationDiscountGoods
.
setGoodsId
(
goodsId
);
...
...
@@ -353,6 +350,21 @@ public class CalculationServiceImpl {
calculationDiscountGoods
.
setOriginalPrice
(
originalPrice
);
calculationDiscountGoods
.
setMemberDiscount
(
memberDiscount
);
//可选搭配
if
(
cartGoods
!=
null
&&
CollectionUtils
.
isNotEmpty
(
cartGoods
.
getProductGroupList
()))
{
ArrayList
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
>
materials
=
new
ArrayList
<>();
for
(
CartGoods
.
ComboxGoods
materialGoods
:
cartGoods
.
getProductGroupList
())
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
material
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
();
material
.
setType
(
2
);
material
.
setGoodsId
(
materialGoods
.
getGoodsId
());
material
.
setGoodsQuantity
(
cartGoods
.
getQty
());
material
.
setOriginalPrice
(
materialGoods
.
getFinalPrice
());
materials
.
add
(
material
);
}
calculationDiscountGoods
.
setSmallMaterial
(
materials
);
}
//累加需加入计算的商品
int
index
;
// 当商品已存在时,需累加数量
...
...
@@ -387,31 +399,4 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo
.
setTotalDiscountAmount
(
calculationDiscount
==
null
?
0L
:
calculationDiscount
.
getTotalDiscountAmount
());
}
/**
* 可选优惠券
*/
public
ActivityClassifyCouponBean
availableCoupon
(
String
partnerId
,
String
storeId
,
String
userId
,
String
appId
,
Integer
orderType
,
boolean
isMember
,
String
menuType
,
String
receiveId
,
String
couponCode
,
List
<
CartGoods
>
cartGoodsList
,
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
,
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
){
Long
deliveryAmount
=
0L
;
QueryDeliverDetailResponse
response
=
calculateDeliveryAmount
(
receiveId
,
partnerId
,
storeId
,
appId
);
if
(
response
!=
null
){
shoppingCartGoodsResponseVo
.
setDeliveryFeeZeroReason
(
response
.
getDeliveryFeeZeroReason
()
!=
null
?
response
.
getDeliveryFeeZeroReason
()
:
0
);
deliveryAmount
=
response
.
getDeliveryAmount
();
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscount
=
getCalculationDiscount
(
partnerId
,
storeId
,
userId
,
appId
,
orderType
,
isMember
,
menuType
,
deliveryAmount
,
cartGoodsList
,
coupons
,
sendGoodsList
);
//优惠券
CouponPromotionVO
couponPromotionVO
=
couponDiscountCalculation
.
getCouponPromotionVO
(
partnerId
,
storeId
,
userId
,
couponCode
,
orderType
);
couponDiscountCalculation
.
updateShoppingCartGoodsDiscount
(
couponPromotionVO
,
calculationDiscount
,
cartGoodsList
,
shoppingCartGoodsResponseVo
);
return
shoppingCartGoodsResponseVo
.
getAvailableCoupon
();
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
View file @
834b8079
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment