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
b7771235
Commit
b7771235
authored
Sep 02, 2022
by
周晓航
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/zxh/重新对接支付退款响应-20220824' into develop
parents
bf7a6f92
5261c948
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
178 additions
and
50 deletions
+178
-50
call-back-service/src/main/java/cn/freemud/amp/config/OrderCallBackConfig.java
+1
-1
order-application-service/src/main/java/cn/freemud/config/FeignSupportConfig.java
+19
-0
order-application-service/src/main/java/cn/freemud/interceptor/FeignInterceptor.java
+63
-0
order-application-service/src/main/java/cn/freemud/service/impl/PayServiceImpl.java
+4
-4
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
+12
-11
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+14
-15
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
+60
-11
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
+1
-7
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingEquallyService.java
+4
-1
No files found.
call-back-service/src/main/java/cn/freemud/amp/config/OrderCallBackConfig.java
View file @
b7771235
...
...
@@ -130,7 +130,7 @@ public class OrderCallBackConfig {
/**
*
有数上报/ 支付门店 queue 绑定
*
task-center-order-consumer服务 订单状态处理中心queue 优化原有相同queue代码
*
* @return
*/
...
...
order-application-service/src/main/java/cn/freemud/config/FeignSupportConfig.java
0 → 100644
View file @
b7771235
package
cn
.
freemud
.
config
;
import
cn.freemud.interceptor.FeignInterceptor
;
import
feign.RequestInterceptor
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
FeignSupportConfig
{
/**
* feign请求拦截器
*
* @return
*/
@Bean
public
RequestInterceptor
requestInterceptor
(){
return
new
FeignInterceptor
();
}
}
order-application-service/src/main/java/cn/freemud/interceptor/FeignInterceptor.java
0 → 100644
View file @
b7771235
package
cn
.
freemud
.
interceptor
;
import
cn.freemud.utils.AppLogUtil
;
import
com.alibaba.fastjson.JSON
;
import
feign.RequestInterceptor
;
import
feign.RequestTemplate
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.*
;
@Configuration
public
class
FeignInterceptor
implements
RequestInterceptor
{
@Value
(
"${forward.feign.headers:x-forwarded-for, x-real-ip}"
)
private
Set
<
String
>
needHeaders
;
@Override
public
void
apply
(
RequestTemplate
requestTemplate
)
{
HttpServletRequest
httpServletRequest
=
this
.
getHttpServletRequest
();
if
(
Objects
.
nonNull
(
httpServletRequest
))
{
Map
<
String
,
String
>
headers
=
getHeaders
(
httpServletRequest
);
for
(
String
headerName
:
headers
.
keySet
())
{
requestTemplate
.
header
(
headerName
,
getHeaders
(
getHttpServletRequest
()).
get
(
headerName
));
}
}
}
private
HttpServletRequest
getHttpServletRequest
()
{
try
{
ServletRequestAttributes
requestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
if
(
Objects
.
isNull
(
requestAttributes
))
{
return
null
;
}
return
requestAttributes
.
getRequest
();
}
catch
(
Exception
e
)
{
AppLogUtil
.
errorLog
(
"FeignInterceptor error {}"
,
""
,
""
,
e
);
return
null
;
}
}
private
Map
<
String
,
String
>
getHeaders
(
HttpServletRequest
request
)
{
Map
<
String
,
String
>
map
=
new
LinkedHashMap
<>();
Enumeration
<
String
>
enumeration
=
request
.
getHeaderNames
();
while
(
enumeration
.
hasMoreElements
())
{
String
key
=
enumeration
.
nextElement
();
if
(
needThisHeader
(
key
))
{
String
value
=
request
.
getHeader
(
key
);
map
.
put
(
key
,
value
);
}
}
AppLogUtil
.
printLog
(
"clientIp for feign client info:"
+
JSON
.
toJSONString
(
map
),
""
,
""
);
return
map
;
}
private
boolean
needThisHeader
(
String
headerName
)
{
// TODO:过滤哪些header需要传递,千万不能把所有的header传下去
return
needHeaders
.
contains
(
headerName
);
}
}
order-application-service/src/main/java/cn/freemud/service/impl/PayServiceImpl.java
View file @
b7771235
...
...
@@ -1409,7 +1409,7 @@ public class PayServiceImpl {
refundRequest
.
setTotalAmount
(
refundRequest
.
getRefundAmount
());
}
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
this
.
assortmentOpenPlatformIappWxappStoreManager
.
selectWxappStoreByWxAppIdAndStoreId
(
refundRequest
.
getAppId
(),
refundRequest
.
getStoreId
(),
payCode
);
//
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto
request
=
new
PayRefundRequestDto
();
request
.
setStoreId
(
refundRequest
.
getStoreId
());
request
.
setStationId
(
refundRequest
.
getStationId
());
...
...
@@ -1425,7 +1425,7 @@ public class PayServiceImpl {
request
.
setPartnerId
(
refundRequest
.
getPartnerId
());
request
.
setVer
(
2
);
request
.
setExtendParams
(
refundRequest
.
getExtendParams
());
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
=
this
.
checkParam
(
refundRequest
.
getPartnerId
(),
refundRequest
.
getStoreId
(),
refundRequest
.
getRefundAmount
()
,
wxAppStore
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
=
this
.
checkParam
(
refundRequest
.
getPartnerId
(),
refundRequest
.
getStoreId
(),
refundRequest
.
getRefundAmount
());
if
(!
Objects
.
equals
(
checkParam
.
getCode
(),
"100"
))
{
return
checkParam
;
}
else
{
...
...
@@ -1478,7 +1478,7 @@ public class PayServiceImpl {
}
public
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
(
String
partnerId
,
String
storeId
,
Long
amount
,
AssortmentOpenPlatformIappWxappStore
wxAppStore
)
{
public
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
(
String
partnerId
,
String
storeId
,
Long
amount
)
{
if
(
StringUtils
.
isBlank
(
partnerId
))
{
return
ResponseUtils
.
error
(
"501"
,
"商户号不能为空"
);
}
else
if
(
StringUtils
.
isBlank
(
storeId
))
{
...
...
@@ -1486,7 +1486,7 @@ public class PayServiceImpl {
}
else
if
(
amount
==
null
)
{
return
ResponseUtils
.
error
(
"501"
,
"金额不能为空"
);
}
else
{
return
wxAppStore
==
null
?
ResponseUtils
.
error
(
"500"
,
"支付信息没有配置"
)
:
ResponseUtils
.
success
();
return
ResponseUtils
.
success
();
}
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/OrderVerifyHandle.java
View file @
b7771235
...
...
@@ -650,21 +650,22 @@ public class OrderVerifyHandle {
/**
* 获取已完成订单退款金额
* isRefundDeliveryFee 退款是否退配送费已在申请退款传到订单基础服务,取订单售后单中退款金额 actualAmount
*/
public
BigDecimal
getRefundAmount
(
OrderBeanV1
data
,
boolean
isRefundDeliveryFee
)
{
//是否配置已完成订单可退款
BigDecimal
refundAmount
=
new
BigDecimal
(
data
.
getAmount
());
if
(
isRefundDeliveryFee
||
isPayBySVC
(
data
)){
return
refundAmount
;
}
List
<
AccountBeanV1
>
accountList
=
data
.
getAccountList
();
if
(
CollectionUtils
.
isNotEmpty
(
accountList
))
{
for
(
AccountBeanV1
orderCostResp
:
accountList
)
{
if
(
orderCostResp
.
getType
()
==
OldOrderAccountType
.
DELIVERY_AMOUNT
.
getCode
())
{
refundAmount
=
new
BigDecimal
(
data
.
getAmount
().
intValue
()
-
orderCostResp
.
getPrice
());
}
}
}
//
if (isRefundDeliveryFee || isPayBySVC(data)){
//
return refundAmount;
//
}
//
List<AccountBeanV1> accountList = data.getAccountList();
//
if (CollectionUtils.isNotEmpty(accountList)) {
//
for (AccountBeanV1 orderCostResp : accountList) {
//
if (orderCostResp.getType() == OldOrderAccountType.DELIVERY_AMOUNT.getCode()) {
//
refundAmount = new BigDecimal(data.getAmount().intValue() - orderCostResp.getPrice());
//
}
//
}
//
}
return
refundAmount
;
}
/**
...
...
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
b7771235
...
...
@@ -14,7 +14,6 @@ import cn.freemud.management.thirdparty.OMSPaymentClient;
import
cn.freemud.management.util.RedisUtil
;
import
cn.freemud.redis.RedisCache
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore
;
import
com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
...
...
@@ -159,17 +158,16 @@ public class PaymentHandle {
MultiOrderRefundRequest
multiOrderRefundRequest
=
paymentSdkAdapter
.
getMultiOrderPayRefundRequest
(
orderBean
,
getRefundAmount
(
orderBean
));
MultiOrderRefundResponse
multiOrderRefundResponse
=
mulitiPaymentClient
.
paymentApplicationRefund
(
multiOrderRefundRequest
,
orderBean
.
getCompanyId
());
String
message
=
""
;
if
(
multiOrderRefundResponse
==
null
||
multiOrderRefundResponse
.
getData
()
==
null
||
!
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
ORDER_PAY_RESPONSE_SUCCESS
.
equals
(
multiOrderRefundResponse
.
getCode
()))
{
// fisherman 退款异常 也当做 退款中处理
refundStatus
=
PayRefundStatus
.
RUNNING
;
if
(
Objects
.
isNull
(
multiOrderRefundResponse
)
||
multiOrderRefundResponse
.
getCode
()
!=
200
)
{
refundStatus
=
PayRefundStatus
.
FAIL
;
}
else
{
List
<
MultiOrderRefundResponse
.
RefundPlatformResponse
>
refundPlatformResponseList
=
multiOrderRefundResponse
.
getData
().
refundPlatformResponseList
;
if
(
null
!=
refundPlatformResponseList
&&
refundPlatformResponseList
.
size
()
>
0
)
{
MultiOrderRefundResponse
.
RefundPlatform
data
=
multiOrderRefundResponse
.
getData
();
if
(
Objects
.
isNull
(
data
)
||
CollectionUtils
.
isEmpty
(
data
.
refundPlatformResponseList
))
{
refundStatus
=
PayRefundStatus
.
FAIL
;
}
else
{
List
<
MultiOrderRefundResponse
.
RefundPlatformResponse
>
refundPlatformResponseList
=
data
.
refundPlatformResponseList
;
redisCache
.
save
(
RedisUtil
.
getPaymentTransIdSequenceKey
(
refundPlatformResponseList
.
get
(
0
).
getTransId
()),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
}
if
(
CollectionUtils
.
isNotEmpty
(
refundPlatformResponseList
))
{
long
refundError
=
refundPlatformResponseList
.
stream
()
.
filter
(
s
->
s
.
getResultCode
().
compareTo
(
MultiOrderRefundResponse
.
RefundPlatformResponse
.
REFUNDED_RESULTCODE
)
!=
0
&&
s
.
getResultCode
().
compareTo
(
MultiOrderRefundResponse
.
RefundPlatformResponse
.
REFUND_SUCCESS
)
!=
0
)
...
...
@@ -191,6 +189,7 @@ public class PaymentHandle {
}
}
}
PayRefundResponse
payRefundResponse
=
handlePayRefundResponse
(
refundStatus
,
multiOrderRefundRequest
.
getRefundTradeNo
());
if
(
StringUtils
.
isNotEmpty
(
message
))
{
payRefundResponse
.
setMessage
(
message
);
...
...
@@ -211,7 +210,7 @@ public class PaymentHandle {
AgentPayRefundReq
req
=
paymentSdkAdapter
.
getAgentPayefundReq
(
orderBean
,
this
.
getRefundAmount
(
orderBean
));
AgentPayRefundResp
resp
=
mulitiPaymentClient
.
agentPayRefund
(
req
);
if
(!
resp
.
isOk
())
{
refundStatus
=
PayRefundStatus
.
RUNNING
;
refundStatus
=
PayRefundStatus
.
FAIL
;
}
AgentPayRefundResp
.
DataDTO
data
=
resp
.
getData
();
if
(
Objects
.
nonNull
(
data
))
{
...
...
@@ -243,7 +242,7 @@ public class PaymentHandle {
if
(
refundRequest
.
getTotalAmount
()
==
null
||
refundRequest
.
getTotalAmount
()
==
0L
)
{
refundRequest
.
setTotalAmount
(
refundRequest
.
getRefundAmount
());
}
AssortmentOpenPlatformIappWxappStore
wxAppStore
=
this
.
assortmentOpenPlatformIappWxappStoreManager
.
selectWxappStoreByWxAppIdAndStoreId
(
refundRequest
.
getAppId
(),
refundRequest
.
getStoreId
(),
payCode
);
//
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto
request
=
new
PayRefundRequestDto
();
request
.
setStoreId
(
refundRequest
.
getStoreId
());
request
.
setStationId
(
refundRequest
.
getStationId
());
...
...
@@ -259,7 +258,7 @@ public class PaymentHandle {
request
.
setPartnerId
(
refundRequest
.
getPartnerId
());
request
.
setVer
(
2
);
request
.
setExtendParams
(
refundRequest
.
getExtendParams
());
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
=
this
.
checkParam
(
refundRequest
.
getPartnerId
(),
refundRequest
.
getStoreId
(),
refundRequest
.
getRefundAmount
()
,
wxAppStore
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
=
this
.
checkParam
(
refundRequest
.
getPartnerId
(),
refundRequest
.
getStoreId
(),
refundRequest
.
getRefundAmount
());
if
(!
Objects
.
equals
(
checkParam
.
getCode
(),
"100"
))
{
return
null
;
}
...
...
@@ -433,7 +432,7 @@ public class PaymentHandle {
}
private
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
(
String
partnerId
,
String
storeId
,
Long
amount
,
AssortmentOpenPlatformIappWxappStore
wxAppStore
)
{
private
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
checkParam
(
String
partnerId
,
String
storeId
,
Long
amount
)
{
if
(
StringUtils
.
isBlank
(
partnerId
))
{
return
ResponseUtils
.
error
(
"501"
,
"商户号不能为空"
);
}
else
if
(
StringUtils
.
isBlank
(
storeId
))
{
...
...
@@ -441,7 +440,7 @@ public class PaymentHandle {
}
else
if
(
amount
==
null
)
{
return
ResponseUtils
.
error
(
"501"
,
"金额不能为空"
);
}
else
{
return
wxAppStore
==
null
?
ResponseUtils
.
error
(
"500"
,
"支付信息没有配置"
)
:
ResponseUtils
.
success
();
return
ResponseUtils
.
success
();
}
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
View file @
b7771235
This diff is collapsed.
Click to expand it.
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
View file @
b7771235
...
...
@@ -473,12 +473,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
PayRefundStatus
payRefundStatus
=
PayRefundStatus
.
SUCCESS
;
if
(!
Objects
.
equals
(
refundStatus
,
"100"
))
{
payRefundStatus
=
PayRefundStatus
.
FAIL
;
// 告知基础服务 退款失败
AfterSalesRefundFailReq
refundFailReq
=
this
.
getAfterSalesRefundFailReq
(
orderBean
,
"refundSuccessCallback"
,
AfterSalesApplyClientEnum
.
STATE_6
.
getIndex
(),
refundResponse
.
getMessage
());
orderSdkService
.
refundFail
(
refundFailReq
,
LogThreadLocal
.
getTrackingNo
());
}
refundResponse
.
setPayRefundStatus
(
payRefundStatus
);
refundResponse
.
setRefundId
(
request
.
getRefundId
());
...
...
@@ -486,7 +480,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
OrderManagerRequest
omRequest
=
new
OrderManagerRequest
();
omRequest
.
setReason
(
reason
);
omRequest
.
setOperator
(
"支付退款回调系统补偿"
);
saasOrderHandle
.
refundAgree
(
omRequest
,
refundResponse
,
orderBean
);
saasOrderHandle
.
refundAgree
ByCallback
(
omRequest
,
refundResponse
,
orderBean
);
// 退款失败 不应该走 冲正逻辑
if
(
payRefundStatus
.
getCode
().
compareTo
(
PayRefundStatus
.
SUCCESS
.
getCode
())
!=
0
)
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingEquallyService.java
View file @
b7771235
...
...
@@ -121,7 +121,10 @@ public class CalculationSharingEquallyService {
Goods
find
=
null
;
for
(
CartGoods
product
:
shoppingCartGoodsResponseVo
.
getProducts
())
{
if
(
goods
!=
null
)
{
find
=
goods
.
stream
().
filter
((
k
)
->
k
.
getCartGoodsUid
().
equals
(
product
.
getCartGoodsUid
())).
findFirst
().
orElseGet
(
null
);
Optional
<
Goods
>
first
=
goods
.
stream
().
filter
((
k
)
->
k
.
getCartGoodsUid
().
equals
(
product
.
getCartGoodsUid
())).
findFirst
();
if
(
first
.
isPresent
())
{
find
=
first
.
get
();
}
}
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
=
calculationCommonService
.
convertCartGoods2DetailGoodsList
(
find
,
product
,
shoppingCartInfoRequestVo
.
getPartnerId
());
cartGoodsDetailDtoList
.
add
(
cartGoodsDetailDto
);
...
...
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