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
3cc204c0
Commit
3cc204c0
authored
Aug 24, 2020
by
xiaoer.li@freemud.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'remotes/origin/feature/1.9.32_商品加料'
parents
53bf0fd5
25c11ede
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
559 additions
and
81 deletions
+559
-81
assortment-shoppingcart-sdk/pom.xml
+3
-3
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/adapter/ShoppingCartAdapter.java
+68
-1
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/GoodsTypeEnum.java
+2
-1
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/ShoppingCartConstant.java
+5
-4
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CartGoods.java
+44
-1
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/ShoppingCartBaseService.java
+9
-3
shopping-cart-application-service/pom.xml
+3
-3
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+43
-7
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountRequestDto.java
+28
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
+37
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetMenuResponseDto.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetProductInfoDto.java
+93
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
+33
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/AddShoppingCartGoodsRequestVo.java
+5
-2
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/CartGoods.java
+54
-10
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/MaterialRequestVo.java
+23
-0
shopping-cart-application-service/src/main/java/cn/freemud/enums/GoodsTypeEnum.java
+4
-3
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+0
-1
shopping-cart-application-service/src/main/java/cn/freemud/enums/ShoppingCartPromotionEnum.java
+3
-2
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
+0
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuySendPromotionService.java
+27
-23
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponServiceImpl.java
+11
-3
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ItemServiceImpl.java
+1
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/MaterialPromotionService.java
+0
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+55
-9
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/XyDiscountServiceImpl.java
+5
-1
No files found.
assortment-shoppingcart-sdk/pom.xml
View file @
3cc204c0
...
...
@@ -10,7 +10,7 @@
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
assortment-shoppingcart-sdk
</artifactId>
<version>
1.
1.3.RELEASE
</version>
<version>
1.
9.10-SNAPSHOT
</version>
<dependencies>
<dependency>
...
...
@@ -42,7 +42,7 @@
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
productcenter-sdk
</artifactId>
<version>
3.
2.RELEASE
</version>
<version>
3.
5.4-SNAPSHOT
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
...
...
@@ -54,7 +54,7 @@
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
sdk-common-base
</artifactId>
<version>
1.4.
1
-SNAPSHOT
</version>
<version>
1.4.
4
-SNAPSHOT
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/adapter/ShoppingCartAdapter.java
View file @
3cc204c0
...
...
@@ -289,6 +289,7 @@ public class ShoppingCartAdapter {
skuSpecName
=
StringUtils
.
join
(
skuSpecValus
,
"/"
);
}
String
attributeName
=
attributes
.
get
(
ATTRIBUTENAME
)
==
null
?
""
:
attributes
.
get
(
ATTRIBUTENAME
);
//购物车小标题
cartGoods
.
setSubName
(
StringUtils
.
isNotEmpty
(
skuSpecName
)
&&
StringUtils
.
isNotEmpty
(
attributeName
)
?
skuSpecName
+
"/"
+
attributeName
:
skuSpecName
+
attributeName
);
...
...
@@ -320,12 +321,78 @@ public class ShoppingCartAdapter {
cartGoods
.
setWeight
(
isSkuProduct
?
skuProduct
.
getWeight
()
:
spuProduct
.
getWeight
());
cartGoods
.
setUnit
(
isSkuProduct
?
skuProduct
.
getUnit
()
:
spuProduct
.
getUnit
());
cartGoods
.
setWeightType
(
CommonsConstant
.
WEIGHT_PRODUCT
.
equals
(
spuProduct
.
getWeightType
()));
cartGoods
.
setMaterialAmount
(
0L
);
cartGoods
.
setOriginalMaterialAmount
(
0L
);
// todo 设置加料
this
.
checkMaterialProduct
(
cartGoods
,
spuProduct
);
}
catch
(
Exception
ex
)
{
ErrorLog
.
infoConvertJson
(
this
.
getClass
(),
"updateCartGoodsInfoNew_Error"
,
ex
);
ErrorLog
.
infoConvertJson
(
this
.
getClass
(),
"updateCartGoodsInfoNew_Error"
,
ex
);
cartGoods
.
setCartGoodsUid
(
null
);
}
}
/**
* 单独处理加料及标识小料信息是否有变化
*
* @param cartGoods
* @param spuProduct
*/
private
void
checkMaterialProduct
(
CartGoods
cartGoods
,
ProductBeanDTO
spuProduct
)
{
if
(
CollectionUtils
.
isEmpty
(
cartGoods
.
getProductMaterialList
()))
return
;
//加料信息为空
if
(
CollectionUtils
.
isEmpty
(
spuProduct
.
getAdditionalGroupList
()))
{
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
EXCEPTION_GOODS
.
getGoodsType
());
cartGoods
.
setProductMaterialList
(
new
ArrayList
<>());
return
;
}
//提取加料信息
List
<
String
>
materialSpu
=
new
ArrayList
<>();
List
<
ProductBeanDTO
.
ProductGroupType
.
GroupDetailType
>
groupDetail
=
spuProduct
.
getAdditionalGroupList
().
get
(
0
).
getGroupDetail
();
HashMap
<
String
,
ProductBeanDTO
.
ProductGroupType
.
GroupDetailType
>
materialHash
=
new
HashMap
<>();
for
(
ProductBeanDTO
.
ProductGroupType
.
GroupDetailType
groupDetailType
:
groupDetail
)
{
materialHash
.
put
(
groupDetailType
.
getProductId
(),
groupDetailType
);
materialSpu
.
add
(
groupDetailType
.
getProductId
());
}
//加车小料和商品小料没有交集则提示商品信息有异常
if
(
CollectionUtils
.
isEmpty
(
cartGoods
.
getProductMaterialList
().
stream
().
filter
(
e
->
materialSpu
.
contains
(
e
.
getSpuId
())).
collect
(
Collectors
.
toList
())))
{
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
EXCEPTION_GOODS
.
getGoodsType
());
cartGoods
.
setProductMaterialList
(
new
ArrayList
<>());
return
;
}
ArrayList
<
CartGoods
.
MaterialGoods
>
materialGoodsList
=
new
ArrayList
<>();
Long
materialAmount
=
0L
;
Long
originalMaterAmount
=
0L
;
String
materialSubName
=
cartGoods
.
getSubName
();
for
(
CartGoods
.
MaterialGoods
materialGoods
:
cartGoods
.
getProductMaterialList
())
{
ProductBeanDTO
.
ProductGroupType
.
GroupDetailType
detail
=
materialHash
.
get
(
materialGoods
.
getSpuId
());
if
(
detail
==
null
)
continue
;
CartGoods
.
MaterialGoods
material
=
new
CartGoods
.
MaterialGoods
();
material
.
setSpuName
(
detail
.
getProductName
());
material
.
setSpuId
(
detail
.
getProductId
());
//行单价 \ 行总价
material
.
setFinalPrice
(
detail
.
getProductFinalPrice
().
longValue
());
material
.
setAmount
(
detail
.
getProductFinalPrice
().
longValue
()
*
cartGoods
.
getQty
());
//原行单价*数量
material
.
setOriginalAmount
(
detail
.
getProductFinalPrice
().
longValue
()
*
cartGoods
.
getQty
());
material
.
setOriginalPrice
(
detail
.
getProductFinalPrice
().
longValue
());
materialGoodsList
.
add
(
material
);
materialAmount
+=
detail
.
getProductFinalPrice
().
longValue
()
*
cartGoods
.
getQty
();
originalMaterAmount
+=
detail
.
getProductFinalPrice
().
longValue
()
*
cartGoods
.
getQty
();
;
materialSubName
=
materialSubName
+
"/"
+
detail
.
getProductName
();
}
//设置购物车行记录
cartGoods
.
setProductMaterialList
(
materialGoodsList
);
//加料行记录现价总价
cartGoods
.
setMaterialAmount
(
materialAmount
);
//加料行记录原价总价
cartGoods
.
setOriginalMaterialAmount
(
originalMaterAmount
);
//cartGoods.setOriginalAmount(cartGoods.getOriginalAmount() + originalMaterAmount);
//cartGoods.setSubName(StringUtils.strip(materialSubName, "/"));
}
private
boolean
updateComboxGoodsInfo
(
CartGoods
cartGoods
,
CartGoods
.
ComboxGoods
comboxGoods
,
ProductBeanDTO
parentProductBean
,
List
<
ProductBeanDTO
>
productBeans
,
CartGoodsStates
cartGoodsStates
,
List
<
String
>
invalidGoodsIdList
)
{
// 可选商品详情
Optional
<
ProductBeanDTO
>
firstProduct
=
productBeans
.
stream
().
filter
(
p
->
ObjectUtils
.
equals
(
p
.
getPid
(),
comboxGoods
.
getGoodsId
())).
findFirst
();
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/GoodsTypeEnum.java
View file @
3cc204c0
...
...
@@ -19,7 +19,8 @@ public enum GoodsTypeEnum {
COUPON_GOODS
(
2
,
"商品券"
),
SET_MEAL_GOODS
(
3
,
"套餐商品"
),
SKU_GOODS
(
4
,
"sku商品"
),
SPU_GOODS
(
5
,
"spu商品"
);
SPU_GOODS
(
5
,
"spu商品"
),
EXCEPTION_GOODS
(
99
,
"异常商品:商品菜单变化导致和购物车不商品匹配"
);
private
Integer
goodsType
;
private
String
desc
;
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/ShoppingCartConstant.java
View file @
3cc204c0
...
...
@@ -14,16 +14,17 @@
package
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
constant
;
public
class
ShoppingCartConstant
{
public
final
static
String
SHOPPING_CART_INVALIAD_GOODS
=
"因商家变更了商品,导致选购失败,请刷新门店后重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_EMPTY_GOODS_LIST
=
"因商品变更或其他原因,导致加购失效,无法结算,请重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_INVALIAD_GOODS
=
"因商家变更了商品,导致选购失败,请刷新门店后重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_EMPTY_GOODS_LIST
=
"因商品变更或其他原因,导致加购失效,无法结算,请重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_MATERIAL_ERROR
=
"因商品加料信息有变动,导致加车失效,无法结算,请重新尝试刷新商品菜单"
;
public
final
static
String
SHOPPING_CART_INVALID_GOODS_EXIST
=
"有商品不在售卖状态,请重新提交结算"
;
public
final
static
String
SHOPPING_CART_ACTIVITY_CHANGE
=
"商品价格有变动,将按照最新价格计算哦"
;
public
final
static
String
SHOPPING_CART_GOODS_CHANGE
=
"因商家变更了商品,导致选购失效,请刷新门店后重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_GOODS_CHANGE
=
"因商家变更了商品,导致选购失效,请刷新门店后重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_GOODS_INVALID
=
"因商品变更或其他原因,导致架构失效,无法结算,请重新尝试选购商品"
;
public
final
static
String
SHOPPING_CART_GOODS_INVALID
=
"因商品变更或其他原因,导致架构失效,无法结算,请重新尝试选购商品"
;
public
final
static
String
HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON
=
"该商品券与其他活动不同享,购物车中已优惠的商品将恢复原价"
;
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CartGoods.java
View file @
3cc204c0
...
...
@@ -14,6 +14,7 @@
package
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
domain
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -70,12 +71,17 @@ public class CartGoods {
* 购物车一行商品的原总价
*/
private
Long
originalAmount
;
//购物车一行小料商品的原总价
private
Long
originalMaterialAmount
;
/**
* 购物车一行商品的现总价
*/
private
Long
amount
;
/**
* 购物车加料商品总价
*/
private
Long
materialAmount
;
/**
* 购物车一行商品的数量
*/
private
Integer
qty
;
...
...
@@ -161,6 +167,10 @@ public class CartGoods {
*/
private
List
<
ComboxGoods
>
productGroupList
;
/**
* 商品加料
*/
private
List
<
MaterialGoods
>
productMaterialList
;
@Data
public
final
static
class
CartGoodsExtra
{
...
...
@@ -209,6 +219,11 @@ public class CartGoods {
* 购物车一行商品的现价
*/
private
Long
amount
;
/**
* 加料商品商品价格
*/
private
Long
materialAmount
;
/**
* 购物车一行商品的数量
*/
...
...
@@ -280,4 +295,32 @@ public class CartGoods {
public
int
hashCode
()
{
return
Objects
.
hash
(
super
.
hashCode
(),
goodsId
,
goodsType
,
spuId
,
skuId
,
specProductId
,
originalPrice
,
packPrice
,
name
,
subName
,
pic
,
extra
);
}
@Data
@NoArgsConstructor
public
static
class
MaterialGoods
{
/**
* 加料Id
*/
private
String
spuId
;
/**
* 加料名称
*/
private
String
spuName
;
/**
* 购物车一行商品的现单价
*/
private
Long
finalPrice
;
/**
* 购物车一行商品的原单价
*/
private
Long
originalAmount
;
private
Long
originalPrice
;
/**
* 购物车一行商品的总现价
*/
private
Long
amount
;
}
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/ShoppingCartBaseService.java
View file @
3cc204c0
...
...
@@ -155,7 +155,7 @@ public interface ShoppingCartBaseService {
}
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
StringUtils
.
isEmpty
(
k
.
getCartGoodsUid
()));
}
// Todo : 验证的商品信息
List
<
ProductBeanDTO
>
productList
=
valiadResult
.
getSuccessList
().
stream
().
map
(
ValiadShopProductResult:
:
getProductType
).
collect
(
Collectors
.
toList
());
CartGoodsStates
cartGoodsStates
=
new
CartGoodsStates
();
for
(
CartGoods
cartGoods
:
checkCartRequest
.
getCartGoodsList
())
{
...
...
@@ -174,11 +174,17 @@ public interface ShoppingCartBaseService {
setToastMsgIfNotExist
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
(),
ShoppingCartConstant
.
ORDER_WAY_CHANGE
);
}
//若商品详情赋值有异常,直接移除购物车
if
(
checkCartRequest
.
getCartGoodsList
().
stream
().
anyMatch
(
cart
->
StringUtils
.
isEmpty
(
cart
.
getCartGoodsUid
())))
{
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
StringUtils
.
isEmpty
(
k
.
getCartGoodsUid
()));
if
(
checkCartRequest
.
getCartGoodsList
().
stream
().
anyMatch
(
cart
->
StringUtils
.
isEmpty
(
cart
.
getCartGoodsUid
())))
{
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
StringUtils
.
isEmpty
(
k
.
getCartGoodsUid
()));
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
}
//todo 小料
if
(
checkCartRequest
.
getCartGoodsList
().
stream
().
anyMatch
(
cart
->
cart
.
getGoodsType
().
equals
(
GoodsTypeEnum
.
EXCEPTION_GOODS
.
getGoodsType
())))
{
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
k
.
getGoodsType
().
equals
(
GoodsTypeEnum
.
EXCEPTION_GOODS
.
getGoodsType
()));
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_MATERIAL_ERROR
);
}
return
CartResponseUtil
.
success
(
checkCartRequest
);
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"assortment-shoppingcart-sdk"
,
checkCartRequest
.
getTrackingNo
(),
e
.
getMessage
(),
"checkAllCartGoods"
,
checkCartRequest
,
e
,
Level
.
ERROR
);
...
...
shopping-cart-application-service/pom.xml
View file @
3cc204c0
...
...
@@ -30,12 +30,12 @@
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
sdk-common-base
</artifactId>
<version>
1.
3.9
-SNAPSHOT
</version>
<version>
1.
4.4
-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
productcenter-sdk
</artifactId>
<version>
3.
2.RELEASE
</version>
<version>
3.
5.4-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
...
...
@@ -45,7 +45,7 @@
<dependency>
<groupId>
cn.freemud
</groupId>
<artifactId>
assortment-shoppingcart-sdk
</artifactId>
<version>
1.
1.3.RELEASE
</version>
<version>
1.
9.10-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
...
...
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
3cc204c0
...
...
@@ -111,14 +111,31 @@ public class ShoppingCartConvertAdapter {
}
else
if
(
cartGoods
.
isWeightType
())
{
cartGoodsDetailDto
.
setProductType
(
ProductType
.
WEIGHT_PRODUCT
.
getCode
());
}
//小料
if
(
CollectionUtils
.
isNotEmpty
(
cartGoods
.
getProductMaterialList
()))
{
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
MaterialGoods
>
materialList
=
new
ArrayList
<>(
0
);
for
(
CartGoods
.
MaterialGoods
materialGoods
:
cartGoods
.
getProductMaterialList
())
{
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
MaterialGoods
goods
=
new
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
MaterialGoods
();
goods
.
setSpuId
(
materialGoods
.
getSpuId
());
goods
.
setSpuName
(
materialGoods
.
getSpuName
());
goods
.
setOriginalPrice
(
materialGoods
.
getOriginalPrice
());
goods
.
setSalePrice
(
materialGoods
.
getFinalPrice
());
goods
.
setQty
(
cartGoods
.
getQty
());
goods
.
setTotalDiscountAmount
(
0
);
materialList
.
add
(
goods
);
}
cartGoodsDetailDto
.
setMaterialList
(
materialList
);
}
// 设置总优惠&售价
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
>
cartGoodsExtras
=
BeanUtil
.
convertBeans
(
cartGoods
.
getExtra
(),
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
::
new
);
cartGoodsDetailDto
.
setExtraList
(
cartGoodsExtras
);
//61: 单品买M赠N \ 62:买赠 \ 6:买M赠N
if
(
ObjectUtils
.
equals
(
ActivityTypeEnum
.
TYPE_61
.
getCode
(),
cartGoods
.
getActivityType
())
||
ObjectUtils
.
equals
(
ActivityTypeEnum
.
TYPE_6
.
getCode
(),
cartGoods
.
getActivityType
())
||
ObjectUtils
.
equals
(
ActivityTypeEnum
.
TYPE_62
.
getCode
(),
cartGoods
.
getActivityType
()))
{
cartGoodsDetailDto
.
setTotalDiscountAmount
(
cartGoods
.
getOriginalAmount
().
intValue
()
-
cartGoods
.
getAmount
().
intValue
());
}
else
{
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
collect
=
apportionGoodsList
.
stream
().
filter
(
a
->
ObjectUtils
.
equals
(
cartGoods
.
getSkuId
(),
a
.
getGoodsId
())
||
ObjectUtils
.
equals
(
cartGoods
.
getSpuId
(),
a
.
getGoodsId
())).
collect
(
Collectors
.
toList
());
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
collect
=
apportionGoodsList
.
stream
().
filter
(
a
->
ObjectUtils
.
equals
(
cartGoods
.
getCartGoodsUid
(),
a
.
getCartGoodsUid
())).
collect
(
Collectors
.
toList
());
//List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> collect = apportionGoodsList.stream().filter(a -> ObjectUtils.equals(cartGoods.getSkuId(), a.getGoodsId()) || ObjectUtils.equals(cartGoods.getSpuId(), a.getGoodsId())).collect(Collectors.toList());
if
(
CollectionUtils
.
isNotEmpty
(
collect
))
{
setTotalDiscountAndSalePrice
(
collect
,
cartGoodsDetailDto
,
duplicateGoodsMap
);
// 设置商品行,优惠活动均摊
...
...
@@ -156,6 +173,7 @@ public class ShoppingCartConvertAdapter {
}
/**
* 活动级别的促销均摊
* 获取当前商品的售后价格
*
* @param apportionGoodsList 促销均摊列表
...
...
@@ -171,19 +189,19 @@ public class ShoppingCartConvertAdapter {
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
//折扣=所有折扣和*百分比(当前行商品数量/购物车总商品数量)
discountPrice
+=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
d
->
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_32
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_104
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_2
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_21
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_104
.
getCode
(),
d
.
getActivityType
())
//X件Y折
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_2
.
getCode
(),
d
.
getActivityType
())
//单品特价
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_21
.
getCode
(),
d
.
getActivityType
())
//单品折扣
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
()
*
cartGoodsDetailDto
.
getQty
()
/
goodsTotalQty
;
}
String
currentGoodsIdMap
=
duplicateGoodsMap
.
get
(
cartGoodsDetailDto
.
get
SkuI
d
());
String
currentGoodsIdMap
=
duplicateGoodsMap
.
get
(
cartGoodsDetailDto
.
get
CartGoodsUi
d
());
if
(
currentGoodsIdMap
!=
null
)
{
String
[]
value
=
currentGoodsIdMap
.
split
(
","
);
//不是最后一行商品,折扣为discountPrice
if
(
Integer
.
parseInt
(
value
[
0
])
>
1
)
{
int
totalDiscountPrice
=
Integer
.
parseInt
(
value
[
1
])
+
discountPrice
.
intValue
();
int
index
=
Integer
.
parseInt
(
value
[
0
])
-
1
;
duplicateGoodsMap
.
put
(
cartGoodsDetailDto
.
get
SkuI
d
(),
String
.
format
(
"%s,%s"
,
index
,
totalDiscountPrice
));
duplicateGoodsMap
.
put
(
cartGoodsDetailDto
.
get
CartGoodsUi
d
(),
String
.
format
(
"%s,%s"
,
index
,
totalDiscountPrice
));
}
else
{
//最后一行
Long
totalDiscountAmount
=
0L
;
...
...
@@ -358,6 +376,8 @@ public class ShoppingCartConvertAdapter {
cartGoods
.
setCategoryName
(
addShoppingCartGoodsRequestVo
.
getCategoryName
());
List
<
CartGoods
.
ComboxGoods
>
productComboList
=
new
ArrayList
<>();
List
<
CartGoods
.
ComboxGoods
>
productGroupList
=
new
ArrayList
<>();
List
<
CartGoods
.
MaterialGoods
>
materialGoodsList
=
new
ArrayList
<>();
//套餐
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductComboList
()))
{
for
(
ComboxGoodsRequestVo
vo
:
addShoppingCartGoodsRequestVo
.
getProductComboList
())
{
CartGoods
.
ComboxGoods
productCombox
=
new
CartGoods
.
ComboxGoods
();
...
...
@@ -368,6 +388,7 @@ public class ShoppingCartConvertAdapter {
productComboList
.
add
(
productCombox
);
}
}
//固定商品组
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductGroupList
()))
{
for
(
ComboxGoodsRequestVo
vo
:
addShoppingCartGoodsRequestVo
.
getProductGroupList
())
{
CartGoods
.
ComboxGoods
productCombox
=
new
CartGoods
.
ComboxGoods
();
...
...
@@ -379,8 +400,17 @@ public class ShoppingCartConvertAdapter {
productGroupList
.
add
(
productCombox
);
}
}
//加料商品集
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductMaterialList
()))
{
for
(
MaterialRequestVo
materialRequestVo
:
addShoppingCartGoodsRequestVo
.
getProductMaterialList
())
{
CartGoods
.
MaterialGoods
materialGoods
=
new
CartGoods
.
MaterialGoods
();
materialGoods
.
setSpuId
(
materialRequestVo
.
getSpuId
());
materialGoodsList
.
add
(
materialGoods
);
}
}
cartGoods
.
setProductComboList
(
productComboList
);
cartGoods
.
setProductGroupList
(
productGroupList
);
cartGoods
.
setProductMaterialList
(
materialGoodsList
);
return
cartGoods
;
}
...
...
@@ -415,4 +445,9 @@ public class ShoppingCartConvertAdapter {
String
skuId
=
StringUtils
.
isNotBlank
(
addShoppingCartGoodsRequestVo
.
getSkuId
())
?
addShoppingCartGoodsRequestVo
.
getSkuId
()
:
""
;
addShoppingCartGoodsRequestVo
.
setSkuId
(
skuId
);
}
}
public
String
jointPk
(
String
a
,
String
b
)
{
StringBuffer
stringBuffer
=
new
StringBuffer
();
return
stringBuffer
.
append
(
a
).
append
(
b
).
toString
();
}
}
\ No newline at end of file
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountRequestDto.java
View file @
3cc204c0
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -107,6 +108,11 @@ public class ActivityCalculationDiscountRequestDto {
* 例如8折为80
*/
private
Integer
memberDiscount
;
/**
* 加料
*/
private
List
<
Material
>
smallMaterial
;
private
String
spuId
;
@Override
public
boolean
equals
(
Object
o
)
{
...
...
@@ -117,6 +123,7 @@ public class ActivityCalculationDiscountRequestDto {
CalculationDiscountGoods
that
=
(
CalculationDiscountGoods
)
o
;
return
Objects
.
equals
(
goodsId
,
that
.
goodsId
)
&&
Objects
.
equals
(
category
,
that
.
category
)
&&
Objects
.
equals
(
cartGoodsUid
,
that
.
cartGoodsUid
)
&&
Objects
.
equals
(
originalPrice
,
that
.
originalPrice
);
}
...
...
@@ -124,5 +131,26 @@ public class ActivityCalculationDiscountRequestDto {
public
int
hashCode
()
{
return
Objects
.
hash
(
super
.
hashCode
(),
goodsId
,
category
,
originalPrice
);
}
@Data
@NoArgsConstructor
static
public
class
Material
{
/**
* 加料商品ID
*/
private
String
goodsId
;
/**
* 加料数量
*/
private
Integer
goodsQuantity
;
/**
* 加料单价
*/
private
Long
originalPrice
;
/**
* 1 :小料、2:可选搭配
*/
private
int
type
;
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
View file @
3cc204c0
...
...
@@ -2,6 +2,7 @@ package cn.freemud.entities.dto;
import
cn.freemud.entities.vo.SubtractStockVO
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -352,6 +353,7 @@ public class ActivityCalculationDiscountResponseDto {
private
Integer
apportionAmount
;
private
List
<
ApportionDetails
>
apportionDetails
;
private
List
<
Material
>
smallMaterial
;
/**
* 购物车行记录
*/
...
...
@@ -388,6 +390,41 @@ public class ActivityCalculationDiscountResponseDto {
*/
private
Long
activityApportionAmount
;
}
@Data
@NoArgsConstructor
public
static
class
Material
{
/**
* 均摊金额
*/
private
Integer
apportionAmount
;
/**
* 购物车行记录
*/
private
String
cartGoodsUid
;
/**
* 商品id
*/
private
String
goodsId
;
/**
* 商品数量
*/
private
Integer
goodsQuantity
;
/**
* 赠送商品现价(单位:分)(加价换购时表示需要加的价格)
*/
private
Long
nowPrice
;
/**
* 商品原价(分)
*/
private
Long
originalPrice
;
private
List
<
ApportionDetails
>
apportionDetails
;
}
}
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetMenuResponseDto.java
View file @
3cc204c0
...
...
@@ -181,7 +181,6 @@ public class GetMenuResponseDto {
private
List
<
SpecificationGroupBean
>
specificationGroupList
;
//Sku 规格 如果 当前是sku 则有值
private
List
<
SkuProductBean
.
SkuSpecValue
>
skuSpecValues
;
@NoArgsConstructor
@Data
public
static
class
SkuProductBean
{
...
...
@@ -311,6 +310,7 @@ public class GetMenuResponseDto {
private
String
type
;
private
String
url
;
}
}
}
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetProductInfoDto.java
View file @
3cc204c0
...
...
@@ -13,6 +13,7 @@
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
...
...
@@ -40,4 +41,96 @@ public class GetProductInfoDto {
* 门店商品渠道,不传则默认为default,仅对开放了门店商品渠道信息商户使用,请慎用该参数
*/
private
String
channel
;
/**
* 加料商品
*/
private
List
<
ProductGroupType
>
additionalGroupList
;
@NoArgsConstructor
@Data
public
static
class
ProductGroupType
{
//商品组ID
private
String
pgid
;
//商户ID
private
String
linkId
;
//商品组编号,跟groupId一样确认商品组唯一的字段
private
String
groupCode
;
//扩展字段
private
String
options
;
//商品组名")
private
String
name
;
//商品组规则-是否必选
private
Integer
must
;
//商品组规则-是否允许重复选
private
Integer
allowRepeat
;
//商品组规则-选择的最小数量
private
Integer
minNumber
;
//商品组规则-选择的最大数量
private
Integer
maxNumber
;
//商品组备注
private
String
remark
;
//商品组下子商品总数量
private
Integer
total
;
/**
* 商品组详情
*/
private
List
<
GroupDetailType
>
groupDetail
;
@NoArgsConstructor
@Data
public
static
class
GroupDetailType
{
/**
* 商品ID
*/
private
String
productId
;
/**
* 商品名称
*/
private
String
productName
;
/**
* 第三方商品编码
*/
private
String
customerCode
;
/**
* 标准售价
*/
private
Integer
productPrice
;
/**
* 最终售价
*/
protected
Integer
productFinalPrice
;
/**
* 最终售价
*/
protected
Integer
markUpPrice
;
/**
* 是否设置库存
*/
private
Integer
stockLimit
;
/**
* 商品Code
*/
protected
String
productCode
;
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
View file @
3cc204c0
...
...
@@ -240,6 +240,10 @@ public class ShoppingCartGoodsDto {
* 套餐子商品
*/
private
List
<
CartGoodsDetailDto
>
comboProducts
;
/**
* 加料商品
*/
private
List
<
CartGoodsDetailDto
.
MaterialGoods
>
materialList
=
new
ArrayList
<>(
0
);
@Data
public
final
static
class
CartGoodsExtra
{
...
...
@@ -253,6 +257,35 @@ public class ShoppingCartGoodsDto {
private
String
attributeName
;
}
@Data
public
static
class
MaterialGoods
{
/**
* 加料商品ID
*/
private
String
spuId
;
private
String
spuName
;
/**
* 商品行记录:当前元售价
*/
private
Long
originalPrice
;
/**
* 商品行记录:当前售价
*/
private
Long
salePrice
;
/**
* 小料商品的数量
*/
private
Integer
qty
;
/**
* 商品行优惠总金额=数量*单个商品优惠金额
*/
private
Integer
totalDiscountAmount
;
/**
* 当前商品享受的促销活动
*/
private
List
<
ActivityDiscountsDto
>
activityDiscountsDtos
;
}
/**
* 获取extras attributeNames
*/
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/AddShoppingCartGoodsRequestVo.java
View file @
3cc204c0
...
...
@@ -58,12 +58,15 @@ public class AddShoppingCartGoodsRequestVo extends BaseRequestVo{
*/
private
List
<
ComboxGoodsRequestVo
>
productGroupList
;
/**
* 加料
*/
private
List
<
MaterialRequestVo
>
productMaterialList
;
private
String
appType
;
private
String
tableNumber
;
/**
* 数量
* 数量
*/
private
Integer
qty
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/CartGoods.java
View file @
3cc204c0
...
...
@@ -14,6 +14,7 @@
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
...
...
@@ -59,29 +60,33 @@ public class CartGoods {
*/
private
String
specProductId
;
/**
* 购物车一行商品的原单
机
* 购物车一行商品的原单
价
*/
private
Long
originalPrice
;
/**
* 购物车一行商品的
现单价
* 购物车一行商品的
原单价总金额
*/
private
Long
finalPrice
;
private
Long
originalAmount
;
//购物车一行小料商品的原总价
private
Long
originalMaterialAmount
;
/**
* 购物车一行商品的包装费
*/
private
Long
packPrice
;
/**
* 购物车一行商品的原单价
*/
private
Long
originalAmount
;
/**
* 购物车一行商品的现总价
*/
private
Long
amount
;
/**
* 购物车一行商品的现单价
*/
private
Long
finalPrice
;
/**
* 小料总金额
*/
private
Long
materialAmount
;
/**
* 购物车一行商品的数量
*/
private
Integer
qty
;
...
...
@@ -167,6 +172,10 @@ public class CartGoods {
*/
private
List
<
ComboxGoods
>
productGroupList
;
/**
* 商品原始加料数据
*/
private
List
<
MaterialGoods
>
productMaterialList
;
@Data
public
final
static
class
CartGoodsExtra
{
...
...
@@ -305,7 +314,9 @@ public class CartGoods {
originalString
.
append
(
goods
.
toString
());
}
}
if
(
CollectionUtils
.
isNotEmpty
(
productMaterialList
))
{
productMaterialList
.
stream
().
sorted
(
Comparator
.
comparing
(
MaterialGoods:
:
getSpuId
)).
forEach
(
e
->
originalString
.
append
(
e
.
getSpuId
()));
}
//当前字符串
CartGoods
cartGoods
=
(
CartGoods
)
o
;
...
...
@@ -324,6 +335,9 @@ public class CartGoods {
currentString
.
append
(
goods
.
toString
());
}
}
if
(
CollectionUtils
.
isNotEmpty
(
cartGoods
.
getProductMaterialList
()))
{
cartGoods
.
getProductMaterialList
().
stream
().
sorted
(
Comparator
.
comparing
(
MaterialGoods:
:
getSpuId
)).
forEach
(
e
->
currentString
.
append
(
e
.
getSpuId
()));
}
return
StringUtils
.
equals
(
originalString
.
toString
(),
currentString
.
toString
());
}
...
...
@@ -364,4 +378,34 @@ public class CartGoods {
}
return
hashWeight
;
}
@Data
@NoArgsConstructor
public
static
class
MaterialGoods
{
/**
* 加料Id
*/
private
String
spuId
;
/**
* 加料名称
*/
private
String
spuName
;
/**
* 购物车一行商品的原单价
*/
private
Long
originalPrice
;
/**
* 购物车一行商品的原价*数量
*/
private
Long
originalAmount
;
/**
* 购物车一行商品的现售单价
*/
private
Long
finalPrice
;
/**
* 购物车一行商品的现价*数量
*/
private
Long
amount
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/MaterialRequestVo.java
0 → 100644
View file @
3cc204c0
package
cn
.
freemud
.
entities
.
vo
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.entities.vo MaterialRequestVo
* @Description: TDO 描述....
* @author: family
* @date: 2020/7/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public
class
MaterialRequestVo
{
/**
* 加料商品ID
*/
private
String
spuId
;
}
shopping-cart-application-service/src/main/java/cn/freemud/enums/GoodsTypeEnum.java
View file @
3cc204c0
...
...
@@ -17,10 +17,11 @@ public enum GoodsTypeEnum {
COMMON_GOODS
(
1
,
"正常商品"
),
COUPON_GOODS
(
2
,
"商品券"
),
SET_MEAL_GOODS
(
3
,
"套餐商品"
),
SET_MEAL_GOODS
(
3
,
"套餐商品"
),
SKU_GOODS
(
4
,
"sku商品"
),
SPU_GOODS
(
5
,
"spu商品"
);
SPU_GOODS
(
5
,
"spu商品"
),
MATERIAL
(
88
,
"有加料的商品"
),
EXCEPTION_GOODS
(
99
,
"异常商品:商品菜单变化导致和购物车不商品匹配"
);
private
Integer
goodsType
;
private
String
desc
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
3cc204c0
...
...
@@ -83,7 +83,6 @@ public enum ResponseResult {
SHOPPING_CART_GIFTS_PRODUCT_NOT_EXIST
(
"44018"
,
"买赠商品不存在"
),
SHOPPING_CART_SHOP_ID_NOT_EMPTY
(
"44019"
,
"门店编号不能为空"
),
SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP
(
"44020"
,
"券不适用于该门店"
),
/**
* 订单状态码
*/
...
...
shopping-cart-application-service/src/main/java/cn/freemud/enums/ShoppingCartPromotionEnum.java
View file @
3cc204c0
...
...
@@ -23,8 +23,9 @@ public enum ShoppingCartPromotionEnum {
SET_MEAL
(
7
,
"setMealService"
),
XY_DISCOUNT
(
8
,
"xyDiscountService"
),
TwoN_DISCOUNT
(
9
,
"twoNDiscountService"
),
BUY_GIFTS
(
10
,
"buyAndGiftsPromotionService"
),
MEMBER_DISCOUNT
(
11
,
"memberDiscountService"
);
BUY_GIFTS
(
10
,
"buyAndGiftsPromotionService"
),
MEMBER_DISCOUNT
(
11
,
"memberDiscountService"
),
Material
(
12
,
"MaterialPromotionService"
);
private
Integer
type
;
private
String
msgType
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
View file @
3cc204c0
...
...
@@ -248,7 +248,6 @@ public interface ShoppingCartNewService {
* @param userId
* @param shoppingCartGoodsResponseVo
* @param allCartGoodsList
* @param productBeanListSpuClass
*/
default
void
addNotProductGoods
(
AddShoppingCartGoodsRequestVo
addShoppingCartGoodsRequestVo
,
CartGoods
cartGoods
,
String
goodsId
,
String
userId
,
ShoppingCartGoodsBaseResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
allCartGoodsList
)
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuySendPromotionService.java
View file @
3cc204c0
...
...
@@ -59,10 +59,6 @@ public class BuySendPromotionService implements IPromotionService {
if
(
CollectionUtils
.
isEmpty
(
sendActivityList
))
{
return
;
}
//ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity = getSendActivity(sendActivityList, ActivityTypeEnum.TYPE_61);
//if (sendActivity == null) {
// return;
//}
//Todo 获取多个赠品list
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivityLists
=
getSendActivityList
(
ActivityTypeEnum
.
TYPE_61
,
sendActivityList
);
...
...
@@ -70,14 +66,6 @@ public class BuySendPromotionService implements IPromotionService {
if
(
sendActivityLists
.
size
()
==
0
)
{
return
;
}
//List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList = sendActivity.getSendGoods();
//if (CollectionUtils.isEmpty(sendGoodsList)) {
// return;
//}
//Integer maxNum = sendActivity.getMaxNum();
//List<String> activitySpuIds = sendGoodsList.stream().map(each -> each.getCategory()).collect(Collectors.toList());
//Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap = getSendGoodsMap(sendGoodsList);
//Todo
List
<
String
>
activitySpuIds
=
new
ArrayList
<>();
Map
<
String
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsMap
=
new
HashMap
<>();
...
...
@@ -130,11 +118,6 @@ public class BuySendPromotionService implements IPromotionService {
}
*/
for
(
CartGoods
cartGoods
:
newCartGoodsList
)
{
//Integer max = maxNums.get(cartGoods.getGoodsId());
////if (max <= 0) continue;
//if (max < cartGoods.getQty()) {
// cartGoods.setQty(max);
//}
givePackAmount
=
givePackAmount
+
cartGoods
.
getPackPrice
()
*
cartGoods
.
getQty
();
giveTotalAmount
=
giveTotalAmount
+
cartGoods
.
getOriginalPrice
()
*
cartGoods
.
getQty
();
cartGoods
.
setOriginalAmount
(
cartGoods
.
getOriginalPrice
()
*
cartGoods
.
getQty
());
...
...
@@ -265,11 +248,15 @@ public class BuySendPromotionService implements IPromotionService {
}
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
=
sendGoodsMap
.
get
(
cartGood
.
getGoodsId
());
CartGoods
cartGoods
=
shoppingCartConvertAdapter
.
convent2CartGoods
(
cartGood
,
sendGoods
.
getNowPrice
());
cartGoods
.
setClassificationId
(
cartGood
.
getClassificationId
());
cartGoods
.
setClassificationName
(
cartGood
.
getClassificationName
());
cartGoods
.
setQty
(
sendGoods
.
getSendNumber
()
>
0
?
sendGoods
.
getSendNumber
()
:
SEND_NUMBER
);
newCartGoodsList
.
add
(
cartGoods
);
String
s
=
currentSubName
(
cartGood
);
CartGoods
newCartGoods
=
shoppingCartConvertAdapter
.
convent2CartGoods
(
cartGood
,
sendGoods
.
getNowPrice
());
newCartGoods
.
setClassificationId
(
cartGood
.
getClassificationId
());
newCartGoods
.
setClassificationName
(
cartGood
.
getClassificationName
());
newCartGoods
.
setQty
(
sendGoods
.
getSendNumber
()
>
0
?
sendGoods
.
getSendNumber
()
:
SEND_NUMBER
);
//赠品不允许有加料
newCartGoods
.
setProductMaterialList
(
new
ArrayList
());
newCartGoods
.
setSubName
(
s
);
newCartGoodsList
.
add
(
newCartGoods
);
}
...
...
@@ -287,7 +274,7 @@ public class BuySendPromotionService implements IPromotionService {
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_GIFTS_PRODUCT_NOT_EXIST
);
}
for
(
CartGoods
cartGoods
:
newCartGoodsList
)
{
for
(
CartGoods
cartGoods
:
newCartGoodsList
)
{
Optional
<
ProductBeanDTO
>
productBeanDTO
=
productBeanList
.
stream
().
filter
(
productBean
->
ObjectUtils
.
equals
(
productBean
.
getPid
(),
cartGoods
.
getGoodsId
())).
findFirst
();
if
(!
productBeanDTO
.
isPresent
())
{
continue
;
...
...
@@ -296,4 +283,21 @@ public class BuySendPromotionService implements IPromotionService {
cartGoods
.
setWeight
(
productBeanDTO
.
get
().
getWeight
());
}
}
/**
* 提取当前属性名
*
* @param cartGoods
* @return
*/
private
String
currentSubName
(
CartGoods
cartGoods
)
{
String
subName
=
cartGoods
.
getSubName
();
if
(
CollectionUtils
.
isEmpty
(
cartGoods
.
getProductMaterialList
()))
{
return
subName
;
}
StringBuilder
currentString
=
new
StringBuilder
();
cartGoods
.
getProductMaterialList
().
stream
().
forEach
(
e
->
currentString
.
append
(
"/"
+
e
.
getSpuName
()));
String
replace
=
StringUtils
.
replace
(
subName
,
currentString
.
toString
(),
""
);
return
replace
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponServiceImpl.java
View file @
3cc204c0
...
...
@@ -540,15 +540,23 @@ public class CouponServiceImpl implements CouponService {
// 套餐价格为: 套餐价+可选商品总价格
if
(
ObjectUtils
.
equals
(
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
(),
cartGood
.
getGoodsType
()))
{
Long
finalPrice
=
cartGood
.
getFinalPrice
();
if
(
CollectionUtils
.
isNotEmpty
(
cartGood
.
getProductGroupList
())){
finalPrice
+=
cartGood
.
getProductGroupList
().
stream
().
mapToLong
(
group
->
group
.
getFinalPrice
()*
group
.
getQty
()).
sum
();
if
(
CollectionUtils
.
isNotEmpty
(
cartGood
.
getProductGroupList
()))
{
finalPrice
+=
cartGood
.
getProductGroupList
().
stream
().
mapToLong
(
group
->
group
.
getFinalPrice
()
*
group
.
getQty
()).
sum
();
}
product
.
setAmount
(
finalPrice
.
intValue
());
}
totalAmount
=
totalAmount
+
product
.
getAmount
()
*
cartGood
.
getQty
();
// todo :小料价格累加到主商品上
if
(
CollectionUtils
.
isNotEmpty
(
cartGood
.
getProductMaterialList
()))
{
for
(
CartGoods
.
MaterialGoods
materialGoods
:
cartGood
.
getProductMaterialList
())
{
product
.
setAmount
(
product
.
getAmount
()
+
Integer
.
valueOf
(
materialGoods
.
getOriginalPrice
()
+
""
));
totalAmount
=
totalAmount
+
materialGoods
.
getOriginalPrice
()
*
cartGood
.
getQty
();
}
}
// 数量
product
.
setQuantity
(
cartGood
.
getQty
());
productList
.
add
(
product
);
totalAmount
=
totalAmount
+
product
.
getAmount
()
*
cartGood
.
getQty
();
}
return
totalAmount
;
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
View file @
3cc204c0
...
...
@@ -86,7 +86,7 @@ public class DefaultPromotionService implements IPromotionService {
calculationDiscountResult
==
null
?
new
ArrayList
<>()
:
calculationDiscountResult
.
getApportionGoods
();
Map
<
String
,
String
>
duplicateGoodsMap
=
new
HashMap
<>();
cartGoodsList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CartGoods:
:
get
GoodsI
d
,
Collectors
.
counting
())).
forEach
((
goodsId
,
count
)
->
{
cartGoodsList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CartGoods:
:
get
CartGoodsUi
d
,
Collectors
.
counting
())).
forEach
((
goodsId
,
count
)
->
{
duplicateGoodsMap
.
put
(
goodsId
,
String
.
format
(
"%s,0"
,
count
));
});
for
(
int
i
=
0
,
len
=
cartGoodsList
.
size
();
i
<
len
;
i
++)
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ItemServiceImpl.java
View file @
3cc204c0
...
...
@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.lang.reflect.Array
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/MaterialPromotionService.java
0 → 100644
View file @
3cc204c0
This diff is collapsed.
Click to expand it.
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
View file @
3cc204c0
...
...
@@ -160,7 +160,7 @@ public class SetMealServiceImpl implements IPromotionService {
return
number
-
cartGoods
.
getQty
()
<
0
?
"该商品限"
+
number
+
"份优惠 超出按照原价计算哦"
:
""
;
}
else
{
cartGoods
.
setAmount
((
cartGoods
.
getFinalPrice
()
+
productGroupAmount
)
*
cartGoods
.
getQty
());
return
"该商品限"
+
goodsMap
.
get
(
cartGoods
.
getGoodsId
()).
getActualGoodsNumber
()
+
"份优惠 超出按照原价计算哦"
;
return
"该商品限"
+
goodsMap
.
get
(
cartGoods
.
getGoodsId
()).
get
Discounts
().
get
(
0
).
get
ActualGoodsNumber
()
+
"份优惠 超出按照原价计算哦"
;
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
3cc204c0
...
...
@@ -35,6 +35,7 @@ import cn.freemud.service.thirdparty.*;
import
cn.freemud.utils.PromotionFactory
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig
;
...
...
@@ -253,11 +254,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
allCartGoodsList.get(allCartGoodsList.indexOf(cartGoods)).getQty() + cartGoods.getQty() : cartGoods.getQty();
*/
Integer
checkQty
=
this
.
checkSkuQty
(
allCartGoodsList
,
cartGoods
);
//查询多个商品库存信息
queryManyGoodsStocks
(
addShoppingCartGoodsRequestVo
,
productIds
,
productBeanListSpuClass
,
skuId
,
checkQty
);
ShoppingCartConvertAdapter
.
setClassification
(
cartGoods
,
productBeanListSpuClass
);
String
productName
=
null
;
// 当添加的商品不是商品券时
if
(!
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
...
...
@@ -268,7 +266,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
this
.
addProductGoods
(
addShoppingCartGoodsRequestVo
,
cartGoods
,
spuId2
,
userId
,
shoppingCartGoodsResponseVo
,
spuId
,
allCartGoodsList
,
productBeanListSpuClass
);
}
Long
deliveryAmount
=
calculateDeliveryAmount
(
receiveId
,
partnerId
,
storeId
,
userLoginInfoDto
.
getWxAppid
(),
shoppingCartGoodsResponseVo
);
// 获取优惠信息
...
...
@@ -361,6 +358,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo
.
setToastMsg
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
getToastMsg
());
}
cartGoodsList
=
JSONArray
.
parseArray
(
JSONObject
.
toJSONString
(
checkCartRequest
.
getCartGoodsList
()),
CartGoods
.
class
);
// 重新存储最新购物车
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
updateShoppingCartGoodsQtyRequestVo
.
getSessionId
(),
""
,
shoppingCartBaseService
);
...
...
@@ -403,13 +401,14 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//查询商品信息
List
<
String
>
pids
=
new
ArrayList
<>();
pids
.
add
(
cartGoods
.
getGoodsId
());
Map
<
String
,
GetProductsVo
>
products
=
itemService
.
getProducts
(
pids
,
partnerId
,
storeId
,
BusinessTypeEnum
.
getByType
(
updateShoppingCartGoodsQtyRequestVo
.
getMenuType
()).
getCode
());
Map
<
String
,
GetProductsVo
>
products
=
itemService
.
getProducts
(
pids
,
partnerId
,
storeId
,
BusinessTypeEnum
.
getByType
(
updateShoppingCartGoodsQtyRequestVo
.
getMenuType
()).
getCode
());
GetProductsVo
getProductsVo
=
products
.
get
(
cartGoods
.
getGoodsId
());
// 商品没有库存限制
if
(
(
getProductsVo
==
null
)
||
(
getProductsVo
.
getStockLimit
()
!=
1
)
)
{
if
(
getProductsVo
==
null
||
getProductsVo
.
getStockLimit
()
!=
1
)
{
return
;
}
ShoppingCartConvertAdapter
.
setClassification
(
cartGoods
,
getProductsVo
);
GetProductStockRequestDto
requestDto
=
new
GetProductStockRequestDto
();
requestDto
.
setChannel
(
BusinessTypeEnum
.
getByType
(
updateShoppingCartGoodsQtyRequestVo
.
getMenuType
()).
getCode
());
...
...
@@ -619,7 +618,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo
.
setToastMsg
(
cartGoodsResponseVo
.
getToastMsg
());
}
cartGoodsList
=
JSONArray
.
parseArray
(
JSONObject
.
toJSONString
(
checkCartRequest
.
getCartGoodsList
()),
CartGoods
.
class
);
// 多规格的sku商品计算包装费
//this.checkSkuOnVersion(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo);
// 重新存储最新购物车
...
...
@@ -744,7 +742,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String
cartGoodsUid
=
cartGoods
.
getCartGoodsUid
();
// 商品不是商品券
if
(!
cartGoodsUid
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
.
getGoodsId
(),
cartGoods
.
getQty
(),
cartGoods
.
getFinalPrice
(),
cartGoods
.
getMemberDiscount
(),
cartGoodsUid
);
//this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(), cartGoodsUid);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
}
// 商品是商品券
else
{
...
...
@@ -788,6 +787,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
activityCalculationDiscountRequestDto
.
setIsMember
(
isMember
);
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
;
try
{
System
.
out
.
println
(
"start discount"
);
System
.
out
.
println
(
JSON
.
toJSONString
(
activityCalculationDiscountRequestDto
));
activityCalculationDiscountResponseDto
=
activityClient
.
calculationDiscount
(
activityCalculationDiscountRequestDto
);
}
catch
(
Exception
ex
)
{
ErrorLog
.
printErrorLog
(
"calculation_discount_error"
,
"/calculation/discount"
,
activityCalculationDiscountRequestDto
,
ex
);
...
...
@@ -835,6 +836,39 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
/**
* 促销增加
*
* @param calculationDiscountGoodsList
* @param cartGoods
*/
private
void
addCalculationDiscountGoods
(
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
,
CartGoods
cartGoods
)
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
calculationDiscountGoods
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
();
calculationDiscountGoods
.
setGoodsId
(
cartGoods
.
getGoodsId
());
calculationDiscountGoods
.
setCartGoodsUid
(
cartGoods
.
getCartGoodsUid
());
calculationDiscountGoods
.
setGoodsQuantity
(
cartGoods
.
getQty
());
calculationDiscountGoods
.
setOriginalPrice
(
cartGoods
.
getFinalPrice
());
calculationDiscountGoods
.
setMemberDiscount
(
cartGoods
.
getMemberDiscount
());
calculationDiscountGoods
.
setSpuId
(
cartGoods
.
getSpuId
());
//加料
if
(
CollectionUtils
.
isNotEmpty
(
cartGoods
.
getProductMaterialList
()))
{
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
();
ArrayList
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
>
materials
=
new
ArrayList
<>();
for
(
CartGoods
.
MaterialGoods
materialGoods
:
cartGoods
.
getProductMaterialList
())
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
material
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
.
Material
();
material
.
setType
(
1
);
material
.
setGoodsId
(
materialGoods
.
getSpuId
());
material
.
setGoodsQuantity
(
1
);
material
.
setOriginalPrice
(
materialGoods
.
getFinalPrice
());
materials
.
add
(
material
);
}
calculationDiscountGoods
.
setSmallMaterial
(
materials
);
}
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
calculationDiscountGoods
);
}
/**
* 构建 ActivityCalculationDiscountRequestDto
*
* @param partnerId
...
...
@@ -1059,7 +1093,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo
.
setDiscountDeliveryAmount
(
deliveryAmount
);
shoppingCartGoodsResponseVo
.
setIsDiscountDelivery
(
false
);
}
else
{
}
else
{
String
desc
=
DELIVERY_DISCOUNT_DESC3
;
shoppingCartGoodsResponseVo
.
setDeliveryDiscountDesc
(
String
.
format
(
desc
,
df
.
format
(
deliveryAmount
.
doubleValue
()
/
100
)));
shoppingCartGoodsResponseVo
.
setDeliveryAmount
(
deliveryAmount
);
...
...
@@ -1069,6 +1103,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
}
/**
* 加料
*/
MaterialPromotionService
materialPromotionService
=
(
MaterialPromotionService
)
PromotionFactory
.
getPromotionService
(
ShoppingCartPromotionEnum
.
Material
);
materialPromotionService
.
updateShoppingCartGoodsDiscount
(
couponPromotionVO
,
activityQueryDto
,
calculationDiscountResult
,
cartGoodsList
,
shoppingCartGoodsResponseVo
,
userLoginInfoDto
,
shoppingCartInfoRequestVo
);
}
/**
...
...
@@ -1115,6 +1155,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//xy折
BuyAndGiftsPromotionService
buyAndGiftsPromotionService
=
(
BuyAndGiftsPromotionService
)
PromotionFactory
.
getPromotionService
(
ShoppingCartPromotionEnum
.
BUY_GIFTS
);
buyAndGiftsPromotionService
.
updateShoppingCartGoodsApportion
(
shoppingCartGoodsResponseVo
,
calculationDiscountResult
,
shoppingCartGoodsDto
,
premiumExchangeActivity
,
shoppingCartInfoRequestVo
);
/**
* 设置加料商品行记录
*/
MaterialPromotionService
materialPromotionService
=
(
MaterialPromotionService
)
PromotionFactory
.
getPromotionService
(
ShoppingCartPromotionEnum
.
Material
);
materialPromotionService
.
updateShoppingCartGoodsApportion
(
shoppingCartGoodsResponseVo
,
calculationDiscountResult
,
shoppingCartGoodsDto
,
premiumExchangeActivity
,
shoppingCartInfoRequestVo
);
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/XyDiscountServiceImpl.java
View file @
3cc204c0
...
...
@@ -79,7 +79,10 @@ public class XyDiscountServiceImpl implements IPromotionService {
for
(
ApportionGoodsDetail
detail
:
apportionGoodsDetail
)
{
if
(
detail
.
getCartGoodsUid
().
equals
(
product
.
getCartGoodsUid
()))
{
product
.
setTotalDiscountAmount
(
product
.
getTotalDiscountAmount
()
+
detail
.
getActivityApportionAmount
().
intValue
());
List
<
ActivityDiscountsDto
>
activityDiscountsDtoList
=
new
ArrayList
<>();
List
<
ActivityDiscountsDto
>
activityDiscountsDtoList
=
product
.
getActivityDiscountsDtos
();
if
(
CollectionUtils
.
isEmpty
(
activityDiscountsDtoList
))
{
activityDiscountsDtoList
=
new
ArrayList
<>();
}
ActivityDiscountsDto
activityDiscountsDto
=
new
ActivityDiscountsDto
();
activityDiscountsDto
.
setActivityCode
(
detail
.
getActivityCode
());
activityDiscountsDto
.
setActivityName
(
detail
.
getActivityName
());
...
...
@@ -87,6 +90,7 @@ public class XyDiscountServiceImpl implements IPromotionService {
activityDiscountsDto
.
setDiscountAmount
(
detail
.
getActivityApportionAmount
().
intValue
());
activityDiscountsDtoList
.
add
(
activityDiscountsDto
);
product
.
setActivityDiscountsDtos
(
activityDiscountsDtoList
);
}
}
}
...
...
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