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
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
;
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
...
@@ -108,6 +109,30 @@ public class ActivityCalculationDiscountRequestDto {
...
@@ -108,6 +109,30 @@ public class ActivityCalculationDiscountRequestDto {
*/
*/
private
Integer
memberDiscount
;
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
@Override
public
boolean
equals
(
Object
o
)
{
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
if
(
this
==
o
)
...
@@ -125,4 +150,5 @@ public class ActivityCalculationDiscountRequestDto {
...
@@ -125,4 +150,5 @@ public class ActivityCalculationDiscountRequestDto {
return
Objects
.
hash
(
super
.
hashCode
(),
goodsId
,
category
,
originalPrice
);
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;
...
@@ -19,6 +19,7 @@ import cn.freemud.service.ActivityService;
import
cn.freemud.service.impl.AssortmentSdkService
;
import
cn.freemud.service.impl.AssortmentSdkService
;
import
cn.freemud.service.impl.FullSubtractionActivityServiceImpl
;
import
cn.freemud.service.impl.FullSubtractionActivityServiceImpl
;
import
cn.freemud.service.impl.mcoffee.calculation.CalculationServiceImpl
;
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.service.thirdparty.CustomerApplicationClient
;
import
cn.freemud.utils.ResponseUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
...
@@ -27,7 +28,6 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
...
@@ -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.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO
;
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.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.request.CheckCartRequest
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
...
@@ -75,6 +75,8 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -75,6 +75,8 @@ public class ShoppingCartMCoffeeServiceImpl {
private
CustomerApplicationClient
customerApplicationClient
;
private
CustomerApplicationClient
customerApplicationClient
;
@Autowired
@Autowired
private
CalculationServiceImpl
calculationService
;
private
CalculationServiceImpl
calculationService
;
@Autowired
private
CouponDiscountCalculation
couponDiscountCalculation
;
/**
/**
* 添加商品
* 添加商品
...
@@ -269,7 +271,6 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -269,7 +271,6 @@ public class ShoppingCartMCoffeeServiceImpl {
if
(
StringUtils
.
isEmpty
(
shoppingCartInfoRequestVo
.
getShopId
()))
{
if
(
StringUtils
.
isEmpty
(
shoppingCartInfoRequestVo
.
getShopId
()))
{
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
}
}
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
=
new
ShoppingCartGoodsResponseVo
();
ActivityClassifyCouponBean
availableCoupon
=
new
ActivityClassifyCouponBean
();
ActivityClassifyCouponBean
availableCoupon
=
new
ActivityClassifyCouponBean
();
// 获取用户信息
// 获取用户信息
CustomerInfoVo
assortmentCustomerInfoVo
=
getCustomerInfoVo
(
shoppingCartInfoRequestVo
.
getSessionId
());
CustomerInfoVo
assortmentCustomerInfoVo
=
getCustomerInfoVo
(
shoppingCartInfoRequestVo
.
getSessionId
());
...
@@ -277,6 +278,7 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -277,6 +278,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String
partnerId
=
shoppingCartInfoRequestVo
.
getPartnerId
();
String
partnerId
=
shoppingCartInfoRequestVo
.
getPartnerId
();
String
storeId
=
shoppingCartInfoRequestVo
.
getShopId
();
String
storeId
=
shoppingCartInfoRequestVo
.
getShopId
();
String
appId
=
shoppingCartInfoRequestVo
.
getAppId
();
String
appId
=
shoppingCartInfoRequestVo
.
getAppId
();
//非商品券券号
String
couponCode
=
shoppingCartInfoRequestVo
.
getCouponCode
();
String
couponCode
=
shoppingCartInfoRequestVo
.
getCouponCode
();
String
activityCode
=
shoppingCartInfoRequestVo
.
getActivityCode
();
String
activityCode
=
shoppingCartInfoRequestVo
.
getActivityCode
();
String
menuType
=
shoppingCartInfoRequestVo
.
getMenuType
();
String
menuType
=
shoppingCartInfoRequestVo
.
getMenuType
();
...
@@ -286,9 +288,8 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -286,9 +288,8 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品
// 获取购物车商品
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
""
,
shoppingCartBaseService
);
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
""
,
shoppingCartBaseService
);
// 促销计算-查询用户券-券码校验可用券
// 获取购物车商品-查询用户券-券码校验可用券
availableCoupon
=
calculationService
.
availableCoupon
(
partnerId
,
storeId
,
userId
,
appId
,
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
(),
menuType
,
receiveId
,
null
,
availableCoupon
=
couponDiscountCalculation
.
availableCoupon
(
partnerId
,
storeId
,
userId
,
couponCode
,
orderType
,
cartGoodsList
);
cartGoodsList
,
new
ArrayList
<>(),
new
ArrayList
<>(),
shoppingCartGoodsResponseVo
);
return
ResponseUtil
.
success
(
availableCoupon
);
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;
...
@@ -11,12 +11,10 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityChannelEnum
;
import
cn.freemud.enums.ActivityChannelEnum
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.CouponFlag
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.CommonService
;
import
cn.freemud.service.CommonService
;
import
cn.freemud.service.thirdparty.ActivityClient
;
import
cn.freemud.service.thirdparty.ActivityClient
;
import
cn.freemud.utils.LogUtil
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
...
@@ -27,7 +25,6 @@ import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
...
@@ -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.response.QueryDeliverDetailResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum
;
import
com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -121,7 +118,7 @@ public class CalculationServiceImpl {
...
@@ -121,7 +118,7 @@ public class CalculationServiceImpl {
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
=
new
ArrayList
<>();
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
=
new
ArrayList
<>();
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
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
))
{
if
(
BusinessTypeEnum
.
SAAS_DELIVERY
.
getCode
().
equals
(
menuType
))
{
...
@@ -130,7 +127,7 @@ public class CalculationServiceImpl {
...
@@ -130,7 +127,7 @@ public class CalculationServiceImpl {
// 当加价购商品不为空时
// 当加价购商品不为空时
if
(
CollectionUtils
.
isNotEmpty
(
sendGoodsList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
sendGoodsList
))
{
for
(
ShoppingCartInfoRequestVo
.
SendGoods
sendGoods
:
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
)));
calculationDiscountGoodsList
.
removeIf
(
calculationDiscountGoods
->
(
calculationDiscountGoods
.
getGoodsQuantity
().
equals
(
0
)));
...
@@ -345,7 +342,7 @@ public class CalculationServiceImpl {
...
@@ -345,7 +342,7 @@ public class CalculationServiceImpl {
* @param originalPrice
* @param originalPrice
*/
*/
private
void
addCalculationDiscountGoods
(
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
,
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
();
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
calculationDiscountGoods
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
();
calculationDiscountGoods
.
setGoodsCode
(
goodsCode
);
calculationDiscountGoods
.
setGoodsCode
(
goodsCode
);
calculationDiscountGoods
.
setGoodsId
(
goodsId
);
calculationDiscountGoods
.
setGoodsId
(
goodsId
);
...
@@ -353,6 +350,21 @@ public class CalculationServiceImpl {
...
@@ -353,6 +350,21 @@ public class CalculationServiceImpl {
calculationDiscountGoods
.
setOriginalPrice
(
originalPrice
);
calculationDiscountGoods
.
setOriginalPrice
(
originalPrice
);
calculationDiscountGoods
.
setMemberDiscount
(
memberDiscount
);
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
;
int
index
;
// 当商品已存在时,需累加数量
// 当商品已存在时,需累加数量
...
@@ -387,31 +399,4 @@ public class CalculationServiceImpl {
...
@@ -387,31 +399,4 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo
.
setTotalDiscountAmount
(
calculationDiscount
==
null
?
0L
:
calculationDiscount
.
getTotalDiscountAmount
());
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
...
@@ -19,9 +19,7 @@ import cn.freemud.service.thirdparty.CouponClient;
...
@@ -19,9 +19,7 @@ import cn.freemud.service.thirdparty.CouponClient;
import
cn.freemud.service.thirdparty.CustomerExtendClient
;
import
cn.freemud.service.thirdparty.CustomerExtendClient
;
import
cn.freemud.utils.BarcodeUtil
;
import
cn.freemud.utils.BarcodeUtil
;
import
cn.freemud.utils.LogUtil
;
import
cn.freemud.utils.LogUtil
;
import
cn.freemud.utils.RedisUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.card.sdk.vo.coupon.CouponStateVo
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -75,25 +73,7 @@ public class CouponDiscountCalculation {
...
@@ -75,25 +73,7 @@ public class CouponDiscountCalculation {
* 优惠计算
* 优惠计算
*/
*/
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
)
{
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
)
{
// 用户选择了查询优惠券信息
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)).
collect
(
Collectors
.
toList
());
// 是否存在商品券
boolean
hasGoodssCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
// 构建可用不可用优惠券
ActivityClassifyCouponBean
activityClassifyCouponBean
=
availableCoupon
(
cartGoodsList
,
couponPromotionVO
.
getPartnerId
()
,
couponPromotionVO
.
getUserId
(),
couponPromotionVO
.
getStoreId
(),
couponPromotionVO
.
getCouponCode
(),
hasGoodssCoupon
,
couponPromotionVO
.
getOrderType
());
if
(
Objects
.
equals
(
activityClassifyCouponBean
,
null
))
{
// 构建一个空得订单券信息
activityClassifyCouponBean
=
new
ActivityClassifyCouponBean
();
activityClassifyCouponBean
.
setCouponNum
(
0
);
activityClassifyCouponBean
.
setDisableCouponNum
(
0
);
activityClassifyCouponBean
.
setUsableCouponNum
(
0
);
activityClassifyCouponBean
.
setDisableCoupons
(
Lists
.
newArrayList
());
activityClassifyCouponBean
.
setUsableCoupons
(
Lists
.
newArrayList
());
}
shoppingCartGoodsResponseVo
.
setAvailableCoupon
(
activityClassifyCouponBean
);
}
// 当couponCode不为空时,需计算优惠价格
// 当couponCode不为空时,需计算优惠价格
long
couponDiscount
=
0
;
long
couponDiscount
=
0
;
...
@@ -137,10 +117,38 @@ public class CouponDiscountCalculation {
...
@@ -137,10 +117,38 @@ public class CouponDiscountCalculation {
}
}
public
void
getCoupon
(
CouponPromotionVO
couponPromotionVO
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
){
// 用户选择了查询优惠券信息
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
// 构建可用不可用优惠券
ActivityClassifyCouponBean
activityClassifyCouponBean
=
availableCoupon
(
couponPromotionVO
.
getPartnerId
()
,
couponPromotionVO
.
getUserId
(),
couponPromotionVO
.
getStoreId
(),
couponPromotionVO
.
getCouponCode
(),
couponPromotionVO
.
getOrderType
(),
cartGoodsList
);
if
(
Objects
.
equals
(
activityClassifyCouponBean
,
null
))
{
// 构建一个空得订单券信息
activityClassifyCouponBean
=
new
ActivityClassifyCouponBean
();
activityClassifyCouponBean
.
setCouponNum
(
0
);
activityClassifyCouponBean
.
setDisableCouponNum
(
0
);
activityClassifyCouponBean
.
setUsableCouponNum
(
0
);
activityClassifyCouponBean
.
setDisableCoupons
(
Lists
.
newArrayList
());
activityClassifyCouponBean
.
setUsableCoupons
(
Lists
.
newArrayList
());
}
shoppingCartGoodsResponseVo
.
setAvailableCoupon
(
activityClassifyCouponBean
);
}
}
public
ActivityClassifyCouponBean
availableCoupon
(
List
<
CartGoods
>
cartGoods
,
String
partnerId
,
String
userId
,
String
storeId
,
String
couponCode
,
boolean
hasGoodsCoupon
,
Integer
orderType
)
{
/**
* 可选优惠券
*/
public
ActivityClassifyCouponBean
availableCoupon
(
String
partnerId
,
String
storeId
,
String
userId
,
String
couponCode
,
Integer
orderType
,
List
<
CartGoods
>
cartGoods
)
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoods
.
parallelStream
().
filter
(
k
->
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)).
collect
(
Collectors
.
toList
());
boolean
hasGoodsCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
// 获取会员服务的优惠券列表
GetMemberCouponListRequestDto
getMemberCouponListRequestDto
=
new
GetMemberCouponListRequestDto
(
partnerId
,
userId
);
GetMemberCouponListRequestDto
getMemberCouponListRequestDto
=
new
GetMemberCouponListRequestDto
(
partnerId
,
userId
);
getMemberCouponListRequestDto
.
setStatusFlags
(
Arrays
.
asList
(
CouponStatus
.
STATUS_0
.
getCode
()));
getMemberCouponListRequestDto
.
setStatusFlags
(
Arrays
.
asList
(
CouponStatus
.
STATUS_0
.
getCode
()));
getMemberCouponListRequestDto
.
setPageNum
(
1
);
getMemberCouponListRequestDto
.
setPageNum
(
1
);
...
@@ -382,79 +390,6 @@ public class CouponDiscountCalculation {
...
@@ -382,79 +390,6 @@ public class CouponDiscountCalculation {
return
availableCouponResponseVo
;
return
availableCouponResponseVo
;
}
}
private
ActivityClassifyCouponBean
returnAvailableCoupons
(
String
couponCode
,
ActivityClassifyCouponBean
availableCouponResponseVo
,
Map
<
String
,
GetMemberCouponListResponseDto
.
Result
.
MemberCoupon
>
memberCouponMap
,
// List<CouponStateVo> couponStateList,
List
<
GetMemberCouponListResponseDto
.
Result
.
MemberCoupon
>
memberCoupons
)
{
int
disableCouponNum
=
0
;
int
usableCouponNum
=
0
;
// 可用优惠券信息
List
<
ActivityCouponBean
>
usableCoupons
=
Lists
.
newArrayList
();
for
(
GetMemberCouponListResponseDto
.
Result
.
MemberCoupon
couponStateVo
:
memberCoupons
)
{
// // 过滤0得代金券
// if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode())
// && (couponStateVo.getOriginalPrice() == null
// || couponStateVo.getOriginalPrice() == 0)) {
// continue;
// }
//
// // 过滤折扣券为0折得
// if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_3.getCode())
// && (couponStateVo.getDiscount() == null
// || couponStateVo.getDiscount() == 0)) {
// continue;
// }
ActivityCouponBean
activityCouponBean
=
new
ActivityCouponBean
();
activityCouponBean
.
setCouponCode
(
couponStateVo
.
getCouponCode
());
GetMemberCouponListResponseDto
.
Result
.
MemberCoupon
memberCoupon
=
memberCouponMap
.
get
(
couponStateVo
.
getCouponCode
());
if
(
memberCoupon
!=
null
)
{
activityCouponBean
.
setCouponName
(
memberCoupon
.
getCouponName
());
activityCouponBean
.
setEndTime
(
memberCoupon
.
getEndTime
());
if
(
Objects
.
equals
(
couponStateVo
.
getCouponType
(),
CouponTypeEnum
.
TYPE_1
.
getCode
()))
{
activityCouponBean
.
setDiscountAmount
(
couponStateVo
.
getOriginalPrice
()
+
""
);
}
activityCouponBean
.
setThresholdDesc
(
"满"
+
formatAmount
((
couponStateVo
.
getMinAmount
()
==
null
?
0
:
couponStateVo
.
getMinAmount
())
*
1.00
/
100
)
+
"元可用"
);
activityCouponBean
.
setActivityDesc
(
"不与其他活动优惠同时享受。"
);
activityCouponBean
.
setUnusedReason
(
couponStateVo
.
getRemark
());
// 详情
GetMemberCouponListResponseVo
.
MemberCouponDetail
detail
=
new
GetMemberCouponListResponseVo
.
MemberCouponDetail
();
detail
.
setActivityName
(
memberCoupon
.
getCouponName
());
String
startDate
=
DateUtil
.
convert2String
(
DateUtil
.
convert2Date
(
memberCoupon
.
getStartTime
(),
DateUtil
.
FORMAT_yyyyMMdd_date
),
DateUtil
.
FORMAT_yyyyMMdd_date
).
replace
(
"-"
,
"."
);
String
endDate
=
DateUtil
.
convert2String
(
DateUtil
.
convert2Date
(
memberCoupon
.
getEndTime
(),
DateUtil
.
FORMAT_yyyyMMdd_date
),
DateUtil
.
FORMAT_yyyyMMdd_date
).
replace
(
"-"
,
"."
);
detail
.
setEndTime
(
endDate
);
detail
.
setStartTime
(
startDate
);
String
remark
=
memberCoupon
.
getActiveDesc
();
detail
.
setRemark
(
couponAdapter
.
getDescribeText
(
remark
));
if
(
Objects
.
equals
(
couponStateVo
.
getCouponType
(),
CouponTypeEnum
.
TYPE_1
.
getCode
()))
{
detail
.
setAmountDesc
(
"满"
+
formatAmount
((
couponStateVo
.
getMinAmount
()
==
null
?
0
:
couponStateVo
.
getMinAmount
())
*
1.00
/
100
)
+
"元减"
+
formatAmount
((
couponStateVo
.
getOriginalPrice
()
==
null
?
0
:
couponStateVo
.
getOriginalPrice
())
*
1.00
/
100
)
+
"元"
);
}
// 设置条形码
GetCouponBarCodeResponseVo
responseVo
=
this
.
getCouponBarCode
(
couponStateVo
.
getCouponCode
());
detail
.
setCouponBarCode
(
responseVo
.
getBase64Image
());
activityCouponBean
.
setDetail
(
detail
);
activityCouponBean
.
setActivityCode
(
memberCoupon
.
getActivityCode
());
activityCouponBean
.
setCouponType
(
couponStateVo
.
getCouponType
());
activityCouponBean
.
setDateDescribe
(
couponAdapter
.
getDateDescribe
(
memberCoupon
.
getStatus
(),
memberCoupon
.
getStartTime
(),
memberCoupon
.
getEndTime
()));
// 券状态 0 可用 1 不可用 2 限制可用
if
(
Objects
.
equals
(
activityCouponBean
.
getCouponCode
(),
couponCode
))
{
activityCouponBean
.
setSelected
(
YesOrNoEnum
.
YES
.
getCode
());
}
else
{
activityCouponBean
.
setSelected
(
YesOrNoEnum
.
NO
.
getCode
());
}
usableCoupons
.
add
(
activityCouponBean
);
usableCouponNum
=
usableCouponNum
+
1
;
}
}
availableCouponResponseVo
.
setCouponNum
(
disableCouponNum
+
usableCouponNum
);
availableCouponResponseVo
.
setDisableCouponNum
(
disableCouponNum
);
availableCouponResponseVo
.
setUsableCouponNum
(
usableCouponNum
);
availableCouponResponseVo
.
setDisableCoupons
(
null
);
availableCouponResponseVo
.
setUsableCoupons
(
usableCoupons
);
return
availableCouponResponseVo
;
}
public
GetCouponBarCodeResponseVo
getCouponBarCode
(
String
couponCode
)
{
public
GetCouponBarCodeResponseVo
getCouponBarCode
(
String
couponCode
)
{
byte
[]
bytes
=
BarcodeUtil
.
generateBarCode128
(
couponCode
,
6
D
,
null
,
true
,
false
);
byte
[]
bytes
=
BarcodeUtil
.
generateBarCode128
(
couponCode
,
6
D
,
null
,
true
,
false
);
String
base64Image
=
Base64
.
getEncoder
().
encodeToString
(
bytes
);
String
base64Image
=
Base64
.
getEncoder
().
encodeToString
(
bytes
);
...
...
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