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
84554661
Commit
84554661
authored
Nov 29, 2021
by
周晓航
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-商品限购活动限购次数记录,扣减,冲正-1039517-zxh20211118'
parents
8ae6c36f
2a89b036
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
403 additions
and
263 deletions
+403
-263
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+4
-3
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/ActivityUpdateStockRequest.java
+23
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/SubtractStockGoodsVO.java
+19
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/SubtractStockUserGoodsVO.java
+17
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/SubtractStockVO.java
+34
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/AssortmentSdkUpdateOrderProductInfoRequest.java
+1
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
+1
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CreateFatherSonOrderRequest.java
+6
-4
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
+31
-3
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+40
-53
order-application-service/src/main/java/cn/freemud/adapter/SpellGroupOrderAdapter.java
+1
-1
order-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
+2
-3
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/CalculationDiscountResultDto.java
+1
-0
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/ShoppingCartGoodsResponse.java
+4
-1
order-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/MCCafeShoppingCartGoodsDto.java
+0
-9
order-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
+1
-1
order-application-service/src/main/java/cn/freemud/entities/vo/SubtractStockVO.java
+10
-9
order-application-service/src/main/java/cn/freemud/enums/ActivityTypeEnum.java
+1
-0
order-application-service/src/main/java/cn/freemud/service/business/impl/OrderBusinessServiceImpl.java
+10
-4
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
+1
-0
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
+13
-21
order-application-service/src/main/java/cn/freemud/service/impl/SpellGroupOrderServiceImpl.java
+9
-4
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionDiscountClient.java
+4
-5
order-application-service/src/main/java/cn/freemud/service/universal/UniversalOrderService.java
+50
-35
order-application-service/src/main/java/cn/freemud/service/universal/impl/SaasMallOrderService.java
+12
-9
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/SubtractStockVO.java
+6
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/promotion/SubtractStockUserGoodsVO.java
+18
-0
shopping-cart-application-service/src/main/java/cn/freemud/handle/PromotionCommonMethodHandle.java
+66
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
+5
-31
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingEquallyService.java
+8
-33
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CalculationServiceImpl.java
+5
-32
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
84554661
...
...
@@ -18,13 +18,14 @@ import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderReq
import
com.freemud.application.sdk.api.ordercenter.request.create.*
;
import
com.freemud.application.sdk.api.ordercenter.response.*
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.*
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.stockapi.domain.ProductStocksVO
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.application.sdk.api.util.DateUtil
;
import
com.freemud.sdk.api.assortment.order.constant.CommonConstant
;
import
com.freemud.sdk.api.assortment.order.domain.OrderStatesVO
;
import
com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
...
...
@@ -1913,14 +1914,14 @@ public class OrderSdkAdapter {
}
public
ActivityUpdateStockRequest
convert2ActivityUpdateStockRequest
(
OrderBeanV1
orderBean
,
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stockBeanDtos
)
{
List
<
SubtractStockVO
>
stockBeanDtos
)
{
if
(
orderBean
==
null
||
CollectionUtils
.
isEmpty
(
stockBeanDtos
))
{
return
null
;
}
List
<
String
>
activityList
=
new
ArrayList
<>();
// 只记录订单级别的活动ID
if
(
CollectionUtils
.
isNotEmpty
(
stockBeanDtos
))
{
activityList
.
addAll
(
stockBeanDtos
.
stream
().
filter
(
ad
->
StringUtils
.
isNotBlank
(
ad
.
getActivityCode
())).
map
(
ActivityUpdateStockRequest
.
StockBeanDto
::
getActivityCode
).
distinct
().
collect
(
Collectors
.
toList
()));
activityList
.
addAll
(
stockBeanDtos
.
stream
().
filter
(
ad
->
StringUtils
.
isNotBlank
(
ad
.
getActivityCode
())).
map
(
SubtractStockVO
:
:
getActivityCode
).
distinct
().
collect
(
Collectors
.
toList
()));
}
ActivityUpdateStockRequest
updateStockRequest
=
new
ActivityUpdateStockRequest
();
updateStockRequest
.
setStock
(
stockBeanDtos
);
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/ActivityUpdateStockRequest.java
0 → 100644
View file @
84554661
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
entities
.
promption
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午3:45
* @description :
*/
@Data
public
class
ActivityUpdateStockRequest
{
private
String
ver
;
private
String
orderId
;
private
String
partnerCode
;
private
String
storeId
;
List
<
SubtractStockVO
>
stock
;
List
<
String
>
activityList
;
private
String
orderCreateTime
;
private
String
userId
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/SubtractStockGoodsVO.java
0 → 100644
View file @
84554661
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
entities
.
promption
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午4:21
* @description :
*/
@Data
public
class
SubtractStockGoodsVO
{
//商品编号
private
String
goodsId
;
//库存
private
Integer
stock
;
//等级编码,当不同等级都有自己的库存时,字段必填
private
Integer
benefitSeq
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/SubtractStockUserGoodsVO.java
0 → 100644
View file @
84554661
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
entities
.
promption
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午3:37
* @description :
*/
@Data
public
class
SubtractStockUserGoodsVO
{
//商品编号
private
String
goodsId
;
//库存
private
Integer
stock
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/promption/SubtractStockVO.java
0 → 100644
View file @
84554661
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
entities
.
promption
;
import
lombok.Data
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.com
*
* @version V1.0
* @Title:
* @Package: cn.freemud.entities.vo
* @Descripttion:
* @author: shuhu.hou
* @date: 2019/8/28
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
@Data
public
class
SubtractStockVO
{
//活动编码
private
String
activityCode
;
private
Integer
activityStock
;
//活动类型
private
Integer
activityType
;
//商品库存扣除列表
private
List
<
SubtractStockGoodsVO
>
goodsStock
;
/**
* 用户商品库存扣减集合
*/
private
List
<
SubtractStockUserGoodsVO
>
userGoodsStock
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/AssortmentSdkUpdateOrderProductInfoRequest.java
View file @
84554661
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
order
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
lombok.Data
;
import
java.util.List
;
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
View file @
84554661
...
...
@@ -2,8 +2,8 @@ package com.freemud.sdk.api.assortment.order.request.order;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
lombok.Data
;
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CreateFatherSonOrderRequest.java
View file @
84554661
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
order
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
lombok.Builder
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.enums.PayStatus
;
import
com.freemud.sdk.api.assortment.order.enums.QueryOrderType
;
import
com.freemud.sdk.api.assortment.order.enums.QueryPayType
;
import
lombok.Data
;
import
java.util.Date
;
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
View file @
84554661
...
...
@@ -40,7 +40,6 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCod
import
com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.DiscountDTO
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.CalculationDiscountRequest
;
import
com.freemud.application.sdk.api.promotioncenter.response.CalculationDiscountResponseDTO
;
import
com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService
;
...
...
@@ -62,6 +61,7 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import
com.freemud.sdk.api.assortment.order.adapter.*
;
import
com.freemud.sdk.api.assortment.order.constant.CommonConstant
;
import
com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest
;
...
...
@@ -69,6 +69,7 @@ import com.freemud.sdk.api.assortment.order.request.order.*;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil
;
import
com.freemud.sdk.api.assortment.order.util.BeanUtil
;
import
com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo
;
import
com.google.gson.Gson
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -185,6 +186,18 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
order
);
}
/**
* 请使用 订单服务的feign调用
* @param orderBean
* @param products
* @param updateStockRequest
* @param accounts
* @param mqMessageRequest
* @param menuType
* @param openId
* @return
*/
@Deprecated
private
BaseOrderResponse
updateStockAndScore
(
OrderBeanV1
orderBean
,
List
<
CreateOrderProductRequest
>
products
,
ActivityUpdateStockRequest
updateStockRequest
,
List
<
CreateOrderAccountRequest
>
accounts
,
MqMessageRequest
mqMessageRequest
,
String
menuType
,
String
openId
)
{
//TODO 转换获取库存信息,扣减库存
...
...
@@ -206,7 +219,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if
(
activityUpdateStockRequest
!=
null
&&
(
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getStock
())
||
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getActivityList
())))
{
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
activityUpdateStockRequest
,
""
);
com
.
freemud
.
application
.
sdk
.
api
.
promotioncenter
.
request
.
promotion
.
ActivityUpdateStockRequest
req
=
this
.
convertSdkBean
(
activityUpdateStockRequest
);
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
req
,
""
);
// ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(),
// "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getCode
()))
{
...
...
@@ -267,6 +281,19 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
}
/**
* 注意该方法 只是为了兼容 sdk 的bean
* sdk的bean太老了,有字段没有赋值,但是不影响 这废弃接口调用
* 上层接口需要废除,
* @param activityUpdateStockRequest
* @return
*/
private
com
.
freemud
.
application
.
sdk
.
api
.
promotioncenter
.
request
.
promotion
.
ActivityUpdateStockRequest
convertSdkBean
(
ActivityUpdateStockRequest
activityUpdateStockRequest
){
com
.
freemud
.
application
.
sdk
.
api
.
promotioncenter
.
request
.
promotion
.
ActivityUpdateStockRequest
req
=
new
com
.
freemud
.
application
.
sdk
.
api
.
promotioncenter
.
request
.
promotion
.
ActivityUpdateStockRequest
();
BeanUtil
.
convertBean
(
activityUpdateStockRequest
,
req
);
return
req
;
}
/**
* 围餐更新库存和积分
*/
private
BaseOrderResponse
updateWcStockAndScore
(
OrderBeanV1
orderBean
,
List
<
CreateOrderProductRequest
>
products
,
ActivityUpdateStockRequest
updateStockRequest
,
...
...
@@ -276,7 +303,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if
(
activityUpdateStockRequest
!=
null
&&
(
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getStock
())
||
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getActivityList
())))
{
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
activityUpdateStockRequest
,
""
);
com
.
freemud
.
application
.
sdk
.
api
.
promotioncenter
.
request
.
promotion
.
ActivityUpdateStockRequest
req
=
this
.
convertSdkBean
(
activityUpdateStockRequest
);
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
req
,
""
);
ThirdPartyLog
.
infoConvertJson
(
System
.
currentTimeMillis
(),
System
.
currentTimeMillis
(),
"subtractStock"
,
JSONObject
.
toJSONString
(
activityUpdateStockRequest
),
JSONObject
.
toJSONString
(
activityResponse
));
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getCode
()))
{
...
...
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
84554661
...
...
@@ -19,12 +19,6 @@ import cn.freemud.constant.RedisKeyConstant;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.bo.CreateOrderBONew
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.activity.ShareDiscountActivityDto
;
import
cn.freemud.entities.dto.order.CreateOrderAccountDto
;
import
cn.freemud.entities.dto.order.CreateOrderProductDto
;
import
cn.freemud.entities.dto.order.*
;
import
cn.freemud.entities.dto.pay.*
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.pay.OrderPayResponse
;
...
...
@@ -71,14 +65,14 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.*
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant
;
import
com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockGoodsVO
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
...
...
@@ -354,29 +348,9 @@ public class OrderAdapter {
ActivityUpdateStockRequest
activityUpdateStockRequest
=
this
.
initActivityUpdateStockRequest
(
activityDiscountsDtos
);
//设置库存扣减
if
(
CollectionUtils
.
isNotEmpty
(
shoppingCartGoodsDto
.
getStocks
()))
{
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stocks
=
new
ArrayList
<>();
for
(
SubtractStockVO
stockVO
:
shoppingCartGoodsDto
.
getStocks
())
{
ActivityUpdateStockRequest
.
StockBeanDto
stockBeanDto
=
new
ActivityUpdateStockRequest
.
StockBeanDto
();
stockBeanDto
.
setActivityCode
(
stockVO
.
getActivityCode
());
stockBeanDto
.
setActivityStock
(
stockVO
.
getActivityStock
()
==
null
?
1
:
stockVO
.
getActivityStock
());
if
(
CollectionUtils
.
isNotEmpty
(
stockVO
.
getGoodsStock
()))
{
List
<
GoodsStockDTO
>
goodsStockDTOS
=
new
ArrayList
<>();
stockVO
.
getGoodsStock
().
forEach
(
goods
->
{
GoodsStockDTO
goodsStockDTO
=
new
GoodsStockDTO
();
goodsStockDTO
.
setBenefitSeq
(
goods
.
getBenefitSeq
());
goodsStockDTO
.
setGoodsId
(
goods
.
getGoodsId
());
int
stock
=
goods
.
getStock
()
==
null
?
1
:
goods
.
getStock
();
goodsStockDTO
.
setStock
(
stock
);
goodsStockDTOS
.
add
(
goodsStockDTO
);
});
stockBeanDto
.
setGoodsStock
(
goodsStockDTOS
);
}
stocks
.
add
(
stockBeanDto
);
}
List
<
SubtractStockVO
>
stocks
=
this
.
getStocks
(
shoppingCartGoodsDto
.
getStocks
());
activityUpdateStockRequest
.
setStock
(
stocks
);
activityUpdateStockRequest
.
setStock
(
stocks
);
}
createOrderDto
.
setActivityUpdateStockRequest
(
activityUpdateStockRequest
);
createOrderDto
.
setPayChannelType
(
createOrderVo
.
getPayChannelType
());
...
...
@@ -613,6 +587,38 @@ public class OrderAdapter {
return
createOrderDto
;
}
/**
* 提取公共方法
* @param shoppingCartStocks
* @return
*/
private
List
<
SubtractStockVO
>
getStocks
(
List
<
SubtractStockVO
>
shoppingCartStocks
){
List
<
SubtractStockVO
>
stocks
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
shoppingCartStocks
))
{
for
(
SubtractStockVO
stockVO
:
shoppingCartStocks
)
{
SubtractStockVO
stockBeanDto
=
new
SubtractStockVO
();
stockBeanDto
.
setActivityCode
(
stockVO
.
getActivityCode
());
stockBeanDto
.
setActivityStock
(
stockVO
.
getActivityStock
()
==
null
?
1
:
stockVO
.
getActivityStock
());
if
(
CollectionUtils
.
isNotEmpty
(
stockVO
.
getGoodsStock
()))
{
List
<
SubtractStockGoodsVO
>
goodsStockDTOS
=
new
ArrayList
<>();
stockVO
.
getGoodsStock
().
forEach
(
goods
->
{
SubtractStockGoodsVO
goodsStockDTO
=
new
SubtractStockGoodsVO
();
goodsStockDTO
.
setBenefitSeq
(
goods
.
getBenefitSeq
());
goodsStockDTO
.
setGoodsId
(
goods
.
getGoodsId
());
int
stock
=
goods
.
getStock
()
==
null
?
1
:
goods
.
getStock
();
goodsStockDTO
.
setStock
(
stock
);
goodsStockDTOS
.
add
(
goodsStockDTO
);
});
stockBeanDto
.
setGoodsStock
(
goodsStockDTOS
);
}
// fisherman 用户限购库存-> 返回促销的值
stockBeanDto
.
setUserGoodsStock
(
stockVO
.
getUserGoodsStock
());
stocks
.
add
(
stockBeanDto
);
}
}
return
stocks
;
}
public
ConfirmOrderDto
convent2ConfirmOrderDto
(
PaysuccessNoticeMessage
message
)
{
ConfirmOrderDto
confirmOrderDto
=
new
ConfirmOrderDto
();
confirmOrderDto
.
setOrderId
(
message
.
getTrans_id
());
...
...
@@ -3085,29 +3091,10 @@ public class OrderAdapter {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
ActivityUpdateStockRequest
activityUpdateStockRequest
=
this
.
initActivityUpdateStockRequest
(
activityDiscountsDtos
);
//设置库存扣减
if
(
shoppingCartGoodsResponse
!=
null
&&
CollectionUtils
.
isNotEmpty
(
shoppingCartGoodsResponse
.
getStocks
()))
{
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stocks
=
new
ArrayList
<>();
for
(
cn
.
freemud
.
entities
.
dto
.
promotion
.
SubtractStockVO
stockVO
:
shoppingCartGoodsResponse
.
getStocks
())
{
ActivityUpdateStockRequest
.
StockBeanDto
stockBeanDto
=
new
ActivityUpdateStockRequest
.
StockBeanDto
();
stockBeanDto
.
setActivityCode
(
stockVO
.
getActivityCode
());
stockBeanDto
.
setActivityStock
(
stockVO
.
getActivityStock
()
==
null
?
1
:
stockVO
.
getActivityStock
());
if
(
CollectionUtils
.
isNotEmpty
(
stockVO
.
getGoodsStock
()))
{
List
<
GoodsStockDTO
>
goodsStockDTOS
=
new
ArrayList
<>();
stockVO
.
getGoodsStock
().
forEach
(
goods
->
{
GoodsStockDTO
goodsStockDTO
=
new
GoodsStockDTO
();
goodsStockDTO
.
setBenefitSeq
(
goods
.
getBenefitSeq
());
goodsStockDTO
.
setGoodsId
(
goods
.
getGoodsId
());
int
stock
=
goods
.
getStock
()
==
null
?
1
:
goods
.
getStock
();
goodsStockDTO
.
setStock
(
stock
);
goodsStockDTOS
.
add
(
goodsStockDTO
);
});
stockBeanDto
.
setGoodsStock
(
goodsStockDTOS
);
}
stocks
.
add
(
stockBeanDto
);
}
activityUpdateStockRequest
.
setStock
(
stocks
);
}
List
<
SubtractStockVO
>
stocks
=
this
.
getStocks
(
shoppingCartGoodsResponse
.
getStocks
());
activityUpdateStockRequest
.
setStock
(
stocks
);
sdkUpdateOrderProductInfoRequest
.
setActivityUpdateStockRequest
(
activityUpdateStockRequest
);
return
sdkUpdateOrderProductInfoRequest
;
}
...
...
order-application-service/src/main/java/cn/freemud/adapter/SpellGroupOrderAdapter.java
View file @
84554661
...
...
@@ -21,9 +21,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.*
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.util.DateUtil
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
View file @
84554661
package
cn
.
freemud
.
entities
.
dto
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
lombok.Data
;
import
java.util.List
;
...
...
@@ -76,7 +75,7 @@ public class ActivityCalculationDiscountResponseDto {
/**
* 活动集合
*/
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stocks
;
List
<
SubtractStockVO
>
stocks
;
@Data
public
static
class
ActivityPrompt
{
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/CalculationDiscountResultDto.java
View file @
84554661
package
cn
.
freemud
.
entities
.
dto
.
promotion
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
lombok.Data
;
import
java.util.ArrayList
;
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/ShoppingCartGoodsResponse.java
View file @
84554661
package
cn
.
freemud
.
entities
.
dto
.
promotion
;
import
cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.ActivityClassifyCouponBean
;
import
cn.freemud.entities.vo.ActivityTip
;
import
cn.freemud.entities.vo.ShoppingCartCustomerScoreVo
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/MCCafeShoppingCartGoodsDto.java
View file @
84554661
package
cn
.
freemud
.
entities
.
dto
.
shoppingCart
;
import
cn.freemud.entities.dto.OrderProductAddInfo
;
import
cn.freemud.entities.vo.SubtractStockVO
;
import
com.alibaba.fastjson.JSON
;
import
lombok.Builder
;
import
lombok.Data
;
import
org.apache.commons.collections4.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Data
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
View file @
84554661
package
cn
.
freemud
.
entities
.
dto
.
shoppingCart
;
import
cn.freemud.entities.dto.OrderProductAddInfo
;
import
cn.freemud.entities.vo.SubtractStockVO
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/SubtractStockVO.java
View file @
84554661
package
cn
.
freemud
.
entities
.
vo
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockGoodsVO
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockUserGoodsVO
;
import
lombok.Data
;
import
java.util.List
;
...
...
@@ -15,8 +17,11 @@ import java.util.List;
* @date: 2019/8/28
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
* 该类后期 删除,禁止再使用, 请使用下面的类
* @see com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
*/
@Data
@Deprecated
public
class
SubtractStockVO
{
//活动编码
private
String
activityCode
;
...
...
@@ -26,13 +31,9 @@ public class SubtractStockVO {
//商品库存扣除列表
private
List
<
SubtractStockGoodsVO
>
goodsStock
;
@Data
public
static
class
SubtractStockGoodsVO
{
//商品编号
private
String
goodsId
;
//库存
private
Integer
stock
;
//等级编码,当不同等级都有自己的库存时,字段必填
private
Integer
benefitSeq
;
}
/**
* 用户商品库存扣减集合
*/
private
List
<
SubtractStockUserGoodsVO
>
userGoodsStock
;
}
order-application-service/src/main/java/cn/freemud/enums/ActivityTypeEnum.java
View file @
84554661
...
...
@@ -27,6 +27,7 @@ public enum ActivityTypeEnum {
TYPE_21
(
21
,
"单品折扣"
),
TYPE_22
(
22
,
"单品立减"
),
TYPE_27
(
27
,
"会员价优惠"
),
TYPE_29
(
29
,
"商品活动"
),
/**
* 优惠券
*/
...
...
order-application-service/src/main/java/cn/freemud/service/business/impl/OrderBusinessServiceImpl.java
View file @
84554661
...
...
@@ -10,6 +10,7 @@ import cn.freemud.service.business.OrderBusinessService;
import
cn.freemud.service.impl.OrderQueueService
;
import
cn.freemud.service.thirdparty.CustomerApplicationClient
;
import
cn.freemud.service.thirdparty.CustomerClient
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
...
...
@@ -30,7 +31,7 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import
com.freemud.application.sdk.api.ordercenter.response.PaySuccessResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.promotioncenter.re
quest.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.re
sponse.PromotionResponseDTO
;
import
com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.application.sdk.api.stockapi.service.StockSdkService
;
...
...
@@ -42,6 +43,7 @@ import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.constant.CommonConstant
;
import
com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
...
...
@@ -100,6 +102,9 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Value
(
"${avoid.version.upgrade.config:}"
)
private
String
avoidVersionUpgradeConfig
;
@Autowired
private
PromotionDiscountClient
promotionDiscountClient
;
...
...
@@ -280,15 +285,16 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if
(
activityUpdateStockRequest
!=
null
&&
(
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getStock
())
||
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getActivityList
())))
{
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
activityUpdateStockRequest
,
""
);
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getCode
()))
{
// BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, "");
PromotionResponseDTO
activityResponse
=
promotionDiscountClient
.
subtractStock
(
activityUpdateStockRequest
);
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getStatusCode
()))
{
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"活动库存不足"
,
""
,
null
);
orderCancel
(
cancelOrderRequest
);
//失败异步冲正库存,取消订单
orderQueueService
.
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
());
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
activityResponse
.
getCode
(),
"活动库存不足"
);
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
activityResponse
.
get
Status
Code
(),
"活动库存不足"
);
}
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
View file @
84554661
...
...
@@ -54,6 +54,7 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.QueryRelatedOrderByCodeRequest
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
View file @
84554661
...
...
@@ -25,8 +25,8 @@ import cn.freemud.entities.dto.product.ProductInfo;
import
cn.freemud.entities.dto.product.ValidateProductInfosDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto
;
import
cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto
;
import
cn.freemud.entities.live.WeChatReportVO
;
import
cn.freemud.entities.dto.store.StoreMixResponseDto
;
import
cn.freemud.entities.live.WeChatReportVO
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.handler.WeChatLiveMsgHandle
;
...
...
@@ -36,26 +36,18 @@ import cn.freemud.redis.RedisCache;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.OrderFactoryService
;
import
cn.freemud.service.business.OrderBusinessService
;
import
cn.freemud.service.thirdparty.PaymentNewClient
;
import
cn.freemud.service.thirdparty.CouponOnlineClient
;
import
cn.freemud.service.thirdparty.PaymentNewClient
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
cn.freemud.utils.AppLogUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager
;
import
com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
import
com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO
;
import
com.freemud.application.sdk.api.couponcenter.online.domain.AppKeyVO
;
import
com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest
;
import
com.freemud.application.sdk.api.couponcenter.online.request.PartnerRequest
;
import
com.freemud.application.sdk.api.couponcenter.online.service.FMActiveSdkService
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.log.ThirdPartyLog
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
...
...
@@ -65,7 +57,6 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import
com.freemud.application.sdk.api.ordercenter.enums.*
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderChangeStateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.UpdateOrderReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest
;
import
com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq
;
...
...
@@ -75,15 +66,12 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoR
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.productcenter.service.MenuService
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.application.sdk.api.stockapi.service.StockSdkService
;
import
com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
com.freemud.sdk.api.assortment.order.enums.StockChangeType
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
...
...
@@ -382,7 +370,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
CreateOrderRequest
createOrderRequest
=
(
CreateOrderRequest
)
createOrderRequestResponse
.
getResult
();
//标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stockBeanDtos
=
calculationDiscount
(
partnerId
,
storeId
,
userLoginInfoDto
.
getMemberId
(),
productInfosDto
.
getData
().
getProducts
().
get
(
0
),
createOrderRequest
);
List
<
SubtractStockVO
>
stockBeanDtos
=
calculationDiscount
(
partnerId
,
storeId
,
userLoginInfoDto
.
getMemberId
(),
productInfosDto
.
getData
().
getProducts
().
get
(
0
),
createOrderRequest
);
OrderBaseResp
<
OrderInfoReqs
>
orderInfoReqsBaseResponse
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
CreateOrderResponse
createOrderResponse
=
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
orderInfoReqsBaseResponse
);
...
...
@@ -1095,7 +1083,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
/**
* 查询促销优惠,赋值订单金额,商品优惠后金额,优惠记录
*/
private
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
calculationDiscount
(
String
partnerId
,
String
storeId
,
String
userId
,
ProductInfo
products
,
CreateOrderRequest
createOrderRequest
){
private
List
<
SubtractStockVO
>
calculationDiscount
(
String
partnerId
,
String
storeId
,
String
userId
,
ProductInfo
products
,
CreateOrderRequest
createOrderRequest
){
CalculationDiscountRequestDto
calculationDiscountRequestDto
=
new
CalculationDiscountRequestDto
();
calculationDiscountRequestDto
.
setStoreId
(
storeId
);
calculationDiscountRequestDto
.
setPartnerCode
(
partnerId
);
...
...
@@ -1109,12 +1097,16 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
discountGoodsDtoList
.
add
(
discountGoodsDto
);
calculationDiscountRequestDto
.
setGoods
(
discountGoodsDtoList
);
//买券包调促销指定只计算限时特价 [2,21
]
calculationDiscountRequestDto
.
setActivityTypes
(
Arrays
.
asList
(
2
,
21
));
//买券包调促销指定只计算限时特价 [2,21
,29] 29.商品限购
calculationDiscountRequestDto
.
setActivityTypes
(
Arrays
.
asList
(
ActivityTypeEnum
.
TYPE_2
.
getCode
(),
ActivityTypeEnum
.
TYPE_21
.
getCode
(),
ActivityTypeEnum
.
TYPE_29
.
getCode
()
));
calculationDiscountRequestDto
.
setVer
(
1
);
calculationDiscountRequestDto
.
setApplication
(
"isaas"
);
ActivityCalculationDiscountResponseDto
activityCalculationDiscountResponseDto
=
promotionDiscountClient
.
calculationDiscountSharing
(
calculationDiscountRequestDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
())
||
activityCalculationDiscountResponseDto
.
getResult
()
==
null
)
{
// fisherman 商品限购虚拟券 服务端拦截校验
if
(
Objects
.
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
"80033"
))
{
throw
new
ServiceException
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
activityCalculationDiscountResponseDto
.
getMsg
());
}
return
null
;
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
result
=
activityCalculationDiscountResponseDto
.
getResult
();
...
...
@@ -1125,7 +1117,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
good
:
result
.
getGoods
()){
if
(
good
.
getGoodsId
().
equals
(
products
.
getPid
())){
if
(
CollectionUtils
.
isEmpty
(
good
.
getDiscounts
())){
return
null
;
return
result
.
getStocks
()
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
.
GoodsDiscount
>
discounts
=
good
.
getDiscounts
();
OrderSettlementCreateReq
orderSettlementCreateReq
=
new
OrderSettlementCreateReq
();
...
...
order-application-service/src/main/java/cn/freemud/service/impl/SpellGroupOrderServiceImpl.java
View file @
84554661
...
...
@@ -21,6 +21,7 @@ import cn.freemud.enums.ActivityGroupStatusEnum;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.manager.SpellGroupOrderDataManager
;
import
cn.freemud.service.SpellGroupOrderService
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
...
...
@@ -33,12 +34,13 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.promotioncenter.re
quest.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.re
sponse.PromotionResponseDTO
;
import
com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime
;
import
com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderStatusChangeRequestDto
;
...
...
@@ -107,6 +109,9 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
@Value
(
"${program.backorders_notify_activity_exchange}"
)
private
String
backOrdersNotifyActivityExchange
;
@Autowired
private
PromotionDiscountClient
promotionDiscountClient
;
@Override
public
BaseResponse
createSpellGroupOrder
(
CreateSpellGroupOrderReq
createSpellGroupOrderReq
)
{
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
...
...
@@ -226,17 +231,17 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
private
BaseOrderResponse
updateActivityStock
(
OrderBeanV1
orderBean
,
CreateSpellGroupOrderDto
createSpellGroupOrderDto
)
{
ActivityUpdateStockRequest
activityUpdateStockRequest
=
spellGroupOrderAdapter
.
convert2ActivityUpdateStockRequest
(
orderBean
,
createSpellGroupOrderDto
);
if
(
activityUpdateStockRequest
!=
null
&&
(
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getStock
())
||
CollectionUtils
.
isNotEmpty
(
activityUpdateStockRequest
.
getActivityList
())))
{
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
activityResponse
=
promotionSdkService
.
subtractStock
(
activityUpdateStockRequest
,
""
);
PromotionResponseDTO
activityResponse
=
promotionDiscountClient
.
subtractStock
(
activityUpdateStockRequest
);
// ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(),
// "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
getCode
()))
{
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
activityResponse
.
get
Status
Code
()))
{
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"活动库存不足"
,
""
,
null
);
orderCancel
(
cancelOrderRequest
);
//失败异步冲正库存,取消订单
backOrdersNotifyActivity
(
orderBean
,
backOrdersChangeOrderStatusConsumerQueue
,
backOrdersNotifyActivityExchange
);
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
activityResponse
.
getCode
(),
"活动库存不足"
);
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
activityResponse
.
get
Status
Code
(),
"活动库存不足"
);
}
}
return
BaseOrderResponse
.
getErrorBaseOrderResponse
(
RESPONSE_SUCCESS_STR
,
""
);
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionDiscountClient.java
View file @
84554661
...
...
@@ -12,21 +12,20 @@
*/
package
cn
.
freemud
.
service
.
thirdparty
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.annotations.LogIgnoreFeign
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeKeyConstant
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto
;
import
cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto
;
import
cn.freemud.entities.dto.ActivityQueryRequestDto
;
import
cn.freemud.entities.dto.activity.ActivityQueryResponseDto
;
import
cn.freemud.entities.dto.promotion.*
;
import
cn.freemud.entities.vo.QueryGroupHistoryRequest
;
import
cn.freemud.entities.vo.QuerySpellGroupRequest
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
@FeignClient
(
name
=
"promotion-service"
,
url
=
"${saas.activityclient.feign.url}"
)
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
...
...
order-application-service/src/main/java/cn/freemud/service/universal/UniversalOrderService.java
View file @
84554661
This diff is collapsed.
Click to expand it.
order-application-service/src/main/java/cn/freemud/service/universal/impl/SaasMallOrderService.java
View file @
84554661
...
...
@@ -14,7 +14,10 @@ import cn.freemud.entities.dto.product.GroupDetail;
import
cn.freemud.entities.dto.product.ProductAttributeGroup
;
import
cn.freemud.entities.dto.product.ProductGroup
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.CreateOrderBaseVo
;
import
cn.freemud.entities.vo.CreateOrderResponseVo
;
import
cn.freemud.entities.vo.GetProductsVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.enums.OrderSourceType
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.*
;
...
...
@@ -41,16 +44,16 @@ import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContac
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderCostCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockGoodsVO
;
import
com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryRelatedOrderByCodeResp
;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import
com.freemud.sdk.api.assortment.order.util.ClassUtils
;
import
com.freemud.sdk.api.assortment.order.vo.ProductGroupVo
;
import
com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest
;
...
...
@@ -148,7 +151,7 @@ public class SaasMallOrderService extends UniversalOrderService {
protected
BaseResponse
sendActivityUpdateStock
(
CreateOrderBo
createOrderBo
,
CreateOrderResponse
createOrderResponse
)
{
BaseCreateOrderRequest
baseCreateOrderRequest
=
createOrderBo
.
getBaseCreateOrderRequest
();
List
<
CreateOrderProductRequest
>
products
=
baseCreateOrderRequest
.
getProducts
();
ActivityUpdateStockRequest
activityUpdateStockRequest
=
baseCreateOrderRequest
.
getActivityUpdateStockRequest
();
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
entities
.
promption
.
ActivityUpdateStockRequest
activityUpdateStockRequest
=
baseCreateOrderRequest
.
getActivityUpdateStockRequest
();
List
<
CreateOrderAccountRequest
>
accounts
=
baseCreateOrderRequest
.
getAccounts
();
// mq 老代码里 商城订单不发送mq 这里就注释下 需要再开放
...
...
@@ -688,15 +691,15 @@ public class SaasMallOrderService extends UniversalOrderService {
//设置库存扣减
if
(
CollectionUtils
.
isNotEmpty
(
shoppingCartGoodsDto
.
getStocks
()))
{
List
<
ActivityUpdateStockRequest
.
StockBeanDto
>
stocks
=
new
ArrayList
<>();
List
<
SubtractStockVO
>
stocks
=
new
ArrayList
<>();
for
(
SubtractStockVO
stockVO
:
shoppingCartGoodsDto
.
getStocks
())
{
ActivityUpdateStockRequest
.
StockBeanDto
stockBeanDto
=
new
ActivityUpdateStockRequest
.
StockBeanDto
();
SubtractStockVO
stockBeanDto
=
new
SubtractStockVO
();
stockBeanDto
.
setActivityCode
(
stockVO
.
getActivityCode
());
stockBeanDto
.
setActivityStock
(
stockVO
.
getActivityStock
()
==
null
?
1
:
stockVO
.
getActivityStock
());
if
(
CollectionUtils
.
isNotEmpty
(
stockVO
.
getGoodsStock
()))
{
List
<
GoodsStockDT
O
>
goodsStockDTOS
=
new
ArrayList
<>();
List
<
SubtractStockGoodsV
O
>
goodsStockDTOS
=
new
ArrayList
<>();
stockVO
.
getGoodsStock
().
forEach
(
goods
->
{
GoodsStockDTO
goodsStockDTO
=
new
GoodsStockDT
O
();
SubtractStockGoodsVO
goodsStockDTO
=
new
SubtractStockGoodsV
O
();
goodsStockDTO
.
setBenefitSeq
(
goods
.
getBenefitSeq
());
goodsStockDTO
.
setGoodsId
(
goods
.
getGoodsId
());
int
stock
=
goods
.
getStock
()
==
null
?
1
:
goods
.
getStock
();
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/SubtractStockVO.java
View file @
84554661
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.vo.promotion.SubtractStockUserGoodsVO
;
import
lombok.Data
;
import
java.util.List
;
...
...
@@ -26,6 +27,11 @@ public class SubtractStockVO {
//商品库存扣除列表
private
List
<
SubtractStockGoodsVO
>
goodsStock
;
/**
* 用户商品库存扣减集合
*/
private
List
<
SubtractStockUserGoodsVO
>
userGoodsStock
;
@Data
public
static
class
SubtractStockGoodsVO
{
//商品编号
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/promotion/SubtractStockUserGoodsVO.java
0 → 100644
View file @
84554661
package
cn
.
freemud
.
entities
.
vo
.
promotion
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午3:25
* @description :
*/
@Data
public
class
SubtractStockUserGoodsVO
{
//商品编号
private
String
goodsId
;
//库存
private
Integer
stock
;
}
shopping-cart-application-service/src/main/java/cn/freemud/handle/PromotionCommonMethodHandle.java
0 → 100644
View file @
84554661
package
cn
.
freemud
.
handle
;
import
cn.freemud.entities.dto.calculate.Discount
;
import
cn.freemud.entities.vo.ShoppingCartInfoRequestVo
;
import
cn.freemud.entities.vo.SubtractStockVO
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午2:42
* @description :
*/
@Component
public
class
PromotionCommonMethodHandle
{
/**
* 库存扣减加价购商品 要过滤掉没有换购的商品
*
* @param stocks 扣减库存
* @param shoppingCartInfoRequestVo 购物车请求信息
* @param addMoneyDiscounts 加价购活动
* @return 返回应该扣减的加价购商品库存
*/
public
List
<
SubtractStockVO
>
filterSendGoodsStocks
(
List
<
SubtractStockVO
>
stocks
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
List
<
Discount
>
addMoneyDiscounts
)
{
if
(
CollectionUtils
.
isEmpty
(
stocks
)
||
CollectionUtils
.
isEmpty
(
addMoneyDiscounts
))
{
return
stocks
;
}
List
<
SubtractStockVO
>
subtractStockVOs
=
stocks
.
stream
().
filter
(
subtractStockVO
->
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
List
<
SubtractStockVO
.
SubtractStockGoodsVO
>
goodsStock
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
subtractStockVOs
))
{
SubtractStockVO
subtractStockVO
=
subtractStockVOs
.
get
(
0
);
goodsStock
=
subtractStockVO
.
getGoodsStock
();
}
if
(
null
==
goodsStock
)
{
return
stocks
;
}
Map
<
String
,
SubtractStockVO
.
SubtractStockGoodsVO
>
mapSubstractStocks
=
new
HashMap
<>();
if
(
CollectionUtils
.
isNotEmpty
(
goodsStock
))
{
mapSubstractStocks
=
goodsStock
.
stream
().
collect
(
Collectors
.
toMap
(
SubtractStockVO
.
SubtractStockGoodsVO
::
getGoodsId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
}
//获取加价购商品
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoods
=
shoppingCartInfoRequestVo
.
getSendGoods
();
if
(
CollectionUtils
.
isNotEmpty
(
sendGoods
))
{
List
<
String
>
needSendGoodsId
=
sendGoods
.
stream
().
map
(
ShoppingCartInfoRequestVo
.
SendGoods
::
getGoodsId
).
collect
(
Collectors
.
toList
());
goodsStock
.
clear
();
for
(
String
goodId
:
needSendGoodsId
)
{
SubtractStockVO
.
SubtractStockGoodsVO
subtractStockGoodsVO
=
mapSubstractStocks
.
get
(
goodId
);
if
(
null
!=
mapSubstractStocks
.
get
(
goodId
))
{
goodsStock
.
add
(
subtractStockGoodsVO
);
}
}
}
else
{
return
stocks
.
stream
().
filter
(
subtractStockVO
->
!
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
}
return
stocks
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
View file @
84554661
...
...
@@ -9,6 +9,7 @@ import cn.freemud.entities.dto.calculate.*;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.handle.PromotionCommonMethodHandle
;
import
cn.freemud.service.IPromotionService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -35,6 +36,9 @@ public class DefaultPromotionService implements IPromotionService {
@Autowired
private
ShoppingCartConvertAdapter
shoppingCartConvertAdapter
;
@Autowired
private
PromotionCommonMethodHandle
promotionCommonMethodHandle
;
@Override
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityQueryDto
activityQueryDto
,
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
UserLoginInfoDto
userLoginInfoDto
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
long
totalOriginalAmount
=
0L
;
...
...
@@ -163,36 +167,6 @@ public class DefaultPromotionService implements IPromotionService {
* @return 返回应该扣减的加价购商品库存
*/
private
List
<
SubtractStockVO
>
filterSendGoodsStocks
(
List
<
SubtractStockVO
>
stocks
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
List
<
Discount
>
addMoneyDiscounts
)
{
if
(
CollectionUtils
.
isEmpty
(
stocks
)
||
CollectionUtils
.
isEmpty
(
addMoneyDiscounts
))
{
return
stocks
;
}
List
<
SubtractStockVO
>
subtractStockVOs
=
stocks
.
stream
().
filter
(
subtractStockVO
->
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
List
<
SubtractStockVO
.
SubtractStockGoodsVO
>
goodsStock
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
subtractStockVOs
))
{
SubtractStockVO
subtractStockVO
=
subtractStockVOs
.
get
(
0
);
goodsStock
=
subtractStockVO
.
getGoodsStock
();
}
if
(
null
==
goodsStock
)
{
return
stocks
;
}
Map
<
String
,
SubtractStockVO
.
SubtractStockGoodsVO
>
mapSubstractStocks
=
new
HashMap
<>();
if
(
CollectionUtils
.
isNotEmpty
(
goodsStock
))
{
mapSubstractStocks
=
goodsStock
.
stream
().
collect
(
Collectors
.
toMap
(
SubtractStockVO
.
SubtractStockGoodsVO
::
getGoodsId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
}
//获取加价购商品
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoods
=
shoppingCartInfoRequestVo
.
getSendGoods
();
if
(
CollectionUtils
.
isNotEmpty
(
sendGoods
))
{
List
<
String
>
needSendGoodsId
=
sendGoods
.
stream
().
map
(
ShoppingCartInfoRequestVo
.
SendGoods
::
getGoodsId
).
collect
(
Collectors
.
toList
());
goodsStock
.
clear
();
for
(
String
goodId
:
needSendGoodsId
)
{
SubtractStockVO
.
SubtractStockGoodsVO
subtractStockGoodsVO
=
mapSubstractStocks
.
get
(
goodId
);
if
(
null
!=
mapSubstractStocks
.
get
(
goodId
))
{
goodsStock
.
add
(
subtractStockGoodsVO
);
}
}
}
else
{
return
stocks
.
stream
().
filter
(
subtractStockVO
->
!
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
}
return
stocks
;
return
promotionCommonMethodHandle
.
filterSendGoodsStocks
(
stocks
,
shoppingCartInfoRequestVo
,
addMoneyDiscounts
);
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingEquallyService.java
View file @
84554661
...
...
@@ -9,14 +9,17 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.OrderChannelType
;
import
cn.freemud.handle.PromotionCommonMethodHandle
;
import
cn.freemud.service.impl.calculate.promotion.*
;
import
com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -48,6 +51,8 @@ public class CalculationSharingEquallyService {
@Autowired
private
CouponSharingService
promotionSharingService
;
@Autowired
private
PromotionCommonMethodHandle
promotionCommonMethodHandle
;
/**
* 均摊服务
* @param discountResult
...
...
@@ -242,37 +247,7 @@ public class CalculationSharingEquallyService {
private
List
<
SubtractStockVO
>
filterSendGoodsStocks
(
List
<
SubtractStockVO
>
stocks
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
List
<
Discount
>
addMoneyDiscounts
)
{
if
(
CollectionUtils
.
isEmpty
(
stocks
)
||
CollectionUtils
.
isEmpty
(
addMoneyDiscounts
))
{
return
stocks
;
}
List
<
SubtractStockVO
>
subtractStockVOs
=
stocks
.
stream
().
filter
(
subtractStockVO
->
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
List
<
SubtractStockVO
.
SubtractStockGoodsVO
>
goodsStock
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
subtractStockVOs
))
{
SubtractStockVO
subtractStockVO
=
subtractStockVOs
.
get
(
0
);
goodsStock
=
subtractStockVO
.
getGoodsStock
();
}
if
(
null
==
goodsStock
)
{
return
stocks
;
}
Map
<
String
,
SubtractStockVO
.
SubtractStockGoodsVO
>
mapSubstractStocks
=
new
HashMap
<>();
if
(
CollectionUtils
.
isNotEmpty
(
goodsStock
))
{
mapSubstractStocks
=
goodsStock
.
stream
().
collect
(
Collectors
.
toMap
(
SubtractStockVO
.
SubtractStockGoodsVO
::
getGoodsId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
}
//获取加价购商品
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoods
=
shoppingCartInfoRequestVo
.
getSendGoods
();
if
(
CollectionUtils
.
isNotEmpty
(
sendGoods
))
{
List
<
String
>
needSendGoodsId
=
sendGoods
.
stream
().
map
(
ShoppingCartInfoRequestVo
.
SendGoods
::
getGoodsId
).
collect
(
Collectors
.
toList
());
goodsStock
.
clear
();
for
(
String
goodId
:
needSendGoodsId
)
{
SubtractStockVO
.
SubtractStockGoodsVO
subtractStockGoodsVO
=
mapSubstractStocks
.
get
(
goodId
);
if
(
null
!=
mapSubstractStocks
.
get
(
goodId
))
{
goodsStock
.
add
(
subtractStockGoodsVO
);
}
}
}
else
{
return
stocks
.
stream
().
filter
(
subtractStockVO
->
!
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
}
return
stocks
;
return
promotionCommonMethodHandle
.
filterSendGoodsStocks
(
stocks
,
shoppingCartInfoRequestVo
,
addMoneyDiscounts
);
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CalculationServiceImpl.java
View file @
84554661
...
...
@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.*;
import
cn.freemud.enums.ActivityChannelEnum
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.handle.PromotionCommonMethodHandle
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.CommonService
;
import
cn.freemud.service.impl.ItemServiceImpl
;
...
...
@@ -34,7 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -84,6 +84,9 @@ public class CalculationServiceImpl {
@Autowired
private
FreightCalculation
freightCalculation
;
@Autowired
private
PromotionCommonMethodHandle
promotionCommonMethodHandle
;
/**
* 更新购物车行优惠信息
*/
...
...
@@ -315,37 +318,7 @@ public class CalculationServiceImpl {
* @return 返回应该扣减的加价购商品库存
*/
private
List
<
SubtractStockVO
>
filterSendGoodsStocks
(
List
<
SubtractStockVO
>
stocks
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
List
<
Discount
>
addMoneyDiscounts
)
{
if
(
CollectionUtils
.
isEmpty
(
stocks
)
||
CollectionUtils
.
isEmpty
(
addMoneyDiscounts
))
{
return
stocks
;
}
List
<
SubtractStockVO
>
subtractStockVOs
=
stocks
.
stream
().
filter
(
subtractStockVO
->
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
List
<
SubtractStockVO
.
SubtractStockGoodsVO
>
goodsStock
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
subtractStockVOs
))
{
SubtractStockVO
subtractStockVO
=
subtractStockVOs
.
get
(
0
);
goodsStock
=
subtractStockVO
.
getGoodsStock
();
}
if
(
null
==
goodsStock
)
{
return
stocks
;
}
Map
<
String
,
SubtractStockVO
.
SubtractStockGoodsVO
>
mapSubstractStocks
=
new
HashMap
<>();
if
(
CollectionUtils
.
isNotEmpty
(
goodsStock
))
{
mapSubstractStocks
=
goodsStock
.
stream
().
collect
(
Collectors
.
toMap
(
SubtractStockVO
.
SubtractStockGoodsVO
::
getGoodsId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
}
//获取加价购商品
List
<
ShoppingCartInfoRequestVo
.
SendGoods
>
sendGoods
=
shoppingCartInfoRequestVo
.
getSendGoods
();
if
(
CollectionUtils
.
isNotEmpty
(
sendGoods
))
{
List
<
String
>
needSendGoodsId
=
sendGoods
.
stream
().
map
(
ShoppingCartInfoRequestVo
.
SendGoods
::
getGoodsId
).
collect
(
Collectors
.
toList
());
goodsStock
.
clear
();
for
(
String
goodId
:
needSendGoodsId
)
{
SubtractStockVO
.
SubtractStockGoodsVO
subtractStockGoodsVO
=
mapSubstractStocks
.
get
(
goodId
);
if
(
null
!=
mapSubstractStocks
.
get
(
goodId
))
{
goodsStock
.
add
(
subtractStockGoodsVO
);
}
}
}
else
{
return
stocks
.
stream
().
filter
(
subtractStockVO
->
!
ActivityTypeEnum
.
TYPE_81
.
getCode
().
equals
(
subtractStockVO
.
getActivityType
())).
collect
(
Collectors
.
toList
());
}
return
stocks
;
return
promotionCommonMethodHandle
.
filterSendGoodsStocks
(
stocks
,
shoppingCartInfoRequestVo
,
addMoneyDiscounts
);
}
...
...
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