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
e0ba0a12
Commit
e0ba0a12
authored
Dec 09, 2021
by
周晓航
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改 虚拟全申请退款逻辑
Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent
b8837d93
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
82 additions
and
16 deletions
+82
-16
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/PayRefundStatus.java
+5
-1
order-application-service/src/main/java/cn/freemud/enums/PayRefundStatus.java
+5
-1
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+39
-13
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
+1
-1
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+32
-0
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/enums/PayRefundStatus.java
View file @
e0ba0a12
...
@@ -15,7 +15,11 @@ package com.freemud.sdk.api.assortment.order.enums;
...
@@ -15,7 +15,11 @@ package com.freemud.sdk.api.assortment.order.enums;
public
enum
PayRefundStatus
{
public
enum
PayRefundStatus
{
SUCCESS
(
1
,
"退款成功"
),
SUCCESS
(
1
,
"退款成功"
),
FAIL
(
2
,
"退款失败"
),
FAIL
(
2
,
"退款失败"
),
RUNNING
(
4
,
"退款中"
);
RUNNING
(
4
,
"退款中"
),
/**
* 额外状态码 用于判断逻辑,
*/
NOT_SUFFICIENT_FUNDS
(
8200201
,
"余额不足"
);
private
Integer
code
;
private
Integer
code
;
private
String
desc
;
private
String
desc
;
...
...
order-application-service/src/main/java/cn/freemud/enums/PayRefundStatus.java
View file @
e0ba0a12
...
@@ -15,7 +15,11 @@ package cn.freemud.enums;
...
@@ -15,7 +15,11 @@ package cn.freemud.enums;
public
enum
PayRefundStatus
{
public
enum
PayRefundStatus
{
SUCCESS
(
1
,
"退款成功"
),
SUCCESS
(
1
,
"退款成功"
),
FAIL
(
2
,
"退款失败"
),
FAIL
(
2
,
"退款失败"
),
RUNNING
(
4
,
"退款中"
);
RUNNING
(
4
,
"退款中"
),
/**
* 额外状态码 用于判断逻辑,
*/
NOT_SUFFICIENT_FUNDS
(
8200201
,
"余额不足"
);
private
Integer
code
;
private
Integer
code
;
private
String
desc
;
private
String
desc
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
e0ba0a12
...
@@ -57,8 +57,12 @@ import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
...
@@ -57,8 +57,12 @@ import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
import
cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse
;
import
cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.OrderRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.OrderRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.enums.SettlementTypeEnum
;
import
cn.freemud.management.enums.SettlementTypeEnum
;
import
cn.freemud.management.intercept.OrderServiceException
;
import
cn.freemud.management.service.handle.ActivityHandle
;
import
cn.freemud.management.service.handle.ActivityHandle
;
import
cn.freemud.management.service.handle.OrderVerifyHandle
;
import
cn.freemud.management.service.handle.PaymentHandle
;
import
cn.freemud.manager.OrderManager
;
import
cn.freemud.manager.OrderManager
;
import
cn.freemud.manager.OrderTackCodeManager
;
import
cn.freemud.manager.OrderTackCodeManager
;
import
cn.freemud.manager.SpellGroupOrderDataManager
;
import
cn.freemud.manager.SpellGroupOrderDataManager
;
...
@@ -280,6 +284,11 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -280,6 +284,11 @@ public class OrderServiceImpl implements Orderservice {
private
CouponOnlineClient
couponOnlineClient
;
private
CouponOnlineClient
couponOnlineClient
;
@Autowired
@Autowired
private
CustomerExtendClient
customerExtendClient
;
private
CustomerExtendClient
customerExtendClient
;
@Autowired
private
OrderVerifyHandle
orderVerifyHandle
;
@Autowired
private
PaymentHandle
paymentHandle
;
// @Override
// @Override
// public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
// public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
// String trackingNo = LogThreadLocal.getTrackingNo();
// String trackingNo = LogThreadLocal.getTrackingNo();
...
@@ -3602,27 +3611,44 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -3602,27 +3611,44 @@ public class OrderServiceImpl implements Orderservice {
// 支付金额 大于0 调用支付 进行退款
// 支付金额 大于0 调用支付 进行退款
Long
refundId
=
System
.
currentTimeMillis
();
Long
refundId
=
System
.
currentTimeMillis
();
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
if
(
orderBean
.
getActualPayAmount
().
compareTo
(
0L
)
>
0
)
{
//调用支付退款
// fisherman ----> 支付校验 begin
PayRefundRequestDto
orderPayRefundRequest
=
orderAdapter
.
getOrderPayRefundRequest
(
orderBean
,
refundId
,
orderBean
.
getOid
());
BigDecimal
refundAmount
=
orderVerifyHandle
.
getRefundAmount
(
orderBean
,
false
);
//抖音支付退款必传
orderBean
.
setAmount
(
refundAmount
.
longValue
());
orderPayRefundRequest
.
setRefundDesc
(
orderRefundVo
.
getReason
()
==
null
?
"用户退款"
:
orderRefundVo
.
getReason
());
//支付退款
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
response
=
payServiceImpl
.
orderRefund
(
orderPayRefundRequest
);
PayRefundResponse
refundResponse
;
if
(
response
==
null
||
response
.
getData
()
==
null
||
!
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
response
.
getCode
()))
{
try
{
String
failMsg
=
Objects
.
isNull
(
response
)
?
"支付退款失败"
:
JSON
.
toJSONString
(
response
);
if
(
null
!=
orderBean
.
getOrderPayItem
()
&&
orderBean
.
getOrderPayItem
().
size
()>
0
){
//TODO 退款失败则记录到世昌的表里
refundResponse
=
paymentHandle
.
multiRefund
(
orderBean
);
}
else
{
refundResponse
=
paymentHandle
.
refund
(
"用户买券订单-申请退款"
,
orderBean
);
}
if
(
refundResponse
.
getPayRefundStatus
().
getCode
().
compareTo
(
PayRefundStatus
.
SUCCESS
.
getCode
())
!=
0
)
{
int
failureType
=
0
;
if
(
refundResponse
.
getPayRefundStatus
().
getCode
().
compareTo
(
PayRefundStatus
.
NOT_SUFFICIENT_FUNDS
.
getCode
())
==
0
)
{
failureType
=
RefundFailureRequestDTO
.
FAILURETYPE_NOT_SUFFICIENT_FUNDS
;
}
RefundFailureRequestDTO
requestDTO
=
RefundFailureRequestDTO
.
builder
().
orderCode
(
orderBean
.
getOid
())
RefundFailureRequestDTO
requestDTO
=
RefundFailureRequestDTO
.
builder
().
orderCode
(
orderBean
.
getOid
())
.
failureType
(
RefundFailureRequestDTO
.
FAILURETYPE_NOT_SUFFICIENT_FUNDS
)
.
failureType
(
failureType
)
.
reason
(
failMsg
)
.
reason
(
"退款失败"
)
.
partnerId
(
orderBean
.
getCompanyId
())
.
partnerId
(
orderBean
.
getCompanyId
())
.
operator
(
""
)
.
operator
(
""
)
.
ver
(
0
).
build
();
.
ver
(
0
).
build
();
orderServiceClient
.
refundFailures
(
requestDTO
);
orderServiceClient
.
refundFailures
(
requestDTO
);
}
}
//获取支付返回退款状态
state
=
refundResponse
.
getPayRefundStatus
().
getCode
();
state
=
response
.
getData
().
getRefundStatus
()
==
null
?
PayRefundStatus
.
SUCCESS
.
getCode
()
:
response
.
getData
().
getRefundStatus
();
}
catch
(
OrderServiceException
orderEx
){
// 系统异常
RefundFailureRequestDTO
requestDTO
=
RefundFailureRequestDTO
.
builder
().
orderCode
(
orderBean
.
getOid
())
.
failureType
(
RefundFailureRequestDTO
.
FAILURETYPE_SYSTEM_ERROR
)
.
reason
(
orderEx
.
getMessage
())
.
partnerId
(
orderBean
.
getCompanyId
())
.
operator
(
""
)
.
ver
(
0
).
build
();
orderServiceClient
.
refundFailures
(
requestDTO
);
}
}
// fisherman ----> 支付校验 end
// 调用基础服务, 进行订单状态变更
// 调用基础服务, 进行订单状态变更
CancelOrderRequest
cancelOrderRequest
=
orderAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
CancelOrderRequest
cancelOrderRequest
=
orderAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
USER_CANCEL
,
orderRefundVo
.
getReason
(),
LogThreadLocal
.
getTrackingNo
(),
refundId
.
toString
());
orderBean
.
getCompanyId
(),
AfterSalesType
.
USER_CANCEL
,
orderRefundVo
.
getReason
(),
LogThreadLocal
.
getTrackingNo
(),
refundId
.
toString
());
...
...
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
View file @
e0ba0a12
...
@@ -629,7 +629,7 @@ public class OrderVerifyHandle {
...
@@ -629,7 +629,7 @@ public class OrderVerifyHandle {
/**
/**
* 获取已完成订单退款金额
* 获取已完成订单退款金额
*/
*/
p
rivate
BigDecimal
getRefundAmount
(
OrderBeanV1
data
,
boolean
isRefundDeliveryFee
)
{
p
ublic
BigDecimal
getRefundAmount
(
OrderBeanV1
data
,
boolean
isRefundDeliveryFee
)
{
//是否配置已完成订单可退款
//是否配置已完成订单可退款
BigDecimal
refundAmount
=
new
BigDecimal
(
data
.
getAmount
());
BigDecimal
refundAmount
=
new
BigDecimal
(
data
.
getAmount
());
if
(
isRefundDeliveryFee
||
isPayBySVC
(
data
)){
if
(
isRefundDeliveryFee
||
isPayBySVC
(
data
)){
...
...
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
e0ba0a12
...
@@ -118,6 +118,38 @@ public class PaymentHandle {
...
@@ -118,6 +118,38 @@ public class PaymentHandle {
}
}
/**
/**
* 卖券调用退款
* @param reason
* @param orderBean
* @return -2正常 -1 不需要退款 0其他异常 1账户余额不足 2 系统异常
*/
public
PayRefundResponse
refund
(
String
reason
,
OrderBeanV1
orderBean
)
{
PayRefundStatus
refundStatus
=
PayRefundStatus
.
SUCCESS
;
PayRefundRequestDto
orderRefundRequest
=
paymentSdkAdapter
.
getOrderRefundRequest
(
orderBean
,
getRefundAmount
(
orderBean
));
//抖音支付必传
orderRefundRequest
.
setRefundDesc
(
reason
);
if
(
ObjectUtils
.
equals
(
orderBean
.
getAmount
(),
0L
))
{
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
;
orderRefundResponse
=
this
.
orderPayRefund
(
orderRefundRequest
);
if
(
orderRefundResponse
==
null
)
{
// 退款失败
refundStatus
=
PayRefundStatus
.
FAIL
;
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
if
(
ObjectUtils
.
notEqual
(
orderRefundResponse
.
getCode
(),
SUCCESS
))
{
//商户余额不足的情况下,返回异常特殊处理.
refundStatus
=
PayRefundStatus
.
FAIL
;
if
(
ResponseResult
.
NOT_SUFFICIENT_FUNDS
.
getCode
().
equals
(
orderRefundResponse
.
getCode
()))
{
refundStatus
=
PayRefundStatus
.
NOT_SUFFICIENT_FUNDS
;
}
}
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
/**
* 退款
* 退款
*
*
* @param orderBean
* @param orderBean
...
...
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