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
a05de75d
Commit
a05de75d
authored
Aug 17, 2023
by
rui.zhu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/售后单记录支付信息'
parents
c57bc6b5
087f1d6c
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
509 additions
and
154 deletions
+509
-154
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseQueryOrderRequest.java
+7
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CancelOrderRequest.java
+7
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/MultiOrderRefundResponse.java
+10
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
+3
-0
order-application-service/src/main/java/cn/freemud/entities/vo/RefundNotifyCallbackRequestVo.java
+15
-0
order-application-service/src/main/java/cn/freemud/service/RefundService.java
+12
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+9
-4
order-application-service/src/main/java/cn/freemud/service/impl/PayServiceImpl.java
+2
-13
order-management/src/main/java/cn/freemud/management/adapter/OrderCancelReqAdapter.java
+129
-0
order-management/src/main/java/cn/freemud/management/entities/dto/request/order/RefundSuccessCallbackVo.java
+9
-0
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/OrderRefundResponse.java
+22
-0
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/PayRefundData.java
+27
-0
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/PayRefundResponse.java
+35
-0
order-management/src/main/java/cn/freemud/management/service/handle/DemoMain.java
+0
-98
order-management/src/main/java/cn/freemud/management/service/handle/MultiRefundService.java
+21
-4
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+9
-35
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
+18
-0
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
+2
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/enums/CashTypeEnum.java
+45
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/enums/PayMethodEnum.java
+58
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/AfterSalesOperateReq.java
+35
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderCancelReq.java
+34
-0
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseQueryOrderRequest.java
View file @
a05de75d
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
order
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
lombok.Data
;
...
...
@@ -94,4 +95,10 @@ public class BaseQueryOrderRequest extends BaseConfig {
* 1是服务端自动接单
*/
private
Integer
acceptMode
;
/**
* 对退款明细的记录
*/
private
List
<
OrderCancelReq
.
PayRefundItem
>
payRefundItemList
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CancelOrderRequest.java
View file @
a05de75d
...
...
@@ -14,12 +14,14 @@ package com.freemud.sdk.api.assortment.order.request.order;
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.OrderCancelReq
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
public
class
CancelOrderRequest
extends
BaseConfig
{
...
...
@@ -102,6 +104,11 @@ public class CancelOrderRequest extends BaseConfig {
private
Integer
refundState
;
/**
* 对退款明细的记录
*/
private
List
<
OrderCancelReq
.
PayRefundItem
>
payRefundItemList
;
/**
* 售后单拓展信息
*/
private
AfterSalesOrderExtInfoReq
extInfoReq
;
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/MultiOrderRefundResponse.java
View file @
a05de75d
...
...
@@ -58,5 +58,14 @@ public class MultiOrderRefundResponse<T> {
@ApiModelProperty
(
value
=
"业务返回消息"
)
private
String
resultMsg
;
@ApiModelProperty
(
value
=
"支付方式编号"
)
private
String
payMethodCode
;
@ApiModelProperty
(
value
=
"现金类型"
)
private
String
cashType
;
@ApiModelProperty
(
value
=
"支付条码"
)
private
String
uniqueCode
;
}
}
\ No newline at end of file
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
View file @
a05de75d
...
...
@@ -986,6 +986,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request
.
setOperationClient
(
cancelOrderRequest
.
getOperationClient
());
request
.
setRefundState
(
cancelOrderRequest
.
getRefundState
());
request
.
setRefundDeliveryAmount
(
cancelOrderRequest
.
isRefundDeliveryAmount
());
request
.
setPayRefundItemList
(
cancelOrderRequest
.
getPayRefundItemList
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
OrderBaseResp
response
=
orderSdkService
.
cancelOrder
(
request
,
cancelOrderRequest
.
getTrackingNo
());
return
orderSdkAdapter
.
convent2BaseOrderResponse
(
response
);
}
...
...
@@ -1124,6 +1125,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request
.
setOperator
(
baseQueryOrderRequest
.
getOperator
());
request
.
setOperationClient
(
baseQueryOrderRequest
.
getOperationClient
());
request
.
setRefundState
(
baseQueryOrderRequest
.
getRefundState
());
request
.
setPayRefundItemList
(
baseQueryOrderRequest
.
getPayRefundItemList
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
OrderBaseResp
response
=
orderSdkService
.
adultApproveWithRefundComplete
(
request
,
baseQueryOrderRequest
.
getTrackingNo
());
return
orderSdkAdapter
.
convent2BaseOrderResponse
(
response
);
}
...
...
@@ -1139,6 +1141,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request
.
setAfterSerialNo
(
baseQueryOrderRequest
.
getRefundSerialNo
());
request
.
setOperationClient
(
baseQueryOrderRequest
.
getOperationClient
());
request
.
setRefundState
(
baseQueryOrderRequest
.
getRefundState
());
request
.
setPayRefundItemList
(
baseQueryOrderRequest
.
getPayRefundItemList
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
OrderBaseResp
response
=
orderSdkService
.
adultWithRefundComplete
(
request
,
baseQueryOrderRequest
.
getTrackingNo
());
return
orderSdkAdapter
.
convent2BaseOrderResponse
(
response
);
}
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/RefundNotifyCallbackRequestVo.java
View file @
a05de75d
...
...
@@ -49,4 +49,19 @@ public class RefundNotifyCallbackRequestVo {
* 退款流水号
*/
private
String
refundId
;
/**
* 退款发起时间
*/
private
String
businessDate
;
/**
* 支付渠道编号
*/
private
String
payCode
;
/**
* 退款时间 格式:yyyyMMddHHmmss
*/
private
String
refundTime
;
}
order-application-service/src/main/java/cn/freemud/service/RefundService.java
View file @
a05de75d
...
...
@@ -27,6 +27,7 @@ import cn.freemud.service.store.StoreManager;
import
cn.freemud.service.thirdparty.DeliveryFeiginClient
;
import
cn.freemud.service.thirdparty.EcologyAdminApplicationClient
;
import
cn.freemud.service.thirdparty.FMAssistantCloudPrintClient
;
import
cn.freemud.utils.BeanUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter
;
import
com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager
;
...
...
@@ -51,6 +52,7 @@ import lombok.RequiredArgsConstructor;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
...
...
@@ -281,9 +283,17 @@ public class RefundService {
*/
private
void
refundOrder
(
OrderInfoReqs
order
,
String
reason
,
String
remark
,
Boolean
isRefundDeliveryFee
,
Byte
refundMode
)
{
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
List
<
OrderCancelReq
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
if
(
order
.
getSettlementAmount
().
longValue
()
>
0
)
{
PayRefundResponse
refundResponse
=
paymentHandle
.
getCommonPayRefundResponse
(
order
,
reason
);
state
=
refundResponse
.
getPayRefundStatus
().
getCode
();
if
(
CollectionUtils
.
isNotEmpty
(
refundResponse
.
getPayRefundItemList
()))
{
refundResponse
.
getPayRefundItemList
().
forEach
(
item
->
{
OrderCancelReq
.
PayRefundItem
refundItem
=
new
OrderCancelReq
.
PayRefundItem
();
BeanUtils
.
copyProperties
(
item
,
refundItem
);
refundItemList
.
add
(
refundItem
);
});
}
}
OrderCancelReq
req
=
OrderCancelReqAdapter
.
convert
(
order
,
UUID
.
randomUUID
().
toString
(),
...
...
@@ -292,6 +302,8 @@ public class RefundService {
if
(
Objects
.
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
(),
state
))
{
//退款成功
req
.
setCreateEvent
(
AfterSalesOrderCreateEventEnum
.
REFUND_COMPLETE
.
getCreateEvent
());
// 设置退款信息
req
.
setPayRefundItemList
(
refundItemList
);
}
else
if
(
Objects
.
equals
(
PayRefundStatus
.
RUNNING
.
getCode
(),
state
))
{
req
.
setCreateEvent
(
null
);
req
.
setRefundState
(
AfterSalesRefunStateEnum
.
STATE_2
.
getIndex
());
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
a05de75d
...
...
@@ -56,7 +56,6 @@ import cn.freemud.handler.MemberBlacklistHandler;
import
cn.freemud.handler.WeChatLiveMsgHandle
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto
;
import
cn.freemud.management.entities.dto.response.pay.OrderRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse
;
...
...
@@ -115,9 +114,7 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto
;
import
com.freemud.application.sdk.api.structure.service.MessageCenterClient
;
import
com.freemud.sdk.api.assortment.message.enums.MessageEventType
;
import
com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService
;
import
com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime
;
import
com.freemud.sdk.api.assortment.order.enums.OperationClientEnum
;
...
...
@@ -132,7 +129,6 @@ import com.google.common.collect.Lists;
import
com.google.common.collect.Maps
;
import
com.google.gson.Gson
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -620,6 +616,15 @@ public class OrderServiceImpl implements Orderservice {
request
.
setTrackingNo
(
trackingNo
);
request
.
setOperationClient
(
OperationClientEnum
.
STATE_6
.
getIndex
());
request
.
setRefundState
(
AfterSalesRefunStateEnum
.
STATE_4
.
getIndex
());
List
<
OrderCancelReq
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
OrderCancelReq
.
PayRefundItem
refundItem
=
new
OrderCancelReq
.
PayRefundItem
();
refundItem
.
setPayChannelType
(
Integer
.
valueOf
(
PayChannelType
.
getByEbcode
(
requestVo
.
getPayCode
()).
getIndex
()));
refundItem
.
setPayChannelName
(
PayChannelType
.
getByEbcode
(
requestVo
.
getPayCode
()).
getName
());
refundItem
.
setAmount
(
requestVo
.
getRefundAmount
());
refundItem
.
setRefundTradeNo
(
requestVo
.
getRefundTradeNo
());
refundItem
.
setRefundTime
(
DateUtil
.
convert2Date
(
requestVo
.
getRefundTime
(),
"yyyyMMddHHmmss"
).
getTime
());
refundItemList
.
add
(
refundItem
);
request
.
setPayRefundItemList
(
refundItemList
);
BaseOrderResponse
response
=
orderCenterSdkService
.
orderRefundComplete
(
request
);
if
(
response
==
null
||
!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
response
.
getErrcode
()))
{
return
refundFaileMessage
(
"orderRefundComplete fail"
+
response
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/PayServiceImpl.java
View file @
a05de75d
...
...
@@ -27,6 +27,7 @@ import cn.freemud.enums.PaySuccessSource;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.TradeState
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.management.adapter.OrderCancelReqAdapter
;
import
cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto
;
...
...
@@ -1445,7 +1446,7 @@ public class PayServiceImpl {
refundResponse
.
setMsg
(
refundData
.
getResultMsg
());
refundResponse
.
setRefundAmount
(
refundData
.
getRefundAmount
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
refundResponse
.
setRefundStatus
(
this
.
getRefundStatus
(
refundData
.
getResultCode
()));
refundResponse
.
setRefundStatus
(
OrderCancelReqAdapter
.
getRefundStatus
(
refundData
.
getResultCode
()));
refundResponse
.
setRefundTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setThirdPartRefundTradeNo
(
refundData
.
getThirdPartRefundTradeNo
());
...
...
@@ -1462,20 +1463,8 @@ public class PayServiceImpl {
return
ResponseUtils
.
error
(
refundNewResponse
.
getCode
(),
refundNewResponse
.
getMessage
());
}
}
public
Integer
getRefundStatus
(
Integer
resultCode
)
{
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_101_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
{
return
Objects
.
equals
(
resultCode
,
REFUND_RESPONSE_CODE
)
?
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_4
.
getCode
()
:
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_2
.
getCode
();
}
}
public
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
(
String
partnerId
,
String
storeId
,
Long
amount
)
{
if
(
StringUtils
.
isBlank
(
partnerId
))
{
return
ResponseUtils
.
error
(
"501"
,
"商户号不能为空"
);
...
...
order-management/src/main/java/cn/freemud/management/adapter/OrderCancelReqAdapter.java
0 → 100644
View file @
a05de75d
package
cn
.
freemud
.
management
.
adapter
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo
;
import
cn.freemud.management.entities.dto.response.pay.OrderRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundData
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.enums.PaymentRefundStatus
;
import
com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq
;
import
com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
static
cn
.
freemud
.
management
.
service
.
handle
.
PaymentHandle
.*;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
public
class
OrderCancelReqAdapter
{
public
static
List
<
OrderCancelReq
.
PayRefundItem
>
convert
(
List
<
PayRefundResponse
.
PayRefundItem
>
list
)
{
List
<
OrderCancelReq
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
list
.
forEach
(
item
->
{
OrderCancelReq
.
PayRefundItem
refundItem
=
new
OrderCancelReq
.
PayRefundItem
();
BeanUtils
.
copyProperties
(
item
,
refundItem
);
refundItemList
.
add
(
refundItem
);
});
}
return
refundItemList
;
}
public
static
PayRefundResponse
.
PayRefundItem
convert
(
OrderRefundResponse
orderRefundData
)
{
PayRefundResponse
.
PayRefundItem
refundItem
=
new
PayRefundResponse
.
PayRefundItem
();
if
(
StringUtils
.
isNotBlank
(
orderRefundData
.
getCashType
()))
{
refundItem
.
setPayChannelType
(
Integer
.
valueOf
(
orderRefundData
.
getCashType
()));
refundItem
.
setPayChannelName
(
CashTypeEnum
.
getByCode
(
orderRefundData
.
getCashType
()).
getDesc
());
}
else
{
refundItem
.
setPayChannelType
(
PayMethodEnum
.
getByCode
(
orderRefundData
.
getPayMethodCode
()).
getIndex
());
refundItem
.
setPayChannelName
(
PayMethodEnum
.
getByCode
(
orderRefundData
.
getPayMethodCode
()).
getDesc
());
}
refundItem
.
setAmount
(
orderRefundData
.
getRefundAmount
().
intValue
());
refundItem
.
setRefundTradeNo
(
orderRefundData
.
getRefundTradeNo
());
refundItem
.
setRefundTime
(
DateUtil
.
convert2Date
(
orderRefundData
.
getRefundTime
(),
"yyyy-MM-dd HH:mm:ss"
).
getTime
());
refundItem
.
setCardCode
(
PayMethodEnum
.
TSVC
.
getCode
().
equals
(
orderRefundData
.
getPayMethodCode
())
?
orderRefundData
.
getUniqueCode
()
:
null
);
return
refundItem
;
}
public
static
List
<
PayRefundResponse
.
PayRefundItem
>
convertMultiRefundItem
(
List
<
MultiOrderRefundResponse
.
RefundPlatformResponse
>
orderRefundList
)
{
return
orderRefundList
.
stream
()
.
map
(
r
->
{
PayRefundResponse
.
PayRefundItem
refundItem
=
new
PayRefundResponse
.
PayRefundItem
();
if
(
StringUtils
.
isNotBlank
(
r
.
getCashType
()))
{
refundItem
.
setPayChannelType
(
Integer
.
valueOf
(
r
.
getCashType
()));
refundItem
.
setPayChannelName
(
CashTypeEnum
.
getByCode
(
r
.
getCashType
()).
getDesc
());
}
else
{
refundItem
.
setPayChannelType
(
PayMethodEnum
.
getByCode
(
r
.
getPayMethodCode
()).
getIndex
());
refundItem
.
setPayChannelName
(
PayMethodEnum
.
getByCode
(
r
.
getPayMethodCode
()).
getDesc
());
}
refundItem
.
setAmount
(
r
.
getSettleRefundAmount
());
refundItem
.
setRefundTradeNo
(
r
.
getRefundTradeNo
());
refundItem
.
setRefundTime
(
DateUtil
.
convert2Date
(
r
.
getRefundTime
(),
"yyyy-MM-dd HH:mm:ss"
).
getTime
());
refundItem
.
setCardCode
(
PayMethodEnum
.
TSVC
.
getCode
().
equals
(
r
.
getPayMethodCode
())
?
r
.
getUniqueCode
()
:
null
);
return
refundItem
;
})
.
collect
(
Collectors
.
toList
());
}
public
static
List
<
PayRefundResponse
.
PayRefundItem
>
convert
(
RefundSuccessCallbackVo
request
)
{
List
<
PayRefundResponse
.
PayRefundItem
>
payRefundItemList
=
Lists
.
newArrayList
();
PayRefundResponse
.
PayRefundItem
payRefundItem
=
new
PayRefundResponse
.
PayRefundItem
();
payRefundItem
.
setRefundTradeNo
(
request
.
getRefundTradeNo
());
if
(
StringUtils
.
isNotBlank
(
request
.
getCashType
()))
{
payRefundItem
.
setPayChannelType
(
Integer
.
valueOf
(
request
.
getCashType
()));
payRefundItem
.
setPayChannelName
(
CashTypeEnum
.
getByCode
(
request
.
getCashType
()).
getDesc
());
}
else
{
payRefundItem
.
setPayChannelType
(
PayMethodEnum
.
getByCode
(
request
.
getPayMethodCode
()).
getIndex
());
payRefundItem
.
setPayChannelName
(
PayMethodEnum
.
getByCode
(
request
.
getPayMethodCode
()).
getDesc
());
}
payRefundItem
.
setAmount
(
request
.
getRefundAmount
());
payRefundItem
.
setRefundTime
(
DateUtil
.
convert2Date
(
request
.
getRefundTime
(),
"yyyy-MM-dd HH:mm:ss"
).
getTime
());
payRefundItem
.
setCardCode
(
PayMethodEnum
.
TSVC
.
getCode
().
equals
(
request
.
getPayMethodCode
())
?
request
.
getUniqueCode
()
:
null
);
payRefundItemList
.
add
(
payRefundItem
);
return
payRefundItemList
;
}
public
static
OrderRefundResponse
convert
(
PayRefundData
refundData
)
{
OrderRefundResponse
refundResponse
=
new
OrderRefundResponse
();
refundResponse
.
setStatusCode
(
refundData
.
getResultCode
());
refundResponse
.
setMsg
(
refundData
.
getResultMsg
());
refundResponse
.
setRefundAmount
(
refundData
.
getRefundAmount
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
refundResponse
.
setRefundStatus
(
getRefundStatus
(
refundData
.
getResultCode
()));
refundResponse
.
setRefundTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setThirdPartRefundTradeNo
(
refundData
.
getThirdPartRefundTradeNo
());
refundResponse
.
setThirdPartTradeNo
(
refundData
.
getThirdPartTradeNo
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
refundResponse
.
setCashType
(
refundData
.
getCashType
());
refundResponse
.
setPayMethodCode
(
refundData
.
getPayMethodCode
());
refundResponse
.
setUniqueCode
(
refundData
.
getUniqueCode
());
refundResponse
.
setRefundTime
(
refundData
.
getRefundTime
());
return
refundResponse
;
}
public
static
Integer
getRefundStatus
(
Integer
resultCode
)
{
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_101_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
{
return
Objects
.
equals
(
resultCode
,
REFUND_RESPONSE_CODE
)
?
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_4
.
getCode
()
:
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_2
.
getCode
();
}
}
}
order-management/src/main/java/cn/freemud/management/entities/dto/request/order/RefundSuccessCallbackVo.java
View file @
a05de75d
...
...
@@ -72,4 +72,13 @@ public class RefundSuccessCallbackVo {
@ApiModelProperty
(
value
=
"间联退款单号"
)
private
String
refundEndTransId
;
@ApiModelProperty
(
value
=
"支付方式编号"
,
position
=
10
)
private
String
payMethodCode
;
@ApiModelProperty
(
value
=
"现金类型"
,
position
=
11
)
private
String
cashType
;
@ApiModelProperty
(
value
=
"支付条码"
,
position
=
12
)
private
String
uniqueCode
;
}
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/OrderRefundResponse.java
View file @
a05de75d
package
cn
.
freemud
.
management
.
entities
.
dto
.
response
.
pay
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
...
...
@@ -14,5 +15,26 @@ public class OrderRefundResponse {
private
Long
refundAmount
;
private
Long
totalAmount
;
private
Integer
refundStatus
;
/**
* 退款成功时间
*/
private
String
refundTime
;
/**
* 支付方式
* {@link com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum}
*/
private
String
payMethodCode
;
/**
* 现金类型, 当payMethodCode为其他的时候,存在该值
* {@link com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum}
*/
private
String
cashType
;
/**
* 支付条码, 当支付方式为储值卡的时候,该字段为卡号
*/
private
String
uniqueCode
;
}
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/PayRefundData.java
View file @
a05de75d
...
...
@@ -11,8 +11,35 @@ public class PayRefundData {
private
String
tradeNo
;
private
String
refundTradeNo
;
private
String
thirdPartRefundTradeNo
;
/**
* 申请退款金额
*/
private
Long
refundAmount
;
private
Long
totalAmount
;
private
Integer
refundStatus
;
/**
* 退款成功时间
*/
private
String
refundTime
;
/**
* 支付渠道编号
*/
private
String
payCode
;
/**
* 支付方式
* {@link com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum}
*/
private
String
payMethodCode
;
/**
* 现金类型, 当payMethodCode为其他的时候,存在该值
* {@link com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum}
*/
private
String
cashType
;
/**
* 支付条码, 当支付方式为储值卡的时候,该字段为卡号
*/
private
String
uniqueCode
;
}
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/PayRefundResponse.java
View file @
a05de75d
...
...
@@ -4,6 +4,8 @@ import cn.freemud.management.enums.ResponseResult;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
lombok.Data
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
...
...
@@ -43,4 +45,37 @@ public class PayRefundResponse {
* 是否为部分退款订单
*/
private
Boolean
partRefund
=
false
;
/**
* 对退款明细的记录
*/
private
List
<
PayRefundItem
>
payRefundItemList
;
@Data
public
static
class
PayRefundItem
{
/**
* 退款支付渠道
*/
private
Integer
payChannelType
;
/**
* 退款支付渠道名称
*/
private
String
payChannelName
;
/**
* 退款金额
*/
private
Integer
amount
;
/**
* 退款流水编号
*/
private
String
refundTradeNo
;
/**
* 退款时间 单位毫秒
*/
private
Long
refundTime
;
/**
* 退款储值卡卡号(退款渠道为储值卡时,则必须传递)
*/
private
String
cardCode
;
}
}
order-management/src/main/java/cn/freemud/management/service/handle/DemoMain.java
deleted
100644 → 0
View file @
c57bc6b5
package
cn
.
freemud
.
management
.
service
.
handle
;
import
cn.freemud.management.entities.dto.response.pay.OrderRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundData
;
import
cn.freemud.management.enums.PaymentRefundStatus
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.util.ResponseUtils
;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
org.apache.commons.lang.ObjectUtils
;
import
java.util.Objects
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/6/13 10:56
* @description :
*/
public
class
DemoMain
{
public
static
void
main
(
String
[]
args
)
{
String
str
=
"{\n"
+
" \"code\": \"100\",\n"
+
" \"data\": {\n"
+
" \"resultCode\": 82004005,\n"
+
" \"resultMsg\": \"当前订单有退款记录没有完成\"\n"
+
" },\n"
+
" \"message\": \"success\"\n"
+
"}"
;
BaseResponse
<
PayRefundData
>
refundNewResponse
=
JSON
.
parseObject
(
str
,
new
TypeReference
<
BaseResponse
<
PayRefundData
>>()
{
});
if
(
Objects
.
equals
(
refundNewResponse
.
getCode
(),
"100"
)
&&
refundNewResponse
.
getData
()
!=
null
)
{
refundNewResponse
.
setCode
(
refundNewResponse
.
getData
().
getResultCode
().
toString
());
refundNewResponse
.
setMessage
(
refundNewResponse
.
getData
().
getResultMsg
());
}
if
(
Objects
.
equals
(
refundNewResponse
.
getCode
(),
"100"
))
{
PayRefundData
refundData
=
refundNewResponse
.
getData
();
if
(
null
!=
refundData
)
{
OrderRefundResponse
refundResponse
=
new
OrderRefundResponse
();
refundResponse
.
setStatusCode
(
refundData
.
getResultCode
());
refundResponse
.
setMsg
(
refundData
.
getResultMsg
());
refundResponse
.
setRefundAmount
(
refundData
.
getRefundAmount
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
refundResponse
.
setRefundStatus
(
getRefundStatus
(
refundData
.
getResultCode
()));
refundResponse
.
setRefundTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setThirdPartRefundTradeNo
(
refundData
.
getThirdPartRefundTradeNo
());
refundResponse
.
setThirdPartTradeNo
(
refundData
.
getThirdPartTradeNo
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
// return ResponseUtils.success(refundResponse);
}
}
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
=
ResponseUtils
.
error
(
refundNewResponse
.
getCode
(),
refundNewResponse
.
getMessage
());
// Integer refundStatus = PayRefundStatus.SUCCESS;
Integer
refundStatus
=
1
;
if
(
orderRefundResponse
==
null
)
{
// refundStatus = PayRefundStatus.RUNNING;
refundStatus
=
4
;
}
else
{
refundStatus
=
getFinalRefundStatus
(
Integer
.
valueOf
(
orderRefundResponse
.
getCode
()));
}
System
.
out
.
println
(
refundStatus
);
}
private
static
Integer
getFinalRefundStatus
(
Integer
resultCode
)
{
switch
(
resultCode
)
{
// 退款中状态码需要单独处理
case
8200305
:
// return PayRefundStatus.RUNNING;
return
4
;
// 退款成功
case
100
:
// return PayRefundStatus.SUCCESS;
return
1
;
default
:
// return PayRefundStatus.FAIL;
return
2
;
}
}
private
static
final
String
SUCCESS
=
"100"
;
public
static
final
Integer
SUCCESS_RESPONSE_CODE_INT
=
100
;
public
static
final
Integer
SUCCESS_RESPONSE_101_CODE_INT
=
101
;
public
static
final
Integer
REFUND_RESPONSE_CODE
=
8200305
;
public
static
Integer
getRefundStatus
(
Integer
resultCode
)
{
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_101_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
{
return
Objects
.
equals
(
resultCode
,
REFUND_RESPONSE_CODE
)
?
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_4
.
getCode
()
:
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_2
.
getCode
();
}
}
}
order-management/src/main/java/cn/freemud/management/service/handle/MultiRefundService.java
View file @
a05de75d
package
cn
.
freemud
.
management
.
service
.
handle
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.management.adapter.OrderCancelReqAdapter
;
import
cn.freemud.management.adapter.PaymentSdkAdapter
;
import
cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq
;
import
cn.freemud.management.entities.dto.response.pay.AgentPayRefundResp
;
...
...
@@ -7,6 +9,9 @@ import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import
cn.freemud.management.thirdparty.MulitiPaymentClient
;
import
cn.freemud.management.util.RedisUtil
;
import
cn.freemud.redis.RedisCache
;
import
com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayChannelType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp
;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest
;
...
...
@@ -17,10 +22,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Component
public
class
MultiRefundService
{
...
...
@@ -109,6 +113,9 @@ public class MultiRefundService {
}
PayRefundResponse
payRefundResponse
=
handlePayRefundResponse
(
refundStatus
,
req
.
getRefundTradeNo
());
if
(
PayRefundStatus
.
SUCCESS
.
equals
(
refundStatus
))
{
payRefundResponse
.
setPayRefundItemList
(
OrderCancelReqAdapter
.
convertMultiRefundItem
(
resp
.
getData
().
getRefundPlatformResponseList
()));
}
if
(
StringUtils
.
isNotEmpty
(
message
))
{
payRefundResponse
.
setMessage
(
message
);
}
...
...
@@ -122,6 +129,7 @@ public class MultiRefundService {
public
PayRefundResponse
agentPayRefund
(
String
partnerId
,
String
storeCode
,
String
orderCode
,
BigDecimal
refundAmount
,
String
fmTradeNo
)
{
PayRefundStatus
refundStatus
=
PayRefundStatus
.
SUCCESS
;
String
fmRefundNo
=
""
;
List
<
PayRefundResponse
.
PayRefundItem
>
refundItems
=
new
ArrayList
<>();
try
{
AgentPayRefundReq
req
=
paymentSdkAdapter
.
getAgentPayRefundReq
(
partnerId
,
storeCode
,
orderCode
,
refundAmount
,
fmTradeNo
);
AgentPayRefundResp
resp
=
mulitiPaymentClient
.
agentPayRefund
(
req
);
...
...
@@ -132,11 +140,20 @@ public class MultiRefundService {
if
(
Objects
.
nonNull
(
data
))
{
refundStatus
=
this
.
getFinalRefundStatus
(
data
.
getResultCode
());
fmRefundNo
=
data
.
getFmRefundNo
();
PayRefundResponse
.
PayRefundItem
refundItem
=
new
PayRefundResponse
.
PayRefundItem
();
refundItem
.
setPayChannelType
(
Integer
.
valueOf
(
PayChannelType
.
getByEbcode
(
data
.
getEbcode
()).
getIndex
()));
refundItem
.
setPayChannelName
(
PayChannelType
.
getByEbcode
(
data
.
getEbcode
()).
getName
());
refundItem
.
setAmount
(
data
.
getRefundAmount
());
refundItem
.
setRefundTradeNo
(
data
.
getRefundEndTransTradeNo
());
refundItem
.
setRefundTime
(
DateUtil
.
convert2Date
(
data
.
getRefundTime
(),
"yyyy-MM-dd HH:mm:ss"
).
getTime
());
refundItems
.
add
(
refundItem
);
}
}
catch
(
Throwable
e
)
{
refundStatus
=
PayRefundStatus
.
FAIL
;
}
return
this
.
handlePayRefundResponse
(
refundStatus
,
fmRefundNo
);
PayRefundResponse
payRefundResponse
=
this
.
handlePayRefundResponse
(
refundStatus
,
fmRefundNo
);
payRefundResponse
.
setPayRefundItemList
(
refundItems
);
return
payRefundResponse
;
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
a05de75d
package
cn
.
freemud
.
management
.
service
.
handle
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.management.adapter.OrderCancelReqAdapter
;
import
cn.freemud.management.adapter.PaymentSdkAdapter
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto
;
...
...
@@ -17,7 +19,9 @@ import com.alibaba.fastjson.JSONObject;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
...
...
@@ -34,10 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.*
;
/**
...
...
@@ -195,26 +196,22 @@ public class PaymentHandle {
}
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
=
this
.
orderPayRefund
(
refundReq
);
String
message
=
null
;
List
<
PayRefundResponse
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
if
(
orderRefundResponse
==
null
)
{
refundStatus
=
PayRefundStatus
.
RUNNING
;
}
else
{
refundStatus
=
this
.
getFinalRefundStatus
(
Integer
.
valueOf
(
orderRefundResponse
.
getCode
()));
message
=
orderRefundResponse
.
getMessage
();
refundItemList
.
add
(
OrderCancelReqAdapter
.
convert
(
orderRefundResponse
.
getData
()));
}
PayRefundResponse
payRefundResponse
=
handlePayRefundResponse
(
refundStatus
,
refundReq
.
getRefundId
());
payRefundResponse
.
setPayRefundItemList
(
refundItemList
);
if
(
message
!=
null
)
{
payRefundResponse
.
setMessage
(
message
);
}
return
payRefundResponse
;
}
/**
* 代付订单退款
*
*/
private
PayRefundStatus
getFinalRefundStatus
(
Integer
resultCode
)
{
return
PayRefundStatus
.
getByPayResultCode
(
resultCode
);
}
...
...
@@ -411,18 +408,7 @@ public class PaymentHandle {
if
(
Objects
.
equals
(
refundNewResponse
.
getCode
(),
"100"
))
{
PayRefundData
refundData
=
refundNewResponse
.
getData
();
if
(
null
!=
refundData
)
{
OrderRefundResponse
refundResponse
=
new
OrderRefundResponse
();
refundResponse
.
setStatusCode
(
refundData
.
getResultCode
());
refundResponse
.
setMsg
(
refundData
.
getResultMsg
());
refundResponse
.
setRefundAmount
(
refundData
.
getRefundAmount
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
refundResponse
.
setRefundStatus
(
this
.
getRefundStatus
(
refundData
.
getResultCode
()));
refundResponse
.
setRefundTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setTradeNo
(
refundData
.
getRefundTradeNo
());
refundResponse
.
setThirdPartRefundTradeNo
(
refundData
.
getThirdPartRefundTradeNo
());
refundResponse
.
setThirdPartTradeNo
(
refundData
.
getThirdPartTradeNo
());
refundResponse
.
setTotalAmount
(
refundData
.
getTotalAmount
());
return
ResponseUtils
.
success
(
refundResponse
);
return
ResponseUtils
.
success
(
OrderCancelReqAdapter
.
convert
(
refundData
));
}
}
return
ResponseUtils
.
error
(
refundNewResponse
.
getCode
(),
refundNewResponse
.
getMessage
());
...
...
@@ -440,16 +426,4 @@ public class PaymentHandle {
return
ResponseUtils
.
success
();
}
}
private
Integer
getRefundStatus
(
Integer
resultCode
)
{
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
if
(
Objects
.
equals
(
resultCode
,
SUCCESS_RESPONSE_101_CODE_INT
))
{
return
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_1
.
getCode
();
}
else
{
return
Objects
.
equals
(
resultCode
,
REFUND_RESPONSE_CODE
)
?
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_4
.
getCode
()
:
PaymentRefundStatus
.
PAYMENT_REFUND_STATUS_2
.
getCode
();
}
}
}
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
View file @
a05de75d
...
...
@@ -2,6 +2,7 @@ package cn.freemud.management.service.handle;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.management.adapter.BaseQueryOrderRequestAdapter
;
import
cn.freemud.management.adapter.OrderCancelReqAdapter
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.enums.AfterSalesApplyClientEnum
;
...
...
@@ -14,6 +15,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1
;
import
com.freemud.application.sdk.api.ordercenter.request.AfterSalesRefundFailReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq
;
import
com.freemud.application.sdk.api.ordercenter.request.POSOrderOperationBaseReq
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
...
...
@@ -28,12 +30,15 @@ import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import
com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse
;
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.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.UUID
;
...
...
@@ -203,6 +208,17 @@ public class SaasOrderHandle {
//作废订单
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
getCancelOrderRequest
(
request
.
getOperator
(),
request
.
getReason
(),
refundResponse
.
getPayRefundStatus
(),
refundResponse
.
getRefundId
(),
orderBean
);
cancelOrderRequest
.
setOperationClient
(
request
.
getOperationClient
());
List
<
OrderCancelReq
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
refundResponse
.
getPayRefundItemList
()))
{
refundResponse
.
getPayRefundItemList
().
forEach
(
item
->
{
OrderCancelReq
.
PayRefundItem
refundItem
=
new
OrderCancelReq
.
PayRefundItem
();
BeanUtils
.
copyProperties
(
item
,
refundItem
);
refundItemList
.
add
(
refundItem
);
});
}
cancelOrderRequest
.
setPayRefundItemList
(
refundItemList
);
BaseOrderResponse
baseOrderResponse
=
orderCenterSdkService
.
orderReject
(
cancelOrderRequest
);
if
(
baseOrderResponse
==
null
||
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
baseOrderResponse
.
getErrcode
().
toString
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
AFFIRM_ORDER_FAIL
);
...
...
@@ -243,6 +259,7 @@ public class SaasOrderHandle {
refundAgreeRequest
.
setOperationClient
(
request
.
getOperationClient
());
BaseOrderResponse
baseOrderResponse
=
null
;
if
(
PayRefundStatus
.
SUCCESS
.
equals
(
refundResponse
.
getPayRefundStatus
()))
{
refundAgreeRequest
.
setPayRefundItemList
(
OrderCancelReqAdapter
.
convert
(
refundResponse
.
getPayRefundItemList
()));
// fisherman 判断是否在退款中, 如果是退款中 调用退货完成
if
(
orderBean
.
getAfterSalesOrderResp
().
getAfterSalesStatus
().
compareTo
(
AfterSalesRefunStateEnum
.
STATE_1
.
getIndex
())
!=
0
)
{
baseOrderResponse
=
orderCenterSdkService
.
orderRefundComplete
(
refundAgreeRequest
);
...
...
@@ -274,6 +291,7 @@ public class SaasOrderHandle {
refundAgreeRequest
.
setOperationClient
(
request
.
getOperationClient
());
PayRefundStatus
payRefundStatus
=
refundResponse
.
getPayRefundStatus
();
if
(
payRefundStatus
.
getCode
().
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
()))
{
refundAgreeRequest
.
setPayRefundItemList
(
OrderCancelReqAdapter
.
convert
(
refundResponse
.
getPayRefundItemList
()));
// 退款成功 调用 -> /afterSales/v2/adultRefundComplete
orderCenterSdkService
.
orderRefundComplete
(
refundAgreeRequest
);
}
else
{
...
...
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
View file @
a05de75d
package
cn
.
freemud
.
management
.
service
.
impl
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.management.adapter.OrderCancelReqAdapter
;
import
cn.freemud.management.constant.ResponseCodeConstant
;
import
cn.freemud.management.entities.dto.request.console.*
;
import
cn.freemud.management.entities.dto.request.order.OrderManagerRequest
;
...
...
@@ -510,6 +511,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
}
refundResponse
.
setPayRefundStatus
(
payRefundStatus
);
refundResponse
.
setRefundId
(
request
.
getRefundId
());
refundResponse
.
setPayRefundItemList
(
OrderCancelReqAdapter
.
convert
(
request
));
OrderManagerRequest
omRequest
=
new
OrderManagerRequest
();
omRequest
.
setReason
(
reason
);
...
...
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/enums/CashTypeEnum.java
0 → 100644
View file @
a05de75d
package
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
enums
;
public
enum
CashTypeEnum
{
HLM
(
"50"
,
"汇来米"
),
SQB
(
"51"
,
"收钱吧"
),
CASH
(
"52"
,
"现金"
);
private
String
code
;
private
String
desc
;
CashTypeEnum
(
String
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
static
CashTypeEnum
getByCode
(
String
code
)
{
if
(
code
==
null
)
{
return
null
;
}
for
(
CashTypeEnum
cashTypeEnum
:
values
())
{
if
(
cashTypeEnum
.
getCode
().
equals
(
code
))
{
return
cashTypeEnum
;
}
}
return
null
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/enums/PayMethodEnum.java
0 → 100644
View file @
a05de75d
package
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
enums
;
public
enum
PayMethodEnum
{
TZFB
(
"TZFB"
,
"支付宝"
,
2
),
TYL
(
"TYL"
,
"银联"
,
13
),
TWX
(
"TWX"
,
"微信"
,
1
),
TSVC
(
"TSVC"
,
"储值卡"
,
3
),
TOTHER
(
"TOTHER"
,
"其他支付"
,
10
),
;
private
String
code
;
private
Integer
index
;
private
String
desc
;
PayMethodEnum
(
String
code
,
String
desc
,
Integer
index
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
this
.
index
=
index
;
}
public
static
PayMethodEnum
getByCode
(
String
code
)
{
if
(
code
==
null
)
{
return
null
;
}
for
(
PayMethodEnum
payStatus
:
values
())
{
if
(
payStatus
.
getCode
().
equals
(
code
))
{
return
payStatus
;
}
}
return
null
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
Integer
getIndex
()
{
return
index
;
}
public
void
setIndex
(
Integer
index
)
{
this
.
index
=
index
;
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/AfterSalesOperateReq.java
View file @
a05de75d
...
...
@@ -14,6 +14,8 @@ package com.freemud.application.sdk.api.ordercenter.request;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
AfterSalesOperateReq
{
...
...
@@ -55,4 +57,37 @@ public class AfterSalesOperateReq {
* 售后退款状态 0:未定义(存量数据) 1:未退款 2:退款中 3:退款失败 4:已退款
*/
private
Integer
refundState
;
/**
* 对退款明细的记录
*/
private
List
<
OrderCancelReq
.
PayRefundItem
>
payRefundItemList
;
@Data
public
static
class
PayRefundItem
{
/**
* 退款支付渠道
*/
private
Integer
payChannelType
;
/**
* 退款支付渠道名称
*/
private
String
payChannelName
;
/**
* 退款金额
*/
private
Integer
amount
;
/**
* 退款流水编号
*/
private
String
refundTradeNo
;
/**
* 退款时间 单位毫秒
*/
private
Long
refundTime
;
/**
* 退款储值卡卡号(退款渠道为储值卡时,则必须传递)
*/
private
String
cardCode
;
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderCancelReq.java
View file @
a05de75d
...
...
@@ -16,6 +16,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
public
class
OrderCancelReq
{
...
...
@@ -97,4 +98,37 @@ public class OrderCancelReq {
* 是否部分退,默认否(全退)
*/
private
Boolean
isPartRefund
=
false
;
/**
* 对退款明细的记录
*/
private
List
<
PayRefundItem
>
payRefundItemList
;
@Data
public
static
class
PayRefundItem
{
/**
* 退款支付渠道
*/
private
Integer
payChannelType
;
/**
* 退款支付渠道名称
*/
private
String
payChannelName
;
/**
* 退款金额
*/
private
Integer
amount
;
/**
* 退款流水编号
*/
private
String
refundTradeNo
;
/**
* 退款时间 单位毫秒
*/
private
Long
refundTime
;
/**
* 退款储值卡卡号(退款渠道为储值卡时,则必须传递)
*/
private
String
cardCode
;
}
}
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