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
jenkins
order-group
Commits
cc8fecd6
Commit
cc8fecd6
authored
Dec 06, 2019
by
姜海波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新最新master代码
parent
2696c7dc
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
190 additions
and
0 deletions
+190
-0
order-application-service/src/main/java/cn/freemud/entities/vo/OrderAccountVo.java
+33
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuyAndGiftsPromotionService.java
+157
-0
No files found.
order-application-service/src/main/java/cn/freemud/entities/vo/OrderAccountVo.java
0 → 100644
View file @
cc8fecd6
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderAccountVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: ping.wu
* @date: 2019/11/27 16:33
* @version V1.0
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
@Data
public
class
OrderAccountVo
{
/**
* 优惠类型
*/
private
Integer
type
;
/**
* 优惠类型名称
*/
private
String
typeName
;
/**
* 优惠金额(单位分)
*/
private
Integer
discountAmount
;
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuyAndGiftsPromotionService.java
0 → 100644
View file @
cc8fecd6
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.UserLoginInfoDto
;
import
cn.freemud.entities.dto.activity.ActivityDiscountsDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.IPromotionService
;
import
com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* All rights Reserved, Designed By www.freemud.cn
* 买赠活动
* 例如:买烧饼送手提袋
*
* @version V1.0
* @Title: BuyAndGiftsPromotionService
* @Package cn.freemud.service.impl
* @Description:
* @author: jiaxin.liu
* @date: 2019/4/18 11:00
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public
class
BuyAndGiftsPromotionService
implements
IPromotionService
{
@Autowired
private
AssortmentSdkService
assortmentSdkService
;
@Autowired
private
ShoppingCartBaseServiceImpl
shoppingCartBaseService
;
@Override
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityQueryDto
activityQueryDto
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
UserLoginInfoDto
userLoginInfoDto
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getSendGoods
()))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivities
=
calculationDiscountResult
.
getSendGoods
().
stream
().
filter
(
goods
->
ActivityTypeEnum
.
TYPE_62
.
getCode
().
equals
(
goods
.
getActivityType
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
sendActivities
))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsList
=
new
ArrayList
<>();
sendActivities
.
forEach
(
sendActivity
->
sendGoodsList
.
addAll
(
sendActivity
.
getSendGoods
()));
List
<
ProductBeanDTO
>
productBeanDTOS
=
buildActivityProduct
(
shoppingCartInfoRequestVo
,
sendGoodsList
);
if
(
CollectionUtils
.
isEmpty
(
productBeanDTOS
))
{
return
;
}
Long
totalGiftAmount
=
0L
;
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
:
sendActivities
)
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
:
sendActivity
.
getSendGoods
())
{
Optional
<
ProductBeanDTO
>
firstProduct
=
productBeanDTOS
.
stream
().
filter
(
productBean
->
ObjectUtils
.
equals
(
productBean
.
getPid
(),
sendGoods
.
getGoodsId
())).
findFirst
();
if
(!
firstProduct
.
isPresent
())
{
continue
;
}
ProductBeanDTO
product
=
firstProduct
.
get
();
CartGoods
cartGoods
=
new
CartGoods
();
cartGoods
.
setGoodsId
(
sendGoods
.
getGoodsId
());
cartGoods
.
setGoodsType
(
1
);
cartGoods
.
setSpuId
(
sendGoods
.
getGoodsId
());
cartGoods
.
setSkuId
(
sendGoods
.
getGoodsId
());
cartGoods
.
setOriginalPrice
(
product
.
getFinalPrice
());
cartGoods
.
setPackPrice
(
product
.
getPackPrice
());
cartGoods
.
setOriginalAmount
(
product
.
getFinalPrice
()
*
sendGoods
.
getSendNumber
());
cartGoods
.
setAmount
(
0L
);
cartGoods
.
setName
(
product
.
getName
());
cartGoods
.
setSpuName
(
product
.
getName
());
cartGoods
.
setCategoryName
(
product
.
getName
());
cartGoods
.
setPic
(
product
.
getPicture
());
cartGoods
.
setSkuName
(
product
.
getName
());
cartGoods
.
setActivityType
(
ActivityTypeEnum
.
TYPE_62
.
getCode
());
cartGoods
.
setStockLimit
(
ObjectUtils
.
equals
(
1
,
product
.
getStockLimit
()));
cartGoods
.
setCustomerCode
(
product
.
getCustomerCode
());
cartGoods
.
setUnit
(
product
.
getUnit
());
cartGoods
.
setQty
(
sendGoods
.
getSendNumber
());
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGoods
.
setNodeId
(
sendActivity
.
getActivityCode
());
cartGoodsList
.
add
(
cartGoods
);
totalGiftAmount
+=
product
.
getFinalPrice
()
*
sendGoods
.
getSendNumber
();
}
}
shoppingCartGoodsResponseVo
.
setOriginalTotalAmount
(
shoppingCartGoodsResponseVo
.
getOriginalTotalAmount
()
+
totalGiftAmount
);
Long
totalDiscountAmount
=
Objects
.
isNull
(
shoppingCartGoodsResponseVo
.
getTotalDiscountAmount
())
?
0L
:
shoppingCartGoodsResponseVo
.
getTotalDiscountAmount
();
shoppingCartGoodsResponseVo
.
setTotalDiscountAmount
(
totalDiscountAmount
+
totalGiftAmount
);
}
@Override
public
void
updateShoppingCartGoodsApportion
(
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getSendGoods
()))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivities
=
calculationDiscountResult
.
getSendGoods
().
stream
().
filter
(
goods
->
ActivityTypeEnum
.
TYPE_62
.
getCode
().
equals
(
goods
.
getActivityType
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
sendActivities
))
{
return
;
}
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
>
sendGoodsList
=
shoppingCartGoodsDto
.
getProducts
().
stream
().
filter
(
product
->
ActivityTypeEnum
.
TYPE_62
.
getCode
().
equals
(
product
.
getActivityType
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
sendGoodsList
))
{
return
;
}
List
<
ActivityDiscountsDto
>
activityDiscountsDtos
=
shoppingCartGoodsDto
.
getActivityDiscountsDtos
()
==
null
?
new
ArrayList
<>()
:
shoppingCartGoodsDto
.
getActivityDiscountsDtos
();
//设置商品行活动均摊
for
(
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
:
sendGoodsList
)
{
Optional
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
first
=
sendActivities
.
stream
().
filter
(
sendActivity
->
ObjectUtils
.
equals
(
sendActivity
.
getActivityCode
(),
cartGoodsDetailDto
.
getNodeId
())).
findFirst
();
if
(!
first
.
isPresent
())
{
continue
;
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
=
first
.
get
();
ActivityDiscountsDto
ProductActivityDiscountsDto
=
new
ActivityDiscountsDto
();
ProductActivityDiscountsDto
.
setActivityCode
(
sendActivity
.
getActivityCode
());
ProductActivityDiscountsDto
.
setActivityName
(
sendActivity
.
getActivityName
());
ProductActivityDiscountsDto
.
setActivityType
(
sendActivity
.
getActivityType
());
ProductActivityDiscountsDto
.
setDiscountAmount
(
cartGoodsDetailDto
.
getTotalDiscountAmount
());
cartGoodsDetailDto
.
setActivityDiscountsDtos
(
Arrays
.
asList
(
ProductActivityDiscountsDto
));
}
//设置活动级别的均摊
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
:
sendActivities
)
{
//设置优惠活动
Integer
totalDiscountAmount
=
sendGoodsList
.
stream
().
filter
(
sendGoods
->
ObjectUtils
.
equals
(
sendActivity
.
getActivityCode
(),
sendGoods
.
getNodeId
())).
mapToInt
(
sendGoods
->
sendGoods
.
getTotalDiscountAmount
()).
sum
();
ActivityDiscountsDto
activityDiscountsDto
=
new
ActivityDiscountsDto
();
activityDiscountsDto
.
setActivityCode
(
sendActivity
.
getActivityCode
());
activityDiscountsDto
.
setActivityName
(
sendActivity
.
getActivityName
());
activityDiscountsDto
.
setActivityType
(
sendActivity
.
getActivityType
());
activityDiscountsDto
.
setDiscountAmount
(
0
-
totalDiscountAmount
);
activityDiscountsDtos
.
add
(
activityDiscountsDto
);
}
}
/**
* @param shoppingCartInfoRequestVo
* @param sendGoodsList
* @return
*/
private
List
<
ProductBeanDTO
>
buildActivityProduct
(
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsList
)
{
//获取
List
<
String
>
goodsIds
=
sendGoodsList
.
stream
().
map
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
::
getGoodsId
).
collect
(
Collectors
.
toList
());
List
<
ProductBeanDTO
>
productBeanList
=
assortmentSdkService
.
getProductsInfoSdk
(
shoppingCartInfoRequestVo
.
getPartnerId
(),
shoppingCartInfoRequestVo
.
getShopId
(),
goodsIds
,
shoppingCartBaseService
);
if
(
CollectionUtils
.
isEmpty
(
productBeanList
))
{
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_GIFTS_PRODUCT_NOT_EXIST
);
}
return
productBeanList
;
}
}
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