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
f8f1d198
Commit
f8f1d198
authored
Oct 23, 2021
by
周晓航
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
订单调用购物车计算虚拟商品-> 设置
Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent
afd2e197
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
99 additions
and
25 deletions
+99
-25
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+1
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/BindingCouponTypeDto.java
+17
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetMenuResponseDto.java
+6
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ValidateProductInfosDto.java
+1
-10
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
+22
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/CouponMsg.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
+11
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/GetProductsVo.java
+9
-0
shopping-cart-application-service/src/main/java/cn/freemud/handle/GetActivityMsgHandle.java
+4
-6
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AdditionalPromotionService.java
+26
-8
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ItemServiceImpl.java
+1
-0
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
f8f1d198
...
...
@@ -56,6 +56,7 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto
.
setSkuId
(
goodsId
);
// fisherman 加价购商品类型设置
cartGoodsDetailDto
.
setOriginalProductType
(
getProductsVo
.
getType
());
cartGoodsDetailDto
.
setProductType
(
sendGoods
.
getProductType
());
cartGoodsDetailDto
.
setQty
(
product
.
getQty
());
cartGoodsDetailDto
.
setSpuName
(
getProductsVo
!=
null
?
getProductsVo
.
getSpuName
()
:
""
);
cartGoodsDetailDto
.
setSkuName
(
product
.
getSkuName
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/BindingCouponTypeDto.java
0 → 100644
View file @
f8f1d198
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/10/23 下午4:16
* @description :
*/
@Data
public
class
BindingCouponTypeDto
{
private
String
activityCode
;
private
String
cardId
;
private
Integer
num
;
private
String
virtualCouponCode
;
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetMenuResponseDto.java
View file @
f8f1d198
...
...
@@ -195,6 +195,12 @@ public class GetMenuResponseDto {
private
List
<
SpecificationGroupBean
>
specificationGroupList
;
//Sku 规格 如果 当前是sku 则有值
private
List
<
SkuProductBean
.
SkuSpecValue
>
skuSpecValues
;
/**
* 虚拟商品 绑定的券信息
*/
private
List
<
BindingCouponTypeDto
>
productBindingCouponTypes
;
@NoArgsConstructor
@Data
public
static
class
SkuProductBean
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ValidateProductInfosDto.java
View file @
f8f1d198
...
...
@@ -123,16 +123,7 @@ public class ValidateProductInfosDto {
/**
* 虚拟商品 绑定的券信息
*/
private
List
<
BindingCouponType
>
productBindingCouponTypes
;
@Data
@NoArgsConstructor
public
static
class
BindingCouponType
{
private
String
activityCode
;
private
String
cardId
;
private
Integer
num
;
private
String
virtualCouponCode
;
}
private
List
<
BindingCouponTypeDto
>
productBindingCouponTypes
;
@Data
public
static
class
SellTime
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
View file @
f8f1d198
...
...
@@ -363,6 +363,28 @@ public class ShoppingCartGoodsDto {
*/
private
List
<
CartGoodsDetailDto
.
MaterialGoods
>
materialList
=
new
ArrayList
<>(
0
);
/**
* 当加价购有虚拟商品 需要送券的时候 这里存放的就是 券信息 比如
* [
* {
* "num": 1,
* "activityCode": "V1634609099412143",
* "activityName": "迦勒代金券2块"
* },
* {
* "num": 1,
* "activityCode": "V1634609296167070",
* "activityName": "迦勒代金券3块"
* },
* {
* "num": 1,
* "activityCode": "V1634643280844538",
* "activityName": "迦勒代金券11块"
* }
* ]
*/
private
String
extInfo
;
@Data
public
final
static
class
CartGoodsExtra
{
/**
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/CouponMsg.java
View file @
f8f1d198
...
...
@@ -15,7 +15,7 @@ public class CouponMsg {
* 券名称
*/
@ApiModelProperty
(
value
=
"券名称"
)
private
String
n
ame
;
private
String
activityN
ame
;
/**
* 券code
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
View file @
f8f1d198
...
...
@@ -12,6 +12,7 @@
*/
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.BindingCouponTypeDto
;
import
cn.freemud.entities.dto.UserDeliveryInfoDto
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
...
...
@@ -144,6 +145,16 @@ public class CreateOrderVo {
@Data
public
static
class
Product
{
/**
* 加价购 可能会涉及 虚拟商品 类型 = 9
*/
private
Integer
productType
;
/**
* 虚拟商品 绑定的券信息
*/
private
List
<
BindingCouponTypeDto
>
productBindingCouponTypes
;
/**
* spuId 商品原始id
*/
@NotNull
(
message
=
"spuId不能为空"
)
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/GetProductsVo.java
View file @
f8f1d198
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.BindingCouponTypeDto
;
import
cn.freemud.entities.dto.GetMenuResponseDto
;
import
lombok.Data
;
...
...
@@ -48,4 +49,11 @@ public class GetProductsVo {
private
String
defaultSpecId
;
private
String
defaultSpecName
;
private
List
<
CartGoods
.
CartGoodsExtra
>
extra
;
/**
* 虚拟商品 绑定的券信息
*/
private
List
<
BindingCouponTypeDto
>
productBindingCouponTypes
;
}
\ No newline at end of file
shopping-cart-application-service/src/main/java/cn/freemud/handle/GetActivityMsgHandle.java
View file @
f8f1d198
package
cn
.
freemud
.
handle
;
import
cn.freemud.entities.dto.
ValidateProductInfos
Dto
;
import
cn.freemud.entities.dto.
BindingCouponType
Dto
;
import
cn.freemud.entities.vo.CouponMsg
;
import
cn.freemud.entities.vo.PremiumExchangeResponseVo
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
import
com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO
;
...
...
@@ -44,12 +42,12 @@ public class GetActivityMsgHandle {
* @param partnerId
* @return
*/
public
List
<
CouponMsg
>
getCouponData
(
List
<
ValidateProductInfosDto
.
ProductBean
.
BindingCouponType
>
productBindingCoupons
,
String
partnerId
)
{
public
List
<
CouponMsg
>
getCouponData
(
List
<
BindingCouponTypeDto
>
productBindingCoupons
,
String
partnerId
)
{
List
<
CouponMsg
>
retList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
productBindingCoupons
))
{
// 处理 券数据 这里链路有问题 效率有点低, 后续需要优化
List
<
String
>
activityCodes
=
productBindingCoupons
.
stream
()
.
map
(
ValidateProductInfosDto
.
ProductBean
.
BindingCouponType
::
getActivityCode
)
.
map
(
BindingCouponTypeDto
:
:
getActivityCode
)
.
collect
(
Collectors
.
toList
());
List
<
ActiveDetailVO
>
activeDetailVOS
=
this
.
batchQueryActivityInfo
(
activityCodes
,
partnerId
);
if
(
CollectionUtils
.
isNotEmpty
(
activeDetailVOS
))
{
...
...
@@ -60,7 +58,7 @@ public class GetActivityMsgHandle {
ActiveDetailVO
activeDetailVO
=
collect
.
get
(
coupon
.
getActivityCode
());
msg
.
setActivityCode
(
coupon
.
getActivityCode
());
msg
.
setNum
(
coupon
.
getNum
());
msg
.
setName
(
activeDetailVO
.
getActiveName
());
msg
.
set
Activity
Name
(
activeDetailVO
.
getActiveName
());
});
}
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AdditionalPromotionService.java
View file @
f8f1d198
...
...
@@ -2,6 +2,7 @@ package cn.freemud.service.impl;
import
cn.freemud.adapter.ShoppingCartConvertAdapter
;
import
cn.freemud.constant.ShoppingCartConstant
;
import
cn.freemud.entities.dto.GetMenuResponseDto
;
import
cn.freemud.entities.dto.UserLoginInfoDto
;
import
cn.freemud.entities.dto.activity.ActivityDiscountsDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
...
...
@@ -10,9 +11,12 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.handle.GetActivityMsgHandle
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.IPromotionService
;
import
cn.freemud.service.ItemService
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum
;
import
com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO
;
import
com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
...
...
@@ -52,7 +56,8 @@ public class AdditionalPromotionService implements IPromotionService {
private
AssortmentSdkService
assortmentSdkService
;
@Autowired
private
ShoppingCartBaseServiceImpl
shoppingCartBaseService
;
@Autowired
private
GetActivityMsgHandle
getActivityMsgHandle
;
@Override
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityQueryDto
activityQueryDto
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
UserLoginInfoDto
userLoginInfoDto
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
if
(
shoppingCartInfoRequestVo
==
null
||
CollectionUtils
.
isEmpty
(
shoppingCartInfoRequestVo
.
getSendGoods
())
||
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getSendGoods
()))
{
...
...
@@ -97,17 +102,20 @@ public class AdditionalPromotionService implements IPromotionService {
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoods
=
shoppingCartInfoRequestVo
.
getSendGoods
();
List
<
String
>
goodsIds
=
sendGoods
.
stream
().
map
(
ShoppingCartInfoRequestVo
.
SendGoods
::
getGoodsId
).
collect
(
Collectors
.
toList
());
Map
<
String
,
ShoppingCartInfoRequestVo
.
SendGoods
>
goodQtyMap
=
sendGoods
.
stream
().
collect
(
Collectors
.
toMap
(
ShoppingCartInfoRequestVo
.
SendGoods
::
getGoodsId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
List
<
ProductBeanDTO
>
productBeanList
=
assortmentSdkService
.
getProductsInfoSdk
(
shoppingCartInfoRequestVo
.
getPartnerId
()
,
shoppingCartInfoRequestVo
.
getShopId
(),
goodsIds
,
shoppingCartInfoRequestVo
.
getMenuType
(),
shoppingCartBaseService
);
if
(
CollectionUtils
.
isEmpty
(
productBeanList
))
{
// List<ProductBeanDTO> productBeanList = assortmentSdkService.getProductsInfoSdk(shoppingCartInfoRequestVo.getPartnerId()
// , shoppingCartInfoRequestVo.getShopId(), goodsIds,shoppingCartInfoRequestVo.getMenuType(), shoppingCartBaseService);
// fisherman 剔除上面sdk的调用
List
<
GetMenuResponseDto
.
DataBean
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
>
productsInfo
=
assortmentSdkService
.
getProductsInfo
(
shoppingCartInfoRequestVo
.
getPartnerId
()
,
shoppingCartInfoRequestVo
.
getShopId
(),
goodsIds
,
shoppingCartInfoRequestVo
.
getMenuType
(),
shoppingCartBaseService
);
if
(
CollectionUtils
.
isEmpty
(
productsInfo
))
{
throw
new
ServiceException
(
ResponseResult
.
PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST
);
}
return
product
BeanList
.
stream
().
map
(
productBean
->
{
return
product
sInfo
.
stream
().
map
(
productBean
->
{
CreateOrderVo
.
PremiumExchangeActivity
.
Product
product
=
new
CreateOrderVo
.
PremiumExchangeActivity
.
Product
();
List
<
ProductBeanDTO
.
SkuProductBean
>
skuList
=
productBean
.
getSkuList
();
List
<
GetMenuResponseDto
.
DataBean
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
.
SkuProductBean
>
skuList
=
productBean
.
getSkuList
();
List
<
String
>
skuIds
=
null
;
if
(
null
!=
skuList
)
{
skuIds
=
skuList
.
stream
().
map
(
ProductBeanDTO
.
SkuProductBean
::
getSkuId
).
collect
(
Collectors
.
toList
());
skuIds
=
skuList
.
stream
().
map
(
GetMenuResponseDto
.
DataBean
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
.
SkuProductBean
::
getSkuId
).
collect
(
Collectors
.
toList
());
}
if
(!
CollectionUtils
.
isEmpty
(
skuIds
))
{
for
(
String
skuId
:
skuIds
)
{
...
...
@@ -117,6 +125,8 @@ public class AdditionalPromotionService implements IPromotionService {
product
.
setSpuId
(
productBean
.
getPid
());
product
.
setSkuId
(
sendGood
.
getGoodsId
());
product
.
setStatus
(
productBean
.
getStatus
());
product
.
setProductType
(
sendGood
.
getProductType
());
product
.
setProductBindingCouponTypes
(
productBean
.
getProductBindingCouponTypes
());
break
;
}
}
...
...
@@ -127,6 +137,8 @@ public class AdditionalPromotionService implements IPromotionService {
product
.
setSpuId
(
sendGood
.
getGoodsId
());
product
.
setSkuId
(
sendGood
.
getGoodsId
());
product
.
setStatus
(
productBean
.
getStatus
());
product
.
setProductType
(
sendGood
.
getProductType
());
product
.
setProductBindingCouponTypes
(
productBean
.
getProductBindingCouponTypes
());
}
}
return
product
;
...
...
@@ -213,7 +225,6 @@ public class AdditionalPromotionService implements IPromotionService {
Long
totalDiscountAmount
=
shoppingCartGoodsResponseVo
.
getTotalDiscountAmount
();
//加价换购活动总优惠
Long
currenttotalDiscountAmount
=
0L
;
//购物车中添加加价购商品,并计算购物车总优惠价格
for
(
CreateOrderVo
.
PremiumExchangeActivity
.
Product
product
:
additionalProducts
)
{
String
goodsId
=
StringUtils
.
isEmpty
(
product
.
getSkuId
())
?
product
.
getSpuId
()
:
product
.
getSkuId
();
GetProductsVo
getProductsVo
=
getProductsVoMap
.
get
(
goodsId
);
...
...
@@ -223,6 +234,13 @@ public class AdditionalPromotionService implements IPromotionService {
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
=
sendGoodsMap
.
get
(
goodsId
);
//1.向购物车中添加商品
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
=
shoppingCartConvertAdapter
.
getCartGoodsDetailDto
(
product
,
getProductsVo
,
goodsId
,
sendGoods
);
// fisherman 结算页 如果是虚拟商品 需要设置 到 extinfo里面注意
if
(
cartGoodsDetailDto
.
getProductType
().
compareTo
(
ProductTypeEnum
.
VIRTUAL_PRODUCT
.
getCode
())
==
0
)
{
List
<
CouponMsg
>
couponData
=
getActivityMsgHandle
.
getCouponData
(
getProductsVo
.
getProductBindingCouponTypes
(),
shoppingCartInfoRequestVo
.
getPartnerId
());
if
(
CollectionUtils
.
isNotEmpty
(
couponData
))
{
cartGoodsDetailDto
.
setExtInfo
(
JSON
.
toJSONString
(
couponData
));
}
}
cartGoodsDetailDtoList
.
add
(
cartGoodsDetailDto
);
//2.计算优惠价格
originalTotalAmount
+=
getProductsVo
.
getFinalPrice
();
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ItemServiceImpl.java
View file @
f8f1d198
...
...
@@ -169,6 +169,7 @@ public class ItemServiceImpl implements ItemService {
getProductsVo
.
setCustomerCode
(
productBean
.
getCustomerCode
());
getProductsVo
.
setCategory
(
productBean
.
getCategory
());
getProductsVo
.
setCategoryName
(
productBean
.
getCategoryName
());
getProductsVo
.
setProductBindingCouponTypes
(
productBean
.
getProductBindingCouponTypes
());
resultMap
.
put
(
productBean
.
getPid
(),
getProductsVo
);
getProductsVo
.
setType
(
1
);
// 规格ID 剔除单品
...
...
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