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
4d62d7c0
Commit
4d62d7c0
authored
Oct 19, 2022
by
周晓航
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增套餐商品扣减库存逻辑
parent
2bd92949
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
89 additions
and
30 deletions
+89
-30
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+71
-13
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/stock/UpdateProductStockRequestDto.java
+10
-4
order-application-service/src/main/java/cn/freemud/service/business/impl/OrderBusinessServiceImpl.java
+6
-11
order-application-service/src/main/java/cn/freemud/service/thirdparty/StockClient.java
+2
-2
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
4d62d7c0
...
...
@@ -33,6 +33,7 @@ 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.*
;
import
com.freemud.sdk.api.assortment.order.request.stock.UpdateProductStockRequestDto
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil
;
import
com.freemud.sdk.api.assortment.order.util.ClassUtils
;
...
...
@@ -65,6 +66,7 @@ public class OrderSdkAdapter {
/**
* 接单request
*
* @param operator
* @param orderBean
* @param otherParamDTO
...
...
@@ -203,9 +205,9 @@ public class OrderSdkAdapter {
Long
bLong
=
Long
.
valueOf
(
o2
.
getCreateTime
());
if
(
bLong
>
aLong
)
{
return
1
;
}
else
if
(
bLong
<
aLong
)
{
}
else
if
(
bLong
<
aLong
)
{
return
-
1
;
}
else
{
}
else
{
return
0
;
}
}
...
...
@@ -264,9 +266,9 @@ public class OrderSdkAdapter {
// 双重判断,防止前端乱传参搞事情
if
(
Objects
.
nonNull
(
bizType
)
&&
BizTypeEnum
.
ADVANCE_ORDER
.
getBizType
().
compareTo
(
bizType
)
==
0
)
{
request
.
setBizType
(
BizTypeEnum
.
ADVANCE_ORDER
.
getBizType
());
}
else
if
(
Objects
.
nonNull
(
bizType
)
&&
BizTypeEnum
.
MALL
.
getBizType
().
compareTo
(
bizType
)
==
0
)
{
}
else
if
(
Objects
.
nonNull
(
bizType
)
&&
BizTypeEnum
.
MALL
.
getBizType
().
compareTo
(
bizType
)
==
0
)
{
request
.
setBizType
(
BizTypeEnum
.
MALL
.
getBizType
());
}
else
{
}
else
{
// 20210730之前 默认设置为1
request
.
setBizType
(
CommonConstant
.
INTEGER_ONE
);
}
...
...
@@ -356,6 +358,7 @@ public class OrderSdkAdapter {
/**
* 美团Pos对接的时候,需要将优惠信息排序
*
* @param orderSettlementCreateReqList
* @param requestVo
* @return List<OrderSettlementCreateReq> 排序后
...
...
@@ -1945,6 +1948,61 @@ public class OrderSdkAdapter {
return
updateStocksRequest
;
}
/**
* 获取扣减库存信息
*
* @param orderBean 订单信息
* @param products 订单商品列表
* @param stockChangeType 库存改变类型
* @return
*/
public
UpdateProductStockRequestDto
getUpdateProductStockByFeign
(
OrderBeanV1
orderBean
,
List
<
CreateOrderProductRequest
>
products
,
StockChangeType
stockChangeType
,
String
menuType
)
{
UpdateProductStockRequestDto
updateStocksRequest
=
new
UpdateProductStockRequestDto
();
updateStocksRequest
.
setChannel
(
menuType
);
updateStocksRequest
.
setChangeType
(
stockChangeType
.
getCode
());
updateStocksRequest
.
setIsOversold
(
0
);
updateStocksRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
updateStocksRequest
.
setStoreId
(
orderBean
.
getShopId
());
updateStocksRequest
.
setTransNo
(
orderBean
.
getOid
());
updateStocksRequest
.
setTransTime
(
DateUtil
.
convert2String
(
new
Date
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
));
List
<
UpdateProductStockRequestDto
.
ProductStock
>
productStocks
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
products
))
{
products
.
forEach
(
product
->
{
// 套餐商品 基础服务为7 额外扣除库存逻辑
if
(
ProductTypeEnum
.
SETMEAL_UPPRICE_PRODUCT
.
getCode
().
compareTo
(
product
.
getOriginalProductType
())
==
0
)
{
if
(
product
.
getHasStockProudct
()
!=
null
&&
product
.
getHasStockProudct
())
{
UpdateProductStockRequestDto
.
ProductStock
productStocksVO
=
this
.
getProductStockVo
(
product
);
productStocks
.
add
(
productStocksVO
);
}
// 需要处理 过滤出 可选搭配
if
(
CollectionUtils
.
isNotEmpty
(
product
.
getComboProduct
()))
{
product
.
getComboProduct
().
stream
().
filter
(
c
->
!
c
.
getIsFixedProduct
()).
forEach
(
groupProduct
->
{
if
(
groupProduct
.
getHasStockProudct
()
!=
null
&&
groupProduct
.
getHasStockProudct
())
{
UpdateProductStockRequestDto
.
ProductStock
productStocksVO
=
this
.
getProductStockVo
(
groupProduct
);
productStocks
.
add
(
productStocksVO
);
}
});
}
}
else
{
if
(
product
.
getHasStockProudct
()
!=
null
&&
product
.
getHasStockProudct
())
{
UpdateProductStockRequestDto
.
ProductStock
productStocksVO
=
this
.
getProductStockVo
(
product
);
productStocks
.
add
(
productStocksVO
);
}
}
});
}
updateStocksRequest
.
setProductStocks
(
productStocks
);
return
updateStocksRequest
;
}
private
UpdateProductStockRequestDto
.
ProductStock
getProductStockVo
(
CreateOrderProductRequest
product
)
{
UpdateProductStockRequestDto
.
ProductStock
productStocksVO
=
new
UpdateProductStockRequestDto
.
ProductStock
();
productStocksVO
.
setProductId
(
product
.
getSpecification
());
productStocksVO
.
setQty
(
product
.
getNumber
());
productStocksVO
.
setProductType
(
product
.
getOriginalProductType
());
return
productStocksVO
;
}
public
ActivityUpdateStockRequest
convert2ActivityUpdateStockRequest
(
OrderBeanV1
orderBean
,
ActivityUpdateStockRequest
activityUpdateStockRequest
)
{
if
(
activityUpdateStockRequest
==
null
||
orderBean
==
null
)
{
return
null
;
...
...
@@ -2158,7 +2216,7 @@ public class OrderSdkAdapter {
download
.
setRiderPhone
(
info
.
getMobile
());
}
}
if
(
ObjectUtils
.
equals
(
orderDto
.
getOrderType
(),
OrderType
.
GENERAL_EXPRESS
.
getIndex
())
||
ObjectUtils
.
equals
(
orderDto
.
getOrderType
(),
OrderType
.
RESERVED_EXPRESS
.
getIndex
()))
{
if
(
ObjectUtils
.
equals
(
orderDto
.
getOrderType
(),
OrderType
.
GENERAL_EXPRESS
.
getIndex
())
||
ObjectUtils
.
equals
(
orderDto
.
getOrderType
(),
OrderType
.
RESERVED_EXPRESS
.
getIndex
()))
{
download
.
setDeliveryId
(
orderDto
.
getExpressNo
());
download
.
setExpress
(
StringUtils
.
isEmpty
(
orderDto
.
getExpressChannelName
())
&&
!
isThirdDelivery
?
"自配送"
:
orderDto
.
getExpressChannelName
());
if
(
isThirdDelivery
&&
StringUtils
.
isEmpty
(
orderDto
.
getExpressChannelName
()))
{
...
...
@@ -3220,7 +3278,7 @@ public class OrderSdkAdapter {
}
if
(
product
.
getExtInfo
()
!=
null
)
{
extInfo
.
setProductBindingCoupons
(
JSONArray
.
parseArray
(
product
.
getExtInfo
(),
ProductBindingCouponType
.
class
));
extInfo
.
setProductBindingCoupons
(
JSONArray
.
parseArray
(
product
.
getExtInfo
(),
ProductBindingCouponType
.
class
));
}
orderItemCreateReq
.
setExtInfo
(
JSONObject
.
toJSONString
(
extInfo
));
...
...
@@ -3905,7 +3963,7 @@ public class OrderSdkAdapter {
}
//fisherman 【01测16灰18全,【华莱士】【疑难专项】一个订单多张优惠券使用场景】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001037477
return
this
.
commonMethodVerificationNew
(
couponList
,
orderBean
,
openId
);
return
this
.
commonMethodVerificationNew
(
couponList
,
orderBean
,
openId
);
// // fisherman end
// if (couponList.size() > 1) {
...
...
@@ -3996,7 +4054,7 @@ public class OrderSdkAdapter {
couponRequest
.
setReqtype
(
71
);
couponRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
couponRequest
.
setPartnerId
(
Integer
.
parseInt
(
orderBean
.
getCompanyId
()));
ActivityChannelEnum
activityChannelEnum
=
orderTypeEnumConvert2ActivityChannel
(
orderBean
.
getOrderType
(),
orderBean
.
getBizType
());
ActivityChannelEnum
activityChannelEnum
=
orderTypeEnumConvert2ActivityChannel
(
orderBean
.
getOrderType
(),
orderBean
.
getBizType
());
if
(
activityChannelEnum
==
null
)
{
activityChannelEnum
=
ActivityChannelEnum
.
pickup
;
}
...
...
@@ -4009,7 +4067,7 @@ public class OrderSdkAdapter {
// 订单号 替换成唯一序号
couponRequest
.
setTrans_id
(
orderBean
.
getOid
());
couponRequest
.
setBusiness_date
(
DateUtil
.
convert2String
(
new
Date
(),
DateUtil
.
FORMAT_yyyyMMdd
));
List
<
TransactionVO
>
transactions
=
this
.
getTransactionList
(
collect
,
orderBean
,
openId
);
List
<
TransactionVO
>
transactions
=
this
.
getTransactionList
(
collect
,
orderBean
,
openId
);
// 配送券逻辑 end
couponRequest
.
setTransactions
(
transactions
);
return
couponRequest
;
...
...
@@ -4056,20 +4114,20 @@ public class OrderSdkAdapter {
return
transactions
;
}
private
ActivityChannelEnum
orderTypeEnumConvert2ActivityChannel
(
Integer
orderType
,
Integer
bizType
)
{
if
(
Objects
.
equals
(
BizTypeEnum
.
MALL
.
getBizType
(),
bizType
))
{
private
ActivityChannelEnum
orderTypeEnumConvert2ActivityChannel
(
Integer
orderType
,
Integer
bizType
)
{
if
(
Objects
.
equals
(
BizTypeEnum
.
MALL
.
getBizType
(),
bizType
))
{
return
ActivityChannelEnum
.
saasmall
;
}
if
(
Objects
.
equals
(
OrderTypeV1
.
TAKE_OUT
.
getCode
(),
orderType
))
{
return
ActivityChannelEnum
.
delivery
;
}
else
if
(
Objects
.
equals
(
OrderTypeV1
.
COLLECT_GOODS
.
getCode
(),
orderType
)
||
Objects
.
equals
(
OrderTypeV1
.
EAT_IN
.
getCode
(),
orderType
))
{
return
ActivityChannelEnum
.
pickup
;
}
else
{
}
else
{
return
ActivityChannelEnum
.
pickup
;
}
}
public
BaseQueryOrderRequest
getOrderConfirmRequest
(
String
operator
,
OrderBeanV1
orderBean
)
{
return
this
.
getOrderConfirmRequest
(
operator
,
orderBean
,
null
);
return
this
.
getOrderConfirmRequest
(
operator
,
orderBean
,
null
);
}
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/stock/UpdateProductStockRequestDto.java
View file @
4d62d7c0
...
...
@@ -15,7 +15,6 @@ package com.freemud.sdk.api.assortment.order.request.stock;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
import
java.util.List
;
@Data
...
...
@@ -36,19 +35,26 @@ public class UpdateProductStockRequestDto {
private
String
remark
;
//交易号, maxLength = 36
private
String
transNo
;
//2019-02-19T06:56:14.543Z"
private
Date
transTime
;
/**
* 交易类型 格式类型 yyyy-MM-dd HH:mm:ss
*/
private
String
transTime
;
@NoArgsConstructor
@Data
public
static
class
ProductStock
{
private
String
customerCode
;
private
Lo
ng
productId
;
private
Stri
ng
productId
;
private
Integer
qty
;
private
Integer
safeQty
;
//虚拟库存数, 可不传,默认为0
private
String
virtualQty
;
/**
* 商品类型 主要库存服务需要区分套餐商品用
*/
private
Integer
productType
;
}
}
order-application-service/src/main/java/cn/freemud/service/business/impl/OrderBusinessServiceImpl.java
View file @
4d62d7c0
package
cn
.
freemud
.
service
.
business
.
impl
;
import
cn.freemud.amqp.MQService
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.entities.dto.GetMemberExtendInfoRequestDto
;
import
cn.freemud.entities.dto.GetMemberExtendInfoResponseDto
;
...
...
@@ -11,6 +10,7 @@ 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
cn.freemud.service.thirdparty.StockClient
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
...
...
@@ -33,8 +33,6 @@ 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.response.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
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest
;
...
...
@@ -47,6 +45,7 @@ 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.request.stock.UpdateProductStockRequestDto
;
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.PayAccessResponse
;
...
...
@@ -84,15 +83,10 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Autowired
private
StockSdkService
stockSdkService
;
@Autowired
private
PromotionSdkService
promotionSdkService
;
@Autowired
private
CustomerApplicationClient
customerApplicationClient
;
// private MemberScoreService memberScoreService;
@Autowired
private
OfflineCouponSdkService
offlineCouponSdkService
;
@Autowired
private
MQService
mqService
;
@Autowired
private
OrderQueueService
orderQueueService
;
@Value
(
"${version.upgrade.weekDay:}"
)
...
...
@@ -106,7 +100,8 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Autowired
private
PromotionDiscountClient
promotionDiscountClient
;
@Autowired
private
StockClient
stockClient
;
@Override
...
...
@@ -270,9 +265,9 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
private
BaseOrderResponse
updateStockAndScore
(
OrderBeanV1
orderBean
,
List
<
CreateOrderProductRequest
>
products
,
ActivityUpdateStockRequest
updateStockRequest
,
List
<
CreateOrderAccountRequest
>
accounts
,
String
menuType
,
String
openId
,
Long
totalScore
)
{
//TODO 转换获取库存信息,扣减库存
Update
StocksRequest
updateStocksRequest
=
orderSdkAdapter
.
getUpdateProductStock
(
orderBean
,
products
,
StockChangeType
.
REDUCE
,
menuType
);
Update
ProductStockRequestDto
updateStocksRequest
=
orderSdkAdapter
.
getUpdateProductStockByFeign
(
orderBean
,
products
,
StockChangeType
.
REDUCE
,
menuType
);
if
(
updateStocksRequest
!=
null
&&
CollectionUtils
.
isNotEmpty
(
updateStocksRequest
.
getProductStocks
()))
{
BaseResponse
baseResponse
=
stockSdkService
.
reducesStocks
(
updateStocksRequest
,
""
);
cn
.
freemud
.
base
.
entity
.
BaseResponse
baseResponse
=
stockClient
.
reducesStocks
(
updateStocksRequest
);
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
baseResponse
.
getCode
()))
{
//TODO 失败取消订单
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/StockClient.java
View file @
4d62d7c0
...
...
@@ -13,7 +13,7 @@
package
cn
.
freemud
.
service
.
thirdparty
;
import
cn.freemud.base.entity.BaseResponse
;
import
com.freemud.
application.sdk.api.stockapi.request.UpdateStocksRequest
;
import
com.freemud.
sdk.api.assortment.order.request.stock.UpdateProductStockRequestDto
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
...
@@ -28,7 +28,7 @@ public interface StockClient {
* 扣减库存
*/
@PostMapping
(
"/reduceStocks"
)
BaseResponse
reducesStocks
(
@RequestBody
Update
StocksRequest
requestDto
);
BaseResponse
reducesStocks
(
@RequestBody
Update
ProductStockRequestDto
requestDto
);
}
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