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
1c4d9c94
Commit
1c4d9c94
authored
Mar 29, 2021
by
ping.wu
Browse files
Options
Browse Files
Download
Plain Diff
合并购物车新加价购接口
parents
4b9da346
5381d1e1
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1289 additions
and
27 deletions
+1289
-27
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ActivityAdapter.java
+87
-5
shopping-cart-application-service/src/main/java/cn/freemud/adapter/StoreItemAdapter.java
+87
-15
shopping-cart-application-service/src/main/java/cn/freemud/controller/ShoppingCartController.java
+8
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
+1
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetValidateProductInfoDto.java
+55
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ValidateProductInfosDto.java
+492
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/calculate/CalculationSharingDiscountResponseDto.java
+1
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/PremiumExchangeRequestVo.java
+15
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/PremiumExchangeResponseVo.java
+317
-2
shopping-cart-application-service/src/main/java/cn/freemud/enums/ActivityResultCodeEnum.java
+5
-0
shopping-cart-application-service/src/main/java/cn/freemud/enums/CProductType.java
+46
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
+8
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+162
-4
shopping-cart-application-service/src/main/java/cn/freemud/service/thirdparty/StoreItemClient.java
+5
-1
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ActivityAdapter.java
View file @
1c4d9c94
...
@@ -15,6 +15,7 @@ package cn.freemud.adapter;
...
@@ -15,6 +15,7 @@ package cn.freemud.adapter;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto
;
import
cn.freemud.entities.dto.order.CreateOrderDto
;
import
cn.freemud.entities.dto.order.CreateOrderDto
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.PremiumExchangeResponseVo
;
import
cn.freemud.entities.vo.PremiumExchangeResponseVo
;
...
@@ -102,16 +103,36 @@ public class ActivityAdapter {
...
@@ -102,16 +103,36 @@ public class ActivityAdapter {
return
result
;
return
result
;
}
}
public
PremiumExchangeResponseVo
convert2PremiumExchange
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
)
{
public
PremiumExchangeResponseVo
convert2PremiumExchange
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
)
{
if
(
sendActivity
==
null
)
{
// 返回构造对象
return
null
;
}
PremiumExchangeResponseVo
premiumExchangeResponseVo
=
new
PremiumExchangeResponseVo
();
PremiumExchangeResponseVo
premiumExchangeResponseVo
=
new
PremiumExchangeResponseVo
();
// 组装验证商品对象
List
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
products
=
new
ArrayList
<>();
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
NON_PARTICIPATE
.
getCode
());
if
(
calculationDiscountResult
==
null
)
{
return
premiumExchangeResponseVo
;
}
// 只取最新活动
if
(
calculationDiscountResult
!=
null
&&
CollectionUtils
.
isNotEmpty
(
calculationDiscountResult
.
getSendGoods
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
calculationDiscountResult
.
getDiscounts
()))
{
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
>
discountList
=
calculationDiscountResult
.
getDiscounts
();
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
discount
:
discountList
)
{
if
(
Objects
.
equals
(
discount
.
getType
(),
ActivityTypeEnum
.
TYPE_81
.
getCode
()))
{
Integer
showType
=
discount
.
getIntegral
()
==
null
?
0
:
discount
.
getIntegral
();
premiumExchangeResponseVo
.
setShowType
(
showType
);
}
}
}
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
:
calculationDiscountResult
.
getSendGoods
())
{
if
(
Objects
.
equals
(
sendActivity
.
getActivityType
(),
ActivityTypeEnum
.
TYPE_81
.
getCode
()))
{
// 判断加价购活动商品不存在直接跳出循环
if
(
CollectionUtils
.
isEmpty
(
sendActivity
.
getSendGoods
()))
{
break
;
}
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
PARTICIPATE
.
getCode
());
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
PARTICIPATE
.
getCode
());
premiumExchangeResponseVo
.
setActivityCode
(
sendActivity
.
getActivityCode
());
premiumExchangeResponseVo
.
setActivityCode
(
sendActivity
.
getActivityCode
());
premiumExchangeResponseVo
.
setActivityName
(
sendActivity
.
getActivityName
());
premiumExchangeResponseVo
.
setActivityName
(
sendActivity
.
getActivityName
());
premiumExchangeResponseVo
.
setMaxNum
(
sendActivity
.
getMaxNum
());
premiumExchangeResponseVo
.
setMaxNum
(
sendActivity
.
getMaxNum
());
List
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
products
=
new
ArrayList
<>();
sendActivity
.
getSendGoods
().
forEach
(
sendGoods
->
{
sendActivity
.
getSendGoods
().
forEach
(
sendGoods
->
{
PremiumExchangeResponseVo
.
PremiumExchangeProduct
product
=
new
PremiumExchangeResponseVo
.
PremiumExchangeProduct
();
PremiumExchangeResponseVo
.
PremiumExchangeProduct
product
=
new
PremiumExchangeResponseVo
.
PremiumExchangeProduct
();
product
.
setSpuId
(
sendGoods
.
getCategory
());
product
.
setSpuId
(
sendGoods
.
getCategory
());
...
@@ -122,6 +143,15 @@ public class ActivityAdapter {
...
@@ -122,6 +143,15 @@ public class ActivityAdapter {
product
.
setNumber
(
sendGoods
.
getSendNumber
());
product
.
setNumber
(
sendGoods
.
getSendNumber
());
products
.
add
(
product
);
products
.
add
(
product
);
});
});
break
;
}
}
}
if
(
CollectionUtils
.
isEmpty
(
products
)){
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
NO_ACTIVITY
.
getCode
());
premiumExchangeResponseVo
.
setResultMsg
(
ActivityResultCodeEnum
.
NO_ACTIVITY
.
getDesc
());
return
premiumExchangeResponseVo
;
}
premiumExchangeResponseVo
.
setProducts
(
products
);
premiumExchangeResponseVo
.
setProducts
(
products
);
return
premiumExchangeResponseVo
;
return
premiumExchangeResponseVo
;
}
}
...
@@ -254,4 +284,56 @@ public class ActivityAdapter {
...
@@ -254,4 +284,56 @@ public class ActivityAdapter {
public
PremiumExchangeResponseVo
convert2PremiumExchangeSharing
(
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
discountResult
)
{
// 返回构造对象
PremiumExchangeResponseVo
premiumExchangeResponseVo
=
new
PremiumExchangeResponseVo
();
// 组装验证商品对象
List
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
products
=
new
ArrayList
<>();
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
NON_PARTICIPATE
.
getCode
());
if
(
discountResult
==
null
)
{
return
premiumExchangeResponseVo
;
}
// 只取最新活动
if
(
discountResult
!=
null
&&
CollectionUtils
.
isNotEmpty
(
discountResult
.
getSendGoods
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
discountResult
.
getDiscounts
()))
{
List
<
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
.
Discount
>
discountList
=
discountResult
.
getDiscounts
();
for
(
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
.
Discount
discount
:
discountList
)
{
if
(
Objects
.
equals
(
discount
.
getType
(),
ActivityTypeEnum
.
TYPE_81
.
getCode
()))
{
Integer
showType
=
discount
.
getIntegral
()
==
null
?
0
:
discount
.
getIntegral
();
premiumExchangeResponseVo
.
setShowType
(
showType
);
}
}
}
for
(
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
:
discountResult
.
getSendGoods
())
{
if
(
Objects
.
equals
(
sendActivity
.
getActivityType
(),
ActivityTypeEnum
.
TYPE_81
.
getCode
()))
{
// 判断加价购活动商品不存在直接跳出循环
if
(
CollectionUtils
.
isEmpty
(
sendActivity
.
getSendGoods
()))
{
break
;
}
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
PARTICIPATE
.
getCode
());
premiumExchangeResponseVo
.
setActivityCode
(
sendActivity
.
getActivityCode
());
premiumExchangeResponseVo
.
setActivityName
(
sendActivity
.
getActivityName
());
premiumExchangeResponseVo
.
setMaxNum
(
sendActivity
.
getMaxNum
());
sendActivity
.
getSendGoods
().
forEach
(
sendGoods
->
{
PremiumExchangeResponseVo
.
PremiumExchangeProduct
product
=
new
PremiumExchangeResponseVo
.
PremiumExchangeProduct
();
product
.
setSpuId
(
sendGoods
.
getCategory
());
product
.
setSkuId
(
sendGoods
.
getGoodsId
());
product
.
setSkuName
(
sendGoods
.
getGoodsName
());
product
.
setOriginalPrice
(
sendGoods
.
getOriginalPrice
());
product
.
setNowPrice
(
sendGoods
.
getNowPrice
());
product
.
setNumber
(
sendGoods
.
getSendNumber
());
products
.
add
(
product
);
});
break
;
}
}
}
if
(
CollectionUtils
.
isEmpty
(
products
)){
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
NO_ACTIVITY
.
getCode
());
premiumExchangeResponseVo
.
setResultMsg
(
ActivityResultCodeEnum
.
NO_ACTIVITY
.
getDesc
());
return
premiumExchangeResponseVo
;
}
premiumExchangeResponseVo
.
setProducts
(
products
);
return
premiumExchangeResponseVo
;
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/adapter/StoreItemAdapter.java
View file @
1c4d9c94
...
@@ -15,7 +15,7 @@ package cn.freemud.adapter;
...
@@ -15,7 +15,7 @@ package cn.freemud.adapter;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean
;
import
cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.
OrderSource
Type
;
import
cn.freemud.enums.
CProduct
Type
;
import
cn.freemud.enums.ProductType
;
import
cn.freemud.enums.ProductType
;
import
cn.freemud.enums.StoreItemStatus
;
import
cn.freemud.enums.StoreItemStatus
;
import
cn.freemud.utils.BeanUtil
;
import
cn.freemud.utils.BeanUtil
;
...
@@ -73,8 +73,9 @@ public class StoreItemAdapter {
...
@@ -73,8 +73,9 @@ public class StoreItemAdapter {
return
getProductValidateDto
;
return
getProductValidateDto
;
}
}
public
SpuProductVo
convert2SpuProductVo
(
GetMenuResponseDto
.
DataBean
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
productBean
)
{
public
PremiumExchangeResponseVo
.
PremiumExchangeProduct
convert2SpuProductVo
(
ValidateProductInfosDto
.
ProductBean
productBean
,
String
skuId
)
{
SpuProductVo
spuProductVo
=
BeanUtil
.
convertBean
(
productBean
,
SpuProductVo:
:
new
);
PremiumExchangeResponseVo
.
PremiumExchangeProduct
spuProductVo
=
BeanUtil
.
convertBean
(
productBean
,
PremiumExchangeResponseVo
.
PremiumExchangeProduct
::
new
);
spuProductVo
.
setDetailText
(
productBean
.
getDetailText
());
spuProductVo
.
setSpuId
(
productBean
.
getPid
());
spuProductVo
.
setSpuId
(
productBean
.
getPid
());
spuProductVo
.
setSpuName
(
productBean
.
getName
());
spuProductVo
.
setSpuName
(
productBean
.
getName
());
spuProductVo
.
setName
(
productBean
.
getName
());
spuProductVo
.
setName
(
productBean
.
getName
());
...
@@ -82,17 +83,27 @@ public class StoreItemAdapter {
...
@@ -82,17 +83,27 @@ public class StoreItemAdapter {
.
map
(
StoreItemStatus:
:
getDesc
).
orElse
(
""
));
.
map
(
StoreItemStatus:
:
getDesc
).
orElse
(
""
));
spuProductVo
.
setDefaultPrice
(
productBean
.
getFinalPrice
());
spuProductVo
.
setDefaultPrice
(
productBean
.
getFinalPrice
());
spuProductVo
.
setFinalPrice
(
productBean
.
getFinalPrice
());
spuProductVo
.
setFinalPrice
(
productBean
.
getFinalPrice
());
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getSkuList
()))
{
for
(
ValidateProductInfosDto
.
ProductBean
.
SkuProductBean
skuProductBean
:
productBean
.
getSkuList
())
{
if
(
Objects
.
equals
(
skuProductBean
.
getSkuId
(),
skuId
))
{
spuProductVo
.
setDefaultPrice
(
skuProductBean
.
getFinalPrice
());
spuProductVo
.
setFinalPrice
(
skuProductBean
.
getFinalPrice
());
break
;
}
}
}
spuProductVo
.
setOriginalPrice
(
productBean
.
getOriginalPrice
());
spuProductVo
.
setPicture
(
productBean
.
getPicture
()
+
"?imageView2/1/w/225/h/225/interlace/1/q/100"
);
spuProductVo
.
setPicture
(
productBean
.
getPicture
()
+
"?imageView2/1/w/225/h/225/interlace/1/q/100"
);
spuProductVo
.
setStockLimit
(
productBean
.
getStockLimit
());
spuProductVo
.
setStockLimit
(
productBean
.
getStockLimit
());
List
<
ProductGroupDto
>
productGroups
=
Lists
.
newArrayList
();
List
<
ProductGroupDto
>
productGroups
=
Lists
.
newArrayList
();
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getProductAttributeGroupList
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getProductAttributeGroupList
()))
{
productBean
.
getProductAttributeGroupList
().
sort
(
Comparator
.
comparing
(
ProductBean
.
ProductAttributeGroupListBean
::
getAttributeType
));
productBean
.
getProductAttributeGroupList
().
sort
(
Comparator
.
comparing
(
ValidateProductInfosDto
.
ProductBean
.
ProductAttributeGroupListBean
::
getAttributeType
));
for
(
ProductBean
.
ProductAttributeGroupListBean
attribute
:
productBean
.
getProductAttributeGroupList
())
{
for
(
ValidateProductInfosDto
.
ProductBean
.
ProductAttributeGroupListBean
attribute
:
productBean
.
getProductAttributeGroupList
())
{
ProductGroupDto
productGroupDto
=
new
ProductGroupDto
();
ProductGroupDto
productGroupDto
=
new
ProductGroupDto
();
productGroupDto
.
setName
(
attribute
.
getAttributeName
());
productGroupDto
.
setName
(
attribute
.
getAttributeName
());
List
<
ProductGroupDto
.
GroupDetailBean
>
groupDetailBeans
=
Lists
.
newArrayList
();
List
<
ProductGroupDto
.
GroupDetailBean
>
groupDetailBeans
=
Lists
.
newArrayList
();
if
(
CollectionUtils
.
isNotEmpty
(
attribute
.
getAttributeValues
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
attribute
.
getAttributeValues
()))
{
for
(
ProductBean
.
ProductAttributeGroupListBean
.
AttributeValueBean
attributeValue
:
attribute
.
getAttributeValues
())
{
for
(
ValidateProductInfosDto
.
ProductBean
.
ProductAttributeGroupListBean
.
AttributeValueBean
attributeValue
:
attribute
.
getAttributeValues
())
{
/**
/**
* 过滤下架的规格和售罄的规格
* 过滤下架的规格和售罄的规格
*/
*/
...
@@ -118,19 +129,47 @@ public class StoreItemAdapter {
...
@@ -118,19 +129,47 @@ public class StoreItemAdapter {
}
}
}
}
}
}
// //设置是否包括多规格
// if (CollectionUtils.isNotEmpty(productBean.getProductAttributeGroupList()) || ProductType.HAVESPEC.getCode() == productBean.getType()) {
// spuProductVo.setType(8);
// spuProductVo.setHasSku(true);
// } else {
// spuProductVo.setHasSku(false);
// }
//设置是否包括多规格
//设置是否包括多规格
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getProductAttributeGroupList
())
||
ProductType
.
HAVESPEC
.
getCode
()
==
productBean
.
getType
())
{
if
(
ProductType
.
HAVESPEC
.
getCode
()
==
productBean
.
getType
())
{
spuProductVo
.
setType
(
ProductType
.
HAVESPEC
.
getCode
());
spuProductVo
.
setHasSku
(
true
);
}
else
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getProductAttributeGroupList
())){
//单规格,多属性
spuProductVo
.
setType
(
8
);
spuProductVo
.
setType
(
8
);
spuProductVo
.
setHasSku
(
true
);
spuProductVo
.
setHasSku
(
true
);
}
else
{
}
else
{
spuProductVo
.
setHasSku
(
false
);
spuProductVo
.
setHasSku
(
false
);
}
}
//设置是否包括多规格
if
(
ProductType
.
NOSPEC
.
getCode
()
==
productBean
.
getType
()
&&
CollectionUtils
.
isEmpty
(
productBean
.
getProductAttributeGroupList
()))
{
//单品无属性
spuProductVo
.
setProductType
(
CProductType
.
PRODUCT_TYPE_1
.
getCode
());
}
else
if
(
ProductType
.
NOSPEC
.
getCode
()
==
productBean
.
getType
()
&&
!
CollectionUtils
.
isEmpty
(
productBean
.
getProductAttributeGroupList
()))
{
//单品有属性
spuProductVo
.
setProductType
(
CProductType
.
PRODUCT_TYPE_2
.
getCode
());
}
else
if
(
ProductType
.
HAVESPEC
.
getCode
()
==
productBean
.
getType
()
&&
CollectionUtils
.
isEmpty
(
productBean
.
getProductAttributeGroupList
()))
{
//多规格有属性
spuProductVo
.
setProductType
(
CProductType
.
PRODUCT_TYPE_8
.
getCode
());
}
else
if
(
ProductType
.
HAVESPEC
.
getCode
()
==
productBean
.
getType
()
&&
!
CollectionUtils
.
isEmpty
(
productBean
.
getProductAttributeGroupList
()))
{
//多规格无属性
spuProductVo
.
setProductType
(
CProductType
.
PRODUCT_TYPE_10
.
getCode
());
}
else
if
(
ProductType
.
SETMEAL_UPPRICE_PRODUCT
.
getCode
()
==
productBean
.
getType
())
{
//套餐
spuProductVo
.
setProductType
(
CProductType
.
PRODUCT_TYPE_7
.
getCode
());
}
//TODO sku信息
//TODO sku信息
Set
<
String
>
skuSpecValueIds
=
Sets
.
newHashSet
();
Set
<
String
>
skuSpecValueIds
=
Sets
.
newHashSet
();
List
<
SpuProductVo
.
SkuProductVo
>
skuList
=
Lists
.
newArrayList
();
List
<
SpuProductVo
.
SkuProductVo
>
skuList
=
Lists
.
newArrayList
();
List
<
ProductBean
.
SkuProductBean
>
skuProductBeans
=
productBean
.
getSkuList
();
List
<
ValidateProductInfosDto
.
ProductBean
.
SkuProductBean
>
skuProductBeans
=
productBean
.
getSkuList
();
if
(
CollectionUtils
.
isNotEmpty
(
skuProductBeans
))
{
if
(
CollectionUtils
.
isNotEmpty
(
skuProductBeans
))
{
for
(
ProductBean
.
SkuProductBean
skuProductBean
:
skuProductBeans
)
{
for
(
ValidateProductInfosDto
.
ProductBean
.
SkuProductBean
skuProductBean
:
skuProductBeans
)
{
/**
/**
* 过滤下架的规格
* 过滤下架的规格
*/
*/
...
@@ -143,7 +182,7 @@ public class StoreItemAdapter {
...
@@ -143,7 +182,7 @@ public class StoreItemAdapter {
skuProductVo
.
setStatus
(
skuProductBean
.
getStatus
());
skuProductVo
.
setStatus
(
skuProductBean
.
getStatus
());
skuProductVo
.
setStatusDesc
(
Optional
.
ofNullable
(
StoreItemStatus
.
getByCode
(
skuProductBean
.
getStatus
())).
map
(
StoreItemStatus:
:
getDesc
).
orElse
(
""
));
skuProductVo
.
setStatusDesc
(
Optional
.
ofNullable
(
StoreItemStatus
.
getByCode
(
skuProductBean
.
getStatus
())).
map
(
StoreItemStatus:
:
getDesc
).
orElse
(
""
));
// skuProductVo.setStatus(skuProductBean());
// skuProductVo.setStatus(skuProductBean());
List
<
ProductBean
.
SkuProductBean
.
SkuSpecValue
>
skuSpecValueDtos
=
skuProductBean
.
getSkuSpecValues
();
List
<
ValidateProductInfosDto
.
ProductBean
.
SkuProductBean
.
SkuSpecValue
>
skuSpecValueDtos
=
skuProductBean
.
getSkuSpecValues
();
List
<
String
>
specValueIdList
=
Lists
.
newArrayList
();
List
<
String
>
specValueIdList
=
Lists
.
newArrayList
();
if
(
CollectionUtils
.
isNotEmpty
(
skuSpecValueDtos
))
{
if
(
CollectionUtils
.
isNotEmpty
(
skuSpecValueDtos
))
{
skuSpecValueDtos
.
forEach
(
skuSpecValueDto
->
{
skuSpecValueDtos
.
forEach
(
skuSpecValueDto
->
{
...
@@ -159,9 +198,10 @@ public class StoreItemAdapter {
...
@@ -159,9 +198,10 @@ public class StoreItemAdapter {
}
}
}
}
//TODO 多规格信息
//TODO 多规格信息
List
<
ProductBean
.
SpecificationGroupBean
>
specificationGroupList
=
productBean
.
getSpecificationGroupList
();
List
<
ValidateProductInfosDto
.
ProductBean
.
SpecificationGroupBean
>
specificationGroupList
=
productBean
.
getSpecificationGroupList
();
//规格处理
//规格处理
List
<
SpuProductVo
.
SpecificationGroupVo
>
specificationGroupVos
=
redundantSpecification
(
skuSpecValueIds
,
specificationGroupList
);
List
<
SpuProductVo
.
SpecificationGroupVo
>
specificationGroupVos
=
redundantSpecification
(
skuSpecValueIds
,
specificationGroupList
);
addDefaultAttribute
(
specificationGroupVos
,
skuList
);
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getProductPictureList
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getProductPictureList
()))
{
spuProductVo
.
setPicture
(
productBean
.
getProductPictureList
().
get
(
0
).
getUrl
()
+
"?imageView2/1/w/225/h/225/interlace/1/q/100"
);
spuProductVo
.
setPicture
(
productBean
.
getProductPictureList
().
get
(
0
).
getUrl
()
+
"?imageView2/1/w/225/h/225/interlace/1/q/100"
);
...
@@ -248,7 +288,7 @@ public class StoreItemAdapter {
...
@@ -248,7 +288,7 @@ public class StoreItemAdapter {
* @param specificationGroupList sku商品的规格对象集合
* @param specificationGroupList sku商品的规格对象集合
* @return
* @return
*/
*/
public
List
<
SpuProductVo
.
SpecificationGroupVo
>
redundantSpecification
(
Set
<
String
>
skuSpecValueIds
,
List
<
ProductBean
.
SpecificationGroupBean
>
specificationGroupList
)
{
public
List
<
SpuProductVo
.
SpecificationGroupVo
>
redundantSpecification
(
Set
<
String
>
skuSpecValueIds
,
List
<
ValidateProductInfosDto
.
ProductBean
.
SpecificationGroupBean
>
specificationGroupList
)
{
//TODO 多规格信息
//TODO 多规格信息
List
<
SpuProductVo
.
SpecificationGroupVo
>
specificationGroupVos
=
Lists
.
newArrayList
();
List
<
SpuProductVo
.
SpecificationGroupVo
>
specificationGroupVos
=
Lists
.
newArrayList
();
if
(
CollectionUtils
.
isNotEmpty
(
specificationGroupList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
specificationGroupList
))
{
...
@@ -256,7 +296,7 @@ public class StoreItemAdapter {
...
@@ -256,7 +296,7 @@ public class StoreItemAdapter {
SpuProductVo
.
SpecificationGroupVo
specificationGroupVo
=
new
SpuProductVo
.
SpecificationGroupVo
();
SpuProductVo
.
SpecificationGroupVo
specificationGroupVo
=
new
SpuProductVo
.
SpecificationGroupVo
();
specificationGroupVo
.
setSpecId
(
specificationGroupBean
.
getSpecId
());
specificationGroupVo
.
setSpecId
(
specificationGroupBean
.
getSpecId
());
specificationGroupVo
.
setSpecName
(
specificationGroupBean
.
getSpecName
());
specificationGroupVo
.
setSpecName
(
specificationGroupBean
.
getSpecName
());
List
<
ProductBean
.
SpecificationGroupBean
.
SpecValueVo
>
specValueDtos
=
specificationGroupBean
.
getSpecValueVos
();
List
<
ValidateProductInfosDto
.
ProductBean
.
SpecificationGroupBean
.
SpecValueVo
>
specValueDtos
=
specificationGroupBean
.
getSpecValueVos
();
List
<
SpuProductVo
.
SpecificationGroupVo
.
SpecValueVo
>
specValueVos
=
Lists
.
newArrayList
();
List
<
SpuProductVo
.
SpecificationGroupVo
.
SpecValueVo
>
specValueVos
=
Lists
.
newArrayList
();
if
(
CollectionUtils
.
isNotEmpty
(
specValueDtos
))
{
if
(
CollectionUtils
.
isNotEmpty
(
specValueDtos
))
{
specValueDtos
.
forEach
(
specValueDto
->
{
specValueDtos
.
forEach
(
specValueDto
->
{
...
@@ -280,5 +320,37 @@ public class StoreItemAdapter {
...
@@ -280,5 +320,37 @@ public class StoreItemAdapter {
return
specificationGroupVos
;
return
specificationGroupVos
;
}
}
/**
* 默认价格,修复前端bug
* specificationGroupVos 和 skuList 排序不一致时,会出现选的价格14元,加入到购物车15元
* @param specificationGroupVos
* @param skuList
*/
private
void
addDefaultAttribute
(
List
<
SpuProductVo
.
SpecificationGroupVo
>
specificationGroupVos
,
List
<
SpuProductVo
.
SkuProductVo
>
skuList
)
{
if
(
CollectionUtils
.
isNotEmpty
(
skuList
)
&&
CollectionUtils
.
isNotEmpty
(
specificationGroupVos
))
{
List
<
String
>
specValueIds
=
new
ArrayList
<>();
for
(
SpuProductVo
.
SpecificationGroupVo
groupVo
:
specificationGroupVos
)
{
specValueIds
.
add
(
groupVo
.
getSpecValueVos
().
get
(
0
).
getSpecValueId
());
}
SpuProductVo
.
SkuProductVo
defaultSkuProductVo
=
null
;
for
(
SpuProductVo
.
SkuProductVo
sku
:
skuList
)
{
boolean
hasDefault
=
true
;
for
(
String
spc
:
sku
.
getSpecValueId
())
{
if
(!
specValueIds
.
contains
(
spc
))
{
hasDefault
=
false
;
break
;
}
}
if
(
hasDefault
)
{
defaultSkuProductVo
=
sku
;
break
;
}
}
if
(
defaultSkuProductVo
!=
null
)
{
skuList
.
remove
(
defaultSkuProductVo
);
skuList
.
add
(
0
,
defaultSkuProductVo
);
}
}
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/controller/ShoppingCartController.java
View file @
1c4d9c94
...
@@ -240,4 +240,12 @@ public class ShoppingCartController {
...
@@ -240,4 +240,12 @@ public class ShoppingCartController {
return
openStoreIappWxappConfigService
.
getOpenStoreIappWxappConfig
(
request
);
return
openStoreIappWxappConfigService
.
getOpenStoreIappWxappConfig
(
request
);
}
}
/**
* 结算页获取加价购活动商品列表
*/
@PostMapping
(
value
=
"/premiumExchange"
)
@LogIgnore
(
excludeStatusCodes
=
{
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
},
logMessage
=
"/premiumExchange"
)
public
BaseResponse
premiumExchange
(
@LogParams
@RequestBody
PremiumExchangeRequestVo
request
)
{
return
SDKCommonBaseContextWare
.
getBean
(
ShoppingCartNewServiceImpl
.
class
).
premiumExchange
(
request
);
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
View file @
1c4d9c94
...
@@ -203,6 +203,7 @@ public class ActivityCalculationDiscountResponseDto {
...
@@ -203,6 +203,7 @@ public class ActivityCalculationDiscountResponseDto {
*/
*/
private
String
cartGoodsUid
;
private
String
cartGoodsUid
;
private
Boolean
zeroDiscount
;
private
Boolean
zeroDiscount
;
private
Integer
integral
;
}
}
@Data
@Data
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/GetValidateProductInfoDto.java
0 → 100644
View file @
1c4d9c94
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: GetProductInfoDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/16 19:52
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
GetValidateProductInfoDto
{
/**
* 商户ID
*/
private
String
partnerId
;
/**
* 门店ID
*/
private
String
storeId
;
/**
* 根据spu或者sku查询所有商品信息
*/
private
List
<
String
>
productIds
;
/**
* 查询指定spu下面的制定sku信息
*/
private
List
<
ProductInfo
>
productInfoList
;
/**
* 门店商品渠道 saas(开个店自提)、saasdelivery(开个店外卖)、saasmall(微商城)、wc(围餐)、mtwm(美团外卖)、jdwm(京东外卖)、fmwd(非码微店)、eleme(饿了么外卖)、ebwm(饿百外卖)
*/
private
String
channel
;
@Data
public
static
class
ProductInfo
{
/**
* 商品spu
*/
private
String
spuId
;
/**
* 商品sku
*/
private
List
<
String
>
skuIds
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ValidateProductInfosDto.java
0 → 100644
View file @
1c4d9c94
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ProductInfosDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/28 21:11
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
dto
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@NoArgsConstructor
@Data
public
class
ValidateProductInfosDto
{
private
DataBean
data
;
private
Integer
errcode
;
private
Integer
code
;
private
String
errmsg
;
@NoArgsConstructor
@Data
public
static
class
DataBean
{
private
Integer
count
;
private
List
<
ProductData
>
failureList
;
private
List
<
ProductData
>
successList
;
}
@NoArgsConstructor
@Data
public
static
class
ProductData
{
private
ProductBean
productType
;
}
@NoArgsConstructor
@Data
public
static
class
ProductBean
{
private
String
barcode
;
private
String
brandId
;
private
String
brandName
;
private
String
category
;
private
String
categoryName
;
private
String
companyId
;
private
String
customerCode
;
/**
* 最终价格 单位分
*/
private
Long
finalPrice
;
/**
* 是否是SKU商品 1是0否
*/
private
Integer
isSkuProduct
;
private
String
name
;
/**
* 原始价格 单位分
*/
private
Long
originalPrice
;
/**
* 包装费 单位分
*/
private
Long
packPrice
;
private
String
picture
;
private
String
pid
;
private
Integer
pknumber
;
private
String
productionLocation
;
private
String
remark
;
private
Integer
saleCount
;
private
String
sellTimeName
;
private
Integer
sequence
;
private
String
sourceChannel
;
private
String
specification
;
private
Integer
status
;
private
Integer
stock
;
private
Integer
stockLimit
;
private
String
detailText
;
/**
* type=10 多规格 type=1 单规格
*/
private
int
type
;
private
String
unit
;
private
int
updateStatus
;
private
boolean
valid
;
private
int
version
;
private
List
<
ProductLabelNameListBean
>
labelNames
;
private
List
<
ProductAttributeGroupListBean
>
productAttributeGroupList
;
private
List
<
ProductPictureListBean
>
productPictureList
;
private
List
<?>
productSpecification
;
// private List<?> sellTimeList;
private
List
<?>
specificationList
;
//SKU
private
List
<
SkuProductBean
>
skuList
;
//规格信息
private
List
<
SpecificationGroupBean
>
specificationGroupList
;
//Sku 规格 如果 当前是sku 则有值
private
List
<
SkuProductBean
.
SkuSpecValue
>
skuSpecValues
;
/**
* 套餐商品固定搭配子商品列表 1.9.2
*/
private
List
<
ProductComboListBean
>
productComboList
;
/**
* 商品组表 1.9.2 套餐可选搭配
*/
private
List
<
ProductGroupListBean
>
productGroupList
;
/**
* 1.9.3.1 商品可售时间
*/
private
List
<
SellTime
>
sellTimeList
;
@Data
public
static
class
SellTime
{
private
Integer
dateStatus
;
private
String
startTime
;
private
String
endTime
;
}
private
List
<
SellTimeMonth
>
sellTimeMonthList
;
@Data
public
static
class
SellTimeMonth
{
private
Integer
dayOfMonth
;
private
String
endTime
;
private
String
startTime
;
}
@NoArgsConstructor
@Data
public
static
class
SkuProductBean
{
private
Long
finalPrice
;
private
Long
originalPrice
;
private
String
productName
;
private
Integer
productType
;
private
Integer
sequence
;
private
String
skuCode
;
private
String
skuId
;
private
Integer
status
;
//以下两个字段 1.5.4新加
private
Integer
stockLimit
;
private
Integer
stockQty
;
//sku商品包装费 1.5.4新加
private
Long
packPrice
;
private
List
<
SkuSpecValue
>
skuSpecValues
;
@NoArgsConstructor
@Data
public
static
class
SkuSpecValue
{
private
String
productId
;
private
Integer
sequence
;
private
String
specId
;
private
String
specName
;
private
String
specValue
;
private
String
specValueId
;
}
}
@NoArgsConstructor
@Data
public
static
class
SpecificationGroupBean
{
private
String
partnerId
;
private
Integer
sequence
;
private
String
specId
;
private
String
specName
;
private
List
<
SpecValueVo
>
specValueVos
;
@NoArgsConstructor
@Data
public
static
class
SpecValueVo
{
private
Integer
sequence
;
private
String
specId
;
private
String
specValue
;
private
String
specValueId
;
}
}
@NoArgsConstructor
@Data
public
static
class
ProductLabelNameListBean
{
private
String
id
;
private
String
name
;
private
String
partnerId
;
List
<?>
productList
;
private
String
storeId
;
private
String
type
;
}
@NoArgsConstructor
@Data
public
static
class
ProductAttributeGroupListBean
{
/**
* attributeName : 加料
* attributeType : 1
* attributeValues : [{"attributeValue":"","id":0,"price":0,"sequence":0,"status":0}]
*/
/**
* 属性名称
*/
private
String
attributeName
;
/**
* 属性类型
*/
private
Integer
attributeType
;
/**
* 属性详细信息
*/
private
List
<
AttributeValueBean
>
attributeValues
;
@NoArgsConstructor
@Data
public
static
class
AttributeValueBean
{
/**
* attributeValue :
* id : 0
* price : 0
* sequence : 0
* status : 0
*/
/**
* 属性值
*/
private
String
attributeId
;
private
String
attributeValue
;
/**
* 属性ID
*/
private
Long
id
;
/**
*
*/
private
Long
price
;
private
Integer
sequence
;
private
Integer
status
;
}
}
@NoArgsConstructor
@Data
public
static
class
ProductPictureListBean
{
/**
* pictureId : 107901339444445753
* productId : 107901318808470072
* sequence : 0
* type : default
* url : http://ojcpa0rpt.bkt.clouddn.com/xianfengfruit_DishPool_default_30b5f0ca-399a-4be3-9063-12a3d2622a38_1513952518.jpg
*/
private
String
pictureId
;
private
String
productId
;
private
String
sequence
;
private
String
type
;
private
String
url
;
}
@NoArgsConstructor
@Data
public
static
class
ProductComboListBean
{
/**
* upc
*/
private
String
barcode
;
/**
* 商品后台分类编码
*/
private
String
category
;
/**
* 商品后台分类
*/
private
String
categoryName
;
/**
* 第三方商品编码
*/
private
String
customerCode
;
/**
* 最终售价
*/
private
Integer
finalPrice
;
/**
* 标签列表
*/
private
List
<
ProductLabelNameListBean
>
labelNames
;
/**
* 扩展字段
*/
private
String
options
;
/**
* 标准售价
*/
private
Integer
originalPrice
;
/**
* 包装费
*/
private
Integer
packPrice
;
/**
* 商品默认图片
*/
private
String
picture
;
/**
* 商品Code
*/
private
String
productCode
;
/**
* 商品ID
*/
private
String
productId
;
/**
* 商品名称
*/
private
String
productName
;
/**
* 商品类型 /1普通商品/3组合商品/6套餐/7加价套餐/9虚拟商品/10多规格商品
*/
private
Integer
productType
;
/**
* 商品数量
*/
private
Integer
quantity
;
/**
* 排序
*/
private
Integer
sequence
;
/**
* 规格
*/
private
String
specification
;
/**
* 商品状态 /1下架/2上架/3售罄/4删除
*/
private
Integer
status
;
/**
* 是否设置库存
*/
private
Integer
stockLimit
;
/**
* 单位
*/
private
String
unit
;
}
@NoArgsConstructor
@Data
public
static
class
ProductGroupListBean
{
/**
* 创建时间
*/
private
String
createDate
;
/**
* 商品组编号,跟groupId一样确认商品组唯一的字段
*/
private
String
groupCode
;
/**
* 商品组详情集合
*/
private
List
<
ProductGroupListBean
.
GroupDetailBean
>
groupDetail
;
/**
* 商户ID
*/
private
String
linkId
;
/**
* 商品组规则-选择的最大数量
*/
private
Integer
maxNumber
;
/**
* 商品组规则-选择的最小数量
*/
private
Integer
minNumber
;
/**
* 商品组规则-是否必选
*/
private
Integer
must
;
/**
* 商品组名
*/
private
String
name
;
/**
* 扩展字段
*/
private
String
options
;
/**
* 商品组ID
*/
private
String
pgid
;
/**
* 商品组备注
*/
private
String
remark
;
/**
* 更新时间
*/
private
String
updateDate
;
@NoArgsConstructor
@Data
public
static
class
GroupDetailBean
{
/**
* upc
*/
private
String
barcode
;
/**
* 商品后台分类编码
*/
private
String
category
;
/**
* 商品后台分类
*/
private
String
categoryName
;
/**
* 第三方商品编码
*/
private
String
customerCode
;
/**
* 商品组ID
*/
private
String
groupId
;
/**
* 是否默认商品,1是0否
*/
private
Integer
isDefault
;
/**
* 标签列表
*/
private
List
<
ProductLabelNameListBean
>
labelNames
;
/**
* 加价价格
*/
private
Integer
markUpPrice
;
/**
* 扩展字段
*/
private
String
options
;
/**
* 商品默认图片
*/
private
String
picture
;
/**
* 商品Code
*/
private
String
productCode
;
/**
* 最终售价
*/
private
Integer
productFinalPrice
;
/**
* 商品ID
*/
private
String
productId
;
/**
* 商品名称
*/
private
String
productName
;
/**
* 标准售价
*/
private
Integer
productPrice
;
/**
* 商品类型 /1普通商品/3组合商品/6套餐/7加价套餐/9虚拟商品/10多规格商品
*/
private
Integer
productType
;
/**
* 排序
*/
private
Integer
sequence
;
/**
* 规格
*/
private
String
specification
;
/**
* 商品状态 /1下架/2上架/3售罄/4删除
*/
private
Integer
status
;
/**
* 是否设置库存
*/
private
Integer
stockLimit
;
/**
* 单位
*/
private
String
unit
;
}
}
}
}
\ No newline at end of file
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/calculate/CalculationSharingDiscountResponseDto.java
View file @
1c4d9c94
...
@@ -173,6 +173,7 @@ public class CalculationSharingDiscountResponseDto {
...
@@ -173,6 +173,7 @@ public class CalculationSharingDiscountResponseDto {
private
Date
endTime
;
private
Date
endTime
;
private
Boolean
zeroDiscount
;
private
Boolean
zeroDiscount
;
private
Integer
integral
;
}
}
@Data
@Data
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/PremiumExchangeRequestVo.java
View file @
1c4d9c94
package
cn
.
freemud
.
entities
.
vo
;
package
cn
.
freemud
.
entities
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
org.hibernate.validator.constraints.NotEmpty
;
...
@@ -8,27 +9,41 @@ import javax.validation.constraints.NotNull;
...
@@ -8,27 +9,41 @@ import javax.validation.constraints.NotNull;
@Data
@Data
public
class
PremiumExchangeRequestVo
{
public
class
PremiumExchangeRequestVo
{
@ApiModelProperty
(
value
=
"版本号"
,
name
=
"version"
,
example
=
"1"
,
required
=
false
)
private
String
version
;
private
String
version
;
@NotEmpty
(
message
=
"partnerId不能为空"
)
@NotEmpty
(
message
=
"partnerId不能为空"
)
@ApiModelProperty
(
value
=
"商户号"
,
name
=
"partnerId"
,
example
=
"1864"
,
required
=
true
)
private
String
partnerId
;
private
String
partnerId
;
@NotEmpty
(
message
=
"shopId不能为空"
)
@NotEmpty
(
message
=
"shopId不能为空"
)
@ApiModelProperty
(
value
=
"门店ID"
,
name
=
"shopId"
,
example
=
"007"
,
required
=
true
)
private
String
shopId
;
private
String
shopId
;
@NotEmpty
(
message
=
"用户会话sessionId不能为空"
)
@NotEmpty
(
message
=
"用户会话sessionId不能为空"
)
@ApiModelProperty
(
value
=
"sessionId"
,
name
=
"sessionId"
,
example
=
"1234"
,
required
=
true
)
private
String
sessionId
;
private
String
sessionId
;
/**
/**
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
*/
*/
@NotNull
(
message
=
"orderType 不能为空"
)
@NotNull
(
message
=
"orderType 不能为空"
)
@ApiModelProperty
(
value
=
"订单类型 1到店自取 2外卖"
,
name
=
"orderType"
,
example
=
"1"
,
required
=
true
)
private
Integer
orderType
;
private
Integer
orderType
;
@ApiModelProperty
(
value
=
"券code"
,
name
=
"couponCode"
,
example
=
"258655672617402368"
,
required
=
false
)
private
String
couponCode
;
private
String
couponCode
;
/**
/**
* 优惠券的活动code
* 优惠券的活动code
*/
*/
@ApiModelProperty
(
value
=
"优惠券的活动code"
,
name
=
"activityCode"
,
example
=
"258655672617402368"
,
required
=
false
)
private
String
activityCode
;
private
String
activityCode
;
/**
* 菜单类型 saas(开个店自提)、saasdelivery(开个店外卖)
*/
@ApiModelProperty
(
value
=
"菜单类型 saas(开个店自提)、saasdelivery(开个店外卖)"
,
name
=
"menuType"
,
example
=
"saas"
,
required
=
false
)
@NotNull
(
message
=
"menuType 不能为空"
)
private
String
menuType
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/PremiumExchangeResponseVo.java
View file @
1c4d9c94
package
cn
.
freemud
.
entities
.
vo
;
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductAttributeGroupListBean
;
import
cn.freemud.entities.dto.ProductGroupDto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.List
;
...
@@ -10,47 +12,360 @@ public class PremiumExchangeResponseVo {
...
@@ -10,47 +12,360 @@ public class PremiumExchangeResponseVo {
/**
/**
* 0-不需要参加活动,1-参加活动
* 0-不需要参加活动,1-参加活动
*/
*/
@ApiModelProperty
(
value
=
"0-不需要参加活动,1-参加活动"
)
private
Integer
resultCode
;
private
Integer
resultCode
;
@ApiModelProperty
(
value
=
"resultMsg"
)
private
String
resultMsg
;
/**
/**
* 每个订单最大商品数量
* 每个订单最大商品数量
*/
*/
@ApiModelProperty
(
value
=
"每个订单最大商品数量"
)
private
Integer
maxNum
;
private
Integer
maxNum
;
/**
/**
* 活动code
* 活动code
*/
*/
@ApiModelProperty
(
value
=
"活动code"
)
private
String
activityCode
;
private
String
activityCode
;
/**
/**
* 活动名称
* 活动名称
*/
*/
@ApiModelProperty
(
value
=
"活动名称"
)
private
String
activityName
;
private
String
activityName
;
/**
* 展示形式 0:订单结算页嵌入 5:订单结算页弹窗
*/
private
Integer
showType
;
List
<
PremiumExchangeProduct
>
products
;
List
<
PremiumExchangeProduct
>
products
;
@Data
@Data
public
static
class
PremiumExchangeProduct
{
public
static
class
PremiumExchangeProduct
{
@ApiModelProperty
(
value
=
"spuId"
)
private
String
spuId
;
private
String
spuId
;
@ApiModelProperty
(
value
=
"skuId"
)
private
String
skuId
;
private
String
skuId
;
@ApiModelProperty
(
value
=
"skuName"
)
private
String
skuName
;
private
String
skuName
;
/**
/**
* 商品原价(分) /activity/query入参
* 商品原价(分) /activity/query入参
*/
*/
@ApiModelProperty
(
value
=
"商品原价(分) /activity/query入参"
)
private
Long
originalPrice
;
private
Long
originalPrice
;
/**
/**
* 现价(分)
* 现价(分)
*/
*/
@ApiModelProperty
(
value
=
"现价(分)"
)
private
Long
nowPrice
;
private
Long
nowPrice
;
/**
/**
* 单品限购
* 单品限购
*/
*/
@ApiModelProperty
(
value
=
"单品限购"
)
private
Integer
number
;
private
Integer
number
;
/**
/**
* 图片
* 图片
*/
*/
@ApiModelProperty
(
value
=
"图片"
)
private
String
picture
;
private
String
picture
;
List
<
ProductAttributeGroupListBean
>
productAttributeGroupList
;
/**
* 商品ID
*/
@ApiModelProperty
(
value
=
"商品ID"
)
private
String
pid
;
/**
* spu商品名称
*/
@ApiModelProperty
(
value
=
"spu商品名称"
)
private
String
spuName
;
/**
* 商品名称
*/
@ApiModelProperty
(
value
=
"商品名称"
)
private
String
name
;
/**
* 默认spu销售价
*/
@ApiModelProperty
(
value
=
"默认spu销售价"
)
private
Long
defaultPrice
;
/**
* 最终价格
*/
@ApiModelProperty
(
value
=
"最终价格"
)
private
Long
finalPrice
;
/**
* 商品货号
*/
@ApiModelProperty
(
value
=
"商品货号"
)
private
String
artNo
;
/**
* 属性信息
*/
@ApiModelProperty
(
value
=
"属性信息"
)
List
<
ProductGroupDto
>
productGroups
;
/**
* SKU信息
*/
@ApiModelProperty
(
value
=
"SKU信息"
)
private
List
<
SpuProductVo
.
SkuProductVo
>
skuList
;
/**
* 商品规格信息
*/
@ApiModelProperty
(
value
=
"商品规格信息"
)
private
List
<
SpuProductVo
.
SpecificationGroupVo
>
specificationGroupList
;
/**
* 商品标签信息
*/
@ApiModelProperty
(
value
=
"商品标签信息"
)
List
<
SpuProductVo
.
ProductLabel
>
productLabels
;
/**
* 折扣标签
*/
@ApiModelProperty
(
value
=
"折扣标签"
)
List
<
ProductDiscountLabel
>
productDiscountLabels
;
/**
* 该字段为老版本小程序使用商品类型,需要兼容hasSKU一起使用,不能修改,1.9.2商品套餐之后使用新版本类型字段
* 商品类型 1=普通商品,2=附加商品,3=组合商品,4=固定套餐,5=组合套餐
*/
@ApiModelProperty
(
value
=
"该字段为老版本小程序使用商品类型,需要兼容hasSKU一起使用,不能修改,1.9.2商品套餐之后使用新版本类型字段 商品类型 1=普通商品,2=附加商品,3=组合商品,4=固定套餐,5=组合套餐"
)
private
Integer
type
;
/**
* 1.9.2商品套餐新增商品类型 后续C端小程序使用该字段获取商品类型
* 1:单品无属性
* 2:单品有属性
* 7:套餐
* 8:多规格有属性
* 10:多规格无属性
*/
@ApiModelProperty
(
value
=
"1.9.2商品套餐新增商品类型 后续C端小程序使用该字段获取商品类型 1:单品无属性 \n"
+
"2:单品有属性 \n"
+
"7:套餐 \n"
+
"8:多规格有属性 \n"
+
"10:多规格无属性"
)
private
Integer
productType
;
/**
* 描述
*/
@ApiModelProperty
(
value
=
"描述"
)
private
String
specification
;
/**
* 备注
*/
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
/**
* 商品排序
*/
@ApiModelProperty
(
value
=
"商品排序"
)
private
int
sequence
;
/**
* 商品数量
*/
@ApiModelProperty
(
value
=
"商品数量"
)
private
Integer
qty
;
/**
* 商品状态 1 下架 2 上架 3 售罄 ,已卖光
*/
@ApiModelProperty
(
value
=
"商品状态 1 下架 2 上架 3 售罄 ,已卖光"
)
private
Integer
status
;
/**
* 状态描述
*/
@ApiModelProperty
(
value
=
"状态描述"
)
private
String
statusDesc
;
/**
* 是否有规格信息
*/
@ApiModelProperty
(
value
=
"是否有规格信息"
)
private
boolean
hasSku
;
/**
* 腾讯商品推荐id
*/
@ApiModelProperty
(
value
=
"腾讯商品推荐id"
)
private
String
traceId
;
/**
* 是否有折扣信息
*/
@ApiModelProperty
(
value
=
"是否有折扣信息"
)
private
boolean
hasDiscount
;
/**
* 每笔订单限制购买数量
*/
@ApiModelProperty
(
value
=
"每笔订单限制购买数量"
)
private
Integer
limitPerOrder
;
/**
* 折扣信息描述
*/
@ApiModelProperty
(
value
=
"折扣信息描述"
)
private
String
discountDesc
;
/**
* 商品券生效开始时间
*/
@ApiModelProperty
(
value
=
"商品券生效开始时间"
)
private
String
startDate
;
/**
* 商品券生效截止时间
*/
@ApiModelProperty
(
value
=
"商品券生效截止时间"
)
private
String
endDate
;
@ApiModelProperty
(
value
=
"stockLimit"
)
private
Integer
stockLimit
;
/**
* 1.5.5版本添加
* 商品参与活动类型(61:买一赠一)
*/
@ApiModelProperty
(
value
=
"1.5.5版本添加\n"
+
"商品参与活动类型(61:买一赠一)"
)
private
Integer
activityType
;
/**
* 1.5.5版本添加
* 商品参与活动名称
*/
@ApiModelProperty
(
value
=
"1.5.5版本添加\n"
+
"商品参与活动名称"
)
private
String
activityName
;
/**
* 商品描述信息
*/
@ApiModelProperty
(
value
=
"商品描述信息"
)
private
String
detailText
;
/**
* 活动商品描述
*/
@ApiModelProperty
(
value
=
"活动商品描述"
)
private
String
goodsDesc
;
@Data
@NoArgsConstructor
public
static
class
ProductLabel
{
/**
* 标签名称
*/
@ApiModelProperty
(
value
=
"标签名称"
)
private
String
labelName
;
}
@Data
@NoArgsConstructor
public
static
class
ProductDiscountLabel
{
/**
* 标签名称
*/
@ApiModelProperty
(
value
=
"标签名称"
)
private
String
labelName
;
/**
* 标签类型 1:折扣标签 2:限购标签
*/
@ApiModelProperty
(
value
=
"标签类型 1:折扣标签 2:限购标签"
)
private
Integer
labelType
;
}
@NoArgsConstructor
@Data
public
static
class
SkuProductVo
{
/**
* sku id
*/
@ApiModelProperty
(
value
=
"sku id"
)
private
String
skuId
;
/**
* sku 名称
*/
@ApiModelProperty
(
value
=
"sku 名称"
)
private
String
skuName
;
/**
* 最终价格
*/
@ApiModelProperty
(
value
=
"最终价格"
)
private
Long
finalPrice
;
/**
* 市场价
*/
@ApiModelProperty
(
value
=
"市场价"
)
private
Long
originalPrice
;
/**
* sku 状态
*/
@ApiModelProperty
(
value
=
"sku 状态"
)
private
Integer
status
;
/**
* 状态描述
*/
@ApiModelProperty
(
value
=
"状态描述"
)
private
String
statusDesc
;
/**
* 规格id
*/
@ApiModelProperty
(
value
=
"规格id"
)
private
String
[]
specValueId
;
/**
* 活动类型
*/
@ApiModelProperty
(
value
=
"活动类型"
)
private
Integer
activityType
;
/**
* 活动名称
*/
@ApiModelProperty
(
value
=
"活动名称"
)
private
String
activityName
;
}
@NoArgsConstructor
@Data
public
static
class
SpecificationGroupVo
{
/**
* 规格名称 杯型 ,加料
*/
@ApiModelProperty
(
value
=
"规格名称 杯型 ,加料"
)
private
String
specName
;
/**
* 规格id 1001
*/
@ApiModelProperty
(
value
=
"规格id 1001"
)
private
String
specId
;
/**
* 规格信息
*/
@ApiModelProperty
(
value
=
"规格信息"
)
private
List
<
SpuProductVo
.
SpecificationGroupVo
.
SpecValueVo
>
specValueVos
;
@NoArgsConstructor
@Data
public
static
class
SpecValueVo
{
/**
* 规格id 1001
*/
@ApiModelProperty
(
value
=
"规格id 1001"
)
private
String
specId
;
/**
* 规格值 id 100100
*/
@ApiModelProperty
(
value
=
"规格值 id 100100"
)
private
String
specValueId
;
/**
* 规格值名称 大杯,小杯
*/
@ApiModelProperty
(
value
=
"规格值名称 大杯,小杯"
)
private
String
specValueName
;
}
}
}
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/enums/ActivityResultCodeEnum.java
View file @
1c4d9c94
...
@@ -16,6 +16,11 @@ public enum ActivityResultCodeEnum {
...
@@ -16,6 +16,11 @@ public enum ActivityResultCodeEnum {
//0:不参加 1:参加
//0:不参加 1:参加
NON_PARTICIPATE
(
0
,
"不需要参加活动"
),
NON_PARTICIPATE
(
0
,
"不需要参加活动"
),
PARTICIPATE
(
1
,
"参加活动"
),
PARTICIPATE
(
1
,
"参加活动"
),
GOODFILTER
(
2
,
"商品状态已变化"
),
GOOD_NOT_IN_MUNU
(
3
,
"商品不在菜单"
),
GOOD_NOT_AVAILABLE
(
4
,
"商品在门店下不可售"
),
NO_ACTIVITY
(
5
,
"没有可用活动"
),
STOCK_LIMIT
(
6
,
"商品库存不足"
),
;
;
private
Integer
code
;
private
Integer
code
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/enums/CProductType.java
0 → 100644
View file @
1c4d9c94
package
cn
.
freemud
.
enums
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: productType
* @Package cn.freemud.enums
* @Description: 这个类是给C端小程序的枚举类,最终版本
* @author: zhenghuan.yang
* @date: 2018/10/23 17:50
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public
enum
CProductType
{
PRODUCT_TYPE_1
(
1
,
"单品无属性"
),
PRODUCT_TYPE_2
(
2
,
"单品有属性"
),
PRODUCT_TYPE_7
(
7
,
"套餐商品"
),
PRODUCT_TYPE_8
(
8
,
"多规格有属性"
),
PRODUCT_TYPE_10
(
10
,
"多规格无属性"
);
private
int
code
;
private
String
desc
;
CProductType
(
int
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
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/ShoppingCartNewService.java
View file @
1c4d9c94
...
@@ -308,4 +308,12 @@ public interface ShoppingCartNewService {
...
@@ -308,4 +308,12 @@ public interface ShoppingCartNewService {
}
}
}
}
/**
* 结算页获取加价购活动商品列表
* @param request
* @return
*/
default
BaseResponse
<
PremiumExchangeResponseVo
>
premiumExchange
(
PremiumExchangeRequestVo
request
){
return
null
;
};
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
1c4d9c94
...
@@ -15,6 +15,7 @@ package cn.freemud.service.impl;
...
@@ -15,6 +15,7 @@ package cn.freemud.service.impl;
import
cn.freemud.adapter.ActivityAdapter
;
import
cn.freemud.adapter.ActivityAdapter
;
import
cn.freemud.adapter.CouponAdapter
;
import
cn.freemud.adapter.CouponAdapter
;
import
cn.freemud.adapter.ShoppingCartConvertAdapter
;
import
cn.freemud.adapter.ShoppingCartConvertAdapter
;
import
cn.freemud.adapter.StoreItemAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
...
@@ -22,13 +23,13 @@ import cn.freemud.constant.ShoppingCartConstant;
...
@@ -22,13 +23,13 @@ import cn.freemud.constant.ShoppingCartConstant;
import
cn.freemud.demo.controller.ShoppingCartDemoController
;
import
cn.freemud.demo.controller.ShoppingCartDemoController
;
import
cn.freemud.demo.entities.dto.goods.add.list.BaseListCartGoodsVO
;
import
cn.freemud.demo.entities.dto.goods.add.list.BaseListCartGoodsVO
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryResponseDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryResponseDto
;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto
;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto
;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto
;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto
;
import
cn.freemud.entities.dto.openplatform.WeixinProductRequestDto
;
import
cn.freemud.entities.dto.openplatform.WeixinProductRequestDto
;
import
cn.freemud.entities.dto.openplatform.WeixinProductResponseDto
;
import
cn.freemud.entities.dto.openplatform.WeixinProductResponseDto
;
import
cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean
;
import
cn.freemud.entities.dto.shoppingCart.SendPoint
;
import
cn.freemud.entities.dto.shoppingCart.SendPoint
;
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
;
...
@@ -36,8 +37,8 @@ import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
...
@@ -36,8 +37,8 @@ import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import
cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse
;
import
cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.BizServiceException
;
import
cn.freemud.interceptor.BizServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.*
;
import
cn.freemud.service.*
;
import
cn.freemud.service.delivery.DeliveryFactory
;
import
cn.freemud.service.delivery.DeliveryFactory
;
...
@@ -79,7 +80,6 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
...
@@ -79,7 +80,6 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import
com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.sun.org.apache.xpath.internal.operations.Bool
;
import
javafx.util.Pair
;
import
javafx.util.Pair
;
import
javafx.util.Pair
;
import
javafx.util.Pair
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -100,7 +100,6 @@ import java.util.*;
...
@@ -100,7 +100,6 @@ import java.util.*;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean
;
import
static
cn
.
freemud
.
constant
.
ApplicationConstant
.*;
import
static
cn
.
freemud
.
constant
.
ApplicationConstant
.*;
import
static
cn
.
freemud
.
constant
.
ShoppingCartConstant
.
SHOPPING_CART_EMPTY_GOODS_LIST
;
import
static
cn
.
freemud
.
constant
.
ShoppingCartConstant
.
SHOPPING_CART_EMPTY_GOODS_LIST
;
import
static
cn
.
freemud
.
constant
.
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
;
import
static
cn
.
freemud
.
constant
.
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
;
...
@@ -207,6 +206,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -207,6 +206,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired
@Autowired
private
ShoppingCartDemoController
shoppingCartDemoController
;
private
ShoppingCartDemoController
shoppingCartDemoController
;
@Autowired
private
StoreItemAdapter
storeItemAdapter
;
/**
/**
* 从微信卡券向购物车中添加商品
* 从微信卡券向购物车中添加商品
...
@@ -2705,4 +2707,160 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -2705,4 +2707,160 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return
Boolean
.
FALSE
;
return
Boolean
.
FALSE
;
}
}
/**
* 结算页获取加价购活动商品列表
* @param request
* @return
*/
public
BaseResponse
<
PremiumExchangeResponseVo
>
premiumExchange
(
PremiumExchangeRequestVo
request
){
// 获取用户信息
CustomerInfoVo
assortmentCustomerInfoVo
=
getCustomerInfoVo
(
request
.
getSessionId
());
String
userId
=
assortmentCustomerInfoVo
.
getMemberId
();
String
partnerId
=
request
.
getPartnerId
();
String
storeId
=
request
.
getShopId
();
String
couponCode
=
request
.
getCouponCode
();
String
activityCode
=
request
.
getActivityCode
();
String
appId
=
assortmentCustomerInfoVo
.
getAppId
();
String
menuType
=
request
.
getMenuType
();
Integer
orderType
=
request
.
getOrderType
();
// 返回构造对象
PremiumExchangeResponseVo
premiumExchangeResponseVo
=
new
PremiumExchangeResponseVo
();
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
NON_PARTICIPATE
.
getCode
());
List
<
CartGoods
>
cartGoodsList
=
assortmentSdkService
.
getShoppingCart
(
partnerId
,
storeId
,
userId
,
request
.
getSessionId
(),
null
,
shoppingCartBaseService
);
if
(
grayPush
(
partnerId
,
storeId
,
"2"
))
{
// 当couponCode不为空时,需参与价格计算
ArrayList
<
CalculationSharingDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotEmpty
(
couponCode
))
{
CalculationSharingDiscountRequestDto
.
CalculationDiscountCoupon
coupon
=
new
CalculationSharingDiscountRequestDto
.
CalculationDiscountCoupon
();
coupon
.
setCode
(
couponCode
);
coupon
.
setActivityCode
(
activityCode
);
coupons
.
add
(
coupon
);
}
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
discountResult
=
sharingDiscountService
.
getCalculationSharingDiscountResult
(
menuType
,
partnerId
,
storeId
,
userId
,
appId
,
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
()
,
cartGoodsList
,
coupons
//券
,
null
//加价购商品
,
0L
,
null
);
premiumExchangeResponseVo
=
activityAdapter
.
convert2PremiumExchangeSharing
(
discountResult
);
}
else
{
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
>
coupons
=
new
ArrayList
<>();
// 当couponCode不为空时,需参与价格计算
if
(
StringUtils
.
isNotEmpty
(
couponCode
))
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
coupon
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountCoupon
();
coupon
.
setCode
(
couponCode
);
coupon
.
setActivityCode
(
activityCode
);
coupons
.
add
(
coupon
);
}
// 获取优惠信息
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
=
getCalculationDiscountResult
(
menuType
,
partnerId
,
storeId
,
userId
,
appId
,
assortmentCustomerInfoVo
.
getWxAppId
(),
orderType
,
assortmentCustomerInfoVo
.
isMemberPaid
(),
cartGoodsList
,
coupons
,
null
,
null
,
0L
);
premiumExchangeResponseVo
=
activityAdapter
.
convert2PremiumExchange
(
calculationDiscountResult
);
}
if
(!
Objects
.
equals
(
ActivityResultCodeEnum
.
PARTICIPATE
.
getCode
(),
premiumExchangeResponseVo
.
getResultCode
())){
return
ResponseUtil
.
success
(
premiumExchangeResponseVo
);
}
List
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
products
=
premiumExchangeResponseVo
.
getProducts
();
// 获取所有spu商品Id 一个spu在菜单里面,他的sku肯定也在菜单里
List
<
String
>
spuIds
=
products
.
stream
().
map
(
PremiumExchangeResponseVo
.
PremiumExchangeProduct
::
getSpuId
).
distinct
().
collect
(
toList
());
GetValidateProductInfoDto
getProductInfoDto
=
new
GetValidateProductInfoDto
();
getProductInfoDto
.
setPartnerId
(
partnerId
);
getProductInfoDto
.
setStoreId
(
storeId
);
getProductInfoDto
.
setChannel
(
menuType
);
getProductInfoDto
.
setProductIds
(
spuIds
);
ValidateProductInfosDto
productInfosDto
=
storeItemClient
.
validateShopContainProduct
(
getProductInfoDto
);
if
(!
Objects
.
equals
(
productInfosDto
.
getErrcode
(),
Integer
.
valueOf
(
ResponseResult
.
SUCCESS
.
getCode
()))
||
productInfosDto
.
getData
()
==
null
||
CollectionUtils
.
isEmpty
(
productInfosDto
.
getData
().
getSuccessList
())){
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
GOOD_NOT_AVAILABLE
.
getCode
());
premiumExchangeResponseVo
.
setResultMsg
(
ActivityResultCodeEnum
.
GOOD_NOT_AVAILABLE
.
getDesc
());
return
ResponseUtil
.
success
(
premiumExchangeResponseVo
);
}
//剔除products中库存不足的商品
this
.
removeByProductStock
(
products
,
productInfosDto
.
getData
().
getSuccessList
(),
partnerId
,
storeId
,
menuType
);
if
(
CollectionUtils
.
isEmpty
(
products
)){
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
STOCK_LIMIT
.
getCode
());
premiumExchangeResponseVo
.
setResultMsg
(
ActivityResultCodeEnum
.
STOCK_LIMIT
.
getDesc
());
return
ResponseUtil
.
success
(
premiumExchangeResponseVo
);
}
// 组装返回商品集合
List
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
productResults
=
new
ArrayList
<>();
Map
<
String
,
ValidateProductInfosDto
.
ProductBean
>
productBeanMap
=
productInfosDto
.
getData
().
getSuccessList
().
stream
().
map
(
ValidateProductInfosDto
.
ProductData
::
getProductType
).
collect
(
Collectors
.
toMap
(
ValidateProductInfosDto
.
ProductBean
::
getPid
,
a
->
a
,
(
k1
,
k2
)
->
k1
));
// 判断商品是否在菜单内
for
(
PremiumExchangeResponseVo
.
PremiumExchangeProduct
premiumExchangeProduct
:
products
)
{
// 加价购的商品,现在的商品都为sku级别
ValidateProductInfosDto
.
ProductBean
productBean
=
productBeanMap
.
get
(
premiumExchangeProduct
.
getSpuId
());
if
(
productBean
==
null
)
{
continue
;
}
boolean
onSale
=
false
;
//商品是否可售
if
(
Objects
.
equals
(
productBean
.
getPid
(),
premiumExchangeProduct
.
getSkuId
())
&&
Objects
.
equals
(
productBean
.
getStatus
(),
StoreItemStatus
.
PUT_ON_SALE
.
getCode
())){
onSale
=
true
;
}
else
if
(
CollectionUtils
.
isNotEmpty
(
productBean
.
getSkuList
())){
onSale
=
productBean
.
getSkuList
().
stream
().
anyMatch
(
sku
->
Objects
.
equals
(
sku
.
getSkuId
(),
premiumExchangeProduct
.
getSkuId
())
&&
Objects
.
equals
(
sku
.
getStatus
(),
StoreItemStatus
.
PUT_ON_SALE
.
getCode
()));
}
if
(
onSale
)
{
PremiumExchangeResponseVo
.
PremiumExchangeProduct
result
=
storeItemAdapter
.
convert2SpuProductVo
(
productBean
,
premiumExchangeProduct
.
getSkuId
());
result
.
setSkuId
(
premiumExchangeProduct
.
getSkuId
());
result
.
setSkuName
(
premiumExchangeProduct
.
getSkuName
());
result
.
setNowPrice
(
premiumExchangeProduct
.
getNowPrice
());
result
.
setOriginalPrice
(
productBean
.
getFinalPrice
());
result
.
setNumber
(
premiumExchangeProduct
.
getNumber
());
result
.
setArtNo
(
premiumExchangeProduct
.
getArtNo
());
productResults
.
add
(
result
);
}
}
if
(
CollectionUtils
.
isEmpty
(
productResults
)){
premiumExchangeResponseVo
.
setResultCode
(
ActivityResultCodeEnum
.
GOOD_NOT_AVAILABLE
.
getCode
());
premiumExchangeResponseVo
.
setResultMsg
(
ActivityResultCodeEnum
.
GOOD_NOT_AVAILABLE
.
getDesc
());
return
ResponseUtil
.
success
(
premiumExchangeResponseVo
);
}
premiumExchangeResponseVo
.
setProducts
(
productResults
);
return
ResponseUtil
.
success
(
premiumExchangeResponseVo
);
}
private
void
removeByProductStock
(
List
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
products
,
List
<
ValidateProductInfosDto
.
ProductData
>
productDataList
,
String
partnerId
,
String
storeId
,
String
channel
)
{
List
<
Long
>
limitSkuIds
=
new
ArrayList
<>();
productDataList
.
stream
().
forEach
(
ProductData
->{
ValidateProductInfosDto
.
ProductBean
productType
=
ProductData
.
getProductType
();
if
(
productType
!=
null
){
if
(
CollectionUtils
.
isNotEmpty
(
productType
.
getSkuList
())){
limitSkuIds
.
addAll
(
productType
.
getSkuList
().
stream
().
filter
(
sku
->
Objects
.
equals
(
sku
.
getStockLimit
(),
1
)).
map
(
sku
->
Long
.
valueOf
(
sku
.
getSkuId
())).
collect
(
Collectors
.
toList
()));
}
else
{
if
(
Objects
.
equals
(
productType
.
getStockLimit
(),
1
)){
limitSkuIds
.
add
(
Long
.
valueOf
(
productType
.
getPid
()));
}
}
}
});
// skuId有限制的
if
(
CollectionUtils
.
isNotEmpty
(
limitSkuIds
))
{
GetProductStockRequestDto
stockRequestDto
=
new
GetProductStockRequestDto
();
stockRequestDto
.
setChannel
(
channel
);
stockRequestDto
.
setPartnerId
(
partnerId
);
stockRequestDto
.
setStoreId
(
storeId
);
stockRequestDto
.
setProductIds
(
limitSkuIds
);
GetProductStockResponseDto
availableStockResponse
=
stockClient
.
getAvailableStocks
(
stockRequestDto
);
Map
<
Long
,
GetProductStockResponseDto
.
DataBean
>
dataBeanMap
=
availableStockResponse
.
getResult
().
stream
().
collect
(
Collectors
.
toMap
(
GetProductStockResponseDto
.
DataBean
::
getPid
,
(
p
)
->
p
));
Iterator
<
PremiumExchangeResponseVo
.
PremiumExchangeProduct
>
it
=
products
.
iterator
();
while
(
it
.
hasNext
())
{
PremiumExchangeResponseVo
.
PremiumExchangeProduct
pe
=
it
.
next
();
GetProductStockResponseDto
.
DataBean
dataBean
=
dataBeanMap
.
get
(
Long
.
parseLong
(
pe
.
getSkuId
()));
if
(
dataBean
!=
null
&&
dataBean
.
getQty
()
<=
0
)
{
// 过滤下架的商品
it
.
remove
();
}
}
}
}
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/thirdparty/StoreItemClient.java
View file @
1c4d9c94
...
@@ -65,5 +65,9 @@ public interface StoreItemClient {
...
@@ -65,5 +65,9 @@ public interface StoreItemClient {
@PostMapping
(
"Shop/ValidateShopProduct"
)
@PostMapping
(
"Shop/ValidateShopProduct"
)
ProductResponseDTO
<
ValiadShopProductResponse
>
validateShopProduct
(
@RequestBody
ValidateShopProductRequest
request
);
ProductResponseDTO
<
ValiadShopProductResponse
>
validateShopProduct
(
@RequestBody
ValidateShopProductRequest
request
);
/**
* 校验商品在当前门店是否可售
*/
@PostMapping
(
"/Shop/validateShopContainProduct"
)
ValidateProductInfosDto
validateShopContainProduct
(
@RequestBody
GetValidateProductInfoDto
getProductInfoDto
);
}
}
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