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
8972633d
Commit
8972633d
authored
Apr 13, 2020
by
dingkai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
蜜雪app创建订单、创建预支付
parent
98a38a33
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
499 additions
and
79 deletions
+499
-79
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+6
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/OrderExtInfoDTO.java
+7
-0
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+45
-0
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+10
-0
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
+19
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderResponseVo.java
+13
-6
order-application-service/src/main/java/cn/freemud/entities/vo/CreatePrepayVo.java
+42
-0
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+4
-0
order-application-service/src/main/java/cn/freemud/enums/UserLoginChannelEnum.java
+18
-0
order-application-service/src/main/java/cn/freemud/service/AppOrderService.java
+21
-0
order-application-service/src/main/java/cn/freemud/service/OrderAdapterService.java
+6
-0
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
+193
-0
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
+9
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
+24
-4
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+82
-69
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
8972633d
...
@@ -1226,6 +1226,9 @@ public class OrderSdkAdapter {
...
@@ -1226,6 +1226,9 @@ public class OrderSdkAdapter {
case
23
:
case
23
:
name
=
"saasmall"
;
name
=
"saasmall"
;
break
;
break
;
case
12
:
name
=
"app"
;
break
;
default
:
default
:
name
=
orderClientType
.
toString
();
name
=
orderClientType
.
toString
();
break
;
break
;
...
@@ -1267,6 +1270,9 @@ public class OrderSdkAdapter {
...
@@ -1267,6 +1270,9 @@ public class OrderSdkAdapter {
case
23
:
case
23
:
name
=
"saas 商城"
;
name
=
"saas 商城"
;
break
;
break
;
case
12
:
name
=
"APP"
;
break
;
default
:
default
:
break
;
break
;
}
}
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/entities/OrderExtInfoDTO.java
View file @
8972633d
...
@@ -81,4 +81,11 @@ public class OrderExtInfoDTO {
...
@@ -81,4 +81,11 @@ public class OrderExtInfoDTO {
* 微信上报异常补推使用
* 微信上报异常补推使用
*/
*/
private
String
sessionKey
;
private
String
sessionKey
;
/**
* 来源appId
*/
private
String
fromAppId
;
private
String
fmId
;
}
}
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
8972633d
...
@@ -2334,6 +2334,25 @@ public class OrderAdapter {
...
@@ -2334,6 +2334,25 @@ public class OrderAdapter {
return
createOrderResponseVo
;
return
createOrderResponseVo
;
}
}
public
CreateOrderResponseVo
convent2CreateFatherSonOrderNoPayResponseVo
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
CreateOrderResponseVo
createOrderResponseVo
=
new
CreateOrderResponseVo
();
createOrderResponseVo
.
setOid
(
orderBean
.
getOid
());
createOrderResponseVo
.
setWxappId
(
""
);
createOrderResponseVo
.
setFmId
(
""
);
createOrderResponseVo
.
setTimestamp
(
""
);
createOrderResponseVo
.
setNonceStr
(
""
);
createOrderResponseVo
.
setPackageX
(
""
);
createOrderResponseVo
.
setSignType
(
""
);
createOrderResponseVo
.
setSign
(
""
);
//微信新版订阅消息判断新加字段
if
(
orderBean
!=
null
&&
orderBean
.
getType
()
!=
null
){
createOrderResponseVo
.
setOrderType
(
getNewOrderType
(
orderBean
.
getType
(),
orderBean
.
getGmtExpect
()));
}
createOrderResponseVo
.
setOrderStr
(
""
);
createOrderResponseVo
.
setPaySuccess
(
false
);
return
createOrderResponseVo
;
}
public
OrderPayResponse
convent2OrderPayResponse
(
UnifiedOrderResponse
unifiedOrderResponse
)
{
public
OrderPayResponse
convent2OrderPayResponse
(
UnifiedOrderResponse
unifiedOrderResponse
)
{
OrderPayResponse
responseDto
=
new
OrderPayResponse
();
OrderPayResponse
responseDto
=
new
OrderPayResponse
();
responseDto
.
setFmId
(
unifiedOrderResponse
.
getFmId
());
responseDto
.
setFmId
(
unifiedOrderResponse
.
getFmId
());
...
@@ -2716,4 +2735,30 @@ public class OrderAdapter {
...
@@ -2716,4 +2735,30 @@ public class OrderAdapter {
return
orderTask
;
return
orderTask
;
}
}
public
CreatePrepayRequestDto
convertToCreatePrepayRequestDto
(
String
partnerId
,
String
wxAppId
,
String
openId
,
String
faceCode
,
String
cardCode
,
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherOrderBean
,
QueryOrdersResponse
.
DataBean
.
OrderBean
productOrderBean
,
long
totalAmount
,
int
cardAmount
,
OrderExtInfoDTO
orderExtInfoDTO
){
CreatePrepayRequestDto
requestDto
=
new
CreatePrepayRequestDto
();
requestDto
.
setPartnerId
(
partnerId
);
requestDto
.
setWxAppId
(
wxAppId
);
requestDto
.
setOpenId
(
openId
);
requestDto
.
setFaceCode
(
faceCode
);
requestDto
.
setCardCode
(
cardCode
);
requestDto
.
setFatherOrderBean
(
fatherOrderBean
);
requestDto
.
setProductOrderBean
(
productOrderBean
);
requestDto
.
setTotalAmount
(
totalAmount
);
requestDto
.
setCardAmount
(
cardAmount
);
requestDto
.
setOrderExtInfoDTO
(
orderExtInfoDTO
);
return
requestDto
;
}
public
CreatePrepayRequestDto
convertToCreatePrepayRequestDto
(
AssortmentCustomerInfoVo
userLoginInfoDto
,
CreateOrderVo
createOrderVo
,
CreateOrderOperateDto
createOrderOperateDto
,
OrderExtInfoDTO
orderExtInfoDTO
){
return
this
.
convertToCreatePrepayRequestDto
(
createOrderVo
.
getPartnerId
(),
userLoginInfoDto
.
getWxAppId
(),
userLoginInfoDto
.
getOpenId
(),
createOrderVo
.
getFaceCode
(),
createOrderVo
.
getCardCode
(),
createOrderOperateDto
.
getFatherOrderBean
(),
createOrderOperateDto
.
getProductOrderBean
(),
createOrderOperateDto
.
getTotalAmount
()
==
null
?
0
:
createOrderOperateDto
.
getTotalAmount
(),
createOrderOperateDto
.
getCardAmount
()
==
null
?
0
:
createOrderOperateDto
.
getCardAmount
(),
orderExtInfoDTO
);
}
}
}
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
8972633d
...
@@ -25,6 +25,7 @@ import cn.freemud.utils.ResponseUtil;
...
@@ -25,6 +25,7 @@ import cn.freemud.utils.ResponseUtil;
import
cn.freemud.service.impl.MallOrderServiceImpl
;
import
cn.freemud.service.impl.MallOrderServiceImpl
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -218,4 +219,13 @@ public class OrderController {
...
@@ -218,4 +219,13 @@ public class OrderController {
return
mallOrderService
.
orderAffirm
(
request
);
return
mallOrderService
.
orderAffirm
(
request
);
}
}
/**
* 创建预支付
*/
@ApiAnnotation
(
logMessage
=
"createPrepay"
)
@PostMapping
(
"/createPrepay"
)
public
BaseResponse
createPrepay
(
@Validated
@LogParams
@RequestBody
CreatePrepayVo
request
)
{
return
orderAdapterService
.
createPrepay
(
request
);
}
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
0 → 100644
View file @
8972633d
package
cn
.
freemud
.
entities
.
dto
.
order
;
import
com.freemud.sdk.api.assortment.order.entities.OrderExtInfoDTO
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
lombok.Data
;
@Data
public
class
CreatePrepayRequestDto
{
private
String
partnerId
;
private
String
wxAppId
;
private
String
openId
;
private
String
faceCode
;
private
String
cardCode
;
private
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherOrderBean
;
private
QueryOrdersResponse
.
DataBean
.
OrderBean
productOrderBean
;
private
long
totalAmount
;
private
int
cardAmount
;
private
OrderExtInfoDTO
orderExtInfoDTO
;
}
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderResponseVo.java
View file @
8972633d
...
@@ -12,47 +12,54 @@
...
@@ -12,47 +12,54 @@
*/
*/
package
cn
.
freemud
.
entities
.
vo
;
package
cn
.
freemud
.
entities
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
public
class
CreateOrderResponseVo
{
public
class
CreateOrderResponseVo
{
@ApiModelProperty
(
value
=
"订单id"
)
private
String
oid
;
private
String
oid
;
@ApiModelProperty
(
value
=
"微信appid"
)
private
String
wxappId
;
private
String
wxappId
;
@ApiModelProperty
(
value
=
"时间戳"
)
private
String
timestamp
;
private
String
timestamp
;
@ApiModelProperty
(
value
=
"随机字符串"
)
private
String
nonceStr
;
private
String
nonceStr
;
@ApiModelProperty
(
value
=
"订单详情扩展字符串"
)
private
String
packageX
;
private
String
packageX
;
@ApiModelProperty
(
value
=
"签名方式"
)
private
String
signType
;
private
String
signType
;
@ApiModelProperty
(
value
=
"签名"
)
private
String
sign
;
private
String
sign
;
/**
/**
* 是否支持成功 支付金额为0,现为商品券时返回true,其余为false
* 是否支持成功 支付金额为0,现为商品券时返回true,其余为false
*/
*/
@ApiModelProperty
(
value
=
"是否支持成功"
)
private
Boolean
paySuccess
;
private
Boolean
paySuccess
;
/**
/**
* 非码支付商户号 用户数据上报
* 非码支付商户号 用户数据上报
*/
*/
@ApiModelProperty
(
value
=
"非码支付商户号"
)
private
String
fmId
;
private
String
fmId
;
/**
/**
* 下单版本号
* 下单版本号
*/
*/
@ApiModelProperty
(
value
=
"下单版本号"
)
private
Integer
orderUpdateVer
;
private
Integer
orderUpdateVer
;
/**
/**
* 订单类型
* 订单类型
*/
*/
@ApiModelProperty
(
value
=
"订单类型"
)
private
Integer
orderType
;
private
Integer
orderType
;
/**
/**
* 支付宝参数 唤起支付宝支付使用
* 支付宝参数 唤起支付宝支付使用
*/
*/
@ApiModelProperty
(
value
=
"支付宝参数 唤起支付宝支付使用"
)
private
String
orderStr
;
private
String
orderStr
;
}
}
order-application-service/src/main/java/cn/freemud/entities/vo/CreatePrepayVo.java
0 → 100644
View file @
8972633d
package
cn
.
freemud
.
entities
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.hibernate.validator.constraints.NotEmpty
;
@Data
public
class
CreatePrepayVo
{
/**
* 商户id
*/
@NotEmpty
@ApiModelProperty
(
value
=
"商户id"
)
private
String
partnerId
;
/**
* 用户sessionId
*/
@NotEmpty
@ApiModelProperty
(
value
=
"用户sessionId"
)
private
String
sessionId
;
/**
* 订单号
*/
@NotEmpty
@ApiModelProperty
(
value
=
"订单号"
)
private
String
orderCode
;
/**
* 门店id
*/
@NotEmpty
@ApiModelProperty
(
value
=
"门店id"
)
private
String
storeId
;
/**
* 支付appid
*/
@NotEmpty
@ApiModelProperty
(
value
=
"支付appId"
)
private
String
payAppId
;
@ApiModelProperty
(
value
=
"微信openId"
)
private
String
openId
;
}
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
8972633d
...
@@ -136,6 +136,10 @@ public enum ResponseResult {
...
@@ -136,6 +136,10 @@ public enum ResponseResult {
ORDER_HAS_CANCELED
(
"45053"
,
"订单已经被取消"
),
ORDER_HAS_CANCELED
(
"45053"
,
"订单已经被取消"
),
ORDER_MALL_NOT_MATCH
(
"45054"
,
"非商城订单,无法操作"
),
ORDER_MALL_NOT_MATCH
(
"45054"
,
"非商城订单,无法操作"
),
AFFIRM_ORDER_FAIL
(
"45055"
,
"确认订单失败"
),
AFFIRM_ORDER_FAIL
(
"45055"
,
"确认订单失败"
),
ORDER_EMPTY_CREATE_PREPAY_FAIL
(
"45056"
,
"订单为空,创建预订单失败"
),
ORDER_HAS_PAID
(
"45057"
,
"订单已支付或已完成"
),
ORDER_PRE_PAYMENT_CLOSE_FAILED
(
"45058"
,
"关闭预支付订单失败"
),
ORDER_OWNER_ERROR
(
"45059"
,
"订单归属错误"
),
/**
/**
* 支付
* 支付
...
...
order-application-service/src/main/java/cn/freemud/enums/UserLoginChannelEnum.java
0 → 100644
View file @
8972633d
package
cn
.
freemud
.
enums
;
import
lombok.Getter
;
@Getter
public
enum
UserLoginChannelEnum
{
WEIXIN
(
"1"
,
"微信"
),
ALIPAY
(
"2"
,
"支付宝"
),
APP
(
"3"
,
"APP"
);
private
String
code
;
private
String
desc
;
UserLoginChannelEnum
(
String
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
}
order-application-service/src/main/java/cn/freemud/service/AppOrderService.java
0 → 100644
View file @
8972633d
package
cn
.
freemud
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
/**
* app订单服务
*/
public
interface
AppOrderService
{
/**
* 创建订单
*/
BaseResponse
createOrderFlow
(
CreateOrderVo
createOrderVo
);
/**
* 创建预支付
*/
BaseResponse
createPrepay
(
CreatePrepayVo
createPrepayVo
);
}
order-application-service/src/main/java/cn/freemud/service/OrderAdapterService.java
View file @
8972633d
...
@@ -2,6 +2,7 @@ package cn.freemud.service;
...
@@ -2,6 +2,7 @@ package cn.freemud.service;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
/**
/**
* All rights Reserved, Designed By www.freemud.cn
* All rights Reserved, Designed By www.freemud.cn
...
@@ -23,4 +24,9 @@ public interface OrderAdapterService {
...
@@ -23,4 +24,9 @@ public interface OrderAdapterService {
*/
*/
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
);
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
);
/**
* 创建预支付
*/
BaseResponse
createPrepay
(
CreatePrepayVo
createPrepayVo
);
}
}
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
0 → 100644
View file @
8972633d
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.adapter.OrderAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.CreateOrderResponseVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.enums.PayStatus
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.TradeState
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.AppOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
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
;
import
com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse
;
import
com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.sdk.api.assortment.order.entities.OrderExtInfoDTO
;
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.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryRelatedOrderByCodeResp
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
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.List
;
@Service
public
class
AppOrderServiceImpl
implements
AppOrderService
{
@Autowired
private
OrderServiceImpl
orderservice
;
@Autowired
private
CheckOrder
checkOrder
;
@Autowired
private
OrderAdapter
orderAdapter
;
@Autowired
private
OrderCenterSdkService
orderCenterSdkService
;
@Autowired
private
PaymentNewService
paymentNewService
;
/**
* 不支持会员卡
*/
@Override
public
BaseResponse
createOrderFlow
(
CreateOrderVo
createOrderVo
)
{
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
// 查询用户信息
AssortmentCustomerInfoVo
userLoginInfoDto
=
checkOrder
.
checkOrderByMember
(
createOrderVo
.
getSessionId
());
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
StoreResponse
.
BizVO
storeResponseDto
=
checkOrder
.
checkOrderByStore
(
createOrderVo
,
trackingNo
);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto
shoppingCartGoodsDto
=
checkOrder
.
getShoppingCartGoodsDto
(
createOrderVo
);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer
pushOrderTime
=
checkOrder
.
checkOrderByOrderType
(
createOrderVo
,
userLoginInfoDto
,
storeResponseDto
,
shoppingCartGoodsDto
.
getTotalAmount
(),
trackingNo
);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDTO
extInfo
=
orderservice
.
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
);
//创建订单
CreateOrderOperateDto
createOrderOperateDto
=
orderservice
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
BaseResponse
baseResponse
=
this
.
updateOrderExtInfo
(
createOrderOperateDto
.
getProductOrderBean
(),
extInfo
,
trackingNo
);
if
(
baseResponse
!=
null
)
{
return
baseResponse
;
}
//返回没创建预支付的结果
CreateOrderResponseVo
responseVo
=
orderAdapter
.
convent2CreateFatherSonOrderNoPayResponseVo
(
createOrderOperateDto
.
getProductOrderBean
());
return
ResponseUtil
.
success
(
responseVo
);
}
@Override
public
BaseResponse
createPrepay
(
CreatePrepayVo
createPrepayVo
)
{
CreateOrderOperateDto
createOrderOperateDto
=
this
.
getCreateOrderOperateDto
(
createPrepayVo
.
getOrderCode
());
QueryOrdersResponse
.
DataBean
.
OrderBean
productOrderBean
=
createOrderOperateDto
.
getProductOrderBean
();
this
.
checkOrderBefore
(
createPrepayVo
,
productOrderBean
);
// 关闭历史预支付订单
this
.
closeHistoryPrePay
(
productOrderBean
);
OrderExtInfoDTO
extInfo
=
JSONObject
.
parseObject
(
productOrderBean
.
getExtInfo
(),
OrderExtInfoDTO
.
class
);
String
faceCode
=
""
;
String
cardCode
=
""
;
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
createPrepayVo
.
getPartnerId
(),
createPrepayVo
.
getPayAppId
(),
createPrepayVo
.
getOpenId
(),
faceCode
,
cardCode
,
createOrderOperateDto
.
getFatherOrderBean
(),
createOrderOperateDto
.
getProductOrderBean
(),
createOrderOperateDto
.
getTotalAmount
(),
createOrderOperateDto
.
getCardAmount
(),
extInfo
);
return
orderservice
.
createPrepayOrder
(
createPrepayRequestDto
);
}
private
void
checkOrderBefore
(
CreatePrepayVo
createPrepayVo
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
())){
throw
new
ServiceException
(
ResponseResult
.
ORDER_HAS_PAID
);
}
OrderExtInfoDTO
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDTO
.
class
);
if
(
extInfo
==
null
||
StringUtils
.
isBlank
(
extInfo
.
getSessionId
())
||
extInfo
.
getSessionId
().
equals
(
createPrepayVo
.
getSessionId
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_OWNER_ERROR
);
}
}
/**
* 更新订单扩展信息
*/
private
BaseResponse
updateOrderExtInfo
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
OrderExtInfoDTO
orderExtInfo
,
String
trackingNo
)
{
OrderEditRequest
orderEditRequest
=
new
OrderEditRequest
(
orderBean
.
getOid
(),
JSONObject
.
toJSONString
(
orderExtInfo
));
orderEditRequest
.
setTrackingNo
(
trackingNo
);
BaseOrderResponse
baseOrderResponse
=
orderCenterSdkService
.
orderEdit
(
orderEditRequest
);
if
(!
ObjectUtils
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
baseOrderResponse
.
getErrcode
()))
{
CancelOrderRequest
cancelOrderRequest
=
orderAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"异常订单取消"
,
trackingNo
,
null
);
orderCenterSdkService
.
orderCancel
(
cancelOrderRequest
);
return
ResponseUtil
.
error
(
baseOrderResponse
.
getErrcode
().
toString
(),
baseOrderResponse
.
getErrmsg
());
}
return
null
;
}
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
()))
{
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
())
{
fatherBeanListOne
=
orderBeanList
.
get
(
0
);
productBeanListOne
=
orderBeanList
.
get
(
0
);
totalAmount
=
orderBeanList
.
get
(
0
).
getAmount
();
}
else
{
fatherBeanListOne
=
orderBeanList
.
stream
().
filter
(
orderBeanTemp
->
orderBeanTemp
.
getIsParent
()).
findFirst
().
orElse
(
fatherBeanListOne
);
productBeanListOne
=
orderBeanList
.
stream
().
filter
(
orderBeanTemp
->
1
==
orderBeanTemp
.
getBizType
()).
findFirst
().
orElse
(
productBeanListOne
);
totalAmount
=
orderBeanList
.
stream
().
mapToLong
(
QueryOrdersResponse
.
DataBean
.
OrderBean
::
getAmount
).
count
();
}
CreateOrderOperateDto
createOrderOperateDto
=
new
CreateOrderOperateDto
();
createOrderOperateDto
.
setTotalAmount
(
totalAmount
);
createOrderOperateDto
.
setCardAmount
(
0
);
createOrderOperateDto
.
setFatherOrderBean
(
fatherBeanListOne
);
createOrderOperateDto
.
setProductOrderBean
(
productBeanListOne
);
return
createOrderOperateDto
;
}
private
void
closeHistoryPrePay
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
OrderExtInfoDTO
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDTO
.
class
);
//判断当前订单是否存在预支付订单
if
(
extInfo
!=
null
&&
StringUtils
.
isNotEmpty
(
extInfo
.
getFmId
())){
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest
paymentQueryRequest
=
new
PaymentQueryRequest
();
paymentQueryRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
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
());
//判断预支付订单状态
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
())){
throw
new
ServiceException
(
ResponseResult
.
ORDER_HAS_PAID
);
}
// 3.取消前一个预支付订单 调用支付取消预支付订单,如果预支付订单已经取消了再调用取消预支付订单接口会报错的
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
())){
throw
new
ServiceException
(
ResponseResult
.
ORDER_PRE_PAYMENT_CLOSE_FAILED
);
}
}
}
}
}
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
View file @
8972633d
...
@@ -116,6 +116,15 @@ public class CheckOrder {
...
@@ -116,6 +116,15 @@ public class CheckOrder {
return
userLoginInfoDto
;
return
userLoginInfoDto
;
}
}
public
AssortmentCustomerInfoVo
checkOrderByMember
(
String
sessionId
)
{
// 通过sessionId查询缓存中会员id
AssortmentCustomerInfoVo
userLoginInfoDto
=
customerInfoManager
.
getCustomerInfoByObject
(
sessionId
);
if
(
userLoginInfoDto
==
null
||
StringUtils
.
isEmpty
(
userLoginInfoDto
.
getMemberId
()))
{
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
return
userLoginInfoDto
;
}
/**
/**
* 查询门店信息
* 查询门店信息
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
8972633d
...
@@ -2,14 +2,13 @@ package cn.freemud.service.impl;
...
@@ -2,14 +2,13 @@ package cn.freemud.service.impl;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.enums.OrderChannelType
;
import
cn.freemud.enums.OrderChannelType
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.UserLoginChannelEnum
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.EncircleOrderService
;
import
cn.freemud.service.*
;
import
cn.freemud.service.MallOrderService
;
import
cn.freemud.service.OrderAdapterService
;
import
cn.freemud.service.Orderservice
;
import
cn.freemud.utils.ResponseUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.enums.IappIdType
;
import
com.freemud.api.assortment.datamanager.enums.IappIdType
;
...
@@ -41,6 +40,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
...
@@ -41,6 +40,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private
AssortmentCustomerInfoManager
assortmentCustomerInfoManager
;
private
AssortmentCustomerInfoManager
assortmentCustomerInfoManager
;
@Autowired
@Autowired
private
MallOrderService
mallOrderService
;
private
MallOrderService
mallOrderService
;
@Autowired
private
AppOrderService
appOrderService
;
@Override
@Override
public
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
)
{
public
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
)
{
...
@@ -81,6 +82,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
...
@@ -81,6 +82,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return
mallOrderService
.
createOrder
(
createOrderVo
);
return
mallOrderService
.
createOrder
(
createOrderVo
);
}
}
/**
* APP下单
*/
if
(
UserLoginChannelEnum
.
APP
.
getCode
().
equals
(
assortmentCustomerInfoVo
.
getChannel
()))
{
return
appOrderService
.
createOrderFlow
(
createOrderVo
);
}
//原标准点餐程序逻辑处理
//原标准点餐程序逻辑处理
BaseResponse
baseResponse
=
this
.
checkStandardParamInfo
(
createOrderVo
);
BaseResponse
baseResponse
=
this
.
checkStandardParamInfo
(
createOrderVo
);
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
())){
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
())){
...
@@ -89,6 +97,18 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
...
@@ -89,6 +97,18 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return
orderservice
.
createOrderNew
(
createOrderVo
);
return
orderservice
.
createOrderNew
(
createOrderVo
);
}
}
@Override
public
BaseResponse
createPrepay
(
CreatePrepayVo
createPrepayVo
)
{
AssortmentCustomerInfoVo
assortmentCustomerInfoVo
=
assortmentCustomerInfoManager
.
getCustomerInfoByObject
(
createPrepayVo
.
getSessionId
());
if
(
assortmentCustomerInfoVo
==
null
||
StringUtils
.
isEmpty
(
assortmentCustomerInfoVo
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
}
if
(
UserLoginChannelEnum
.
APP
.
getCode
().
equals
(
assortmentCustomerInfoVo
.
getChannel
()))
{
return
appOrderService
.
createPrepay
(
createPrepayVo
);
}
throw
new
UnsupportedOperationException
(
"暂不支持渠道:"
+
assortmentCustomerInfoVo
.
getChannel
());
}
/**
/**
* 标准点餐参数校验
* 标准点餐参数校验
* @param createOrderVo
* @param createOrderVo
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
8972633d
...
@@ -30,6 +30,7 @@ import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
...
@@ -30,6 +30,7 @@ import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import
cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto
;
import
cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto
;
import
cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto
;
import
cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto
;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.product.AttributeValue
;
import
cn.freemud.entities.dto.product.AttributeValue
;
...
@@ -279,7 +280,10 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -279,7 +280,10 @@ public class OrderServiceImpl implements Orderservice {
OrderExtInfoDTO
extInfo
=
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
);
OrderExtInfoDTO
extInfo
=
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
);
//1.9.2套餐需求同步优化创建订单代码
//1.9.2套餐需求同步优化创建订单代码
return
this
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
,
extInfo
);
CreateOrderOperateDto
createOrderOperateDto
=
this
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderVo
,
createOrderOperateDto
,
extInfo
);
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
}
}
/**
/**
...
@@ -607,7 +611,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -607,7 +611,7 @@ public class OrderServiceImpl implements Orderservice {
return
newSendPaySuccessNoticeMessage
();
return
newSendPaySuccessNoticeMessage
();
}
}
p
rivate
QueryRelationOrderByIdResponseDto
getQueryRelationOrderByIdResponseDto
(
String
oid
)
{
p
ublic
QueryRelationOrderByIdResponseDto
getQueryRelationOrderByIdResponseDto
(
String
oid
)
{
QueryRelatedOrderByCodeRequest
baseQueryOrderRequest
=
new
QueryRelatedOrderByCodeRequest
();
QueryRelatedOrderByCodeRequest
baseQueryOrderRequest
=
new
QueryRelatedOrderByCodeRequest
();
baseQueryOrderRequest
.
setOrderCode
(
oid
);
baseQueryOrderRequest
.
setOrderCode
(
oid
);
baseQueryOrderRequest
.
setTrackingNo
(
LogTreadLocal
.
getTrackingNo
());
baseQueryOrderRequest
.
setTrackingNo
(
LogTreadLocal
.
getTrackingNo
());
...
@@ -1718,51 +1722,20 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1718,51 +1722,20 @@ public class OrderServiceImpl implements Orderservice {
*
*
* @return
* @return
*/
*/
private
BaseResponse
sdkCreateOrder
(
CreateOrderVo
createOrderVo
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
public
CreateOrderOperateDto
sdkCreateOrder
(
CreateOrderVo
createOrderVo
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
AssortmentCustomerInfoVo
userLoginInfoDto
,
OrderExtInfoDTO
orderExtInfoDTO
)
{
AssortmentCustomerInfoVo
userLoginInfoDto
)
{
CreateOrderOperateDto
response
=
new
CreateOrderOperateDto
();
OrderExtendedReq
orderExtendedReq
=
orderAdapter
.
saveStoreInfo
(
storeResponseDto
);
OrderExtendedReq
orderExtendedReq
=
orderAdapter
.
saveStoreInfo
(
storeResponseDto
);
String
orderWarnTime
=
storeResponseDto
.
getOrderWarnTime
();
String
orderWarnTime
=
storeResponseDto
.
getOrderWarnTime
();
OrderClientType
orderClient
=
OrderClientType
.
SAAS
;
OrderClientType
orderClient
=
OrderClientType
.
SAAS
;
String
appId
=
userLoginInfoDto
.
getWxAppId
();
String
appId
=
userLoginInfoDto
.
getWxAppId
();
if
(
"2"
.
equals
(
userLoginInfoDto
.
getChannel
())
){
if
(
"2"
.
equals
(
userLoginInfoDto
.
getChannel
())
){
orderClient
=
OrderClientType
.
ALIPAY
;
orderClient
=
OrderClientType
.
ALIPAY
;
}
else
if
(
UserLoginChannelEnum
.
APP
.
getCode
().
equals
(
userLoginInfoDto
.
getChannel
()))
{
orderClient
=
OrderClientType
.
APP
;
}
}
//创建普通订单
OrderClientType
finalOrderClient
=
orderClient
;
Function
<
Object
,
CreateOrderResponse
>
createOrder
=
(
var
->
{
BaseCreateOrderRequest
baseCreateOrderRequest
=
orderAdapter
.
convent2CreateOrderDto
(
createOrderVo
,
shoppingCartGoodsDto
,
storeResponseDto
);
//查询第三方商品编号
baseCreateOrderRequest
=
getProductCustomerCode
(
baseCreateOrderRequest
);
//保存门店渠道信息
baseCreateOrderRequest
.
setOrderExtended
(
orderExtendedReq
);
baseCreateOrderRequest
.
setOrderClient
(
finalOrderClient
);
CreateOrderRequest
createOrderRequest
=
new
CreateOrderRequest
();
baseCreateOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
createOrderRequest
.
setBaseCreateOrderRequest
(
baseCreateOrderRequest
);
MqMessageRequest
mqMessageRequest
=
new
MqMessageRequest
();
mqMessageRequest
.
setBackOrdersNotifyActivityExchange
(
backOrdersNotifyActivityExchange
);
mqMessageRequest
.
setBackOrdersNotifyActivityQueue
(
backOrdersChangeOrderStatusConsumerQueue
);
createOrderRequest
.
setMqMessageRequest
(
mqMessageRequest
);
createOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
return
orderCenterSdkService
.
createOrderFlow
(
createOrderRequest
);
});
//创建父子订单
Function
<
Object
,
CreateFatherSonOrderResponse
>
createFatherSonOrder
=
(
var
->
{
CreateFatherSonOrderRequest
createFatherSonOrderRequest
=
orderAdapter
.
convertFatherSonOrderRequest
(
createOrderVo
,
shoppingCartGoodsDto
,
orderExtendedReq
,
storeResponseDto
);
//查询第三方商品编号
createFatherSonOrderRequest
=
getProductCustomerCodeNew
(
createFatherSonOrderRequest
);
MqMessageRequest
mqMessageRequest
=
new
MqMessageRequest
();
mqMessageRequest
.
setBackOrdersNotifyActivityExchange
(
backOrdersNotifyActivityExchange
);
mqMessageRequest
.
setBackOrdersNotifyActivityQueue
(
backOrdersChangeOrderStatusConsumerQueue
);
createFatherSonOrderRequest
.
setMqMessageRequest
(
mqMessageRequest
);
return
orderCenterSdkService
.
createFatherSonOrder
(
createFatherSonOrderRequest
);
});
CreateOrderResponseVo
createOrderResponse
=
new
CreateOrderResponseVo
();
PaymentRequest
paymentRequest
=
new
PaymentRequest
();
long
totalAmount
=
0
;
long
totalAmount
=
0
;
int
cardAmount
=
0
;
int
cardAmount
=
0
;
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherBeanListOne
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherBeanListOne
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
QueryOrdersResponse
.
DataBean
.
OrderBean
productBeanListOne
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
QueryOrdersResponse
.
DataBean
.
OrderBean
productBeanListOne
=
new
QueryOrdersResponse
.
DataBean
.
OrderBean
();
if
(
createOrderVo
.
getBuyMemberCard
()
!=
null
&&
StringUtils
.
isNotEmpty
(
createOrderVo
.
getBuyMemberCard
().
getRuleId
())
&&
StringUtils
.
isNotEmpty
(
createOrderVo
.
getBuyMemberCard
().
getPaidId
()))
{
if
(
createOrderVo
.
getBuyMemberCard
()
!=
null
&&
StringUtils
.
isNotEmpty
(
createOrderVo
.
getBuyMemberCard
().
getRuleId
())
&&
StringUtils
.
isNotEmpty
(
createOrderVo
.
getBuyMemberCard
().
getPaidId
()))
{
...
@@ -1770,9 +1743,9 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1770,9 +1743,9 @@ public class OrderServiceImpl implements Orderservice {
int
cardOriginalAmount
=
shoppingCartGoodsDto
.
getCardOriginalAmount
()
==
null
?
0
:
shoppingCartGoodsDto
.
getCardOriginalAmount
();
int
cardOriginalAmount
=
shoppingCartGoodsDto
.
getCardOriginalAmount
()
==
null
?
0
:
shoppingCartGoodsDto
.
getCardOriginalAmount
();
int
cardDiscountAmount
=
shoppingCartGoodsDto
.
getCardDiscountAmount
()
==
null
?
0
:
shoppingCartGoodsDto
.
getCardDiscountAmount
();
int
cardDiscountAmount
=
shoppingCartGoodsDto
.
getCardDiscountAmount
()
==
null
?
0
:
shoppingCartGoodsDto
.
getCardDiscountAmount
();
cardAmount
=
cardOriginalAmount
-
cardDiscountAmount
;
cardAmount
=
cardOriginalAmount
-
cardDiscountAmount
;
CreateFatherSonOrderResponse
createFatherSonOrderResponse
=
createFatherSonOrder
.
apply
(
null
);
CreateFatherSonOrderResponse
createFatherSonOrderResponse
=
createFatherSonOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
orderExtendedReq
);
if
(
ObjectUtils
.
notEqual
(
Integer
.
valueOf
(
ResponseResult
.
SUCCESS
.
getCode
()),
createFatherSonOrderResponse
.
getErrcode
()))
{
if
(
ObjectUtils
.
notEqual
(
Integer
.
valueOf
(
ResponseResult
.
SUCCESS
.
getCode
()),
createFatherSonOrderResponse
.
getErrcode
()))
{
return
ResponseUtil
.
error
(
createFatherSonOrderResponse
.
getErrcode
().
toString
(),
createFatherSonOrderResponse
.
getErrmsg
()
);
throw
new
ServiceException
(
ResponseResult
.
ORDER_CREATE_ERROR
);
}
}
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
>
orderBeanList
=
createFatherSonOrderResponse
.
getOrderBeanList
();
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
>
orderBeanList
=
createFatherSonOrderResponse
.
getOrderBeanList
();
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
>
fatherBeanList
=
orderBeanList
.
stream
().
filter
(
orderBeanTemp
->
orderBeanTemp
.
getIsParent
()).
collect
(
Collectors
.
toList
());
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
>
fatherBeanList
=
orderBeanList
.
stream
().
filter
(
orderBeanTemp
->
orderBeanTemp
.
getIsParent
()).
collect
(
Collectors
.
toList
());
...
@@ -1783,45 +1756,53 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1783,45 +1756,53 @@ public class OrderServiceImpl implements Orderservice {
totalAmount
=
orderBeanList
.
stream
().
mapToLong
(
QueryOrdersResponse
.
DataBean
.
OrderBean
::
getAmount
).
count
();
totalAmount
=
orderBeanList
.
stream
().
mapToLong
(
QueryOrdersResponse
.
DataBean
.
OrderBean
::
getAmount
).
count
();
fatherBeanList
.
get
(
0
).
setShopId
(
storeResponseDto
.
getStoreCode
());
fatherBeanList
.
get
(
0
).
setShopId
(
storeResponseDto
.
getStoreCode
());
fatherBeanList
.
get
(
0
).
setCompanyId
(
createOrderVo
.
getPartnerId
());
fatherBeanList
.
get
(
0
).
setCompanyId
(
createOrderVo
.
getPartnerId
());
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
>
orderBeans
=
createFatherSonOrderResponse
.
getOrderBeanList
().
stream
().
filter
(
orderBeanTemp
->
orderBeanTemp
.
getBizType
().
equals
(
1
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderBeans
))
{
orderBean
=
orderBeans
.
get
(
0
);
}
}
else
{
}
else
{
//普通订单
//普通订单
CreateOrderResponse
createOrderFlowResponse
=
createOrder
.
apply
(
null
);
CreateOrderResponse
createOrderFlowResponse
=
createOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
orderExtendedReq
,
orderClient
);
if
(
ObjectUtils
.
notEqual
(
Integer
.
valueOf
(
ResponseResult
.
SUCCESS
.
getCode
()),
createOrderFlowResponse
.
getErrcode
()))
{
if
(
ObjectUtils
.
notEqual
(
Integer
.
valueOf
(
ResponseResult
.
SUCCESS
.
getCode
()),
createOrderFlowResponse
.
getErrcode
()))
{
return
ResponseUtil
.
error
(
createOrderFlowResponse
.
getErrcode
().
toString
(),
createOrderFlowResponse
.
getErrmsg
()
);
throw
new
ServiceException
(
ResponseResult
.
ORDER_CREATE_ERROR
);
}
}
orderBean
=
createOrderFlowResponse
.
getData
();
fatherBeanListOne
=
createOrderFlowResponse
.
getData
();
fatherBeanListOne
=
orderBean
;
productBeanListOne
=
createOrderFlowResponse
.
getData
();
productBeanListOne
=
orderBean
;
totalAmount
=
createOrderFlowResponse
.
getData
().
getAmount
();
totalAmount
=
orderBean
.
getAmount
();
}
response
.
setTotalAmount
(
totalAmount
);
response
.
setCardAmount
(
cardAmount
);
response
.
setFatherOrderBean
(
fatherBeanListOne
);
response
.
setProductOrderBean
(
productBeanListOne
);
return
response
;
}
}
//<!---创建订单公共方法执行逻辑--->
/**
* 创建预支付订单
*/
public
BaseResponse
createPrepayOrder
(
CreatePrepayRequestDto
createPrepayRequestDto
)
{
CreateOrderResponseVo
createOrderResponse
;
OrderPayResponse
orderPayResponse
=
null
;
OrderPayResponse
orderPayResponse
=
null
;
paymentRequest
=
orderBodyConvertToPaymentBody
(
userLoginInfoDto
,
createOrderVo
.
getPartnerId
(),
appId
);
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
createPrepayRequestDto
.
getOpenId
(),
createPrepayRequestDto
.
getPartnerId
(),
createPrepayRequestDto
.
getWxAppId
());
long
totalAmount
=
createPrepayRequestDto
.
getTotalAmount
();
String
cardCode
=
createPrepayRequestDto
.
getCardCode
();
if
(
totalAmount
<
0
)
{
if
(
totalAmount
<
0
)
{
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
c
reateOrderVo
.
getCardCode
()
))
{
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
c
ardCode
))
{
orderPayResponse
=
getPreOrderPay
(
fatherBeanListOne
,
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
cardAmount
);
orderPayResponse
=
getPreOrderPay
(
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getCardAmount
()
);
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isNotBlank
(
c
reateOrderVo
.
getCardCode
()
))
{
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isNotBlank
(
c
ardCode
))
{
//svc卡支付
//svc卡支付
orderPayResponse
=
svcPay
(
c
reateOrderVo
.
getCardCode
(),
fatherBeanListOne
,
paymentRequest
,
LogThreadLocal
.
getTrackingNo
());
orderPayResponse
=
svcPay
(
c
ardCode
,
createPrepayRequestDto
.
getFatherOrderBean
()
,
paymentRequest
,
LogThreadLocal
.
getTrackingNo
());
}
else
{
}
else
{
// 0元订单如果不需要支付,自定义支付单号
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse
=
getOrderPayResponse
(
paymentRequest
,
fatherBeanListOne
);
orderPayResponse
=
getOrderPayResponse
(
paymentRequest
,
createPrepayRequestDto
.
getFatherOrderBean
()
);
}
}
if
(
orderPayResponse
==
null
)
{
if
(
orderPayResponse
==
null
)
{
return
failPreOrderPay
(
LogThreadLocal
.
getTrackingNo
(),
productBeanListOne
,
createOrderVo
.
getCardCode
()
);
return
failPreOrderPay
(
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getProductOrderBean
(),
cardCode
);
}
}
createOrderResponse
=
orderAdapter
.
convent2CreateFatherSonOrderResponseVo
(
orderPayResponse
,
orderBean
);
createOrderResponse
=
orderAdapter
.
convent2CreateFatherSonOrderResponseVo
(
orderPayResponse
,
createPrepayRequestDto
.
getProductOrderBean
()
);
BaseResponse
baseEditResponse
=
this
.
updateOrderInfo
(
orderPayResponse
,
orderExtInfoDTO
,
productBeanListOne
,
LogThreadLocal
.
getTrackingNo
());
BaseResponse
baseEditResponse
=
this
.
updateOrderInfo
(
orderPayResponse
,
createPrepayRequestDto
.
getOrderExtInfoDTO
(),
createPrepayRequestDto
.
getProductOrderBean
()
,
LogThreadLocal
.
getTrackingNo
());
if
(
baseEditResponse
!=
null
)
{
if
(
baseEditResponse
!=
null
)
{
return
baseEditResponse
;
return
baseEditResponse
;
}
}
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
c
reateOrderVo
.
getCardCode
()
))
{
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
c
ardCode
))
{
createOrderResponse
.
setPaySuccess
(
false
);
createOrderResponse
.
setPaySuccess
(
false
);
}
else
{
}
else
{
createOrderResponse
.
setPaySuccess
(
true
);
createOrderResponse
.
setPaySuccess
(
true
);
...
@@ -1837,15 +1818,47 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1837,15 +1818,47 @@ public class OrderServiceImpl implements Orderservice {
message
.
setOut_trade_no
(
createOrderResponse
.
getFmId
());
message
.
setOut_trade_no
(
createOrderResponse
.
getFmId
());
message
.
setTrans_id
(
createOrderResponse
.
getOid
());
message
.
setTrans_id
(
createOrderResponse
.
getOid
());
message
.
setTotal_fee
(
0
);
message
.
setTotal_fee
(
0
);
message
.
setOpenid
(
userLoginInfo
Dto
.
getOpenId
());
message
.
setOpenid
(
createPrepayRequest
Dto
.
getOpenId
());
message
.
setPlatform_coupon
(
0
);
message
.
setPlatform_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
this
.
paySuccessCallback
(
message
);
this
.
paySuccessCallback
(
message
);
return
ResponseUtil
.
success
(
createOrderResponse
);
return
ResponseUtil
.
success
(
createOrderResponse
);
}
}
}
}
/**
* 创建普通订单
*/
public
CreateOrderResponse
createOrder
(
CreateOrderVo
createOrderVo
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
OrderExtendedReq
orderExtendedReq
,
OrderClientType
orderClient
)
{
BaseCreateOrderRequest
baseCreateOrderRequest
=
orderAdapter
.
convent2CreateOrderDto
(
createOrderVo
,
shoppingCartGoodsDto
,
storeResponseDto
);
//查询第三方商品编号
baseCreateOrderRequest
=
getProductCustomerCode
(
baseCreateOrderRequest
);
//保存门店渠道信息
baseCreateOrderRequest
.
setOrderExtended
(
orderExtendedReq
);
baseCreateOrderRequest
.
setOrderClient
(
orderClient
);
CreateOrderRequest
createOrderRequest
=
new
CreateOrderRequest
();
baseCreateOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
createOrderRequest
.
setBaseCreateOrderRequest
(
baseCreateOrderRequest
);
MqMessageRequest
mqMessageRequest
=
new
MqMessageRequest
();
mqMessageRequest
.
setBackOrdersNotifyActivityExchange
(
backOrdersNotifyActivityExchange
);
mqMessageRequest
.
setBackOrdersNotifyActivityQueue
(
backOrdersChangeOrderStatusConsumerQueue
);
createOrderRequest
.
setMqMessageRequest
(
mqMessageRequest
);
createOrderRequest
.
setTrackingNo
(
LogThreadLocal
.
getTrackingNo
());
return
orderCenterSdkService
.
createOrderFlow
(
createOrderRequest
);
}
/**
* 创建父子订单
*/
public
CreateFatherSonOrderResponse
createFatherSonOrder
(
CreateOrderVo
createOrderVo
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
OrderExtendedReq
orderExtendedReq
)
{
CreateFatherSonOrderRequest
createFatherSonOrderRequest
=
orderAdapter
.
convertFatherSonOrderRequest
(
createOrderVo
,
shoppingCartGoodsDto
,
orderExtendedReq
,
storeResponseDto
);
//查询第三方商品编号
createFatherSonOrderRequest
=
getProductCustomerCodeNew
(
createFatherSonOrderRequest
);
MqMessageRequest
mqMessageRequest
=
new
MqMessageRequest
();
mqMessageRequest
.
setBackOrdersNotifyActivityExchange
(
backOrdersNotifyActivityExchange
);
mqMessageRequest
.
setBackOrdersNotifyActivityQueue
(
backOrdersChangeOrderStatusConsumerQueue
);
createFatherSonOrderRequest
.
setMqMessageRequest
(
mqMessageRequest
);
return
orderCenterSdkService
.
createFatherSonOrder
(
createFatherSonOrderRequest
);
}
private
OrderPayResponse
getOrderPayResponse
(
PaymentRequest
paymentRequest
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
private
OrderPayResponse
getOrderPayResponse
(
PaymentRequest
paymentRequest
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
OrderPayResponse
orderPayResponse
;
OrderPayResponse
orderPayResponse
;
...
@@ -1935,11 +1948,11 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1935,11 +1948,11 @@ public class OrderServiceImpl implements Orderservice {
return
orderPayResponse
;
return
orderPayResponse
;
}
}
private
PaymentRequest
orderBodyConvertToPaymentBody
(
AssortmentCustomerInfoVo
userLoginInfoDto
,
String
partnerId
,
String
appId
)
{
private
PaymentRequest
orderBodyConvertToPaymentBody
(
String
openId
,
String
partnerId
,
String
appId
)
{
// String wxAppId = userLoginInfoDto.getWxAppId();
// String wxAppId = userLoginInfoDto.getWxAppId();
//设置支付信息
//设置支付信息
PaymentRequest
paymentRequest
=
new
PaymentRequest
();
PaymentRequest
paymentRequest
=
new
PaymentRequest
();
paymentRequest
.
setOpenId
(
userLoginInfoDto
.
getOpenId
()
);
paymentRequest
.
setOpenId
(
openId
);
paymentRequest
.
setWxAppId
(
appId
);
paymentRequest
.
setWxAppId
(
appId
);
AssortmentOpenPlatformWxapp
wxApp
=
openPlatformWxappManager
.
findByPartnerIdAndWxappId
(
partnerId
,
appId
);
AssortmentOpenPlatformWxapp
wxApp
=
openPlatformWxappManager
.
findByPartnerIdAndWxappId
(
partnerId
,
appId
);
String
principalName
=
"上海非码网络科技有限公司"
;
String
principalName
=
"上海非码网络科技有限公司"
;
...
@@ -1987,6 +2000,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1987,6 +2000,7 @@ public class OrderServiceImpl implements Orderservice {
// 扩展字段中存储 sessionKey
// 扩展字段中存储 sessionKey
orderExtInfoDto
.
setSessionKey
(
createOrderVo
.
getSessionKey
());
orderExtInfoDto
.
setSessionKey
(
createOrderVo
.
getSessionKey
());
orderExtInfoDto
.
setFormId
(
createOrderVo
.
getFormId
());
orderExtInfoDto
.
setFormId
(
createOrderVo
.
getFormId
());
orderExtInfoDto
.
setFromAppId
(
userLoginInfoDto
.
getWxAppId
());
return
orderExtInfoDto
;
return
orderExtInfoDto
;
}
}
...
@@ -2049,6 +2063,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -2049,6 +2063,7 @@ public class OrderServiceImpl implements Orderservice {
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
String
trackingNo
)
{
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
String
trackingNo
)
{
// orderExtInfo = orderAdapter.getOrderExtInfo(orderPayResponse, orderExtInfo);
// orderExtInfo = orderAdapter.getOrderExtInfo(orderPayResponse, orderExtInfo);
orderExtInfo
.
setOpenid
(
orderPayResponse
.
getOpenId
());
orderExtInfo
.
setOpenid
(
orderPayResponse
.
getOpenId
());
orderExtInfo
.
setFmId
(
orderPayResponse
.
getFmId
());
String
prepayId
=
""
;
String
prepayId
=
""
;
OrderPayResponse
.
PayOrderBean
payOrder
=
orderPayResponse
.
getPayOrder
();
OrderPayResponse
.
PayOrderBean
payOrder
=
orderPayResponse
.
getPayOrder
();
// StringUtils 依赖修改
// StringUtils 依赖修改
...
@@ -2316,7 +2331,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -2316,7 +2331,7 @@ public class OrderServiceImpl implements Orderservice {
//<!---创建订单公共方法执行逻辑--->
//<!---创建订单公共方法执行逻辑--->
OrderPayResponse
orderPayResponse
=
null
;
OrderPayResponse
orderPayResponse
=
null
;
String
appId
=
userLoginInfoDto
.
getWxAppId
();
String
appId
=
userLoginInfoDto
.
getWxAppId
();
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
userLoginInfoDto
,
createOrderVo
.
getPartnerId
(),
appId
);
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
userLoginInfoDto
.
getOpenId
()
,
createOrderVo
.
getPartnerId
(),
appId
);
//支付金额异常
//支付金额异常
if
(
totalAmount
<
0
)
{
if
(
totalAmount
<
0
)
{
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
...
@@ -2395,11 +2410,9 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -2395,11 +2410,9 @@ public class OrderServiceImpl implements Orderservice {
* 默认点餐
* 默认点餐
*/
*/
private
String
getQueryOrderChannelType
(
QueryOrderVo
queryOrderVo
,
AssortmentCustomerInfoVo
userLoginInfoDto
)
{
private
String
getQueryOrderChannelType
(
QueryOrderVo
queryOrderVo
,
AssortmentCustomerInfoVo
userLoginInfoDto
)
{
String
channelType
=
OrderChannelType
.
SAAS
.
getCode
(
);
String
channelType
=
StringUtils
.
defaultIfBlank
(
queryOrderVo
.
getChannelType
(),
OrderChannelType
.
SAAS
.
getCode
()
);
if
(
IappIdType
.
WC_XCX
.
getCode
().
equals
(
userLoginInfoDto
.
getIappId
()))
{
if
(
IappIdType
.
WC_XCX
.
getCode
().
equals
(
userLoginInfoDto
.
getIappId
()))
{
channelType
=
OrderChannelType
.
IWC
.
getCode
();
channelType
=
OrderChannelType
.
IWC
.
getCode
();
}
else
if
(
OrderChannelType
.
SAASMALL
.
getCode
().
equals
(
queryOrderVo
.
getChannelType
()))
{
channelType
=
OrderChannelType
.
SAASMALL
.
getCode
();
}
}
return
channelType
;
return
channelType
;
}
}
...
...
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