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
56a9e92f
Commit
56a9e92f
authored
Mar 04, 2024
by
box
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
三方券订单退款退券
parent
3d623bf9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
96 additions
and
76 deletions
+96
-76
order-application-service/src/main/java/cn/freemud/service/RefundService.java
+4
-0
order-management/src/main/java/cn/freemud/management/service/handle/ThirdCouponOrderHandle.java
+74
-3
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
+18
-73
No files found.
order-application-service/src/main/java/cn/freemud/service/RefundService.java
View file @
56a9e92f
...
...
@@ -23,6 +23,7 @@ import cn.freemud.management.enums.AfterSalesRefunStateEnum;
import
cn.freemud.management.enums.coupon.EcologyChannelTypeEnum
;
import
cn.freemud.management.service.adapter.OrderManagerAdapter
;
import
cn.freemud.management.service.handle.*
;
import
cn.freemud.management.util.ResponseUtil
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.impl.OrderQueueService
;
import
cn.freemud.service.store.StoreManager
;
...
...
@@ -174,6 +175,9 @@ public class RefundService {
// 未接单
if
(
NewOrderStatus
.
PLACE_AN_ORDER
.
getIndex
().
equals
(
order
.
getOrderState
()))
{
// 商家未接单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
if
(
ThirdCouponOrderHandle
.
isThirdCouponOrder
(
order
))
{
thirdCouponOrderHandle
.
thirdCouponRefund
(
partnerId
,
orderCode
,
order
.
getOperator
());
}
refundOrder
(
order
,
isPartRefund
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
orderQueueService
.
backOrdersStatusChange
(
order
.
getOrderCode
(),
orderSdkAdapter
.
getOldStatus
(
order
.
getOrderState
()),
order
.
getPayState
(),
order
.
getPartnerId
());
}
else
{
...
...
order-management/src/main/java/cn/freemud/management/service/handle/ThirdCouponOrderHandle.java
View file @
56a9e92f
...
...
@@ -6,13 +6,17 @@ import cn.freemud.management.enums.coupon.EcologyChannelTypeEnum;
import
cn.freemud.management.enums.SettlementTypeEnum
;
import
cn.freemud.management.enums.coupon.ThirdCouponReportStatusEnum
;
import
cn.freemud.management.enums.coupon.ThirdCouponReportTypeEnum
;
import
cn.freemud.management.intercept.CouponServiceException
;
import
cn.freemud.management.intercept.DeliveryServiceException
;
import
cn.freemud.management.thirdparty.CouponBackstageClient
;
import
cn.freemud.management.thirdparty.CouponOfflineClient
;
import
cn.freemud.management.thirdparty.EcologyAdapterClient
;
import
cn.freemud.management.thirdparty.request.coupon.RedeemReportQueryRequest
;
import
cn.freemud.management.thirdparty.request.coupon.ReverseThirdCouponRedeemReportReq
;
import
cn.freemud.management.thirdparty.request.ecology.adapter.CancelRedeemCouponRequest
;
import
cn.freemud.management.thirdparty.response.Result
;
import
cn.freemud.management.thirdparty.response.coupon.RedeemReportQueryResponse
;
import
cn.freemud.management.thirdparty.response.coupon.SaasPageResponse
;
import
cn.freemud.management.thirdparty.response.coupon.SaasResponse
;
import
cn.freemud.management.thirdparty.response.ecology.adapter.CancelRedeemCouponResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
...
...
@@ -22,7 +26,6 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoR
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
lombok.Data
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.lang.Nullable
;
...
...
@@ -40,6 +43,12 @@ import java.util.*;
public
class
ThirdCouponOrderHandle
{
@Autowired
private
CouponBackstageClient
couponBackstageClient
;
@Autowired
private
EcologyAdapterClient
ecologyAdapterClient
;
@Autowired
private
CouponOfflineClient
couponOfflineClient
;
/**
* 判断订单中是否使用了三方券
* <pre>
...
...
@@ -157,6 +166,7 @@ public class ThirdCouponOrderHandle {
thirdCouponDto
.
setStoreId
(
redeemReport
.
getStoreId
());
thirdCouponDto
.
setMemberId
(
redeemReport
.
getMemberId
());
thirdCouponDto
.
setChannel
(
redeemReport
.
getChannel
());
thirdCouponDto
.
setRedeemTime
(
redeemReport
.
getRedeemTime
());
if
(
CouponThirdChannelEnum
.
MEI_TUAN
.
getChannel
().
equals
(
redeemReport
.
getChannel
()))
{
thirdCouponDto
.
setEcologyChannelType
(
EcologyChannelTypeEnum
.
MEITUAN
);
}
else
if
(
CouponThirdChannelEnum
.
DOU_YIN
.
getChannel
().
equals
(
redeemReport
.
getChannel
()))
{
...
...
@@ -168,6 +178,62 @@ public class ThirdCouponOrderHandle {
}
/**
* 三方券支付冲正
* <pre></pre>
* @param request
* @param orderBean
*/
public
void
thirdCouponRefund
(
String
partnerId
,
String
orderCode
,
String
operator
)
{
ThirdCouponOrderHandle
.
ThirdCouponDto
coupon
=
this
.
getCoupon
(
partnerId
,
orderCode
);
if
(
coupon
==
null
)
{
throw
new
RuntimeException
(
"三方券信息查询失败,请重试"
);
}
if
(
coupon
.
isCanceled
())
{
return
;
}
if
(
ThirdCouponOrderHandle
.
isCancelTimeout
(
coupon
.
getRedeemTime
(),
coupon
.
getEcologyChannelType
()))
{
throw
new
RuntimeException
(
"核销时间超过可冲正期限,撤销核销失败"
);
}
// 美团、抖音平台三方券
if
(
coupon
.
getEcologyChannelType
()
!=
null
)
{
CancelRedeemCouponRequest
req
=
new
CancelRedeemCouponRequest
();
req
.
setTxn
(
orderCode
);
req
.
setStoreId
(
coupon
.
getStoreId
());
req
.
setMemberId
(
coupon
.
getMemberId
());
req
.
setPartnerId
(
coupon
.
getPartnerId
());
req
.
setChannel
(
coupon
.
getEcologyChannelType
().
getVal
());
req
.
setOperator
(
operator
);
coupon
.
getCouponCodes
().
forEach
(
code
->
{
req
.
setCode
(
code
);
Result
<
CancelRedeemCouponResponse
>
result
=
ecologyAdapterClient
.
couponCancel
(
req
);
ApiLog
.
infoMessage
(
"冲正三方券:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
req
),
JSONObject
.
toJSONString
(
result
));
if
(!
result
.
isStatus
())
{
throw
new
RuntimeException
(
"撤销核销失败,请重试"
);
}
if
(
result
.
getResult
().
getCancelResult
().
equals
(
CancelRedeemCouponResponse
.
Result
.
TIME_LIMITED
))
{
throw
new
RuntimeException
(
"核销时间超过可冲正期限,撤销核销失败"
);
}
if
(!
result
.
getResult
().
getCancelResult
().
equals
(
CancelRedeemCouponResponse
.
Result
.
SUCCESS
))
{
throw
new
RuntimeException
(
"撤销核销失败,请重试"
);
}
});
}
try
{
// 记录冲正明细
ReverseThirdCouponRedeemReportReq
couponRequest
=
new
ReverseThirdCouponRedeemReportReq
();
couponRequest
.
setPartnerId
(
coupon
.
getPartnerId
());
couponRequest
.
setChannel
(
coupon
.
getChannel
());
couponRequest
.
setOrderCode
(
orderCode
);
couponRequest
.
setRedeemStatus
(
ThirdCouponReportStatusEnum
.
SUCCESS
.
getStatus
());
SaasResponse
<
Object
>
reverseResp
=
couponOfflineClient
.
reverseThirdCouponRedeemReport
(
couponRequest
);
ApiLog
.
infoMessage
(
"冲正三方券记录明细:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
couponRequest
),
JSONObject
.
toJSONString
(
reverseResp
));
}
catch
(
Exception
e
)
{
ErrorLog
.
errorDev
(
"冲正三方券记录明细异常:"
,
e
,
e
.
getMessage
());
}
}
@Data
public
static
class
ThirdCouponDto
{
/**
...
...
@@ -202,5 +268,10 @@ public class ThirdCouponOrderHandle {
* 会员 id
*/
private
String
memberId
;
/**
* 核销或冲正时间
*/
private
Date
redeemTime
;
}
}
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
View file @
56a9e92f
...
...
@@ -225,10 +225,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Override
public
BaseResponse
<
OrderManagerResponse
>
orderReject
(
OrderManagerRequest
request
,
OrderBeanV1
orderBean
)
{
// 三方券支付冲正
try
{
this
.
thirdCouponRefund
(
request
,
orderBean
);
}
catch
(
Exception
e
)
{
return
ResponseUtil
.
error
(
e
.
getMessage
());
if
(
ThirdCouponOrderHandle
.
isThirdCouponOrder
(
orderBean
))
{
try
{
thirdCouponOrderHandle
.
thirdCouponRefund
(
request
.
getPartnerId
(),
request
.
getOrderId
(),
request
.
getOperator
());
}
catch
(
Exception
e
)
{
return
ResponseUtil
.
error
(
e
.
getMessage
());
}
}
PayRefundResponse
refundResponse
=
null
;
...
...
@@ -267,10 +269,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
deliveryHandle
.
cancelDelivery
(
orderBean
,
request
);
// 三方券支付冲正
try
{
this
.
thirdCouponRefund
(
request
,
orderBean
);
}
catch
(
Exception
e
)
{
return
ResponseUtil
.
error
(
e
.
getMessage
());
if
(
ThirdCouponOrderHandle
.
isThirdCouponOrder
(
orderBean
))
{
try
{
thirdCouponOrderHandle
.
thirdCouponRefund
(
request
.
getPartnerId
(),
request
.
getOrderId
(),
request
.
getOperator
());
}
catch
(
Exception
e
)
{
return
ResponseUtil
.
error
(
e
.
getMessage
());
}
}
// 支付退款 包括线上小程序付款的订单,订单宝其他支付方式收款(汇来米,收钱吧,现金,其他)老板通发起退款
...
...
@@ -300,67 +304,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
}
return
ResponseUtil
.
success
();
}
/**
* 三方券支付冲正
* <pre></pre>
* @param request
* @param orderBean
*/
private
void
thirdCouponRefund
(
OrderManagerRequest
request
,
OrderBeanV1
orderBean
)
{
if
(!
ThirdCouponOrderHandle
.
isThirdCouponOrder
(
orderBean
))
{
return
;
}
ThirdCouponOrderHandle
.
ThirdCouponDto
coupon
=
thirdCouponOrderHandle
.
getCoupon
(
request
.
getPartnerId
(),
request
.
getOrderId
());
if
(
coupon
==
null
)
{
throw
new
RuntimeException
(
"三方券信息查询失败,请重试"
);
}
if
(
coupon
.
isCanceled
())
{
return
;
}
Date
orderCreateDate
=
new
Date
(
orderBean
.
getGmtCreate
());
if
(
ThirdCouponOrderHandle
.
isCancelTimeout
(
orderCreateDate
,
coupon
.
getEcologyChannelType
()))
{
throw
new
RuntimeException
(
"核销时间超过可冲正期限,撤销核销失败"
);
}
// 美团、抖音平台三方券
if
(
coupon
.
getEcologyChannelType
()
!=
null
)
{
CancelRedeemCouponRequest
req
=
new
CancelRedeemCouponRequest
();
req
.
setTxn
(
request
.
getOrderId
());
req
.
setStoreId
(
coupon
.
getStoreId
());
req
.
setMemberId
(
coupon
.
getMemberId
());
req
.
setPartnerId
(
coupon
.
getPartnerId
());
req
.
setChannel
(
coupon
.
getEcologyChannelType
().
getVal
());
req
.
setOperator
(
request
.
getOperator
());
coupon
.
getCouponCodes
().
forEach
(
code
->
{
req
.
setCode
(
code
);
Result
<
CancelRedeemCouponResponse
>
result
=
ecologyAdapterClient
.
couponCancel
(
req
);
ApiLog
.
infoMessage
(
"冲正三方券:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
req
),
JSONObject
.
toJSONString
(
result
));
if
(!
result
.
isStatus
())
{
throw
new
RuntimeException
(
"撤销核销失败,请重试"
);
}
if
(
result
.
getResult
().
getCancelResult
().
equals
(
CancelRedeemCouponResponse
.
Result
.
TIME_LIMITED
))
{
throw
new
RuntimeException
(
"核销时间超过可冲正期限,撤销核销失败"
);
}
if
(!
result
.
getResult
().
getCancelResult
().
equals
(
CancelRedeemCouponResponse
.
Result
.
SUCCESS
))
{
throw
new
RuntimeException
(
"撤销核销失败,请重试"
);
}
});
}
try
{
// 记录冲正明细
ReverseThirdCouponRedeemReportReq
couponRequest
=
new
ReverseThirdCouponRedeemReportReq
();
couponRequest
.
setPartnerId
(
coupon
.
getPartnerId
());
couponRequest
.
setChannel
(
coupon
.
getChannel
());
couponRequest
.
setOrderCode
(
request
.
getOrderId
());
couponRequest
.
setRedeemStatus
(
ThirdCouponReportStatusEnum
.
SUCCESS
.
getStatus
());
SaasResponse
<
Object
>
reverseResp
=
couponOfflineClient
.
reverseThirdCouponRedeemReport
(
couponRequest
);
ApiLog
.
infoMessage
(
"冲正三方券记录明细:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
couponRequest
),
JSONObject
.
toJSONString
(
reverseResp
));
}
catch
(
Exception
e
)
{
ErrorLog
.
errorDev
(
"冲正三方券记录明细异常:"
,
e
,
e
.
getMessage
());
}
}
/**
* 拒单退款、同意退款、取消订单退款
* 小程序点餐订单退款,无单收银退款,订单宝扫码付、其他支付方式收款(汇来米,收钱吧,现金,其他)等有支付流水等退款
...
...
@@ -529,10 +472,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
public
BaseResponse
<
OrderManagerResponse
>
posCancel
(
OrderBeanV1
order
,
OrderManagerRequest
request
)
{
// 三方券支付冲正
try
{
this
.
thirdCouponRefund
(
request
,
order
);
}
catch
(
Exception
e
)
{
return
ResponseUtil
.
error
(
e
.
getMessage
());
if
(
ThirdCouponOrderHandle
.
isThirdCouponOrder
(
order
))
{
try
{
thirdCouponOrderHandle
.
thirdCouponRefund
(
request
.
getPartnerId
(),
request
.
getOrderId
(),
request
.
getOperator
());
}
catch
(
Exception
e
)
{
return
ResponseUtil
.
error
(
e
.
getMessage
());
}
}
//调用cancel接口,商家退款
OrderCancelReq
orderCancelReq
=
new
OrderCancelReq
();
...
...
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