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
dc108975
Commit
dc108975
authored
Jan 11, 2021
by
缪晖
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拼单购物车促销算价切换至新版(可配置),初版改造提交
parent
4165eb56
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
279 additions
and
0 deletions
+279
-0
shopping-cart-application-service/src/main/java/cn/freemud/enums/PromotionSceneEnum.java
+36
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/PromotionCalculateService.java
+40
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AbstractPromotionCalculateService.java
+51
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CommonPromotionService.java
+96
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/PromotionCalculateCollageServiceImpl.java
+56
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/PromotionCalculateServiceImpl.java
+0
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/PromotionCalculateSharingServiceImpl.java
+0
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartCollageServiceImpl.java
+0
-0
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/enums/PromotionSceneEnum.java
0 → 100644
View file @
dc108975
package
cn
.
freemud
.
enums
;
public
enum
PromotionSceneEnum
{
ADDGOODS
(
1
,
"添加商品"
)
,
UPDATEGOODSQTY
(
2
,
"更新商品数量"
)
,
GETGOODSLIST
(
3
,
"购物车商品详情"
)
,
GETSHOPPINGCARTGOODS
(
4
,
"查询购物车信息(包括参与的活动详情)"
)
;
private
Integer
code
;
private
String
desc
;
public
static
PromotionSceneEnum
[]
SCENE_DISCOUNT
=
{
ADDGOODS
,
UPDATEGOODSQTY
,
GETGOODSLIST
};
public
static
PromotionSceneEnum
[]
SCENE_APPORTION
=
{
GETSHOPPINGCARTGOODS
};
PromotionSceneEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/PromotionCalculateService.java
0 → 100644
View file @
dc108975
package
cn
.
freemud
.
service
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.PromotionSceneEnum
;
import
java.util.List
;
/**
* 促销算价父接口
*/
public
interface
PromotionCalculateService
{
default
void
calculate
(
PromotionSceneEnum
promotionSceneEnum
,
BaseRequestVo
baseRequestVo
,
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
cartGoodsList
,
ActivityQueryDto
activityQueryDto
,
Long
deliveryAmount
,
CartGoods
cartGoods
,
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoodsList
,
CouponPromotionVO
couponPromotionVO
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
)
{
switch
(
promotionSceneEnum
)
{
case
ADDGOODS:
this
.
addGoods
(
baseRequestVo
,
shoppingCartGoodsResponseVo
,
cartGoodsList
,
activityQueryDto
,
deliveryAmount
,
cartGoods
);
break
;
case
UPDATEGOODSQTY:
this
.
updateGoodsQty
(
baseRequestVo
,
shoppingCartGoodsResponseVo
,
cartGoodsList
,
activityQueryDto
,
deliveryAmount
);
break
;
case
GETGOODSLIST:
this
.
getGoodsList
(
baseRequestVo
,
shoppingCartGoodsResponseVo
,
cartGoodsList
,
activityQueryDto
,
deliveryAmount
,
couponPromotionVO
);
break
;
case
GETSHOPPINGCARTGOODS:
this
.
getShoppingCartGoods
(
baseRequestVo
,
premiumExchangeActivity
,
shoppingCartGoodsResponseVo
,
cartGoodsList
,
activityQueryDto
,
deliveryAmount
,
sendGoodsList
,
couponPromotionVO
,
shoppingCartGoodsDto
);
break
;
default
:
return
;
}
}
void
addGoods
(
BaseRequestVo
baseRequestVo
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
cartGoodsList
,
ActivityQueryDto
activityQueryDto
,
Long
deliveryAmount
,
CartGoods
cartGoods
);
void
updateGoodsQty
(
BaseRequestVo
baseRequestVo
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
cartGoodsList
,
ActivityQueryDto
activityQueryDto
,
Long
deliveryAmount
);
void
getGoodsList
(
BaseRequestVo
baseRequestVo
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
cartGoodsList
,
ActivityQueryDto
activityQueryDto
,
Long
deliveryAmount
,
CouponPromotionVO
couponPromotionVO
);
void
getShoppingCartGoods
(
BaseRequestVo
baseRequestVo
,
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
cartGoodsList
,
ActivityQueryDto
activityQueryDto
,
Long
deliveryAmount
,
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoodsList
,
CouponPromotionVO
couponPromotionVO
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
);
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AbstractPromotionCalculateService.java
0 → 100644
View file @
dc108975
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.user.GetSessionUserInfoDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.PromotionCalculateService
;
import
cn.freemud.service.thirdparty.CustomerApplicationClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* 促销算价实现抽象父类
* 目前由于新版算价入参过于复杂,后续购物车dto整理后
*/
public
abstract
class
AbstractPromotionCalculateService
implements
PromotionCalculateService
{
@Autowired
private
CustomerApplicationClient
customerApplicationClient
;
protected
CustomerInfoVo
getCustomerInfoVo
(
String
sessionId
)
{
GetSessionUserInfoDto
getSessionUserInfoDto
=
new
GetSessionUserInfoDto
();
getSessionUserInfoDto
.
setIsGetPaid
(
true
);
getSessionUserInfoDto
.
setSessionId
(
sessionId
);
BaseResponse
<
CustomerInfoVo
>
sessionUserInfo
=
customerApplicationClient
.
getSessionUserInfo
(
getSessionUserInfoDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
sessionUserInfo
.
getCode
())
||
sessionUserInfo
.
getResult
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
return
sessionUserInfo
.
getResult
();
}
protected
UserLoginInfoDto
convert2UserLoginInfoDto
(
CustomerInfoVo
assortmentCustomerInfoVo
)
{
if
(
assortmentCustomerInfoVo
==
null
||
assortmentCustomerInfoVo
.
getMemberId
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
UserLoginInfoDto
userLoginInfoDto
=
new
UserLoginInfoDto
();
userLoginInfoDto
.
setMemberId
(
assortmentCustomerInfoVo
.
getMemberId
());
userLoginInfoDto
.
setOpenId
(
assortmentCustomerInfoVo
.
getOpenId
());
userLoginInfoDto
.
setWxAppid
(
assortmentCustomerInfoVo
.
getWxAppId
());
userLoginInfoDto
.
setSessionKey
(
assortmentCustomerInfoVo
.
getSessionKey
());
userLoginInfoDto
.
setMobile
(
assortmentCustomerInfoVo
.
getMobile
());
userLoginInfoDto
.
setAppsecret
(
assortmentCustomerInfoVo
.
getAppSecret
());
userLoginInfoDto
.
setPartnerId
(
assortmentCustomerInfoVo
.
getPartnerId
());
userLoginInfoDto
.
setNewMemeber
(
assortmentCustomerInfoVo
.
getNewMember
());
userLoginInfoDto
.
setUnionId
(
assortmentCustomerInfoVo
.
getUnionId
());
return
userLoginInfoDto
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CommonPromotionService.java
0 → 100644
View file @
dc108975
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.PromotionSceneEnum
;
import
cn.freemud.service.PromotionCalculateService
;
import
cn.freemud.service.ShoppingCartNewService
;
import
cn.freemud.service.impl.calculate.CalculateCenter
;
import
com.alibaba.fastjson.JSON
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.List
;
@Service
(
"commonPromotionService"
)
public
class
CommonPromotionService
{
@Value
(
"${saas.cart.sharing}"
)
private
String
sharing
;
/**
* 老版促销模板
*/
@Autowired
private
PromotionCalculateServiceImpl
promotionCalculateService
;
/**
* 新版促销模板
*/
@Autowired
private
PromotionCalculateSharingServiceImpl
promotionCalculateSharingService
;
@Autowired
private
PromotionCalculateCollageServiceImpl
promotionCalculateCollageService
;
/**
* 促销计算统一入口
* 若促销逻辑需实现差异化请重写促销模板实现类
* @param baseRequestVo
* @param premiumExchangeActivity
* @param promotionSceneEnum
*/
public
final
void
calculate
(
ShoppingCartNewService
shoppingCartService
,
PromotionSceneEnum
promotionSceneEnum
,
BaseRequestVo
baseRequestVo
,
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
List
<
CartGoods
>
cartGoodsList
,
ActivityQueryDto
activityQueryDto
,
Long
deliveryAmount
,
CartGoods
cartGoods
,
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoodsList
,
CouponPromotionVO
couponPromotionVO
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
)
{
this
.
getPromotionCalculateService
(
shoppingCartService
,
baseRequestVo
.
getPartnerId
(),
baseRequestVo
.
getShopId
()).
calculate
(
promotionSceneEnum
,
baseRequestVo
,
premiumExchangeActivity
,
shoppingCartGoodsResponseVo
,
cartGoodsList
,
activityQueryDto
,
deliveryAmount
,
cartGoods
,
sendGoodsList
,
couponPromotionVO
,
shoppingCartGoodsDto
);
}
/**
* 获取促销算价执行service
* @return
*/
private
PromotionCalculateService
getPromotionCalculateService
(
ShoppingCartNewService
shoppingCartService
,
String
partnerId
,
String
storeId
)
{
if
(
grayPush
(
partnerId
,
storeId
,
"2"
))
{
return
promotionCalculateSharingService
;
}
else
{
if
(
shoppingCartService
instanceof
ShoppingCartCollageServiceImpl
)
{
return
promotionCalculateCollageService
;
}
return
promotionCalculateService
;
}
}
/**
* @param partnerId
* @param storeId
* @return
*/
private
boolean
grayPush
(
String
partnerId
,
String
storeId
,
String
version
)
{
if
(
StringUtils
.
isBlank
(
sharing
))
return
false
;
CalculateCenter
center
=
JSON
.
parseObject
(
sharing
,
CalculateCenter
.
class
);
Boolean
enable
=
false
;
if
(!
center
.
getEnable
())
return
false
;
switch
(
center
.
getType
())
{
case
2
:
enable
=
true
;
break
;
case
1
:
{
//商户+门店级别
String
real
=
partnerId
.
concat
(
storeId
);
if
(
Arrays
.
asList
(
center
.
getGrayList
().
split
(
","
)).
contains
(
real
))
{
enable
=
true
;
}
//商户级别
else
if
(
Arrays
.
asList
(
center
.
getGrayList
().
split
(
","
)).
contains
(
partnerId
))
{
enable
=
true
;
}
}
}
if
(
center
.
getEnable
()
&&
enable
)
{
enable
=
true
;
}
return
enable
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/PromotionCalculateCollageServiceImpl.java
0 → 100644
View file @
dc108975
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.entities.vo.CustomerInfoVo
;
import
cn.freemud.entities.vo.ShoppingCartClearRequestVo
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.CollageCartBaseServiceImpl
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Set
;
/**
* 老版促销算价实现
*/
@Service
(
"promotionCalculateCollageService"
)
public
class
PromotionCalculateCollageServiceImpl
extends
PromotionCalculateServiceImpl
{
@Autowired
private
CollageCartBaseServiceImpl
collageCartBaseService
;
@Override
public
void
clear
(
ShoppingCartClearRequestVo
request
)
{
// 拼单发起人
String
createCollageUserId
=
request
.
getCreateCollageUserId
();
if
(
StringUtils
.
isBlank
(
createCollageUserId
))
{
throw
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
);
}
String
partnerId
=
request
.
getPartnerId
();
String
storeId
=
request
.
getShopId
();
if
(
StringUtils
.
isEmpty
(
partnerId
)
||
StringUtils
.
isEmpty
(
storeId
)){
throw
new
ServiceException
(
ResponseResult
.
PARAMETER_MISSING
);
}
CustomerInfoVo
userLoginInfoDto
=
getCustomerInfoVo
(
request
.
getSessionId
());
if
(
null
==
userLoginInfoDto
||
StringUtils
.
isEmpty
(
userLoginInfoDto
.
getMemberId
())){
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
domain
.
CartParamDto
cartParamDto
=
new
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
domain
.
CartParamDto
();
cartParamDto
.
setPartnerId
(
partnerId
);
cartParamDto
.
setStoreId
(
storeId
);
cartParamDto
.
setUserId
(
createCollageUserId
);
collageCartBaseService
.
clear
(
cartParamDto
,
LogThreadLocal
.
getTrackingNo
());
// 更新拼单购物车人员缓存中的的购物车行id集合
// 获取点餐位的购物车行
Set
<
String
>
member
=
collageCartBaseService
.
getCollageMember
(
partnerId
,
storeId
,
createCollageUserId
);
for
(
String
mem
:
member
){
collageCartBaseService
.
updateCollageCartGoodsUids
(
new
ArrayList
<>(),
partnerId
,
storeId
,
createCollageUserId
,
mem
);
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/PromotionCalculateServiceImpl.java
0 → 100644
View file @
dc108975
This diff is collapsed.
Click to expand it.
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/PromotionCalculateSharingServiceImpl.java
0 → 100644
View file @
dc108975
This diff is collapsed.
Click to expand it.
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartCollageServiceImpl.java
View file @
dc108975
This diff is collapsed.
Click to expand it.
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