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
66e68813
Commit
66e68813
authored
Jan 08, 2021
by
hanghang.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
蜜雪新增虚拟业务买券
parent
0163d40a
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
322 additions
and
113 deletions
+322
-113
order-application-service/src/main/java/cn/freemud/entities/vo/AppCreateOrderVo.java
+14
-0
order-application-service/src/main/java/cn/freemud/enums/BizTypeEnum.java
+42
-0
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
+71
-33
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
+63
-29
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
+132
-51
No files found.
order-application-service/src/main/java/cn/freemud/entities/vo/AppCreateOrderVo.java
View file @
66e68813
...
...
@@ -76,4 +76,18 @@ public class AppCreateOrderVo {
* 下单渠道 版本号
*/
private
String
version
;
//20210107蜜雪新增APP购买虚拟商品(券)业务--》》新增以下字段 bizType skuId --wanghanghang
/**
* 代表蜜雪APP买虚拟商品(买券)业务标识
*/
private
Integer
bizType
;
/**
* 此字段只针对蜜雪冰城APP下单购买虚拟券时使用,其他商品请入参orderProducts字段
*/
private
String
skuId
;
}
order-application-service/src/main/java/cn/freemud/enums/BizTypeEnum.java
0 → 100644
View file @
66e68813
package
cn
.
freemud
.
enums
;
public
enum
BizTypeEnum
{
APP_COUPON
(
6
,
"APP买券"
),
APP_PRO
(
1
,
"未知(目前暂不支持),后续可能预留给正常商品"
);
private
Integer
bizType
;
private
String
desc
;
BizTypeEnum
(
Integer
bizType
,
String
desc
)
{
this
.
bizType
=
bizType
;
this
.
desc
=
desc
;
}
public
static
cn
.
freemud
.
enums
.
BizTypeEnum
getByCode
(
Integer
code
)
{
for
(
cn
.
freemud
.
enums
.
BizTypeEnum
payType
:
values
())
{
if
(
payType
.
getBizType
().
equals
(
code
))
{
return
payType
;
}
}
return
null
;
}
public
Integer
getBizType
()
{
return
bizType
;
}
public
void
setBizType
(
Integer
bizType
)
{
this
.
bizType
=
bizType
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
\ No newline at end of file
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
View file @
66e68813
...
...
@@ -22,10 +22,14 @@ import com.alibaba.fastjson.JSONObject;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest
;
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.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest
;
import
com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest
;
import
com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse
;
...
...
@@ -33,28 +37,32 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQuer
import
com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService
;
import
com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO
;
import
com.freemud.application.sdk.api.productcenter.domain.ProductInfosDTO
;
import
com.freemud.application.sdk.api.productcenter.request.product.GetProductInfoRequest
;
import
com.freemud.application.sdk.api.productcenter.request.product.GetProductRequest
;
import
com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryInfoResponse
;
import
com.freemud.application.sdk.api.productcenter.response.product.GetProductInfosResponse
;
import
com.freemud.application.sdk.api.productcenter.service.MenuService
;
import
com.freemud.application.sdk.api.productcenter.service.ProductService
;
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.request.order.CancelOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.QueryRelatedOrderByCodeRequest
;
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.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryRelatedOrderByCodeResp
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
...
...
@@ -99,12 +107,12 @@ public class AppOrderServiceImpl implements AppOrderService {
OrderExtInfoDto
extInfo
=
orderservice
.
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
,
shoppingCartGoodsDto
);
//创建订单
BaseResponse
createOrderOperateDtoResponse
=
orderservice
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
return
createOrderOperateDtoResponse
;
}
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
BaseResponse
baseResponse
=
this
.
updateOrderExtInfo
(
createOrderOperateDto
.
getProductOrderBean
(),
extInfo
,
trackingNo
);
if
(
baseResponse
!=
null
)
{
if
(
baseResponse
!=
null
)
{
return
baseResponse
;
}
//返回没创建预支付的结果
...
...
@@ -135,45 +143,74 @@ public class AppOrderServiceImpl implements AppOrderService {
return
orderservice
.
createPrepayOrder
(
createPrepayRequestDto
);
}
@Autowired
private
OrderSdkService
orderSdkService
;
@Autowired
private
OrderSdkAdapter
orderSdkAdapter
;
/**
* APP下单,下单带商品信息,不经过购物车服务,不唤起支付
*/
@Override
public
BaseResponse
createOrder
(
AppCreateOrderVo
createOrderReq
,
AssortmentCustomerInfoVo
customerInfo
)
{
public
BaseResponse
createOrder
(
AppCreateOrderVo
createOrderReq
,
AssortmentCustomerInfoVo
customerInfo
)
{
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
String
partnerId
=
createOrderReq
.
getPartnerId
();
String
shopId
=
createOrderReq
.
getShopId
();
// 获取门店信息
StoreInfoRequest
storeInfoRequest
=
new
StoreInfoRequest
(
partnerId
,
shopId
,
null
);
StoreInfoRequest
storeInfoRequest
=
new
StoreInfoRequest
(
partnerId
,
shopId
,
null
);
StoreResponse
storeResponse
=
storeCenterService
.
getStoreInfo
(
storeInfoRequest
,
trackingNo
);
if
(
storeResponse
==
null
||
storeResponse
.
getBizVO
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
STORE_NOT_FOUND
);
}
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
checkOrder
.
checkOrderByStore
(
storeResponse
.
getBizVO
());
/**蜜雪新增需求-->APP可以购买虚拟商品券业务逻辑**/
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
if
(
createOrderReq
.
getBizType
()
!=
null
&&
BizTypeEnum
.
APP_COUPON
.
getBizType
().
equals
(
createOrderReq
.
getBizType
()))
{
//20200107提取虚拟商品券效验方法---》校验虚拟商品,如果正常则返回创建订单对象
BaseResponse
createOrderRequestResponse
=
new
SellCouponOrderServiceImpl
().
checkOrderCoupon
(
customerInfo
,
storeResponse
,
trackingNo
,
createOrderReq
.
getMenuType
(),
Integer
.
valueOf
(
createOrderReq
.
getBizType
()),
partnerId
,
shopId
,
createOrderReq
.
getSkuId
(),
null
);
if
(
createOrderRequestResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderRequestResponse
.
getCode
())
||
createOrderRequestResponse
.
getResult
()
==
null
)
{
return
createOrderRequestResponse
;
}
CreateOrderRequest
createOrderRequest
=
(
CreateOrderRequest
)
createOrderRequestResponse
.
getResult
();
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
orderInfoReqsBaseResponse
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
CreateOrderResponse
createOrderResponse
=
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
orderInfoReqsBaseResponse
);
if
(
createOrderResponse
==
null
||
createOrderResponse
.
getErrcode
()
!=
100
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CREATE_ERROR
);
}
orderBean
=
createOrderResponse
.
getData
();
}
else
{
/**APP创建实体商品业务逻辑**/
// 查商品服务确定金额
ShoppingCartGoodsDto
shoppingCartGoodsDto
=
checkOrderProduct
(
partnerId
,
shopId
,
createOrderReq
.
getOrderProducts
(),
createOrderReq
.
getMenuType
(),
createOrderReq
.
getReachStoreType
());
ShoppingCartGoodsDto
shoppingCartGoodsDto
=
checkOrderProduct
(
partnerId
,
shopId
,
createOrderReq
.
getOrderProducts
(),
createOrderReq
.
getMenuType
(),
createOrderReq
.
getReachStoreType
());
CreateOrderVo
createOrderVo
=
new
CreateOrderVo
();
BeanUtil
.
convertBean
(
createOrderReq
,
createOrderVo
);
BeanUtil
.
convertBean
(
createOrderReq
,
createOrderVo
);
createOrderVo
.
setStoreName
(
storeResponse
.
getBizVO
().
getStoreName
());
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满
足起送条件
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满
足起送条件
Integer
pushOrderTime
=
checkOrder
.
checkOrderByOrderType
(
createOrderVo
,
customerInfo
,
storeResponse
.
getBizVO
(),
shoppingCartGoodsDto
,
trackingNo
);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDto
extInfo
=
orderservice
.
getExtInfo
(
customerInfo
,
storeResponse
.
getBizVO
(),
pushOrderTime
,
createOrderVo
,
shoppingCartGoodsDto
);
//创建订单
BaseResponse
createOrderOperateDtoResponse
=
orderservice
.
sdkCreateOrder
(
createOrderVo
,
storeResponse
.
getBizVO
(),
shoppingCartGoodsDto
,
customerInfo
);
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
return
createOrderOperateDtoResponse
;
}
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
BaseResponse
baseResponse
=
this
.
updateOrderExtInfo
(
createOrderOperateDto
.
getProductOrderBean
(),
extInfo
,
trackingNo
);
if
(
baseResponse
!=
null
)
{
if
(
baseResponse
!=
null
)
{
return
baseResponse
;
}
orderBean
=
createOrderOperateDto
.
getProductOrderBean
();
}
//返回没创建预支付的结果
CreateOrderResponseVo
responseVo
=
orderAdapter
.
convent2CreateFatherSonOrderNoPayResponseVo
(
createOrderOperateDto
.
getProductOrderBean
()
);
CreateOrderResponseVo
responseVo
=
orderAdapter
.
convent2CreateFatherSonOrderNoPayResponseVo
(
orderBean
);
return
ResponseUtil
.
success
(
responseVo
);
}
...
...
@@ -196,7 +233,7 @@ public class AppOrderServiceImpl implements AppOrderService {
}
OrderExtInfoDto
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
if
(
extInfo
==
null
||
StringUtils
.
isBlank
(
extInfo
.
getSessionId
())
||
!
extInfo
.
getSessionId
().
equals
(
createPrepayVo
.
getSessionId
()))
{
if
(
extInfo
==
null
||
StringUtils
.
isBlank
(
extInfo
.
getSessionId
())
||
!
extInfo
.
getSessionId
().
equals
(
createPrepayVo
.
getSessionId
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_OWNER_ERROR
);
}
}
...
...
@@ -217,19 +254,19 @@ public class AppOrderServiceImpl implements AppOrderService {
return
null
;
}
private
CreateOrderOperateDto
getCreateOrderOperateDto
(
String
orderId
){
private
CreateOrderOperateDto
getCreateOrderOperateDto
(
String
orderId
)
{
QueryRelatedOrderByCodeRequest
baseQueryOrderRequest
=
new
QueryRelatedOrderByCodeRequest
();
baseQueryOrderRequest
.
setOrderCode
(
orderId
);
baseQueryOrderRequest
.
setTrackingNo
(
LogTreadLocal
.
getTrackingNo
());
QueryRelatedOrderByCodeResp
queryOrderByIdResponse
=
orderCenterSdkService
.
queryRelatedOrderByCode
(
baseQueryOrderRequest
);
if
(
queryOrderByIdResponse
==
null
||
CollectionUtils
.
isEmpty
(
queryOrderByIdResponse
.
getOrderBeanList
()))
{
if
(
queryOrderByIdResponse
==
null
||
CollectionUtils
.
isEmpty
(
queryOrderByIdResponse
.
getOrderBeanList
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_QUERYORDER_ERROR
);
}
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
>
orderBeanList
=
queryOrderByIdResponse
.
getOrderBeanList
();
long
totalAmount
=
0
;
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherBeanListOne
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
QueryOrdersResponse
.
DataBean
.
OrderBean
productBeanListOne
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
if
(
1
==
orderBeanList
.
size
())
{
if
(
1
==
orderBeanList
.
size
())
{
fatherBeanListOne
=
orderBeanList
.
get
(
0
);
productBeanListOne
=
orderBeanList
.
get
(
0
);
totalAmount
=
orderBeanList
.
get
(
0
).
getAmount
();
...
...
@@ -250,7 +287,7 @@ public class AppOrderServiceImpl implements AppOrderService {
private
void
closeHistoryPrePay
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
OrderExtInfoDto
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
//判断当前订单是否存在预支付订单
if
(
extInfo
!=
null
&&
StringUtils
.
isNotEmpty
(
extInfo
.
getFmId
()))
{
if
(
extInfo
!=
null
&&
StringUtils
.
isNotEmpty
(
extInfo
.
getFmId
()))
{
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest
paymentQueryRequest
=
new
PaymentQueryRequest
();
...
...
@@ -258,24 +295,24 @@ public class AppOrderServiceImpl implements AppOrderService {
paymentQueryRequest
.
setStoreId
(
orderBean
.
getShopId
());
paymentQueryRequest
.
setFmId
(
extInfo
.
getFmId
());
paymentQueryRequest
.
setVer
(
"2"
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
PaymentQueryResponse
>
queryResponseBaseResponse
=
paymentNewService
.
query
(
paymentQueryRequest
,
LogThreadLocal
.
getTrackingNo
());
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
PaymentQueryResponse
>
queryResponseBaseResponse
=
paymentNewService
.
query
(
paymentQueryRequest
,
LogThreadLocal
.
getTrackingNo
());
//判断预支付订单状态
if
(
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
queryResponseBaseResponse
.
getCode
()))
{
if
(
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
queryResponseBaseResponse
.
getCode
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_PAY_GETPRE_MESSAGE_ERROR
);
}
//判断当前预支付订单是否已经支付成功
if
(
ObjectUtils
.
equals
(
TradeState
.
SUCCESS
.
getCode
(),
queryResponseBaseResponse
.
getData
().
getTradeState
()))
{
if
(
ObjectUtils
.
equals
(
TradeState
.
SUCCESS
.
getCode
(),
queryResponseBaseResponse
.
getData
().
getTradeState
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_HAS_PAID
);
}
// 3.取消前一个预支付订单 调用支付取消预支付订单,如果预支付订单已经取消了再调用取消预支付订单接口会报错的
if
(
ObjectUtils
.
equals
(
TradeState
.
NOTPAY
.
getCode
(),
queryResponseBaseResponse
.
getData
().
getTradeState
()))
{
if
(
ObjectUtils
.
equals
(
TradeState
.
NOTPAY
.
getCode
(),
queryResponseBaseResponse
.
getData
().
getTradeState
()))
{
PaymentCloseUnifiedOrderRequest
closeUnifiedOrderRequest
=
new
PaymentCloseUnifiedOrderRequest
();
closeUnifiedOrderRequest
.
setFmId
(
extInfo
.
getFmId
());
closeUnifiedOrderRequest
.
setVer
(
"2"
);
closeUnifiedOrderRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
closeUnifiedOrderRequest
.
setStoreId
(
orderBean
.
getShopId
());
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
PaymentCloseUnifiedOrderResponse
>
cancelNewUnifiedOrder
=
paymentNewService
.
cancelNewUnifiedOrder
(
closeUnifiedOrderRequest
,
LogThreadLocal
.
getTrackingNo
());
if
(
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
cancelNewUnifiedOrder
.
getCode
()))
{
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
PaymentCloseUnifiedOrderResponse
>
cancelNewUnifiedOrder
=
paymentNewService
.
cancelNewUnifiedOrder
(
closeUnifiedOrderRequest
,
LogThreadLocal
.
getTrackingNo
());
if
(
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
cancelNewUnifiedOrder
.
getCode
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_PRE_PAYMENT_CLOSE_FAILED
);
}
}
...
...
@@ -287,7 +324,7 @@ public class AppOrderServiceImpl implements AppOrderService {
* 查询商品信息
*/
public
ShoppingCartGoodsDto
checkOrderProduct
(
String
partnerId
,
String
shopId
,
List
<
OrderProductVo
>
orderProducts
,
String
menuType
,
Integer
reachStoreType
)
{
String
menuType
,
Integer
reachStoreType
)
{
ShoppingCartGoodsDto
shoppingCartGoodsDto
=
new
ShoppingCartGoodsDto
();
...
...
@@ -353,7 +390,7 @@ public class AppOrderServiceImpl implements AppOrderService {
cartGoodsDetailDto
.
setUnit
(
productBeanDTO
.
getUnit
());
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
>
extraList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
op
.
getExtra
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
op
.
getExtra
()))
{
for
(
OrderProductExtraVo
orderProductExtraVo
:
op
.
getExtra
())
{
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
cartGoodsExtra
=
new
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
();
cartGoodsExtra
.
setAttributeId
(
orderProductExtraVo
.
getAttributeId
());
...
...
@@ -401,7 +438,7 @@ public class AppOrderServiceImpl implements AppOrderService {
cartGoodsDetailDto
.
setUnit
(
productBeanDTO
.
getUnit
());
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
>
extraList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
op
.
getExtra
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
op
.
getExtra
()))
{
for
(
OrderProductExtraVo
orderProductExtraVo
:
op
.
getExtra
())
{
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
cartGoodsExtra
=
new
ShoppingCartGoodsDto
.
CartGoodsDetailDto
.
CartGoodsExtra
();
cartGoodsExtra
.
setAttributeId
(
orderProductExtraVo
.
getAttributeId
());
...
...
@@ -418,9 +455,10 @@ public class AppOrderServiceImpl implements AppOrderService {
}
if
(
StringUtils
.
isNotBlank
(
cartGoodsDetailDto
.
getSpuId
()))
if
(
StringUtils
.
isNotBlank
(
cartGoodsDetailDto
.
getSpuId
()))
{
products
.
add
(
cartGoodsDetailDto
);
}
}
shoppingCartGoodsDto
.
setProducts
(
products
);
...
...
@@ -429,7 +467,7 @@ public class AppOrderServiceImpl implements AppOrderService {
shoppingCartGoodsDto
.
setTotalAmount
(
totalAmount
);
// shoppingCartGoodsDto.setTotalDiscountAmount(0L);
//堂食无包装费
if
(
reachStoreType
!=
null
&&
reachStoreType
!=
5
)
{
if
(
reachStoreType
!=
null
&&
reachStoreType
!=
5
)
{
shoppingCartGoodsDto
.
setPackageAmount
(
packageAmount
);
}
//积分抵扣
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
66e68813
...
...
@@ -6,10 +6,7 @@ import cn.freemud.base.log.LogTreadLocal;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.AppCreateOrderVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
...
...
@@ -31,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Arrays
;
import
java.util.Map
;
...
...
@@ -89,6 +87,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private
SellCouponOrderServiceImpl
sellCouponOrderService
;
@Value
(
"${saas.autoRefund.client}"
)
private
String
autoRefundClient
;
@Override
public
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
)
{
AssortmentCustomerInfoVo
assortmentCustomerInfoVo
=
assortmentCustomerInfoManager
.
getCustomerInfoByObject
(
createOrderVo
.
getSessionId
());
...
...
@@ -97,7 +96,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
}
// 扩展字段中存储 sessionKey
createOrderVo
.
setSessionKey
(
assortmentCustomerInfoVo
.
getSessionKey
());
if
(
IappIdType
.
WC_XCX
.
getCode
().
equals
(
assortmentCustomerInfoVo
.
getIappId
()))
{
//i围餐
if
(
IappIdType
.
WC_XCX
.
getCode
().
equals
(
assortmentCustomerInfoVo
.
getIappId
()))
{
//i围餐
BaseResponse
baseResponse
=
null
;
CreateReserveOrderVo
createReserveOrderVo
=
new
CreateReserveOrderVo
();
createReserveOrderVo
.
setCarVer
(
createOrderVo
.
getCarVer
());
...
...
@@ -107,8 +106,10 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
createReserveOrderVo
.
setCouponCode
(
createOrderVo
.
getCouponCode
());
createReserveOrderVo
.
setUseCustomerScore
(
createOrderVo
.
getUseCustomerScore
());
createReserveOrderVo
.
setCardCode
(
createOrderVo
.
getCardCode
());
if
(
createOrderVo
.
getOperation
()
==
null
)
throw
new
ServiceException
(
ResponseResult
.
ORDER_CREATE_OPERATION_ERROR
);
switch
(
createOrderVo
.
getOperation
()){
if
(
createOrderVo
.
getOperation
()
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_CREATE_OPERATION_ERROR
);
}
switch
(
createOrderVo
.
getOperation
())
{
case
2
:
// 开台
baseResponse
=
encircleOrderService
.
createReserveOrder
(
createOrderVo
);
break
;
...
...
@@ -127,7 +128,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
/**
* 商城订单
*/
if
(
OrderChannelType
.
SAASMALL
.
getCode
().
equals
(
createOrderVo
.
getChannelType
()))
{
if
(
OrderChannelType
.
SAASMALL
.
getCode
().
equals
(
createOrderVo
.
getChannelType
()))
{
return
mallOrderService
.
createOrder
(
createOrderVo
);
}
...
...
@@ -140,7 +141,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
//原标准点餐程序逻辑处理
BaseResponse
baseResponse
=
this
.
checkStandardParamInfo
(
createOrderVo
);
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
()))
{
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
()))
{
return
baseResponse
;
}
...
...
@@ -149,7 +150,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
String
createOrderKey
=
CREATE_ORDER_KEY
+
assortmentCustomerInfoVo
.
getMemberId
();
try
{
Long
expire
=
Long
.
valueOf
(
createOrderKeyExpire
);
if
(!
LockUtils
.
lock
(
redisCache
.
getRedisTemplate
(),
createOrderKey
,
expire
))
{
if
(!
LockUtils
.
lock
(
redisCache
.
getRedisTemplate
(),
createOrderKey
,
expire
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_NOT_CREATE_ERROR
);
}
return
orderService
.
createOrderNew
(
createOrderVo
);
...
...
@@ -167,7 +168,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if
(
assortmentCustomerInfoVo
==
null
||
StringUtils
.
isEmpty
(
assortmentCustomerInfoVo
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
}
if
(!
mcCafePartnerId
.
equals
(
assortmentCustomerInfoVo
.
getPartnerId
()))
{
if
(!
mcCafePartnerId
.
equals
(
assortmentCustomerInfoVo
.
getPartnerId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
LOGIN_STORE_ERROR
);
}
// 扩展字段中存储 sessionKey
...
...
@@ -175,7 +176,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
//原标准点餐程序逻辑处理
BaseResponse
baseResponse
=
this
.
checkStandardParamInfo
(
createOrderVo
);
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
()))
{
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
()))
{
return
baseResponse
;
}
...
...
@@ -184,7 +185,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
String
createOrderKey
=
CREATE_ORDER_KEY
+
assortmentCustomerInfoVo
.
getMemberId
();
try
{
Long
expire
=
Long
.
valueOf
(
createOrderKeyExpire
);
if
(!
LockUtils
.
lock
(
redisCache
.
getRedisTemplate
(),
createOrderKey
,
expire
))
{
if
(!
LockUtils
.
lock
(
redisCache
.
getRedisTemplate
(),
createOrderKey
,
expire
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_NOT_CREATE_ERROR
);
}
return
mcCafeOrderService
.
createMCCafeOrder
(
createOrderVo
);
...
...
@@ -204,17 +205,17 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if
(
UserLoginChannelEnum
.
APP
.
getCode
().
equals
(
assortmentCustomerInfoVo
.
getChannel
()))
{
return
appOrderService
.
createPrepay
(
createPrepayVo
);
}
throw
new
UnsupportedOperationException
(
"暂不支持渠道:"
+
assortmentCustomerInfoVo
.
getChannel
());
throw
new
UnsupportedOperationException
(
"暂不支持渠道:"
+
assortmentCustomerInfoVo
.
getChannel
());
}
@Override
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
)
{
if
(
StringUtils
.
isEmpty
(
message
.
getTrans_id
())){
if
(
StringUtils
.
isEmpty
(
message
.
getTrans_id
()))
{
return
orderAdapter
.
newSendPayFaileMessage
();
}
//添加分布式锁,如果没有取得锁直接返回失败;整个方法执行完毕后会删掉该锁
String
paySuccessKey
=
PAY_SUCCESS_KEY
+
message
.
getTrans_id
();
if
(!
LockUtils
.
lockAfter
(
redisCache
.
getRedisTemplate
(),
paySuccessKey
))
{
if
(!
LockUtils
.
lockAfter
(
redisCache
.
getRedisTemplate
(),
paySuccessKey
))
{
return
orderAdapter
.
newSendPayFaileMessage
();
}
try
{
...
...
@@ -230,12 +231,12 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
log
.
error
(
"paySuccessCallback_queryOrderById_faild, trackingNo:{},PaysuccessNoticeMessage:{}"
,
LogTreadLocal
.
getTrackingNo
(),
gson
.
toJson
(
message
));
return
gson
.
toJson
(
message
);
}
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
//todo
// 混合支付失败,取消订单
if
(!
message
.
getResult_code
().
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
))
{
return
orderService
.
cannelComPayOrder
(
confirmOrderDto
,
orderBean
);
}
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
())){
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
()))
{
return
orderAdapter
.
sendPaySuccessNoticeMessage
();
}
Integer
client
=
OrderSourceType
.
getClientByCode
(
orderBean
.
getSource
());
...
...
@@ -253,21 +254,24 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
/**
* 微商城处理
*/
if
(
OrderSourceType
.
SAASMALL
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
if
(
OrderSourceType
.
SAASMALL
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
return
mallOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
/**
* app订单处理
*/
if
(
OrderSourceType
.
APP
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
if
(
OrderSourceType
.
APP
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
if
(
orderBean
.
getBizType
()
==
6
){
return
sellCouponOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
return
appOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
//买券虚拟订单
if
(
orderBean
.
getBizType
()
==
6
)
{
if
(
orderBean
.
getBizType
()
==
6
)
{
return
sellCouponOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
//麦咖啡订单处理
if
(
mcCafePartnerId
.
equals
(
orderBean
.
getCompanyId
()))
{
if
(
mcCafePartnerId
.
equals
(
orderBean
.
getCompanyId
()))
{
return
mcCafeOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
/**
...
...
@@ -286,7 +290,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
public
String
mcCafePaySuccessCallback
(
PaysuccessNoticeMessage
message
)
{
//添加分布式锁,如果没有取得锁直接返回失败;整个方法执行完毕后会删掉该锁
String
paySuccessKey
=
PAY_SUCCESS_KEY
+
message
.
getTrans_id
();
if
(!
LockUtils
.
lockAfter
(
redisCache
.
getRedisTemplate
(),
paySuccessKey
))
{
if
(!
LockUtils
.
lockAfter
(
redisCache
.
getRedisTemplate
(),
paySuccessKey
))
{
return
orderAdapter
.
newSendPayFaileMessage
();
}
try
{
...
...
@@ -303,7 +307,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return
gson
.
toJson
(
message
);
}
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
())){
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
()))
{
return
orderAdapter
.
sendPaySuccessNoticeMessage
();
}
/**
...
...
@@ -318,34 +322,64 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
}
}
/**
* APP下单,下单带商品信息,不经过购物车服务,不唤起支付
*/
@Override
public
BaseResponse
appCreateOrder
(
AppCreateOrderVo
createOrderVo
)
{
//蜜雪业务新增APP购买虚拟券,此处判断分支->蜜雪买券逻辑走平台买券逻辑20210108 向下还存在发起支付分之判断 wanghanghang
// if("6".equals(createOrderVo.getBizType())){
// SellCouponCreateOrderVo sellCouponCreateOrderVo = conversionObjByAppCreateOrderVo(createOrderVo);
// return sellCouponOrderService.createOrder(sellCouponCreateOrderVo);
// }
AssortmentCustomerInfoVo
assortmentCustomerInfoVo
=
assortmentCustomerInfoManager
.
getCustomerInfoByObject
(
createOrderVo
.
getSessionId
());
if
(
assortmentCustomerInfoVo
==
null
||
StringUtils
.
isEmpty
(
assortmentCustomerInfoVo
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
}
if
(
UserLoginChannelEnum
.
APP
.
getCode
().
equals
(
assortmentCustomerInfoVo
.
getChannel
()))
{
return
appOrderService
.
createOrder
(
createOrderVo
,
assortmentCustomerInfoVo
);
return
appOrderService
.
createOrder
(
createOrderVo
,
assortmentCustomerInfoVo
);
}
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
);
}
/**
* 20210107 wanghanghang
* 蜜雪业务新增APP购买虚拟券,此处在APP下单时,调用平台买券业务进行对象转换
*
* @param createOrderVo
* @return
*/
// private SellCouponCreateOrderVo conversionObjByAppCreateOrderVo(AppCreateOrderVo createOrderVo) {
// SellCouponCreateOrderVo sellCouponCreateOrderVo = new SellCouponCreateOrderVo();
// sellCouponCreateOrderVo.setBizType(createOrderVo.getBizType() + "");
// sellCouponCreateOrderVo.setSessionId(createOrderVo.getSessionId());
// sellCouponCreateOrderVo.setShopId(createOrderVo.getShopId());
// //获取商品集合里的虚拟商品skuid
// //sellCouponCreateOrderVo.setSkuId(createOrderVo.getOrderProducts().get(0).getSkuId());
// sellCouponCreateOrderVo.setSkuId(createOrderVo.getSkuId());
// sellCouponCreateOrderVo.setCardCode(null);
// sellCouponCreateOrderVo.setMenuType(createOrderVo.getMenuType());
// sellCouponCreateOrderVo.setChannel("");
// sellCouponCreateOrderVo.setVersion(createOrderVo.getVersion());
// return sellCouponCreateOrderVo;
// }
/**
* 标准点餐参数校验
*
* @param createOrderVo
* @return
*/
private
BaseResponse
checkStandardParamInfo
(
CreateOrderVo
createOrderVo
){
if
(
StringUtils
.
isEmpty
(
createOrderVo
.
getSessionId
()))
{
private
BaseResponse
checkStandardParamInfo
(
CreateOrderVo
createOrderVo
)
{
if
(
StringUtils
.
isEmpty
(
createOrderVo
.
getSessionId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
CREATE_ORDER_CHECK_SESSION_ERROR
);
}
if
(
StringUtils
.
isEmpty
(
createOrderVo
.
getShopId
()))
{
if
(
StringUtils
.
isEmpty
(
createOrderVo
.
getShopId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
CREATE_ORDER_CHECK_STORE_ERROR
);
}
if
(
createOrderVo
.
getOrderType
()
==
null
)
{
if
(
createOrderVo
.
getOrderType
()
==
null
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
CREATE_ORDER_CHECK_ORDERTYPE_ERROR
);
}
return
ResponseUtil
.
success
();
...
...
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
View file @
66e68813
...
...
@@ -5,6 +5,7 @@ import cn.freemud.adapter.OrderAdapter;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.constant.CommonRedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.Active
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
...
...
@@ -149,44 +150,50 @@ public class SellCouponOrderServiceImpl {
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
checkOrder
.
checkOrderByStore
(
storeResponseDto
);
GetProductInfoRequest
request
=
new
GetProductInfoRequest
();
request
.
setChannel
(
requestVo
.
getMenuType
());
request
.
setPartnerId
(
partnerId
);
request
.
setProductInfoType
(
2
);
request
.
setShopId
(
storeId
);
request
.
setProductIds
(
Lists
.
newArrayList
(
requestVo
.
getSkuId
()));
//获取商品(里面的活动)
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
GetProductInfosResponse
>
productInfosByIds
=
menuService
.
getProductInfosByIds
(
request
,
trackingNo
);
if
(!
SUCCESS
.
equals
(
productInfosByIds
.
getCode
())
||
productInfosByIds
.
getData
()
==
null
||
CollectionUtils
.
isEmpty
(
productInfosByIds
.
getData
().
getProducts
())){
return
ResponseUtil
.
error
(
ResponseResultEnum
.
GET_PRODUCT_INFOS_ERROR
.
getCode
(),
ResponseResultEnum
.
GET_PRODUCT_INFOS_ERROR
.
getMessage
());
}
List
<
GetMenuCategoryInfoResponse
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
.
ProductBindingCouponType
>
productBindingCoupons
=
productInfosByIds
.
getData
().
getProducts
().
get
(
0
).
getProductBindingCouponTypes
();
if
(
CollectionUtils
.
isEmpty
(
productBindingCoupons
)){
return
ResponseUtil
.
error
(
ResponseResult
.
STORE_ITEM_CHECK_INVAILD
);
}
List
<
String
>
activityCodes
=
new
ArrayList
<>();
for
(
GetMenuCategoryInfoResponse
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
.
ProductBindingCouponType
productBindingCouponType
:
productBindingCoupons
){
activityCodes
.
add
(
productBindingCouponType
.
getActivityCode
());
}
// GetProductInfoRequest request = new GetProductInfoRequest();
// request.setChannel(requestVo.getMenuType());
// request.setPartnerId(partnerId);
// request.setProductInfoType(2);
// request.setShopId(storeId);
// request.setProductIds(Lists.newArrayList(requestVo.getSkuId()));
// //获取商品(里面的活动)
// com.freemud.application.sdk.api.base.BaseResponse<GetProductInfosResponse> productInfosByIds = menuService.getProductInfosByIds(request, trackingNo);
// if(!SUCCESS.equals(productInfosByIds.getCode()) || productInfosByIds.getData() == null || CollectionUtils.isEmpty(productInfosByIds.getData().getProducts())){
// return ResponseUtil.error(ResponseResultEnum.GET_PRODUCT_INFOS_ERROR.getCode(),ResponseResultEnum.GET_PRODUCT_INFOS_ERROR.getMessage());
// }
// List<GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType> productBindingCoupons = productInfosByIds.getData().getProducts().get(0).getProductBindingCouponTypes();
// if(CollectionUtils.isEmpty(productBindingCoupons)){
// return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
// }
//
// List<String> activityCodes = new ArrayList<>();
// for (GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType productBindingCouponType : productBindingCoupons){
// activityCodes.add(productBindingCouponType.getActivityCode());
// }
//
// List<ActiveDetailVO> activeDetailVOS = batchQueryActivityInfo(partnerId, activityCodes, trackingNo);
// if(CollectionUtils.isEmpty(activeDetailVOS) || activityCodes.size() != activeDetailVOS.size()){
// return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
// }
// Date now = new Date();
// for (ActiveDetailVO activeDetailVO : activeDetailVOS){
// if(activeDetailVO.getEffectiveEndTime() != null && activeDetailVO.getEffectiveEndTime().before(now)){
// return ResponseUtil.error(ResponseResult.COUPON_INVAILD);
// }
// }
BaseResponse
createOrderRequestResponse
=
checkOrderCoupon
(
userLoginInfoDto
,
storeResponse
,
trackingNo
,
requestVo
.
getMenuType
(),
Integer
.
valueOf
(
requestVo
.
getBizType
()),
partnerId
,
storeId
,
requestVo
.
getSkuId
(),
requestVo
.
getCardCode
());
if
(
createOrderRequestResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderRequestResponse
.
getCode
())
||
createOrderRequestResponse
.
getResult
()
==
null
)
{
return
createOrderRequestResponse
;
}
CreateOrderRequest
createOrderRequest
=
(
CreateOrderRequest
)
createOrderRequestResponse
.
getResult
();
List
<
ActiveDetailVO
>
activeDetailVOS
=
batchQueryActivityInfo
(
partnerId
,
activityCodes
,
trackingNo
);
if
(
CollectionUtils
.
isEmpty
(
activeDetailVOS
)
||
activityCodes
.
size
()
!=
activeDetailVOS
.
size
()){
return
ResponseUtil
.
error
(
ResponseResult
.
STORE_ITEM_CHECK_INVAILD
);
}
Date
now
=
new
Date
();
for
(
ActiveDetailVO
activeDetailVO
:
activeDetailVOS
){
if
(
activeDetailVO
.
getEffectiveEndTime
()
!=
null
&&
activeDetailVO
.
getEffectiveEndTime
().
before
(
now
)){
return
ResponseUtil
.
error
(
ResponseResult
.
COUPON_INVAILD
);
}
}
CreateOrderRequest
createOrderRequest
=
convent2NEWCreateOrderRequest
(
requestVo
,
userLoginInfoDto
,
productInfosByIds
.
getData
(),
activeDetailVOS
,
storeResponse
.
getBizVO
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
orderInfoReqsBaseResponse
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
CreateOrderResponse
createOrderResponse
=
orderSdkAdapter
.
convent2NEWOrderInfoReqs
(
orderInfoReqsBaseResponse
);
if
(
createOrderResponse
==
null
||
createOrderResponse
.
getErrcode
()
!=
100
)
{
if
(
createOrderResponse
==
null
||
createOrderResponse
.
getErrcode
()
!=
100
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CREATE_ERROR
);
}
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
new
CreatePrepayRequestDto
();
createPrepayRequestDto
.
setPartnerId
(
partnerId
);
...
...
@@ -232,15 +239,75 @@ public class SellCouponOrderServiceImpl {
}
public
BaseResponse
ngsCouponOrderCreate
(
NgsSellCouponCreateOrderVo
requestVo
){
/**
* 效验虚拟商品活动信息
* @param userLoginInfoDto
* @param storeResponse
* @param trackingNo
* @param menuType
* @param bizType
* @param partnerId
* @param storeId
* @param skuId
* @param cardCode
* @return
*/
public
BaseResponse
checkOrderCoupon
(
AssortmentCustomerInfoVo
userLoginInfoDto
,
StoreResponse
storeResponse
,
String
trackingNo
,
String
menuType
,
Integer
bizType
,
String
partnerId
,
String
storeId
,
String
skuId
,
String
cardCode
)
{
GetProductInfoRequest
request
=
new
GetProductInfoRequest
();
request
.
setChannel
(
menuType
);
request
.
setPartnerId
(
partnerId
);
request
.
setProductInfoType
(
2
);
request
.
setShopId
(
storeId
);
request
.
setProductIds
(
Lists
.
newArrayList
(
skuId
));
//获取商品(里面的活动)
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
GetProductInfosResponse
>
productInfosByIds
=
menuService
.
getProductInfosByIds
(
request
,
trackingNo
);
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
productInfosByIds
.
getCode
())
||
productInfosByIds
.
getData
()
==
null
||
CollectionUtils
.
isEmpty
(
productInfosByIds
.
getData
().
getProducts
()))
{
return
ResponseUtil
.
error
(
ResponseResultEnum
.
GET_PRODUCT_INFOS_ERROR
.
getCode
(),
ResponseResultEnum
.
GET_PRODUCT_INFOS_ERROR
.
getMessage
());
}
//效验商品券是否有效
List
<
GetMenuCategoryInfoResponse
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
.
ProductBindingCouponType
>
productBindingCoupons
=
productInfosByIds
.
getData
().
getProducts
().
get
(
0
).
getProductBindingCouponTypes
();
if
(
CollectionUtils
.
isEmpty
(
productBindingCoupons
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
STORE_ITEM_CHECK_INVAILD
);
}
List
<
String
>
activityCodes
=
new
ArrayList
<>();
for
(
GetMenuCategoryInfoResponse
.
RootNodeBean
.
ChildrenBeanFirst
.
ChildrenBeanSecond
.
ProductBean
.
ProductBindingCouponType
productBindingCouponType
:
productBindingCoupons
)
{
activityCodes
.
add
(
productBindingCouponType
.
getActivityCode
());
}
//批量查询活动详情
List
<
ActiveDetailVO
>
activeDetailVOS
=
batchQueryActivityInfo
(
partnerId
,
activityCodes
,
trackingNo
);
if
(
CollectionUtils
.
isEmpty
(
activeDetailVOS
)
||
activityCodes
.
size
()
!=
activeDetailVOS
.
size
())
{
return
ResponseUtil
.
error
(
ResponseResult
.
STORE_ITEM_CHECK_INVAILD
);
}
//优惠券是否失效
Date
now
=
new
Date
();
for
(
ActiveDetailVO
activeDetailVO
:
activeDetailVOS
)
{
if
(
activeDetailVO
.
getEffectiveEndTime
()
!=
null
&&
activeDetailVO
.
getEffectiveEndTime
().
before
(
now
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
COUPON_INVAILD
);
}
}
//转换CreateOrderRequest对象
CreateOrderRequest
createOrderRequest
=
convent2NEWCreateOrderRequest
(
userLoginInfoDto
,
productInfosByIds
.
getData
(),
activeDetailVOS
,
storeResponse
.
getBizVO
(),
storeId
,
cardCode
,
skuId
,
menuType
,
bizType
);
return
ResponseUtil
.
success
(
createOrderRequest
);
}
public
BaseResponse
ngsCouponOrderCreate
(
NgsSellCouponCreateOrderVo
requestVo
){
// 查询用户信息、校验svc卡
AssortmentCustomerInfoVo
userLoginInfoDto
=
checkOrder
.
getMemberNew
(
requestVo
.
getSessionId
());
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
String
partnerId
=
userLoginInfoDto
.
getPartnerId
();
// 构建创建订单入参
CreateOrderRequest
createOrderRequest
=
ngsConvent2NEWCreateOrderRequest
(
requestVo
,
userLoginInfoDto
);
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
<
OrderInfoReqs
>
orderInfoReqsBaseResponse
=
orderSdkService
.
createOrder
(
createOrderRequest
,
trackingNo
);
...
...
@@ -248,8 +315,6 @@ public class SellCouponOrderServiceImpl {
if
(
createOrderResponse
==
null
||
createOrderResponse
.
getErrcode
()
!=
100
){
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CREATE_ERROR
);
}
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
new
CreatePrepayRequestDto
();
createPrepayRequestDto
.
setPartnerId
(
partnerId
);
...
...
@@ -262,11 +327,9 @@ public class SellCouponOrderServiceImpl {
createPrepayRequestDto
.
setProductOrderBean
(
createOrderResponse
.
getData
());
createPrepayRequestDto
.
setTotalAmount
(
createOrderRequest
.
getSettlementAmount
());
createPrepayRequestDto
.
setCardAmount
(
0
);
OrderExtInfoDto
orderExtInfoDto
=
new
OrderExtInfoDto
();
String
deliveryHoursDayStart
=
""
;
String
deliveryHoursDayEnd
=
""
;
orderExtInfoDto
.
setDeliveryHoursDayStart
(
deliveryHoursDayStart
);
orderExtInfoDto
.
setDeliveryHoursDayEnd
(
deliveryHoursDayEnd
);
orderExtInfoDto
.
setOpenid
(
userLoginInfoDto
.
getOpenId
());
...
...
@@ -399,9 +462,27 @@ public class SellCouponOrderServiceImpl {
return
appKey
;
}
private
CreateOrderRequest
convent2NEWCreateOrderRequest
(
SellCouponCreateOrderVo
requestVo
,
AssortmentCustomerInfoVo
userLoginInfoDto
,
/**
* 转换对象,从购买优惠券业务提出重写
* @param userLoginInfoDto
* @param productInfosResponse
* @param activeDetailVOS
* @param storeInfo
* @param shopId
* @param cardCode
* @param skuId
* @param channel
* @param bizType
* @return
*/
private
CreateOrderRequest
convent2NEWCreateOrderRequest
(
AssortmentCustomerInfoVo
userLoginInfoDto
,
GetProductInfosResponse
productInfosResponse
,
List
<
ActiveDetailVO
>
activeDetailVOS
,
StoreResponse
.
BizVO
storeInfo
){
StoreResponse
.
BizVO
storeInfo
,
String
shopId
,
String
cardCode
,
String
skuId
,
String
channel
,
Integer
bizType
){
CreateOrderRequest
request
=
new
CreateOrderRequest
();
Integer
orderClient
=
OrderClientType
.
SAAS
.
getIndex
();
if
(
UserLoginChannelEnum
.
ALIPAY
.
getCode
().
equals
(
userLoginInfoDto
.
getChannel
())){
...
...
@@ -411,16 +492,16 @@ public class SellCouponOrderServiceImpl {
orderClient
=
OrderClientType
.
APP
.
getIndex
();
}
//抖音小程序
if
(
"5"
.
equalsIgnoreCase
(
requestVo
.
getChannel
()
))
{
if
(
"5"
.
equalsIgnoreCase
(
channel
))
{
request
.
setPayChannel
(
PayChannelType
.
TIKTOKPAY
.
getIndex
().
toString
());
orderClient
=
OrderClientType
.
TIKTOKPAY
.
getIndex
();
}
String
partnerId
=
userLoginInfoDto
.
getPartnerId
();
request
.
setOrderClient
(
orderClient
);
request
.
setPartnerId
(
partnerId
);
request
.
setStoreId
(
requestVo
.
getShopId
()
);
request
.
setStoreId
(
shopId
);
//买券虚拟订单
request
.
setBizType
(
6
);
request
.
setBizType
(
bizType
==
null
?
6
:
bizType
);
//1:线上支付 2:线下支付
request
.
setPayType
(
1
);
request
.
setUserId
(
userLoginInfoDto
.
getMemberId
());
...
...
@@ -429,7 +510,7 @@ public class SellCouponOrderServiceImpl {
request
.
setThirdStoreId
(
storeInfo
.
getThirdPartCode
());
request
.
setOrderState
(
1
);
request
.
setPayState
(
1
);
if
(
StringUtils
.
isNotBlank
(
requestVo
.
getCardCode
()
)){
if
(
StringUtils
.
isNotBlank
(
cardCode
)){
request
.
setPayChannel
(
"10102"
);
request
.
setPayChannelName
(
"储值卡支付"
);
}
...
...
@@ -448,8 +529,8 @@ public class SellCouponOrderServiceImpl {
orderItemCreateReq
.
setProductPrice
(
productBean
.
getOriginalPrice
());
orderItemCreateReq
.
setSettlementPrice
(
productBean
.
getFinalPrice
());
orderItemCreateReq
.
setPartnerId
(
partnerId
);
orderItemCreateReq
.
setProductId
(
requestVo
.
getSkuId
()
);
orderItemCreateReq
.
setProductSpec
(
requestVo
.
getSkuId
()
);
orderItemCreateReq
.
setProductId
(
skuId
);
orderItemCreateReq
.
setProductSpec
(
skuId
);
orderItemCreateReq
.
setProductName
(
productBean
.
getName
());
orderItemCreateReq
.
setProductSpecName
(
productBean
.
getName
());
orderItemCreateReq
.
setProductPicUrl
(
productBean
.
getPicture
());
...
...
@@ -499,10 +580,10 @@ public class SellCouponOrderServiceImpl {
request
.
setOrderExtended
(
orderAdapter
.
saveStoreInfo
(
storeInfo
));
request
.
setOperator
(
userLoginInfoDto
.
getNickName
());
request
.
setAppId
(
userLoginInfoDto
.
getWxAppId
());
if
(
"5"
.
equalsIgnoreCase
(
requestVo
.
getChannel
().
toString
()
)){
if
(
"5"
.
equalsIgnoreCase
(
channel
)){
request
.
setPayChannelType
(
PayChannelType
.
TIKTOKPAY
.
getIndex
());
}
request
.
setPayChannel
(
requestVo
.
getChannel
()
);
request
.
setPayChannel
(
channel
);
return
request
;
}
...
...
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