记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
bdbcf1f6
Commit
bdbcf1f6
authored
Jun 17, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加用户 退款分布式锁
parent
8fc91746
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
250 additions
and
239 deletions
+250
-239
GoblinOrderAppServiceImpl.java
...ervice/goblin/service/impl/GoblinOrderAppServiceImpl.java
+250
-239
No files found.
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/GoblinOrderAppServiceImpl.java
View file @
bdbcf1f6
...
@@ -10,6 +10,7 @@ import com.liquidnet.service.base.constant.MQConst;
...
@@ -10,6 +10,7 @@ import com.liquidnet.service.base.constant.MQConst;
import
com.liquidnet.service.candy.constant.CandyRedisConst
;
import
com.liquidnet.service.candy.constant.CandyRedisConst
;
import
com.liquidnet.service.candy.dto.CandyUserCouponBasicDto
;
import
com.liquidnet.service.candy.dto.CandyUserCouponBasicDto
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.entity.GoblinBackOrder
;
import
com.liquidnet.service.goblin.entity.GoblinBackOrder
;
...
@@ -269,187 +270,143 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
...
@@ -269,187 +270,143 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
// return ResponseDto.failure("无权操作");
// return ResponseDto.failure("无权操作");
// }
// }
List
<
String
>
backOrderIds
=
redisUtils
.
getBackOrderByOrderId
(
param
.
getOrderId
());
// 分布式锁防并发重复退款
for
(
String
backOrderId
:
backOrderIds
)
{
String
lockKey
=
GoblinRedisConst
.
REFUND_ORDER_LOCK
+
param
.
getOrderId
();
GoblinBackOrderVo
backOrderVo
=
redisUtils
.
getBackOrderVo
(
backOrderId
);
if
(!
redisUtils
.
redisUtil
.
lock
(
lockKey
,
1
,
30
))
{
if
(
backOrderVo
!=
null
&&
!
GoblinRefundHelper
.
isBackOrderFinished
(
backOrderVo
.
getStatus
()))
{
return
ResponseDto
.
failure
(
"退款处理中,请勿重复操作"
);
return
ResponseDto
.
failure
(
"申请失败"
);
}
}
}
try
{
if
(!(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
()
||
List
<
String
>
backOrderIds
=
redisUtils
.
getBackOrderByOrderId
(
param
.
getOrderId
());
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_3
.
getValue
()
||
for
(
String
backOrderId
:
backOrderIds
)
{
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_4
.
getValue
()))
{
GoblinBackOrderVo
backOrderVo
=
redisUtils
.
getBackOrderVo
(
backOrderId
);
return
ResponseDto
.
failure
(
"不可操作"
);
if
(
backOrderVo
!=
null
&&
!
GoblinRefundHelper
.
isBackOrderFinished
(
backOrderVo
.
getStatus
()))
{
}
return
ResponseDto
.
failure
(
"申请失败"
);
//判断7天
}
LocalDateTime
canRefundTime
=
getCanRefundTime
(
orderVo
);
if
(
canRefundTime
==
null
)
{
return
ResponseDto
.
failure
(
"申请失败"
);
}
else
{
if
(
LocalDateTime
.
now
().
isAfter
(
canRefundTime
))
{
return
ResponseDto
.
failure
(
"申请失败"
);
}
}
}
//判断券
if
(!(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
()
||
if
((!(
orderVo
.
getUcouponId
()
==
null
||
orderVo
.
getUcouponId
().
equals
(
""
))
||
!(
orderVo
.
getStoreCouponId
()
==
null
||
orderVo
.
getStoreCouponId
().
equals
(
""
)))
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_3
.
getValue
()
||
&&
param
.
getOrderSkuId
()
!=
null
)
{
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_4
.
getValue
()))
{
return
ResponseDto
.
failure
(
"用券仅支持整单退款"
);
return
ResponseDto
.
failure
(
"不可操作"
);
}
//退款订单生成
GoblinBackOrder
backOrder
=
GoblinBackOrder
.
getNew
();
backOrder
.
setBackOrderId
(
IDGenerator
.
nextTimeId2
());
backOrder
.
setBackCode
(
IDGenerator
.
storeRefundCode
(
orderVo
.
getMasterOrderCode
()));
backOrder
.
setOrderId
(
param
.
getOrderId
());
backOrder
.
setOrderCode
(
orderVo
.
getOrderCode
());
backOrder
.
setStoreId
(
orderVo
.
getStoreId
());
backOrder
.
setLogisCompanyName
(
param
.
getCompany
());
backOrder
.
setMailNo
(
param
.
getMailNo
());
backOrder
.
setUserId
(
orderVo
.
getUserId
());
backOrder
.
setType
(
GoblinStatusConst
.
Type
.
BACK_TYPE_1
.
getValue
());
backOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_1
.
getValue
());
backOrder
.
setCreatedAt
(
now
);
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
//未发货
if
(
StringUtil
.
isNotBlank
(
param
.
getOrderSkuId
()))
{
return
ResponseDto
.
failure
(
"发货前仅支持整单退款"
);
}
}
backOrder
.
setBackPriceExpress
(
orderVo
.
getPriceExpress
()
==
null
?
BigDecimal
.
ZERO
:
orderVo
.
getPriceExpress
());
//判断7天
backOrder
.
setReason
(
param
.
getReason
());
LocalDateTime
canRefundTime
=
getCanRefundTime
(
orderVo
);
backOrder
.
setPics
(
param
.
getPics
());
if
(
canRefundTime
==
null
)
{
backOrder
.
setDescribes
(
param
.
getDescribes
());
return
ResponseDto
.
failure
(
"申请失败"
);
backOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_0
.
getValue
());
backOrder
.
setAuditAt
(
now
);
backOrder
.
setSkuIdNums
(
Joiner
.
on
(
","
).
join
(
orderVo
.
getOrderSkuVoIds
()));
}
else
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_3
.
getValue
()
||
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_4
.
getValue
())
{
//已发货/已完成
if
(
StringUtil
.
isNotBlank
(
param
.
getOrderSkuId
()))
{
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
param
.
getOrderSkuId
());
if
(
orderSkuVo
==
null
||
!
orderVo
.
getOrderId
().
equals
(
orderSkuVo
.
getOrderId
()))
{
return
ResponseDto
.
failure
(
"不存在"
);
}
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
orderSkuVo
.
getOrderSkuId
());
backOrder
.
setRealBackPrice
(
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
));
backOrder
.
setBackPriceExpress
(
BigDecimal
.
ZERO
);
}
else
{
}
else
{
backOrder
.
setBackPriceExpress
(
BigDecimal
.
ZERO
);
if
(
LocalDateTime
.
now
().
isAfter
(
canRefundTime
))
{
}
return
ResponseDto
.
failure
(
"申请失败"
);
backOrder
.
setReason
(
param
.
getReason
());
backOrder
.
setPics
(
param
.
getPics
());
backOrder
.
setDescribes
(
param
.
getDescribes
());
backOrder
.
setType
(
param
.
getRefundType
()
==
null
?
GoblinStatusConst
.
Type
.
BACK_TYPE_1
.
getValue
()
:
param
.
getRefundType
());
backOrder
.
setSkuIdNums
(
param
.
getOrderSkuId
());
}
else
{
return
ResponseDto
.
failure
(
"不可申请"
);
}
GoblinBackOrderVo
vo
=
GoblinBackOrderVo
.
getNew
();
BeanUtils
.
copyProperties
(
backOrder
,
vo
);
vo
.
setCreatedAt
(
nowStr
);
List
<
GoblinBackOrderSkuVo
>
orderSkuVoList
=
ObjectUtil
.
goblinBackOrderSkuVoArrayList
();
BigDecimal
skuRefundPrice
=
BigDecimal
.
ZERO
;
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
//订单状态修改
// orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_61.getValue());
orderStatus
.
add
(
new
Object
[]{
orderVo
.
getStatus
(),
orderVo
.
getZhengzaiStatus
(),
now
,
orderVo
.
getOrderId
(),
now
,
now
});
for
(
String
orderSkuId
:
orderVo
.
getOrderSkuVoIds
())
{
//订单款式状态修改
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
orderSkuId
);
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_61
.
getValue
());
GoblinBackOrderSkuVo
backOrderSkuVo
=
GoblinBackOrderSkuVo
.
getNew
();
backOrderSkuVo
.
setOrderSkuId
(
orderSkuId
);
backOrderSkuVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
backOrderSkuVo
.
setSpuName
(
orderSkuVo
.
getSpuName
());
backOrderSkuVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
backOrderSkuVo
.
setSkuPic
(
orderSkuVo
.
getSkuImage
());
backOrderSkuVo
.
setSkuName
(
orderSkuVo
.
getSkuName
());
backOrderSkuVo
.
setSkuSpecs
(
orderSkuVo
.
getSkuSpecs
());
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
orderSkuId
);
BigDecimal
refundPrice
=
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
);
if
(
refundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
}
skuRefundPrice
=
skuRefundPrice
.
add
(
refundPrice
);
backOrderSkuVo
.
setRefundPrice
(
refundPrice
);
backOrderSkuVo
.
setCreatedAt
(
nowStr
);
orderSkuVoList
.
add
(
backOrderSkuVo
);
backOrderLog
(
orderVo
,
orderSkuVo
,
now
);
//redis
redisUtils
.
setGoblinOrderSku
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
//mongo
mongoUtils
.
updateGoblinOrderSkuVo
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
orderSkuStatus
.
add
(
new
Object
[]{
orderSkuVo
.
getStatus
(),
now
,
orderSkuVo
.
getOrderSkuId
(),
now
,
now
});
}
}
}
else
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_3
.
getValue
()
||
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_4
.
getValue
())
{
//判断券
if
(
StringUtil
.
isNotBlank
(
param
.
getOrderSkuId
()))
{
if
((!(
orderVo
.
getUcouponId
()
==
null
||
orderVo
.
getUcouponId
().
equals
(
""
))
||
!(
orderVo
.
getStoreCouponId
()
==
null
||
orderVo
.
getStoreCouponId
().
equals
(
""
)))
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
param
.
getOrderSkuId
());
&&
param
.
getOrderSkuId
()
!=
null
)
{
if
(
orderSkuVo
==
null
||
!
orderVo
.
getOrderId
().
equals
(
orderSkuVo
.
getOrderId
()))
{
return
ResponseDto
.
failure
(
"用券仅支持整单退款"
);
return
ResponseDto
.
failure
(
"不存在"
);
}
//退款订单生成
GoblinBackOrder
backOrder
=
GoblinBackOrder
.
getNew
();
backOrder
.
setBackOrderId
(
IDGenerator
.
nextTimeId2
());
backOrder
.
setBackCode
(
IDGenerator
.
storeRefundCode
(
orderVo
.
getMasterOrderCode
()));
backOrder
.
setOrderId
(
param
.
getOrderId
());
backOrder
.
setOrderCode
(
orderVo
.
getOrderCode
());
backOrder
.
setStoreId
(
orderVo
.
getStoreId
());
backOrder
.
setLogisCompanyName
(
param
.
getCompany
());
backOrder
.
setMailNo
(
param
.
getMailNo
());
backOrder
.
setUserId
(
orderVo
.
getUserId
());
backOrder
.
setType
(
GoblinStatusConst
.
Type
.
BACK_TYPE_1
.
getValue
());
backOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_1
.
getValue
());
backOrder
.
setCreatedAt
(
now
);
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
//未发货
if
(
StringUtil
.
isNotBlank
(
param
.
getOrderSkuId
()))
{
return
ResponseDto
.
failure
(
"发货前仅支持整单退款"
);
}
}
if
(
Objects
.
equals
(
orderSkuVo
.
getSkuType
(),
2
))
{
// 券类商品-校验发放的券是否已使用
backOrder
.
setBackPriceExpress
(
orderVo
.
getPriceExpress
()
==
null
?
BigDecimal
.
ZERO
:
orderVo
.
getPriceExpress
());
// 券类商品默认一个商品对应一个券,下单只可购买一张
backOrder
.
setReason
(
param
.
getReason
());
String
ucKey
=
CandyRedisConst
.
BASIC_USER_COUPON
.
concat
(
orderVo
.
getUserId
());
backOrder
.
setPics
(
param
.
getPics
());
List
<
CandyUserCouponBasicDto
>
vos
=
(
List
<
CandyUserCouponBasicDto
>)
redisUtils
.
get
(
ucKey
);
backOrder
.
setDescribes
(
param
.
getDescribes
());
int
idx
=
IntStream
.
range
(
0
,
vos
.
size
())
backOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_0
.
getValue
());
.
filter
(
i
->
vos
.
get
(
i
).
getUcouponId
().
equals
(
orderSkuVo
.
getOrderSkuId
())).
findFirst
().
orElse
(-
1
);
backOrder
.
setAuditAt
(
now
);
if
(-
1
!=
idx
)
{
backOrder
.
setSkuIdNums
(
Joiner
.
on
(
","
).
join
(
orderVo
.
getOrderSkuVoIds
()));
CandyUserCouponBasicDto
basicDto
=
vos
.
get
(
idx
);
}
else
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_3
.
getValue
()
||
if
(
5
==
basicDto
.
getState
())
{
// 券状态为'5-已使用',则不可退款
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_4
.
getValue
())
{
//已发货/已完成
return
ResponseDto
.
failure
(
"券已使用,不可申请"
);
if
(
StringUtil
.
isNotBlank
(
param
.
getOrderSkuId
()))
{
}
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
param
.
getOrderSkuId
());
basicDto
.
setState
(
2
);
// 置为'2-无效',防止用户在后台审核过程中使用券,造成券已使用,订单也退款
if
(
orderSkuVo
==
null
||
!
orderVo
.
getOrderId
().
equals
(
orderSkuVo
.
getOrderId
()))
{
vos
.
set
(
idx
,
basicDto
);
return
ResponseDto
.
failure
(
"不存在"
);
redisUtils
.
redisUtil
.
set
(
ucKey
,
vos
);
updateCandyUserCouponObjs
.
add
(
new
Object
[]{
basicDto
.
getState
(),
orderVo
.
getUserId
(),
now
,
basicDto
.
getUcouponId
()});
}
else
{
log
.
warn
(
"券类商品订单申请退款,未找到对应券[orderSkuId={},uid={}]"
,
orderSkuVo
.
getOrderSkuId
(),
orderVo
.
getUserId
());
}
}
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
orderSkuVo
.
getOrderSkuId
());
backOrder
.
setRealBackPrice
(
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
));
backOrder
.
setBackPriceExpress
(
BigDecimal
.
ZERO
);
}
else
{
backOrder
.
setBackPriceExpress
(
BigDecimal
.
ZERO
);
}
}
//订单款式状态修改
backOrder
.
setReason
(
param
.
getReason
());
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_61
.
getValue
());
backOrder
.
setPics
(
param
.
getPics
());
GoblinBackOrderSkuVo
backOrderSkuVo
=
GoblinBackOrderSkuVo
.
getNew
();
backOrder
.
setDescribes
(
param
.
getDescribes
());
backOrderSkuVo
.
setOrderSkuId
(
param
.
getOrderSkuId
());
backOrder
.
setType
(
param
.
getRefundType
()
==
null
?
GoblinStatusConst
.
Type
.
BACK_TYPE_1
.
getValue
()
:
param
.
getRefundType
());
backOrderSkuVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
backOrder
.
setSkuIdNums
(
param
.
getOrderSkuId
());
backOrderSkuVo
.
setSpuName
(
orderSkuVo
.
getSpuName
());
backOrderSkuVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
backOrderSkuVo
.
setSkuPic
(
orderSkuVo
.
getSkuImage
());
backOrderSkuVo
.
setSkuName
(
orderSkuVo
.
getSkuName
());
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
param
.
getOrderSkuId
());
BigDecimal
refundPrice
=
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
);
if
(
refundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
skuRefundPrice
=
skuRefundPrice
.
add
(
refundPrice
);
backOrderSkuVo
.
setRefundPrice
(
refundPrice
);
backOrderSkuVo
.
setSkuSpecs
(
orderSkuVo
.
getSkuSpecs
());
backOrderSkuVo
.
setCreatedAt
(
nowStr
);
backOrderSkuVo
.
setSkuType
(
orderSkuVo
.
getSkuType
());
orderSkuVoList
.
add
(
backOrderSkuVo
);
backOrderLog
(
orderVo
,
orderSkuVo
,
now
);
//redis
redisUtils
.
setGoblinOrderSku
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
//mongo
mongoUtils
.
updateGoblinOrderSkuVo
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
orderSkuStatus
.
add
(
new
Object
[]{
orderSkuVo
.
getStatus
(),
now
,
orderSkuVo
.
getOrderSkuId
(),
now
,
now
});
}
else
{
}
else
{
return
ResponseDto
.
failure
(
"不可申请"
);
}
GoblinBackOrderVo
vo
=
GoblinBackOrderVo
.
getNew
();
BeanUtils
.
copyProperties
(
backOrder
,
vo
);
vo
.
setCreatedAt
(
nowStr
);
List
<
GoblinBackOrderSkuVo
>
orderSkuVoList
=
ObjectUtil
.
goblinBackOrderSkuVoArrayList
();
BigDecimal
skuRefundPrice
=
BigDecimal
.
ZERO
;
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
//订单状态修改
// orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_61.getValue());
orderStatus
.
add
(
new
Object
[]{
orderVo
.
getStatus
(),
orderVo
.
getZhengzaiStatus
(),
now
,
orderVo
.
getOrderId
(),
now
,
now
});
for
(
String
orderSkuId
:
orderVo
.
getOrderSkuVoIds
())
{
for
(
String
orderSkuId
:
orderVo
.
getOrderSkuVoIds
())
{
//订单款式状态修改
//订单款式状态修改
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
orderSkuId
);
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
orderSkuId
);
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_61
.
getValue
());
GoblinBackOrderSkuVo
backOrderSkuVo
=
GoblinBackOrderSkuVo
.
getNew
();
backOrderSkuVo
.
setOrderSkuId
(
orderSkuId
);
backOrderSkuVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
backOrderSkuVo
.
setSpuName
(
orderSkuVo
.
getSpuName
());
backOrderSkuVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
backOrderSkuVo
.
setSkuPic
(
orderSkuVo
.
getSkuImage
());
backOrderSkuVo
.
setSkuName
(
orderSkuVo
.
getSkuName
());
backOrderSkuVo
.
setSkuSpecs
(
orderSkuVo
.
getSkuSpecs
());
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
orderSkuId
);
BigDecimal
refundPrice
=
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
);
if
(
refundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
skuRefundPrice
=
skuRefundPrice
.
add
(
refundPrice
);
backOrderSkuVo
.
setRefundPrice
(
refundPrice
);
backOrderSkuVo
.
setCreatedAt
(
nowStr
);
orderSkuVoList
.
add
(
backOrderSkuVo
);
backOrderLog
(
orderVo
,
orderSkuVo
,
now
);
//redis
redisUtils
.
setGoblinOrderSku
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
//mongo
mongoUtils
.
updateGoblinOrderSkuVo
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
orderSkuStatus
.
add
(
new
Object
[]{
orderSkuVo
.
getStatus
(),
now
,
orderSkuVo
.
getOrderSkuId
(),
now
,
now
});
}
}
else
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_3
.
getValue
()
||
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_4
.
getValue
())
{
if
(
StringUtil
.
isNotBlank
(
param
.
getOrderSkuId
()))
{
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
param
.
getOrderSkuId
());
if
(
orderSkuVo
==
null
||
!
orderVo
.
getOrderId
().
equals
(
orderSkuVo
.
getOrderId
()))
{
return
ResponseDto
.
failure
(
"不存在"
);
}
if
(
Objects
.
equals
(
orderSkuVo
.
getSkuType
(),
2
))
{
// 券类商品-校验发放的券是否已使用
if
(
Objects
.
equals
(
orderSkuVo
.
getSkuType
(),
2
))
{
// 券类商品-校验发放的券是否已使用
// 券类商品默认一个商品对应一个券,下单只可购买一张
// 券类商品默认一个商品对应一个券,下单只可购买一张
String
ucKey
=
CandyRedisConst
.
BASIC_USER_COUPON
.
concat
(
orderVo
.
getUserId
());
String
ucKey
=
CandyRedisConst
.
BASIC_USER_COUPON
.
concat
(
orderVo
.
getUserId
());
List
<
CandyUserCouponBasicDto
>
vos
=
(
List
<
CandyUserCouponBasicDto
>)
redisUtils
.
get
(
ucKey
);
List
<
CandyUserCouponBasicDto
>
vos
=
(
List
<
CandyUserCouponBasicDto
>)
redisUtils
.
get
(
ucKey
);
int
idx
=
IntStream
.
range
(
0
,
vos
.
size
()).
filter
(
i
->
vos
.
get
(
i
).
getUcouponId
().
equals
(
orderSkuVo
.
getOrderSkuId
())).
findFirst
().
orElse
(-
1
);
int
idx
=
IntStream
.
range
(
0
,
vos
.
size
())
.
filter
(
i
->
vos
.
get
(
i
).
getUcouponId
().
equals
(
orderSkuVo
.
getOrderSkuId
())).
findFirst
().
orElse
(-
1
);
if
(-
1
!=
idx
)
{
if
(-
1
!=
idx
)
{
CandyUserCouponBasicDto
basicDto
=
vos
.
get
(
idx
);
CandyUserCouponBasicDto
basicDto
=
vos
.
get
(
idx
);
if
(
5
==
basicDto
.
getState
())
{
// 券状态为'5-已使用',则不可退款
if
(
5
==
basicDto
.
getState
())
{
// 券状态为'5-已使用',则不可退款
...
@@ -463,22 +420,23 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
...
@@ -463,22 +420,23 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
log
.
warn
(
"券类商品订单申请退款,未找到对应券[orderSkuId={},uid={}]"
,
orderSkuVo
.
getOrderSkuId
(),
orderVo
.
getUserId
());
log
.
warn
(
"券类商品订单申请退款,未找到对应券[orderSkuId={},uid={}]"
,
orderSkuVo
.
getOrderSkuId
(),
orderVo
.
getUserId
());
}
}
}
}
//订单款式状态修改
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_61
.
getValue
());
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_61
.
getValue
());
GoblinBackOrderSkuVo
backOrderSkuVo
=
GoblinBackOrderSkuVo
.
getNew
();
GoblinBackOrderSkuVo
backOrderSkuVo
=
GoblinBackOrderSkuVo
.
getNew
();
backOrderSkuVo
.
setOrderSkuId
(
orderSkuId
);
backOrderSkuVo
.
setOrderSkuId
(
param
.
getOrderSkuId
()
);
backOrderSkuVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
backOrderSkuVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
backOrderSkuVo
.
setSpuName
(
orderSkuVo
.
getSpuName
());
backOrderSkuVo
.
setSpuName
(
orderSkuVo
.
getSpuName
());
backOrderSkuVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
backOrderSkuVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
backOrderSkuVo
.
setSkuName
(
orderSkuVo
.
getSkuName
());
backOrderSkuVo
.
setSkuSpecs
(
orderSkuVo
.
getSkuSpecs
());
backOrderSkuVo
.
setSkuPic
(
orderSkuVo
.
getSkuImage
());
backOrderSkuVo
.
setSkuPic
(
orderSkuVo
.
getSkuImage
());
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
orderSkuId
);
backOrderSkuVo
.
setSkuName
(
orderSkuVo
.
getSkuName
());
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
param
.
getOrderSkuId
());
BigDecimal
refundPrice
=
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
);
BigDecimal
refundPrice
=
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
);
if
(
refundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
if
(
refundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
}
skuRefundPrice
=
skuRefundPrice
.
add
(
refundPrice
);
skuRefundPrice
=
skuRefundPrice
.
add
(
refundPrice
);
backOrderSkuVo
.
setRefundPrice
(
refundPrice
);
backOrderSkuVo
.
setRefundPrice
(
refundPrice
);
backOrderSkuVo
.
setSkuSpecs
(
orderSkuVo
.
getSkuSpecs
());
backOrderSkuVo
.
setCreatedAt
(
nowStr
);
backOrderSkuVo
.
setCreatedAt
(
nowStr
);
backOrderSkuVo
.
setSkuType
(
orderSkuVo
.
getSkuType
());
backOrderSkuVo
.
setSkuType
(
orderSkuVo
.
getSkuType
());
orderSkuVoList
.
add
(
backOrderSkuVo
);
orderSkuVoList
.
add
(
backOrderSkuVo
);
...
@@ -491,85 +449,138 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
...
@@ -491,85 +449,138 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
orderSkuVo
.
getStatus
(),
now
,
orderSkuVo
.
getStatus
(),
now
,
orderSkuVo
.
getOrderSkuId
(),
now
,
now
orderSkuVo
.
getOrderSkuId
(),
now
,
now
});
});
}
else
{
for
(
String
orderSkuId
:
orderVo
.
getOrderSkuVoIds
())
{
//订单款式状态修改
GoblinOrderSkuVo
orderSkuVo
=
redisUtils
.
getGoblinOrderSkuVo
(
orderSkuId
);
if
(
Objects
.
equals
(
orderSkuVo
.
getSkuType
(),
2
))
{
// 券类商品-校验发放的券是否已使用
// 券类商品默认一个商品对应一个券,下单只可购买一张
String
ucKey
=
CandyRedisConst
.
BASIC_USER_COUPON
.
concat
(
orderVo
.
getUserId
());
List
<
CandyUserCouponBasicDto
>
vos
=
(
List
<
CandyUserCouponBasicDto
>)
redisUtils
.
get
(
ucKey
);
int
idx
=
IntStream
.
range
(
0
,
vos
.
size
()).
filter
(
i
->
vos
.
get
(
i
).
getUcouponId
().
equals
(
orderSkuVo
.
getOrderSkuId
())).
findFirst
().
orElse
(-
1
);
if
(-
1
!=
idx
)
{
CandyUserCouponBasicDto
basicDto
=
vos
.
get
(
idx
);
if
(
5
==
basicDto
.
getState
())
{
// 券状态为'5-已使用',则不可退款
return
ResponseDto
.
failure
(
"券已使用,不可申请"
);
}
basicDto
.
setState
(
2
);
// 置为'2-无效',防止用户在后台审核过程中使用券,造成券已使用,订单也退款
vos
.
set
(
idx
,
basicDto
);
redisUtils
.
redisUtil
.
set
(
ucKey
,
vos
);
updateCandyUserCouponObjs
.
add
(
new
Object
[]{
basicDto
.
getState
(),
orderVo
.
getUserId
(),
now
,
basicDto
.
getUcouponId
()});
}
else
{
log
.
warn
(
"券类商品订单申请退款,未找到对应券[orderSkuId={},uid={}]"
,
orderSkuVo
.
getOrderSkuId
(),
orderVo
.
getUserId
());
}
}
orderSkuVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_61
.
getValue
());
GoblinBackOrderSkuVo
backOrderSkuVo
=
GoblinBackOrderSkuVo
.
getNew
();
backOrderSkuVo
.
setOrderSkuId
(
orderSkuId
);
backOrderSkuVo
.
setSpuId
(
orderSkuVo
.
getSpuId
());
backOrderSkuVo
.
setSpuName
(
orderSkuVo
.
getSpuName
());
backOrderSkuVo
.
setSkuId
(
orderSkuVo
.
getSkuId
());
backOrderSkuVo
.
setSkuName
(
orderSkuVo
.
getSkuName
());
backOrderSkuVo
.
setSkuSpecs
(
orderSkuVo
.
getSkuSpecs
());
backOrderSkuVo
.
setSkuPic
(
orderSkuVo
.
getSkuImage
());
BigDecimal
applyingRefundPrice
=
mongoUtils
.
getRefundOrderSkuVoPriceBySkuId
(
orderSkuId
);
BigDecimal
refundPrice
=
GoblinRefundHelper
.
remainRefundPrice
(
orderSkuVo
,
applyingRefundPrice
);
if
(
refundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
skuRefundPrice
=
skuRefundPrice
.
add
(
refundPrice
);
backOrderSkuVo
.
setRefundPrice
(
refundPrice
);
backOrderSkuVo
.
setCreatedAt
(
nowStr
);
backOrderSkuVo
.
setSkuType
(
orderSkuVo
.
getSkuType
());
orderSkuVoList
.
add
(
backOrderSkuVo
);
backOrderLog
(
orderVo
,
orderSkuVo
,
now
);
//redis
redisUtils
.
setGoblinOrderSku
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
//mongo
mongoUtils
.
updateGoblinOrderSkuVo
(
orderSkuVo
.
getOrderSkuId
(),
orderSkuVo
);
orderSkuStatus
.
add
(
new
Object
[]{
orderSkuVo
.
getStatus
(),
now
,
orderSkuVo
.
getOrderSkuId
(),
now
,
now
});
}
}
}
}
else
{
return
ResponseDto
.
failure
(
"不可申请"
);
}
}
}
else
{
if
(
skuRefundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"不可申请"
);
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
if
(
skuRefundPrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"退款价格超过商品可退价格"
);
}
if
(
StringUtil
.
isBlank
(
backOrder
.
getSkuIdNums
()))
{
List
<
String
>
refundOrderSkuIds
=
new
LinkedList
<>();
for
(
GoblinBackOrderSkuVo
backOrderSkuVo
:
orderSkuVoList
)
{
refundOrderSkuIds
.
add
(
backOrderSkuVo
.
getOrderSkuId
());
}
}
backOrder
.
setSkuIdNums
(
Joiner
.
on
(
","
).
join
(
refundOrderSkuIds
));
if
(
StringUtil
.
isBlank
(
backOrder
.
getSkuIdNums
()))
{
}
List
<
String
>
refundOrderSkuIds
=
new
LinkedList
<>();
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
for
(
GoblinBackOrderSkuVo
backOrderSkuVo
:
orderSkuVoList
)
{
backOrder
.
setRealBackPrice
(
GoblinRefundHelper
.
beforeShipRefundPrice
(
skuRefundPrice
,
backOrder
.
getBackPriceExpress
()));
refundOrderSkuIds
.
add
(
backOrderSkuVo
.
getOrderSkuId
());
}
else
{
}
backOrder
.
setRealBackPrice
(
skuRefundPrice
);
backOrder
.
setSkuIdNums
(
Joiner
.
on
(
","
).
join
(
refundOrderSkuIds
));
backOrder
.
setBackPriceExpress
(
BigDecimal
.
ZERO
);
}
}
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
vo
.
setRealBackPrice
(
backOrder
.
getRealBackPrice
());
backOrder
.
setRealBackPrice
(
GoblinRefundHelper
.
beforeShipRefundPrice
(
skuRefundPrice
,
backOrder
.
getBackPriceExpress
()));
vo
.
setBackPriceExpress
(
backOrder
.
getBackPriceExpress
());
}
else
{
vo
.
setStatus
(
backOrder
.
getStatus
());
backOrder
.
setRealBackPrice
(
skuRefundPrice
);
vo
.
setAuditAt
(
backOrder
.
getAuditAt
()
==
null
?
null
:
nowStr
);
backOrder
.
setBackPriceExpress
(
BigDecimal
.
ZERO
);
vo
.
setBackOrderSkuVos
(
orderSkuVoList
);
vo
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_1
.
getValue
());
//添加日志
GoblinBackOrderLog
backOrderLog
=
initBackLog
(
param
.
getOrderId
(),
uid
,
now
);
backOrderLog
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_21
.
getValue
());
backOrderLog
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_1
.
getValue
());
backOrderLog
.
setMessage
(
"用户发起发起:"
+
JsonUtils
.
toJson
(
param
));
//redis
redisUtils
.
setBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
redisUtils
.
setGoblinOrder
(
orderVo
.
getOrderId
(),
orderVo
);
redisUtils
.
addBackOrderByOrderId
(
orderVo
.
getOrderId
(),
backOrder
.
getBackOrderId
());
//mongo
mongoUtils
.
insertGoblinBackOrderVo
(
vo
);
mongoUtils
.
updateGoblinStoreOrderVo
(
orderVo
.
getOrderId
(),
orderVo
);
//mysql
applyRefund
.
add
(
new
Object
[]{
backOrder
.
getBackOrderId
(),
backOrder
.
getBackCode
(),
backOrder
.
getOrderId
(),
backOrder
.
getOrderCode
(),
backOrder
.
getStoreId
(),
backOrder
.
getUserId
(),
backOrder
.
getSkuIdNums
(),
backOrder
.
getType
(),
backOrder
.
getReason
(),
backOrder
.
getDescribes
(),
backOrder
.
getRealBackPrice
(),
backOrder
.
getBackPriceExpress
(),
backOrder
.
getStatus
(),
backOrder
.
getLogisCompanyName
(),
backOrder
.
getMailNo
(),
backOrder
.
getPics
(),
backOrder
.
getCreatedAt
(),
backOrder
.
getAuditAt
(),
backOrder
.
getErrorReason
()
});
//添加日志
refundLog
.
add
(
new
Object
[]{
backOrderLog
.
getBackOrderLogId
(),
backOrderLog
.
getBackOrderId
(),
backOrderLog
.
getOperationType
(),
backOrderLog
.
getMessage
(),
backOrderLog
.
getOperationName
(),
backOrderLog
.
getStatus
(),
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_USER_ORDER_OPERA
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
applyRefund
,
orderStatus
,
orderSkuStatus
,
refundLog
,
updateCandyUserCouponObjs
));
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
String
returnString
=
refundHelper
.
initRefund
(
orderVo
,
backOrder
.
getRealBackPrice
(),
backOrder
.
getBackCode
());
if
(!
refundHelper
.
isRefundSuccess
(
returnString
))
{
String
message
=
refundHelper
.
getRefundMessage
(
returnString
);
backOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_10
.
getValue
());
backOrder
.
setErrorReason
(
"失败原因:"
+
message
);
vo
.
setStatus
(
backOrder
.
getStatus
());
vo
.
setErrorReason
(
backOrder
.
getErrorReason
());
log
.
error
(
"REFUND DATA = "
+
returnString
);
redisUtils
.
setBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
mongoUtils
.
updateGoblinBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_USER_ORDER_OPERA
.
getKey
(),
SqlMapping
.
get
(
"goblin_order.store.applyRefund"
,
vo
.
getStatus
(),
vo
.
getReason
(),
vo
.
getAuditAt
(),
now
,
backOrder
.
getBackOrderId
(),
now
,
now
)
);
return
ResponseDto
.
failure
(
"退款失败:"
+
backOrder
.
getErrorReason
());
}
}
if
(
DragonConstant
.
REFUND_TYPE_MICROPAY_ALIPAY
.
equals
(
orderVo
.
getPaymentType
()))
{
vo
.
setRealBackPrice
(
backOrder
.
getRealBackPrice
());
refundHelper
.
alipayCallBack
(
orderVo
,
backOrder
.
getBackCode
());
vo
.
setBackPriceExpress
(
backOrder
.
getBackPriceExpress
());
vo
.
setStatus
(
backOrder
.
getStatus
());
vo
.
setAuditAt
(
backOrder
.
getAuditAt
()
==
null
?
null
:
nowStr
);
vo
.
setBackOrderSkuVos
(
orderSkuVoList
);
vo
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_1
.
getValue
());
//添加日志
GoblinBackOrderLog
backOrderLog
=
initBackLog
(
param
.
getOrderId
(),
uid
,
now
);
backOrderLog
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_21
.
getValue
());
backOrderLog
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_1
.
getValue
());
backOrderLog
.
setMessage
(
"用户发起发起:"
+
JsonUtils
.
toJson
(
param
));
//redis
redisUtils
.
setBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
redisUtils
.
setGoblinOrder
(
orderVo
.
getOrderId
(),
orderVo
);
redisUtils
.
addBackOrderByOrderId
(
orderVo
.
getOrderId
(),
backOrder
.
getBackOrderId
());
//mongo
mongoUtils
.
insertGoblinBackOrderVo
(
vo
);
mongoUtils
.
updateGoblinStoreOrderVo
(
orderVo
.
getOrderId
(),
orderVo
);
//mysql
applyRefund
.
add
(
new
Object
[]{
backOrder
.
getBackOrderId
(),
backOrder
.
getBackCode
(),
backOrder
.
getOrderId
(),
backOrder
.
getOrderCode
(),
backOrder
.
getStoreId
(),
backOrder
.
getUserId
(),
backOrder
.
getSkuIdNums
(),
backOrder
.
getType
(),
backOrder
.
getReason
(),
backOrder
.
getDescribes
(),
backOrder
.
getRealBackPrice
(),
backOrder
.
getBackPriceExpress
(),
backOrder
.
getStatus
(),
backOrder
.
getLogisCompanyName
(),
backOrder
.
getMailNo
(),
backOrder
.
getPics
(),
backOrder
.
getCreatedAt
(),
backOrder
.
getAuditAt
(),
backOrder
.
getErrorReason
()
});
//添加日志
refundLog
.
add
(
new
Object
[]{
backOrderLog
.
getBackOrderLogId
(),
backOrderLog
.
getBackOrderId
(),
backOrderLog
.
getOperationType
(),
backOrderLog
.
getMessage
(),
backOrderLog
.
getOperationName
(),
backOrderLog
.
getStatus
(),
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_USER_ORDER_OPERA
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
applyRefund
,
orderStatus
,
orderSkuStatus
,
refundLog
,
updateCandyUserCouponObjs
));
if
(
orderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_STATUS_2
.
getValue
())
{
String
returnString
=
refundHelper
.
initRefund
(
orderVo
,
backOrder
.
getRealBackPrice
(),
backOrder
.
getBackCode
());
if
(!
refundHelper
.
isRefundSuccess
(
returnString
))
{
String
message
=
refundHelper
.
getRefundMessage
(
returnString
);
backOrder
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_10
.
getValue
());
backOrder
.
setErrorReason
(
"失败原因:"
+
message
);
vo
.
setStatus
(
backOrder
.
getStatus
());
vo
.
setErrorReason
(
backOrder
.
getErrorReason
());
log
.
error
(
"REFUND DATA = "
+
returnString
);
redisUtils
.
setBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
mongoUtils
.
updateGoblinBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_USER_ORDER_OPERA
.
getKey
(),
SqlMapping
.
get
(
"goblin_order.store.applyRefund"
,
vo
.
getStatus
(),
vo
.
getReason
(),
vo
.
getAuditAt
(),
now
,
backOrder
.
getBackOrderId
(),
now
,
now
)
);
return
ResponseDto
.
failure
(
"退款失败:"
+
backOrder
.
getErrorReason
());
}
if
(
DragonConstant
.
REFUND_TYPE_MICROPAY_ALIPAY
.
equals
(
orderVo
.
getPaymentType
()))
{
refundHelper
.
alipayCallBack
(
orderVo
,
backOrder
.
getBackCode
());
}
}
}
return
ResponseDto
.
success
();
}
finally
{
redisUtils
.
redisUtil
.
uLock
(
lockKey
);
}
}
return
ResponseDto
.
success
();
}
}
@Override
@Override
...
...
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