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
62c9047a
Commit
62c9047a
authored
Sep 27, 2020
by
刘鹏飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拼单加购修改
parent
4981e86a
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
195 additions
and
9 deletions
+195
-9
shopping-cart-application-service/src/main/java/cn/freemud/controller/ShoppingCartCollageController.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/AddShoppingCartGoodsRequestVo.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartCollageServiceImpl.java
+193
-7
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/controller/ShoppingCartCollageController.java
View file @
62c9047a
...
@@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
public
class
ShoppingCartCollageController
{
public
class
ShoppingCartCollageController
{
/**
/**
* 向拼单
管
购物车中添加商品
* 向拼单购物车中添加商品
*/
*/
@ApiAnnotation
(
logMessage
=
"addGoods"
)
@ApiAnnotation
(
logMessage
=
"addGoods"
)
@PostMapping
(
value
=
"/addGoods"
)
@PostMapping
(
value
=
"/addGoods"
)
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/AddShoppingCartGoodsRequestVo.java
View file @
62c9047a
...
@@ -25,7 +25,7 @@ public class AddShoppingCartGoodsRequestVo extends BaseRequestVo{
...
@@ -25,7 +25,7 @@ public class AddShoppingCartGoodsRequestVo extends BaseRequestVo{
private
String
sessionId
;
private
String
sessionId
;
/**
/**
* 拼单发起人userId
* 拼单发起人userId
(拼单)
*/
*/
private
String
createCollageUserId
;
private
String
createCollageUserId
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartCollageServiceImpl.java
View file @
62c9047a
...
@@ -3,22 +3,27 @@ package cn.freemud.service.impl;
...
@@ -3,22 +3,27 @@ package cn.freemud.service.impl;
import
cn.freemud.adapter.ActivityAdapter
;
import
cn.freemud.adapter.ActivityAdapter
;
import
cn.freemud.adapter.ShoppingCartConvertAdapter
;
import
cn.freemud.adapter.ShoppingCartConvertAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ShoppingCartConstant
;
import
cn.freemud.constant.ShoppingCartConstant
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.UserLoginInfoDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
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.ActivityChannelEnum
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.factory.AbstractShoppingCartImpl
;
import
cn.freemud.factory.AbstractShoppingCartImpl
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.CommonService
;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.ShoppingCartNewService
;
import
cn.freemud.service.ShoppingCartNewService
;
import
cn.freemud.service.thirdparty.ActivityClient
;
import
cn.freemud.service.thirdparty.CustomerApplicationClient
;
import
cn.freemud.service.thirdparty.CustomerApplicationClient
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
cn.freemud.utils.RedisLock
;
import
cn.freemud.utils.RedisLock
;
import
cn.freemud.utils.ResponseUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
...
@@ -72,6 +77,15 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
...
@@ -72,6 +77,15 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
@Autowired
@Autowired
private
RedisCache
redisCache
;
private
RedisCache
redisCache
;
@Autowired
private
CouponService
couponService
;
@Autowired
private
CommonService
commonService
;
@Autowired
private
ActivityClient
activityClient
;
@Override
@Override
public
BaseResponse
addGoodsByCard
(
AddGoodsByWeixinCardRequestVo
request
)
{
public
BaseResponse
addGoodsByCard
(
AddGoodsByWeixinCardRequestVo
request
)
{
return
null
;
return
null
;
...
@@ -205,8 +219,88 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
...
@@ -205,8 +219,88 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
@Override
@Override
public
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
getActivityCalculationDiscountResponse
(
String
partnerId
,
String
storeId
,
String
userId
,
String
appId
,
Integer
orderType
,
boolean
isMember
,
List
<
CartGoods
>
cartGoodsList
,
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
,
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoodsList
,
String
menuType
,
Long
distributionFee
)
{
public
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
getActivityCalculationDiscountResponse
(
String
partnerId
,
String
storeId
,
String
userId
,
String
appId
,
Integer
orderType
,
boolean
isMember
,
List
<
CartGoods
>
cartGoodsList
,
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
,
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoodsList
,
String
menuType
,
Long
distributionFee
)
{
ActivityCalculationDiscountRequestDto
activityCalculationDiscountRequestDto
=
getActivityCalculationDiscountRequestDto
(
partnerId
,
storeId
,
userId
,
appId
,
orderType
);
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
=
new
ArrayList
<>();
// 校验后有效的商品券map
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
new
HashMap
<>(
16
);
for
(
int
i
=
cartGoodsList
.
size
()
-
1
;
i
>=
0
;
i
--)
{
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
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
);
}
// 商品是商品券
else
{
// 商品券ID换取商品
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
spqId
,
menuType
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
);
// 商品券不存在时,将商品券从购物车移除
if
(
checkSpqInfoResponseDto
==
null
)
{
cartGoodsList
.
remove
(
i
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_COUPON_NOT_EXIST
);
}
validCouponMap
.
put
(
spqId
,
checkSpqInfoResponseDto
);
cartGoods
.
setName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfoResponseDto
.
getCouponName
());
// 添加请求的优惠券信息
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
coupon
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
();
coupon
.
setCode
(
checkSpqInfoResponseDto
.
getCouponCode
());
coupon
.
setActivityCode
(
checkSpqInfoResponseDto
.
getActiveCode
());
coupons
.
add
(
coupon
);
// 添加商品券代表的商品
String
goodsId
=
StringUtils
.
isEmpty
(
checkSpqInfoResponseDto
.
getSkuId
())
?
checkSpqInfoResponseDto
.
getSpuId
()
:
checkSpqInfoResponseDto
.
getSkuId
();
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoodsUid
);
}
}
// 当加价购商品不为空时
if
(
CollectionUtils
.
isNotEmpty
(
sendGoodsList
))
{
for
(
ShoppingCartInfoRequestVo
.
SendGoods
sendGoods
:
sendGoodsList
)
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
sendGoods
.
getGoodsId
(),
sendGoods
.
getQty
(),
sendGoods
.
getOriginalPrice
(),
100
,
""
);
}
}
calculationDiscountGoodsList
.
removeIf
(
calculationDiscountGoods
->
(
calculationDiscountGoods
.
getGoodsQuantity
().
equals
(
0
)));
if
(
CollectionUtils
.
isEmpty
(
calculationDiscountGoodsList
))
{
return
null
;
return
null
;
}
}
activityCalculationDiscountRequestDto
.
setGoods
(
calculationDiscountGoodsList
);
activityCalculationDiscountRequestDto
.
setCoupons
(
coupons
);
activityCalculationDiscountRequestDto
.
setOrgIds
(
commonService
.
getOrgIds
(
partnerId
,
storeId
));
activityCalculationDiscountRequestDto
.
setDistributionFee
(
distributionFee
);
activityCalculationDiscountRequestDto
.
setIsMember
(
isMember
);
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
;
try
{
System
.
out
.
println
(
"start discount"
);
System
.
out
.
println
(
JSON
.
toJSONString
(
activityCalculationDiscountRequestDto
));
activityCalculationDiscountResponseDto
=
activityClient
.
calculationDiscount
(
activityCalculationDiscountRequestDto
);
}
catch
(
Exception
ex
)
{
com
.
freemud
.
application
.
sdk
.
api
.
log
.
ErrorLog
.
printErrorLog
(
"calculation_discount_error"
,
"/calculation/discount"
,
activityCalculationDiscountRequestDto
,
ex
);
throw
new
ServiceException
(
ResponseResult
.
OPERATE_TOO_OFTEN
);
}
// 返回成功
if
(
activityCalculationDiscountResponseDto
!=
null
&&
StringUtils
.
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
))
{
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
result
=
activityCalculationDiscountResponseDto
.
getResult
();
result
.
setValidCouponMap
(
validCouponMap
);
result
.
setDeliveryAmount
(
distributionFee
);
result
.
setDistributionFee
(
result
.
getDistributionFee
());
return
result
;
}
// 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车
ShoppingCartClearRequestVo
shoppingCartClearRequestVo
=
new
ShoppingCartClearRequestVo
();
shoppingCartClearRequestVo
.
setAppId
(
appId
);
shoppingCartClearRequestVo
.
setPartnerId
(
partnerId
);
shoppingCartClearRequestVo
.
setUserId
(
userId
);
shoppingCartClearRequestVo
.
setShopId
(
storeId
);
shoppingCartClearRequestVo
.
setOperationType
(
1
);
clear
(
shoppingCartClearRequestVo
);
if
(
activityCalculationDiscountResponseDto
!=
null
&&
StringUtils
.
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
"103"
)){
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_COUPON_CAN_NOT_USE_THIS_SHOP
);
}
throw
new
ServiceException
(
ResponseResult
.
OPERATE_TOO_OFTEN
);
}
@Override
@Override
public
List
<
CartGoods
>
updateCartGoodsLegal
(
CartGoods
cartGoods
,
String
userId
,
ShoppingCartGoodsBaseResponseVo
shoppingCartGoodsResponseVo
,
AddShoppingCartGoodsRequestVo
addShoppingCartGoodsRequestVo
,
List
<
CartGoods
>
oldAllCartGoodsList
)
{
public
List
<
CartGoods
>
updateCartGoodsLegal
(
CartGoods
cartGoods
,
String
userId
,
ShoppingCartGoodsBaseResponseVo
shoppingCartGoodsResponseVo
,
AddShoppingCartGoodsRequestVo
addShoppingCartGoodsRequestVo
,
List
<
CartGoods
>
oldAllCartGoodsList
)
{
...
@@ -246,10 +340,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
...
@@ -246,10 +340,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
}
}
/**
/**
* 添加非商品券商品
* 添加非商品券商品
*
*
...
@@ -388,4 +478,100 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
...
@@ -388,4 +478,100 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_CART_VER_KEY
,
partnerId
,
storeId
,
userId
);
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_CART_VER_KEY
,
partnerId
,
storeId
,
userId
);
}
}
/**
* 构建 ActivityCalculationDiscountRequestDto
*
* @param partnerId
* @param storeId
* @param userId
* @param appId
* @param orderType
* @return
*/
private
ActivityCalculationDiscountRequestDto
getActivityCalculationDiscountRequestDto
(
String
partnerId
,
String
storeId
,
String
userId
,
String
appId
,
Integer
orderType
)
{
ActivityCalculationDiscountRequestDto
activityCalculationDiscountRequestDto
=
new
ActivityCalculationDiscountRequestDto
();
activityCalculationDiscountRequestDto
.
setPartnerCode
(
partnerId
);
activityCalculationDiscountRequestDto
.
setStoreId
(
storeId
);
activityCalculationDiscountRequestDto
.
setIsShowGoodsActivity
(
1
);
activityCalculationDiscountRequestDto
.
setUserId
(
userId
);
activityCalculationDiscountRequestDto
.
setVer
(
1
);
activityCalculationDiscountRequestDto
.
setAppId
(
appId
);
ActivityChannelEnum
activityChannelEnum
=
PropertyConvertUtil
.
orderTypeConvert2ActivityChannel
(
orderType
);
if
(!
Objects
.
isNull
(
activityChannelEnum
))
{
activityCalculationDiscountRequestDto
.
setChannel
(
activityChannelEnum
.
getCode
());
}
return
activityCalculationDiscountRequestDto
;
}
/**
* 促销增加
*
* @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
);
}
/**
* 将calculationDiscountGoods 封装后加入 calculationDiscountGoodsList
*
* @param calculationDiscountGoodsList
* @param goodsId
* @param goodsQuantity
* @param originalPrice
*/
private
void
addCalculationDiscountGoods
(
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
,
String
goodsId
,
Integer
goodsQuantity
,
Long
originalPrice
,
Integer
memberDiscount
,
String
cartGoodsUid
)
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
calculationDiscountGoods
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
();
calculationDiscountGoods
.
setGoodsId
(
goodsId
);
calculationDiscountGoods
.
setCartGoodsUid
(
cartGoodsUid
);
calculationDiscountGoods
.
setGoodsQuantity
(
goodsQuantity
);
calculationDiscountGoods
.
setOriginalPrice
(
originalPrice
);
calculationDiscountGoods
.
setMemberDiscount
(
memberDiscount
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
calculationDiscountGoods
);
}
/**
* 累加需加入计算的商品
*
* @param calculationDiscountGoodsList
* @param calculationDiscountGoods
*/
private
void
addCalculationDiscountGoods
(
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
,
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
calculationDiscountGoods
)
{
int
index
;
// 当商品已存在时,需累加数量
if
((
index
=
calculationDiscountGoodsList
.
indexOf
(
calculationDiscountGoods
))
>=
0
)
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
oldCalculationDiscountGoods
=
calculationDiscountGoodsList
.
get
(
index
);
oldCalculationDiscountGoods
.
setGoodsQuantity
(
oldCalculationDiscountGoods
.
getGoodsQuantity
()
+
calculationDiscountGoods
.
getGoodsQuantity
());
}
else
{
calculationDiscountGoodsList
.
add
(
calculationDiscountGoods
);
}
}
}
}
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