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
d3d38ddb
Commit
d3d38ddb
authored
Oct 14, 2020
by
zhiheng.zhang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
947e1e7f
5a559d1c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
178 additions
and
6 deletions
+178
-6
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+2
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AssortmentSdkService.java
+2
-3
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+174
-3
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
d3d38ddb
...
...
@@ -89,6 +89,8 @@ public enum ResponseResult {
SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE
(
"44022"
,
"已加入同样优惠券,第二张暂不可用"
),
SHOPPING_CART_PRODUCT_CAN_NOT_USE
(
"44023"
,
"商品不可用"
),
SHOPPING_CART_COUPON_CAN_NOT_USE
(
"44024"
,
"商品券不可用"
),
SHOPPING_CART_LIMIT_ADD
(
"44025"
,
"加购数量超过限制"
),
/**
* 订单状态码
*/
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AssortmentSdkService.java
View file @
d3d38ddb
...
...
@@ -208,7 +208,7 @@ public class AssortmentSdkService {
checkCartRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
checkCartRequest
.
setMenuType
(
BusinessTypeEnum
.
getByType
(
menuType
).
getCode
());
BaseResponse
<
CheckCartRequest
>
baseResponse
;
baseResponse
=
shoppingCartService
.
checkAllCartGoods
ForMCoffee
(
checkCartRequest
);
baseResponse
=
shoppingCartService
.
checkAllCartGoods
New
(
checkCartRequest
);
if
(
baseResponse
==
null
)
{
return
null
;
}
...
...
@@ -253,4 +253,4 @@ public class AssortmentSdkService {
cartParamDto
.
setStoreId
(
storeId
);
return
cartParamDto
;
}
}
\ No newline at end of file
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
d3d38ddb
...
...
@@ -30,8 +30,10 @@ import cn.freemud.entities.vo.*;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.BizServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.*
;
import
cn.freemud.service.thirdparty.*
;
import
cn.freemud.utils.BeanUtil
;
import
cn.freemud.utils.PromotionFactory
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
cn.freemud.utils.ResponseUtil
;
...
...
@@ -39,6 +41,7 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig
;
import
com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
...
...
@@ -139,6 +142,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private
ProductService
productService
;
@Autowired
private
ActivityService
activityService
;
@Autowired
private
RedisCache
redisCache
;
private
static
final
String
limitCartKey
=
"ecology:kgd:wxappconfig:open_platform_partner_wxapp_config:appkey_"
;
/**
* 从微信卡券向购物车中添加商品
...
...
@@ -228,6 +236,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String
menuType
=
addShoppingCartGoodsRequestVo
.
getMenuType
();
Integer
orderType
=
addShoppingCartGoodsRequestVo
.
getOrderType
();
String
receiveId
=
addShoppingCartGoodsRequestVo
.
getReceiveId
();
String
tableNumber
=
addShoppingCartGoodsRequestVo
.
getTableNumber
();
CartGoods
cartGoods
=
ShoppingCartConvertAdapter
.
convent2CartGoods
(
addShoppingCartGoodsRequestVo
);
List
<
Long
>
productIds
=
new
ArrayList
<>();
...
...
@@ -249,11 +258,14 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if
(
CollectionUtils
.
isEmpty
(
allCartGoodsList
))
{
allCartGoodsList
=
new
ArrayList
<>();
}
List
<
CartGoods
>
oldCartGoodsList
=
BeanUtil
.
convertBeans
(
allCartGoodsList
,
CartGoods:
:
new
);
/**
Integer checkQty = allCartGoodsList.indexOf(cartGoods) != -1 ?
allCartGoodsList.get(allCartGoodsList.indexOf(cartGoods)).getQty() + cartGoods.getQty() : cartGoods.getQty();
*/
Integer
checkQty
=
this
.
checkSkuQty
(
allCartGoodsList
,
cartGoods
);
//购物车添加数量限制
Integer
productsCount
=
limitGoodsQty
(
allCartGoodsList
,
cartGoods
,
appId
);
//查询多个商品库存信息
queryManyGoodsStocks
(
addShoppingCartGoodsRequestVo
,
productIds
,
productBeanListSpuClass
,
skuId
,
checkQty
);
String
productName
=
null
;
...
...
@@ -272,7 +284,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
=
getCalculationDiscountResult
(
menuType
,
partnerId
,
storeId
,
userId
,
appId
,
userLoginInfoDto
.
getWxAppid
(),
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
(),
allCartGoodsList
,
new
ArrayList
(),
new
ArrayList
<>(),
null
,
deliveryAmount
);
sendGoodsQtyCheck
(
productsCount
,
appId
,
partnerId
,
userId
,
storeId
,
tableNumber
,
oldCartGoodsList
,
shoppingCartBaseService
,
calculationDiscountResult
.
getSendGoods
());
// 当商品数量被设为0时
if
(
Objects
.
equals
(
cartGoods
.
getQty
(),
0
))
{
assortmentSdkService
.
updateGoodsQtyBySdk
(
partnerId
,
userId
,
storeId
,
cartGoods
.
getCartGoodsUid
(),
0
,
""
,
shoppingCartBaseService
);
...
...
@@ -347,7 +359,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
// 检查购物车商品库存数量
checkUpdateStock
(
updateShoppingCartGoodsQtyRequestVo
,
cartGoods
);
Integer
oldQty
=
cartGoods
.
getQty
();
// 更新购物车中数量
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
updateGoodsQtyBySdk
(
partnerId
,
userId
,
storeId
,
cartGoodsUid
,
qty
<
0
?
0
:
qty
,
""
,
shoppingCartBaseService
);
...
...
@@ -371,7 +383,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo
.
setProducts
(
cartGoodsList
);
// return shoppingCartGoodsResponseVo;
}
if
(
calculationDiscountResult
!=
null
)
{
sendGoodsQtyCheckForUpdate
(
cartGoodsList
,
oldQty
,
appId
,
partnerId
,
userId
,
storeId
,
cartGoodsUid
,
""
,
shoppingCartBaseService
,
calculationDiscountResult
.
getSendGoods
());
}
ActivityQueryDto
activityQueryDto
=
activityAdapter
.
getActivityQueryDto
(
partnerId
,
storeId
,
userId
,
appId
,
updateShoppingCartGoodsQtyRequestVo
.
getOrderType
());
// 促销活动的优惠金额计算
...
...
@@ -1627,4 +1641,161 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo
.
setToastMsg
(
""
);
}
}
/**
* 查询生态配置限制加购开关与限制数量
*/
public
Integer
limitGoodsQty
(
List
<
CartGoods
>
oldCartGoodsList
,
CartGoods
cartGoods
,
String
appid
){
Integer
qty
=
0
;
if
(
CollectionUtils
.
isNotEmpty
(
oldCartGoodsList
)){
for
(
CartGoods
goods
:
oldCartGoodsList
)
{
qty
+=
goods
.
getQty
();
}
}
qty
+=
cartGoods
.
getQty
();
String
redisKey
=
limitCartKey
+
appid
;
Object
value
=
redisCache
.
hashGet
(
redisKey
,
"2"
);
if
(
value
==
null
)
{
return
qty
;
}
else
{
boolean
bool
=
value
.
getClass
().
getName
().
equals
(
"java.lang.String"
);
if
(
bool
){
return
qty
;
}
JSONArray
jsonArray
=
(
JSONArray
)
value
;
int
cartLimitFlag
=
0
;
int
cartLimitCount
=
0
;
for
(
Object
object
:
jsonArray
){
JSONObject
jsonObject
=
(
JSONObject
)
object
;
HashMap
hashMap
=
JSONObject
.
parseObject
(
jsonObject
.
toJSONString
(),
HashMap
.
class
);
if
(
"cartLimitFlag"
.
equals
(
hashMap
.
get
(
"appKey"
))){
if
(
StringUtils
.
isBlank
((
String
)
hashMap
.
get
(
"appValue"
)))
{
return
qty
;
}
cartLimitFlag
=
Integer
.
parseInt
((
String
)
hashMap
.
get
(
"appValue"
));
}
if
(
"cartLimitCount"
.
equals
(
hashMap
.
get
(
"appKey"
))){
if
(
StringUtils
.
isBlank
((
String
)
hashMap
.
get
(
"appValue"
)))
{
return
qty
;
}
cartLimitCount
=
Integer
.
parseInt
((
String
)
hashMap
.
get
(
"appValue"
));
}
}
if
(
cartLimitFlag
==
1
&&
cartLimitCount
!=
0
&&
qty
>
cartLimitCount
){
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_LIMIT_ADD
);
}
}
return
qty
;
}
/**
* 购物车添加完成后促销返回赠送商品总数量校验
*/
public
void
sendGoodsQtyCheck
(
Integer
checkQty
,
String
appid
,
String
partnerId
,
String
userId
,
String
storeId
,
String
tableNumber
,
List
<
CartGoods
>
oldCartGoodsList
,
ShoppingCartBaseService
shoppingCartService
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivitys
){
if
(
CollectionUtils
.
isEmpty
(
sendActivitys
)){
return
;
}
int
sendQty
=
0
;
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
:
sendActivitys
){
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
:
sendActivity
.
getSendGoods
()){
sendQty
+=
sendGoods
.
getSendNumber
();
}
}
String
redisKey
=
limitCartKey
+
appid
;
Object
value
=
redisCache
.
hashGet
(
redisKey
,
"2"
);
if
(
value
==
null
)
{
return
;
}
else
{
boolean
bool
=
value
.
getClass
().
getName
().
equals
(
"java.lang.String"
);
if
(
bool
){
return
;
}
JSONArray
jsonArray
=
(
JSONArray
)
value
;
int
cartLimitFlag
=
0
;
int
cartLimitCount
=
0
;
for
(
Object
object
:
jsonArray
){
JSONObject
jsonObject
=
(
JSONObject
)
object
;
HashMap
hashMap
=
JSONObject
.
parseObject
(
jsonObject
.
toJSONString
(),
HashMap
.
class
);
if
(
"cartLimitFlag"
.
equals
(
hashMap
.
get
(
"appKey"
))){
if
(
StringUtils
.
isBlank
((
String
)
hashMap
.
get
(
"appValue"
)))
{
return
;
}
cartLimitFlag
=
Integer
.
parseInt
((
String
)
hashMap
.
get
(
"appValue"
));
}
if
(
"cartLimitCount"
.
equals
(
hashMap
.
get
(
"appKey"
))){
if
(
StringUtils
.
isBlank
((
String
)
hashMap
.
get
(
"appValue"
)))
{
return
;
}
cartLimitCount
=
Integer
.
parseInt
((
String
)
hashMap
.
get
(
"appValue"
));
}
}
if
(
cartLimitFlag
==
1
&&
cartLimitCount
!=
0
&&
checkQty
+
sendQty
>
cartLimitCount
){
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
oldCartGoodsList
,
null
,
tableNumber
,
shoppingCartService
);
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_LIMIT_ADD
);
}
}
}
/**
* 购物车添加完成后促销返回赠送商品总数量校验
*/
public
void
sendGoodsQtyCheckForUpdate
(
List
<
CartGoods
>
cartGoodsList
,
Integer
goodsQty
,
String
appid
,
String
partnerId
,
String
userId
,
String
storeId
,
String
cartGoodsUid
,
String
tableNumber
,
ShoppingCartBaseService
shoppingCartService
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivitys
){
Integer
updateQty
=
0
;
if
(
CollectionUtils
.
isNotEmpty
(
cartGoodsList
)){
for
(
CartGoods
goods
:
cartGoodsList
)
{
updateQty
+=
goods
.
getQty
();
}
}
String
redisKey
=
limitCartKey
+
appid
;
Object
value
=
redisCache
.
hashGet
(
redisKey
,
"2"
);
if
(
value
==
null
)
{
return
;
}
else
{
boolean
bool
=
value
.
getClass
().
getName
().
equals
(
"java.lang.String"
);
if
(
bool
){
return
;
}
JSONArray
jsonArray
=
(
JSONArray
)
value
;
int
cartLimitFlag
=
0
;
int
cartLimitCount
=
0
;
for
(
Object
object
:
jsonArray
){
JSONObject
jsonObject
=
(
JSONObject
)
object
;
HashMap
hashMap
=
JSONObject
.
parseObject
(
jsonObject
.
toJSONString
(),
HashMap
.
class
);
if
(
"cartLimitFlag"
.
equals
(
hashMap
.
get
(
"appKey"
))){
if
(
StringUtils
.
isBlank
((
String
)
hashMap
.
get
(
"appValue"
)))
{
return
;
}
cartLimitFlag
=
Integer
.
parseInt
((
String
)
hashMap
.
get
(
"appValue"
));
}
if
(
"cartLimitCount"
.
equals
(
hashMap
.
get
(
"appKey"
))){
if
(
StringUtils
.
isBlank
((
String
)
hashMap
.
get
(
"appValue"
)))
{
return
;
}
cartLimitCount
=
Integer
.
parseInt
((
String
)
hashMap
.
get
(
"appValue"
));
}
}
int
sendQty
=
0
;
if
(
CollectionUtils
.
isNotEmpty
(
sendActivitys
)){
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
:
sendActivitys
){
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
:
sendActivity
.
getSendGoods
()){
sendQty
+=
sendGoods
.
getSendNumber
();
}
}
}
if
(
cartLimitFlag
==
1
&&
cartLimitCount
!=
0
&&
updateQty
+
sendQty
>
cartLimitCount
){
assortmentSdkService
.
updateGoodsQtyBySdk
(
partnerId
,
userId
,
storeId
,
cartGoodsUid
,
goodsQty
,
""
,
shoppingCartBaseService
);
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_LIMIT_ADD
);
}
}
}
}
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