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
d99cc04a
Commit
d99cc04a
authored
Aug 09, 2020
by
ping.wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
套餐优惠计算
parent
834b8079
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
264 additions
and
25 deletions
+264
-25
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CartGoods.java
+5
-0
shopping-cart-application-service/pom.xml
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+2
-0
shopping-cart-application-service/src/main/java/cn/freemud/controller/MCoffeeShoppingCartController.java
+2
-3
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
+5
-0
shopping-cart-application-service/src/main/java/cn/freemud/enums/GoodsTypeEnum.java
+2
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
+121
-17
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
+12
-3
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/entity/MCoffeeAddGoodsRequestVo.java
+114
-0
No files found.
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CartGoods.java
View file @
d99cc04a
...
@@ -46,6 +46,11 @@ public class CartGoods {
...
@@ -46,6 +46,11 @@ public class CartGoods {
*/
*/
private
String
unit
;
private
String
unit
;
/**
* 商品券code
*/
private
String
couponCode
;
private
String
spuId
;
private
String
spuId
;
private
String
skuId
;
private
String
skuId
;
/**
/**
...
...
shopping-cart-application-service/pom.xml
View file @
d99cc04a
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
<dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
productcenter-sdk
</artifactId>
<artifactId>
productcenter-sdk
</artifactId>
<version>
3.2.RELEASE
</version>
<version>
3.2.RELEASE
</version>
<!-- //3.6.4-SNAPSHOTE -->
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<groupId>
com.freemud.application.service.sdk
</groupId>
...
...
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
d99cc04a
...
@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter {
...
@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter {
public
ShoppingCartGoodsDto
.
CartGoodsDetailDto
convertCartGoods2DetailGoods
(
CartGoods
cartGoods
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoodsList
,
Map
<
String
,
String
>
duplicateGoodsMap
)
{
public
ShoppingCartGoodsDto
.
CartGoodsDetailDto
convertCartGoods2DetailGoods
(
CartGoods
cartGoods
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoodsList
,
Map
<
String
,
String
>
duplicateGoodsMap
)
{
// 设置基础信息
// 设置基础信息
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
=
new
ShoppingCartGoodsDto
.
CartGoodsDetailDto
();
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
=
new
ShoppingCartGoodsDto
.
CartGoodsDetailDto
();
cartGoodsDetailDto
.
setTas
(
0.02d
);
cartGoodsDetailDto
.
setSpuId
(
cartGoods
.
getSpuId
());
cartGoodsDetailDto
.
setSpuId
(
cartGoods
.
getSpuId
());
cartGoodsDetailDto
.
setSpuName
(
cartGoods
.
getSpuName
());
cartGoodsDetailDto
.
setSpuName
(
cartGoods
.
getSpuName
());
cartGoodsDetailDto
.
setSkuId
(
StringUtils
.
isEmpty
(
cartGoods
.
getSkuId
())
?
cartGoods
.
getSpuId
()
:
cartGoods
.
getSkuId
());
cartGoodsDetailDto
.
setSkuId
(
StringUtils
.
isEmpty
(
cartGoods
.
getSkuId
())
?
cartGoods
.
getSpuId
()
:
cartGoods
.
getSkuId
());
...
@@ -345,6 +346,7 @@ public class ShoppingCartConvertAdapter {
...
@@ -345,6 +346,7 @@ public class ShoppingCartConvertAdapter {
cartGoods
.
setSpuId
(
spuId
);
cartGoods
.
setSpuId
(
spuId
);
cartGoods
.
setSkuId
(
skuId
);
cartGoods
.
setSkuId
(
skuId
);
cartGoods
.
setQty
(
qty
);
cartGoods
.
setQty
(
qty
);
cartGoods
.
setCouponCode
(
addShoppingCartGoodsRequestVo
.
getCouponCode
());
Integer
goodsType
=
StringUtils
.
isEmpty
(
skuId
)||
ObjectUtils
.
equals
(
spuId
,
skuId
)
?
GoodsTypeEnum
.
SPU_GOODS
.
getGoodsType
()
:
GoodsTypeEnum
.
SKU_GOODS
.
getGoodsType
();
Integer
goodsType
=
StringUtils
.
isEmpty
(
skuId
)||
ObjectUtils
.
equals
(
spuId
,
skuId
)
?
GoodsTypeEnum
.
SPU_GOODS
.
getGoodsType
()
:
GoodsTypeEnum
.
SKU_GOODS
.
getGoodsType
();
if
(
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
goodsType
=
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
();
goodsType
=
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
();
...
...
shopping-cart-application-service/src/main/java/cn/freemud/controller/MCoffeeShoppingCartController.java
View file @
d99cc04a
...
@@ -2,9 +2,8 @@ package cn.freemud.controller;
...
@@ -2,9 +2,8 @@ package cn.freemud.controller;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl
;
import
cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl
;
import
cn.freemud.
utils.ResponseUtil
;
import
cn.freemud.
service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -43,7 +42,7 @@ public class MCoffeeShoppingCartController {
...
@@ -43,7 +42,7 @@ public class MCoffeeShoppingCartController {
*/
*/
@ApiAnnotation
(
logMessage
=
"addGoods"
)
@ApiAnnotation
(
logMessage
=
"addGoods"
)
@PostMapping
(
value
=
"/addGoods"
)
@PostMapping
(
value
=
"/addGoods"
)
public
BaseResponse
addGoods
(
@Validated
@LogParams
@RequestBody
AddShoppingCart
GoodsRequestVo
request
)
{
public
BaseResponse
addGoods
(
@Validated
@LogParams
@RequestBody
MCoffeeAdd
GoodsRequestVo
request
)
{
return
shoppingCartMCoffeeService
.
addGoods
(
request
);
return
shoppingCartMCoffeeService
.
addGoods
(
request
);
}
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
View file @
d99cc04a
...
@@ -222,6 +222,11 @@ public class ShoppingCartGoodsDto {
...
@@ -222,6 +222,11 @@ public class ShoppingCartGoodsDto {
* 统计分类名称
* 统计分类名称
*/
*/
private
String
classificationName
;
private
String
classificationName
;
/**
* 税率
*/
private
Double
tas
;
/**
/**
* 配料或属性
* 配料或属性
*/
*/
...
...
shopping-cart-application-service/src/main/java/cn/freemud/enums/GoodsTypeEnum.java
View file @
d99cc04a
...
@@ -19,7 +19,8 @@ public enum GoodsTypeEnum {
...
@@ -19,7 +19,8 @@ public enum GoodsTypeEnum {
COUPON_GOODS
(
2
,
"商品券"
),
COUPON_GOODS
(
2
,
"商品券"
),
SET_MEAL_GOODS
(
3
,
"套餐商品"
),
SET_MEAL_GOODS
(
3
,
"套餐商品"
),
SKU_GOODS
(
4
,
"sku商品"
),
SKU_GOODS
(
4
,
"sku商品"
),
SPU_GOODS
(
5
,
"spu商品"
);
SPU_GOODS
(
5
,
"spu商品"
),
REDUCE_PRICE_GOODS
(
6
,
"加价购商品"
);
private
Integer
goodsType
;
private
Integer
goodsType
;
private
String
desc
;
private
String
desc
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
View file @
d99cc04a
...
@@ -10,16 +10,14 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
...
@@ -10,16 +10,14 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.dto.user.GetSessionUserInfoDto
;
import
cn.freemud.entities.dto.user.GetSessionUserInfoDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.OperationTypeEnum
;
import
cn.freemud.enums.OrderType
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.ActivityService
;
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.impl.mcoffee.calculation.CouponDiscountCalculation
;
import
cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo
;
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
;
...
@@ -84,7 +82,7 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -84,7 +82,7 @@ public class ShoppingCartMCoffeeServiceImpl {
* @param addShoppingCartGoodsRequestVo
* @param addShoppingCartGoodsRequestVo
* @return
* @return
*/
*/
public
BaseResponse
addGoods
(
AddShoppingCart
GoodsRequestVo
addShoppingCartGoodsRequestVo
)
{
public
BaseResponse
addGoods
(
MCoffeeAdd
GoodsRequestVo
addShoppingCartGoodsRequestVo
)
{
// TODO: 2020/7/21 参数校验
// TODO: 2020/7/21 参数校验
if
(
StringUtils
.
isEmpty
(
addShoppingCartGoodsRequestVo
.
getShopId
()))
{
if
(
StringUtils
.
isEmpty
(
addShoppingCartGoodsRequestVo
.
getShopId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
return
ResponseUtil
.
error
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
...
@@ -107,22 +105,26 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -107,22 +105,26 @@ public class ShoppingCartMCoffeeServiceImpl {
String
menuType
=
addShoppingCartGoodsRequestVo
.
getMenuType
();
String
menuType
=
addShoppingCartGoodsRequestVo
.
getMenuType
();
Integer
orderType
=
addShoppingCartGoodsRequestVo
.
getOrderType
();
Integer
orderType
=
addShoppingCartGoodsRequestVo
.
getOrderType
();
String
receiveId
=
addShoppingCartGoodsRequestVo
.
getReceiveId
();
String
receiveId
=
addShoppingCartGoodsRequestVo
.
getReceiveId
();
Integer
operationType
=
addShoppingCartGoodsRequestVo
.
getOperationType
();
String
couponCode
=
addShoppingCartGoodsRequestVo
.
getCouponCode
();
String
spuId2
=
spuId
;
String
spuId2
=
spuId
;
List
<
Long
>
productIds
=
new
ArrayList
<>();
List
<
Long
>
productIds
=
new
ArrayList
<>();
productIds
.
add
(
Long
.
parseLong
(
goodsId
));
productIds
.
add
(
Long
.
parseLong
(
goodsId
));
CartGoods
addCartGoods
=
convent2CartGoods
(
addShoppingCartGoodsRequestVo
);
// TODO: 2020/7/21 获取添加商品的详细信息
// TODO: 2020/7/21 获取添加商品的详细信息
List
<
ProductBeanDTO
>
productBeanListSpuClass
=
assortmentSdkService
.
getProductsInfoSdk
(
partnerId
,
storeId
List
<
ProductBeanDTO
>
productBeanListSpuClass
=
assortmentSdkService
.
getProductsInfoSdk
(
partnerId
,
storeId
,
Collections
.
singletonList
(
spuId2
),
menuType
,
this
.
shoppingCartBaseService
);
,
Collections
.
singletonList
(
spuId2
),
menuType
,
this
.
shoppingCartBaseService
);
CartGoods
addCartGoods
=
ShoppingCartConvertAdapter
.
convent2CartGoods
(
addShoppingCartGoodsRequestVo
);
// TODO: 2020/7/21 查询购物车缓存
// TODO: 2020/7/21 查询购物车缓存
// 注意,围餐和点餐redis数据结构不一样
// 注意,围餐和点餐redis数据结构不一样
List
<
CartGoods
>
oldCartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
null
,
shoppingCartBaseService
);
List
<
CartGoods
>
oldCartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
null
,
shoppingCartBaseService
);
if
(
CollectionUtils
.
isEmpty
(
oldCartGoodsList
))
{
if
(
CollectionUtils
.
isEmpty
(
oldCartGoodsList
))
{
oldCartGoodsList
=
new
ArrayList
<>();
oldCartGoodsList
=
new
ArrayList
<>();
}
}
//商品券已添加
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
=
checkGoodsCoupon
(
oldCartGoodsList
,
operationType
,
couponCode
);
setClassificationAndPrice
(
addCartGoods
,
productBeanListSpuClass
);
setClassificationAndPrice
(
addCartGoods
,
productBeanListSpuClass
);
//查询多个商品库存信息
//查询多个商品库存信息
Integer
checkQty
=
this
.
checkSkuQty
(
oldCartGoodsList
,
addCartGoods
);
Integer
checkQty
=
this
.
checkSkuQty
(
oldCartGoodsList
,
addCartGoods
);
...
@@ -134,16 +136,13 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -134,16 +136,13 @@ public class ShoppingCartMCoffeeServiceImpl {
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS
);
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS
);
}
}
List
<
CartGoods
>
newCartGoods
=
new
ArrayList
<>();
newCartGoods
.
addAll
(
oldCartGoodsList
);
newCartGoods
=
checkNewCartGoods
(
newCartGoods
,
addCartGoods
);
// TODO: 2020/7/21 购物车数据更新(保存商品原价)
// TODO: 2020/7/21 购物车数据更新(保存商品原价)
newCartGoods
=
updateCartGoodsLegal
(
partnerId
,
storeId
,
orderType
,
tableNumber
,
menuType
,
userId
,
addCartGoods
,
shoppingCartGoodsResponseVo
,
newCartGoods
);
List
<
CartGoods
>
newCartGoods
=
updateCartGoodsLegal
(
partnerId
,
storeId
,
orderType
,
tableNumber
,
menuType
,
userId
,
addCartGoods
,
shoppingCartGoodsResponseVo
,
oldCartGoodsList
);
// TODO: 2020/7/21 促销活动等价格计算
// TODO: 2020/7/21 促销活动等价格计算
calculationService
.
updateShoppingCartGoodsDiscount
(
partnerId
,
storeId
,
userId
,
appId
,
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
(),
menuType
,
receiveId
,
null
,
calculationService
.
updateShoppingCartGoodsDiscount
(
partnerId
,
storeId
,
userId
,
appId
,
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
(),
menuType
,
receiveId
,
null
,
newCartGoods
,
new
ArrayList
<>()
,
new
ArrayList
<>(),
shoppingCartGoodsResponseVo
);
newCartGoods
,
coupons
,
new
ArrayList
<>(),
shoppingCartGoodsResponseVo
);
// TODO: 2020/7/21 返回购物车数据
// TODO: 2020/7/21 返回购物车数据
setAddAndUpdateResponse
(
shoppingCartGoodsResponseVo
,
newCartGoods
,
null
,
ShoppingCartConstant
.
ADD_AND_UPDATE
,
null
);
setAddAndUpdateResponse
(
shoppingCartGoodsResponseVo
,
newCartGoods
,
null
,
ShoppingCartConstant
.
ADD_AND_UPDATE
,
null
);
...
@@ -151,6 +150,38 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -151,6 +150,38 @@ public class ShoppingCartMCoffeeServiceImpl {
return
ResponseUtil
.
success
(
shoppingCartGoodsResponseVo
);
return
ResponseUtil
.
success
(
shoppingCartGoodsResponseVo
);
}
}
private
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
checkGoodsCoupon
(
List
<
CartGoods
>
oldCartGoodsList
,
Integer
operationType
,
String
couponCode
){
if
(
operationType
!=
null
&&
operationType
==
1
&&
StringUtils
.
isBlank
(
couponCode
)){
throw
new
ServiceException
(
ResponseResult
.
PARAMETER_MISSING
,
"商品券券号为空"
);
}
if
(
CollectionUtils
.
isEmpty
(
oldCartGoodsList
)
&&
StringUtils
.
isNotBlank
(
couponCode
)){
throw
new
ServiceException
(
ResponseResult
.
PARAMETER_MISSING
,
"请先添加商品再使用商品券"
);
}
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
oldCartGoodsList
)){
for
(
CartGoods
cartGoods
:
oldCartGoodsList
){
//购物车已存在商品券
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
())){
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
calculationDiscountCoupon
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
();
calculationDiscountCoupon
.
setCode
(
couponCode
);
coupons
.
add
(
calculationDiscountCoupon
);
}
if
(
couponCode
!=
null
&&
couponCode
.
equals
(
cartGoods
.
getCouponCode
())){
throw
new
ServiceException
(
ResponseResult
.
PARAMETER_MISSING
,
"商品券已添加"
);
}
}
}
//新增商品券
if
(
StringUtils
.
isNotBlank
(
couponCode
)){
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
calculationDiscountCoupon
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
();
calculationDiscountCoupon
.
setCode
(
couponCode
);
coupons
.
add
(
calculationDiscountCoupon
);
}
return
coupons
;
}
/**
/**
* 更新商品数量
* 更新商品数量
*
*
...
@@ -269,7 +300,7 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -269,7 +300,7 @@ public class ShoppingCartMCoffeeServiceImpl {
*/
*/
public
BaseResponse
availableCoupon
(
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
public
BaseResponse
availableCoupon
(
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
if
(
StringUtils
.
isEmpty
(
shoppingCartInfoRequestVo
.
getShopId
()))
{
if
(
StringUtils
.
isEmpty
(
shoppingCartInfoRequestVo
.
getShopId
()))
{
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
return
ResponseUtil
.
error
(
ResponseResult
.
SHOPPING_CART_SHOP_ID_NOT_EMPTY
);
}
}
ActivityClassifyCouponBean
availableCoupon
=
new
ActivityClassifyCouponBean
();
ActivityClassifyCouponBean
availableCoupon
=
new
ActivityClassifyCouponBean
();
// 获取用户信息
// 获取用户信息
...
@@ -287,7 +318,9 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -287,7 +318,9 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品
// 获取购物车商品
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
""
,
shoppingCartBaseService
);
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
null
,
""
,
shoppingCartBaseService
);
if
(
CollectionUtils
.
isEmpty
(
cartGoodsList
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
SHOPPING_CART_ADD_INVAILD
);
}
// 获取购物车商品-查询用户券-券码校验可用券
// 获取购物车商品-查询用户券-券码校验可用券
availableCoupon
=
couponDiscountCalculation
.
availableCoupon
(
partnerId
,
storeId
,
userId
,
couponCode
,
orderType
,
cartGoodsList
);
availableCoupon
=
couponDiscountCalculation
.
availableCoupon
(
partnerId
,
storeId
,
userId
,
couponCode
,
orderType
,
cartGoodsList
);
return
ResponseUtil
.
success
(
availableCoupon
);
return
ResponseUtil
.
success
(
availableCoupon
);
...
@@ -476,7 +509,13 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -476,7 +509,13 @@ public class ShoppingCartMCoffeeServiceImpl {
* @param shoppingCartGoodsResponseVo
* @param shoppingCartGoodsResponseVo
*/
*/
public
List
<
CartGoods
>
updateCartGoodsLegal
(
String
partnerId
,
String
storeId
,
Integer
orderType
,
String
tableNumber
,
String
menuType
,
String
userId
,
public
List
<
CartGoods
>
updateCartGoodsLegal
(
String
partnerId
,
String
storeId
,
Integer
orderType
,
String
tableNumber
,
String
menuType
,
String
userId
,
CartGoods
addCartGoods
,
ShoppingCartGoodsBaseResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
newCartGoods
)
{
CartGoods
addCartGoods
,
ShoppingCartGoodsBaseResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
oldCartGoodsList
)
{
List
<
CartGoods
>
newCartGoods
=
new
ArrayList
<>();
newCartGoods
.
addAll
(
oldCartGoodsList
);
newCartGoods
=
checkNewCartGoods
(
newCartGoods
,
addCartGoods
);
//筛选非加购商品--加价购商品不校验是否在菜单,不调用validateShopProduct
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
CheckCartRequest
checkCartRequest
=
assortmentSdkService
.
checkShoppingCartSdk
(
newCartGoods
,
partnerId
,
CheckCartRequest
checkCartRequest
=
assortmentSdkService
.
checkShoppingCartSdk
(
newCartGoods
,
partnerId
,
storeId
,
shoppingCartGoodsResponseVo
,
orderType
,
""
,
menuType
,
shoppingCartBaseService
);
storeId
,
shoppingCartGoodsResponseVo
,
orderType
,
""
,
menuType
,
shoppingCartBaseService
);
...
@@ -485,6 +524,18 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -485,6 +524,18 @@ public class ShoppingCartMCoffeeServiceImpl {
shoppingCartGoodsResponseVo
.
setChanged
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
getChanged
());
shoppingCartGoodsResponseVo
.
setChanged
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
getChanged
());
}
}
List
<
CartGoods
>
allCartGoodsList
=
JSONArray
.
parseArray
(
JSONObject
.
toJSONString
(
checkCartRequest
.
getCartGoodsList
()),
CartGoods
.
class
);
List
<
CartGoods
>
allCartGoodsList
=
JSONArray
.
parseArray
(
JSONObject
.
toJSONString
(
checkCartRequest
.
getCartGoodsList
()),
CartGoods
.
class
);
//添加商品为商品券时,设置商品券号
if
(
StringUtils
.
isNotBlank
(
addCartGoods
.
getCouponCode
())){
for
(
CartGoods
cartGoods
:
allCartGoodsList
){
if
(
cartGoods
.
getGoodsId
().
equals
(
addCartGoods
.
getGoodsId
())){
cartGoods
.
setCouponCode
(
addCartGoods
.
getCouponCode
());
cartGoods
.
setGoodsType
(
2
);
break
;
}
}
}
// 重新set购物车信息到缓存中
// 重新set购物车信息到缓存中
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
allCartGoodsList
,
null
,
tableNumber
,
this
.
shoppingCartBaseService
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
allCartGoodsList
,
null
,
tableNumber
,
this
.
shoppingCartBaseService
);
return
allCartGoodsList
;
return
allCartGoodsList
;
...
@@ -558,9 +609,9 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -558,9 +609,9 @@ public class ShoppingCartMCoffeeServiceImpl {
Integer
qty
=
addCartGoods
.
getQty
()
==
null
?
0
:
addCartGoods
.
getQty
();
Integer
qty
=
addCartGoods
.
getQty
()
==
null
?
0
:
addCartGoods
.
getQty
();
boolean
isadd
=
true
;
boolean
isadd
=
true
;
if
(
CollectionUtils
.
isNotEmpty
(
newCartGoods
))
{
if
(
CollectionUtils
.
isNotEmpty
(
newCartGoods
)
&&
StringUtils
.
isBlank
(
addCartGoods
.
getCouponCode
())
)
{
for
(
CartGoods
goods
:
newCartGoods
)
{
for
(
CartGoods
goods
:
newCartGoods
)
{
if
(
goods
.
getSkuId
().
equals
(
addCartGoods
.
getSkuId
())
&&
goods
.
getSpuId
().
equals
(
addCartGoods
.
getSpuId
()))
{
if
(
goods
.
getSkuId
().
equals
(
addCartGoods
.
getSkuId
())
&&
goods
.
getSpuId
().
equals
(
addCartGoods
.
getSpuId
())
&&
StringUtils
.
isBlank
(
goods
.
getCouponCode
())
)
{
qty
+=
goods
.
getQty
();
qty
+=
goods
.
getQty
();
goods
.
setQty
(
qty
);
goods
.
setQty
(
qty
);
isadd
=
false
;
isadd
=
false
;
...
@@ -645,4 +696,57 @@ public class ShoppingCartMCoffeeServiceImpl {
...
@@ -645,4 +696,57 @@ public class ShoppingCartMCoffeeServiceImpl {
// }
// }
}
}
public
static
CartGoods
convent2CartGoods
(
MCoffeeAddGoodsRequestVo
addShoppingCartGoodsRequestVo
)
{
String
spuId
=
addShoppingCartGoodsRequestVo
.
getSpuId
();
String
skuId
=
addShoppingCartGoodsRequestVo
.
getSkuId
();
String
goodsId
=
StringUtils
.
isEmpty
(
skuId
)
?
spuId
:
skuId
;
Integer
qty
=
addShoppingCartGoodsRequestVo
.
getQty
()
==
null
?
1
:
addShoppingCartGoodsRequestVo
.
getQty
();
CartGoods
cartGoods
=
new
CartGoods
();
cartGoods
.
setGoodsId
(
goodsId
);
cartGoods
.
setSpuId
(
spuId
);
cartGoods
.
setSkuId
(
skuId
);
cartGoods
.
setQty
(
qty
);
cartGoods
.
setCouponCode
(
addShoppingCartGoodsRequestVo
.
getCouponCode
());
Integer
goodsType
=
StringUtils
.
isEmpty
(
skuId
)||
ObjectUtils
.
equals
(
spuId
,
skuId
)
?
GoodsTypeEnum
.
SPU_GOODS
.
getGoodsType
()
:
GoodsTypeEnum
.
SKU_GOODS
.
getGoodsType
();
if
(
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
goodsType
=
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
();
}
else
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductComboList
())
||
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductGroupList
()))
{
goodsType
=
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
();
}
if
(
addShoppingCartGoodsRequestVo
.
getOperationType
()
!=
null
&&
addShoppingCartGoodsRequestVo
.
getOperationType
()
==
2
)
{
goodsType
=
GoodsTypeEnum
.
REDUCE_PRICE_GOODS
.
getGoodsType
();
}
cartGoods
.
setGoodsType
(
goodsType
);
cartGoods
.
setExtra
(
addShoppingCartGoodsRequestVo
.
getExtra
());
cartGoods
.
setNodeId
(
addShoppingCartGoodsRequestVo
.
getNodeId
());
cartGoods
.
setCategoryName
(
addShoppingCartGoodsRequestVo
.
getCategoryName
());
List
<
CartGoods
.
ComboxGoods
>
productComboList
=
new
ArrayList
<>();
List
<
CartGoods
.
ComboxGoods
>
productGroupList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductComboList
()))
{
for
(
ComboxGoodsRequestVo
vo
:
addShoppingCartGoodsRequestVo
.
getProductComboList
())
{
CartGoods
.
ComboxGoods
productCombox
=
new
CartGoods
.
ComboxGoods
();
productCombox
.
setGoodsId
(
vo
.
getSkuId
());
productCombox
.
setSkuId
(
vo
.
getSkuId
());
productCombox
.
setQty
(
vo
.
getQty
());
productCombox
.
setExtra
(
vo
.
getExtra
());
productComboList
.
add
(
productCombox
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductGroupList
()))
{
for
(
ComboxGoodsRequestVo
vo
:
addShoppingCartGoodsRequestVo
.
getProductGroupList
())
{
CartGoods
.
ComboxGoods
productCombox
=
new
CartGoods
.
ComboxGoods
();
productCombox
.
setGoodsId
(
vo
.
getSkuId
());
productCombox
.
setSkuId
(
vo
.
getSkuId
());
productCombox
.
setQty
(
vo
.
getQty
());
productCombox
.
setExtra
(
vo
.
getExtra
());
productCombox
.
setProductGroupId
(
StringUtils
.
isEmpty
(
vo
.
getProductGroupId
())
?
null
:
Long
.
parseLong
(
vo
.
getProductGroupId
()));
productGroupList
.
add
(
productCombox
);
}
}
cartGoods
.
setProductComboList
(
productComboList
);
cartGoods
.
setProductGroupList
(
productGroupList
);
return
cartGoods
;
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
View file @
d99cc04a
...
@@ -171,10 +171,15 @@ public class CouponDiscountCalculation {
...
@@ -171,10 +171,15 @@ public class CouponDiscountCalculation {
List
<
String
>
couponCodes
=
Lists
.
newArrayList
();
List
<
String
>
couponCodes
=
Lists
.
newArrayList
();
memberCoupons
.
forEach
(
memberCoupon
->
{
memberCoupons
.
forEach
(
memberCoupon
->
{
// 只筛选小于结束时间得券
// 只筛选小于结束时间得券
if
(
System
.
currentTimeMillis
()
<
DateUtil
.
convert2Date
(
memberCoupon
.
getEndTime
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
).
getTime
())
{
// if (Objects.equals(memberCoupon.getCouponType(), CouponTypeEnum.TYPE_1.getCode())
couponCodes
.
add
(
memberCoupon
.
getCouponCode
());
// || Objects.equals(memberCoupon.getCouponType(), CouponTypeEnum.TYPE_3.getCode())) {
}
// 只筛选小于结束时间得券
if
(
System
.
currentTimeMillis
()
<
DateUtil
.
convert2Date
(
memberCoupon
.
getEndTime
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
).
getTime
())
{
couponCodes
.
add
(
memberCoupon
.
getCouponCode
());
}
// }
});
});
List
<
CouponState
>
couponStateList
=
buildAvailableCoupons
(
cartGoods
,
partnerId
,
storeId
,
couponCodes
);
List
<
CouponState
>
couponStateList
=
buildAvailableCoupons
(
cartGoods
,
partnerId
,
storeId
,
couponCodes
);
if
(
CollectionUtils
.
isEmpty
(
couponStateList
))
{
if
(
CollectionUtils
.
isEmpty
(
couponStateList
))
{
return
null
;
return
null
;
...
@@ -312,6 +317,10 @@ public class CouponDiscountCalculation {
...
@@ -312,6 +317,10 @@ public class CouponDiscountCalculation {
int
usableCouponNum
=
0
;
int
usableCouponNum
=
0
;
for
(
CouponState
couponStateVo
:
couponStateList
)
{
for
(
CouponState
couponStateVo
:
couponStateList
)
{
// 过滤0得代金券
// 过滤0得代金券
if
(
Objects
.
equals
(
couponStateVo
.
getType
(),
CouponTypeEnum
.
TYPE_0
.
getCode
()))
{
continue
;
}
// 过滤0得代金券
if
(
Objects
.
equals
(
couponStateVo
.
getType
(),
CouponTypeEnum
.
TYPE_1
.
getCode
())
if
(
Objects
.
equals
(
couponStateVo
.
getType
(),
CouponTypeEnum
.
TYPE_1
.
getCode
())
&&
(
couponStateVo
.
getOriginalPrice
()
==
null
&&
(
couponStateVo
.
getOriginalPrice
()
==
null
||
couponStateVo
.
getOriginalPrice
()
==
0
))
{
||
couponStateVo
.
getOriginalPrice
()
==
0
))
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/entity/MCoffeeAddGoodsRequestVo.java
0 → 100644
View file @
d99cc04a
package
cn
.
freemud
.
service
.
impl
.
mcoffee
.
entity
;
import
cn.freemud.entities.vo.CartGoods
;
import
cn.freemud.entities.vo.ComboxGoodsRequestVo
;
import
cn.freemud.entities.vo.ShoppingCartInfoRequestVo
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: MCoffeeAddGoodsRequestVo
* @Package cn.freemud.service.impl.mcoffee.entity
* @Description:
* @author: ping1.wu
* @date: 2020/8/8 21:04
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public
class
MCoffeeAddGoodsRequestVo
{
@NotEmpty
(
message
=
"sessionId不能为空"
)
private
String
sessionId
;
/**
* 商户Id
*/
@NotEmpty
(
message
=
"partnerId不能为空"
)
private
String
partnerId
;
/**
* 微信appId
*/
@NotEmpty
(
message
=
"appId不能为空"
)
private
String
appId
;
/**
* 门店Id
* 商城没有门店id,如果需要门店id必传在业务中进行校验
*/
//@NotEmpty(message = "shopId不能为空")
private
String
shopId
;
/**
* 下单类型 CreateOrderType 外卖、到店、商城
*/
private
Integer
orderType
;
/**
* 渠道类型 OrderChannelType
*/
private
String
channelType
;
private
String
spuId
;
private
String
skuId
;
/**
* 商品额外的属性
*/
private
List
<
CartGoods
.
CartGoodsExtra
>
extra
;
private
String
version
;
/**
* 1.6.0 版本增加 节点ID
*/
private
String
nodeId
;
/**
* 1.6.0 版本增加 分类名
*/
private
String
categoryName
;
/**
* 套餐固定商品
*/
private
List
<
ComboxGoodsRequestVo
>
productComboList
;
/**
* 套餐可选商品
*/
private
List
<
ComboxGoodsRequestVo
>
productGroupList
;
private
String
appType
;
private
String
tableNumber
;
/**
* 数量
*/
private
Integer
qty
;
/**
* 业务类型: 0 : 自提 1:外卖 2:微商城
*/
private
String
menuType
;
/**
* 收货地址ID、svc卡支付外卖订单必传
*/
private
String
receiveId
;
/**
* 操作类型 1= 添加商品券 2=加价购
*/
private
Integer
operationType
;
/**
* 优惠券号
*/
private
String
couponCode
;
}
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