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
f5e20fd3
Commit
f5e20fd3
authored
Mar 04, 2024
by
box
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
三方券订单退款退券
parent
25d2df21
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
85 additions
and
11 deletions
+85
-11
order-management/src/main/java/cn/freemud/management/service/handle/ThirdCouponOrderHandle.java
+14
-7
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
+27
-4
order-management/src/main/java/cn/freemud/management/thirdparty/CouponBackstageClient.java
+10
-0
order-management/src/main/java/cn/freemud/management/thirdparty/request/coupon/ReverseThirdCouponRedeemReportReq.java
+34
-0
No files found.
order-management/src/main/java/cn/freemud/management/service/handle/ThirdCouponOrderHandle.java
View file @
f5e20fd3
...
...
@@ -4,6 +4,7 @@ import cn.freemud.base.util.DateUtil;
import
cn.freemud.management.enums.coupon.CouponThirdChannelEnum
;
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
;
...
...
@@ -103,7 +104,7 @@ public class ThirdCouponOrderHandle {
* @param channelTypeEnum
* @return
*/
public
static
boolean
isCancelTimeout
(
Date
redeemDate
,
EcologyChannelTypeEnum
channelTypeEnum
)
{
public
static
boolean
isCancelTimeout
(
Date
redeemDate
,
@Nullable
EcologyChannelTypeEnum
channelTypeEnum
)
{
if
(
EcologyChannelTypeEnum
.
MEITUAN
.
equals
(
channelTypeEnum
))
{
// 美团券不能超过 60天
if
(
DateUtil
.
addDays
(
redeemDate
,
60
).
compareTo
(
new
Date
())
<
0
)
{
...
...
@@ -137,7 +138,9 @@ public class ThirdCouponOrderHandle {
ErrorLog
.
errorDev
(
"查询券码服务失败"
);
return
null
;
}
Optional
<
RedeemReportQueryResponse
>
first
=
saasResponse
.
getResult
().
getList
().
stream
().
filter
(
resp
->
ThirdCouponReportTypeEnum
.
REDEEM
.
getType
().
equals
(
resp
.
getRedeemType
())).
findFirst
();
Optional
<
RedeemReportQueryResponse
>
first
=
saasResponse
.
getResult
().
getList
().
stream
()
.
filter
(
resp
->
ThirdCouponReportTypeEnum
.
REDEEM
.
getType
().
equals
(
resp
.
getRedeemType
())
&&
ThirdCouponReportStatusEnum
.
SUCCESS
.
getStatus
().
equals
(
resp
.
getRedeemStatus
()))
.
findFirst
();
if
(!
first
.
isPresent
())
{
ErrorLog
.
errorDev
(
"查询券码服务失败,无核销记录"
);
return
null
;
...
...
@@ -145,21 +148,20 @@ public class ThirdCouponOrderHandle {
RedeemReportQueryResponse
redeemReport
=
first
.
get
();
List
<
String
>
couponCodes
=
Arrays
.
asList
(
redeemReport
.
getCouponCode
().
split
(
","
));
boolean
canceled
=
saasResponse
.
getResult
().
getList
().
stream
().
anyMatch
(
resp
->
ThirdCouponReportTypeEnum
.
REVERSE
.
getType
().
equals
(
resp
.
getRedeemType
()));
boolean
canceled
=
saasResponse
.
getResult
().
getList
().
stream
()
.
anyMatch
(
resp
->
ThirdCouponReportTypeEnum
.
REVERSE
.
getType
().
equals
(
resp
.
getRedeemType
())
&&
ThirdCouponReportStatusEnum
.
SUCCESS
.
getStatus
().
equals
(
resp
.
getRedeemStatus
()));
ThirdCouponDto
thirdCouponDto
=
new
ThirdCouponDto
();
thirdCouponDto
.
setCouponCodes
(
couponCodes
);
thirdCouponDto
.
setCanceled
(
canceled
);
thirdCouponDto
.
setPartnerId
(
redeemReport
.
getPartnerId
());
thirdCouponDto
.
setStoreId
(
redeemReport
.
getStoreId
());
thirdCouponDto
.
setMemberId
(
redeemReport
.
getMemberId
());
thirdCouponDto
.
setChannel
(
redeemReport
.
getChannel
());
if
(
CouponThirdChannelEnum
.
MEI_TUAN
.
getChannel
().
equals
(
redeemReport
.
getChannel
()))
{
thirdCouponDto
.
setEcologyChannelType
(
EcologyChannelTypeEnum
.
MEITUAN
);
}
else
if
(
CouponThirdChannelEnum
.
DOU_YIN
.
getChannel
().
equals
(
redeemReport
.
getChannel
())
||
CouponThirdChannelEnum
.
UNKNOWN
.
getChannel
().
equals
(
redeemReport
.
getChannel
())
)
{
}
else
if
(
CouponThirdChannelEnum
.
DOU_YIN
.
getChannel
().
equals
(
redeemReport
.
getChannel
()))
{
// 未知渠道的为早期对接抖音时的数据,默认为抖音渠道
thirdCouponDto
.
setEcologyChannelType
(
EcologyChannelTypeEnum
.
TIKTOK
);
}
else
{
ErrorLog
.
errorDev
(
"查询订单三方券失败,券渠道不支持"
);
return
null
;
}
return
thirdCouponDto
;
...
...
@@ -171,6 +173,11 @@ public class ThirdCouponOrderHandle {
/**
* 券渠道
*/
private
Short
channel
;
/**
* 券渠道
*/
@Nullable
private
EcologyChannelTypeEnum
ecologyChannelType
;
/**
* 券号列表
...
...
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
View file @
f5e20fd3
...
...
@@ -11,19 +11,24 @@ import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.enums.OperateType
;
import
cn.freemud.management.enums.*
;
import
cn.freemud.management.enums.coupon.ThirdCouponReportStatusEnum
;
import
cn.freemud.management.handler.AssisantApplicationHandler
;
import
cn.freemud.management.service.OrderBaseService
;
import
cn.freemud.management.service.OrderManagerService
;
import
cn.freemud.management.service.handle.*
;
import
cn.freemud.management.thirdparty.ConsoleApiClient
;
import
cn.freemud.management.thirdparty.CouponBackstageClient
;
import
cn.freemud.management.thirdparty.EcologyAdapterClient
;
import
cn.freemud.management.thirdparty.OrderCallbackClient
;
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.SaasResponse
;
import
cn.freemud.management.thirdparty.response.ecology.adapter.CancelRedeemCouponResponse
;
import
cn.freemud.management.util.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
...
...
@@ -109,6 +114,9 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Autowired
private
EcologyAdapterClient
ecologyAdapterClient
;
@Autowired
private
CouponBackstageClient
couponBackstageClient
;
/**
* 接单
*
...
...
@@ -318,6 +326,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
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
());
...
...
@@ -328,20 +338,33 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
coupon
.
getCouponCodes
().
forEach
(
code
->
{
req
.
setCode
(
code
);
Result
<
CancelRedeemCouponResponse
>
result
=
ecologyAdapterClient
.
couponCancel
(
req
);
ApiLog
.
infoMessage
(
"冲正三方券:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
result
),
JSONObject
.
toJSONString
(
result
));
ApiLog
.
infoMessage
(
"冲正三方券:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
req
),
JSONObject
.
toJSONString
(
result
));
if
(!
result
.
isStatus
())
{
throw
new
RuntimeException
(
"撤销核销失败,请重试"
);
}
if
(
result
.
getResult
().
getCancelResult
().
equals
(
CancelRedeemCouponResponse
.
Result
.
SUCCESS
))
{
return
;
}
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
=
couponBackstageClient
.
reverseThirdCouponRedeemReport
(
couponRequest
);
ApiLog
.
infoMessage
(
"冲正三方券记录明细:req:{},resp:{}"
,
JSONObject
.
toJSONString
(
couponRequest
),
JSONObject
.
toJSONString
(
reverseResp
));
}
catch
(
Exception
e
)
{
ErrorLog
.
errorDev
(
"冲正三方券记录明细异常:"
,
e
,
e
.
getMessage
());
}
}
/**
* 拒单退款、同意退款、取消订单退款
* 小程序点餐订单退款,无单收银退款,订单宝扫码付、其他支付方式收款(汇来米,收钱吧,现金,其他)等有支付流水等退款
...
...
order-management/src/main/java/cn/freemud/management/thirdparty/CouponBackstageClient.java
View file @
f5e20fd3
...
...
@@ -14,6 +14,7 @@
package
cn
.
freemud
.
management
.
thirdparty
;
import
cn.freemud.management.thirdparty.request.coupon.RedeemReportQueryRequest
;
import
cn.freemud.management.thirdparty.request.coupon.ReverseThirdCouponRedeemReportReq
;
import
cn.freemud.management.thirdparty.response.coupon.RedeemReportQueryResponse
;
import
cn.freemud.management.thirdparty.response.coupon.SaasPageResponse
;
import
cn.freemud.management.thirdparty.response.coupon.SaasResponse
;
...
...
@@ -32,4 +33,13 @@ public interface CouponBackstageClient {
*/
@PostMapping
(
"thirdChannelCoupon/redeemReport/query"
)
SaasResponse
<
SaasPageResponse
<
RedeemReportQueryResponse
>>
queryCodesInfo
(
RedeemReportQueryRequest
request
);
/**
* 冲正三方券核销明细
* <pre></pre>
* @param couponRequest
* @return
*/
@PostMapping
(
value
=
"/thirdChannelCoupon/redeemReport/reverse"
)
SaasResponse
<
Object
>
reverseThirdCouponRedeemReport
(
ReverseThirdCouponRedeemReportReq
couponRequest
);
}
order-management/src/main/java/cn/freemud/management/thirdparty/request/coupon/ReverseThirdCouponRedeemReportReq.java
0 → 100644
View file @
f5e20fd3
package
cn
.
freemud
.
management
.
thirdparty
.
request
.
coupon
;
import
cn.freemud.management.enums.coupon.ThirdCouponReportStatusEnum
;
import
lombok.Data
;
/**
* © All rights Reserved
*
* @author wénkǎi.zhāng 2023-11-29
* @since 1.0
*/
@Data
public
class
ReverseThirdCouponRedeemReportReq
{
/**
* 商户号
*/
private
String
partnerId
;
/**
* {@link cn.freemud.management.enums.coupon.CouponThirdChannelEnum#channel}
*/
private
Short
channel
;
/**
* 订单编号
*/
private
String
orderCode
;
/**
* 是否冲正成功,1-成功,2-失败,不传默认成功
* {@link ThirdCouponReportStatusEnum#status}
*/
private
Short
redeemStatus
=
1
;
}
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