记得上下班打卡 | 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
8d6488fa
Commit
8d6488fa
authored
Jun 17, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
partner后台 退款订单列表增加字段;优化数据落库顺序
parent
33b70f3e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
118 additions
and
44 deletions
+118
-44
GoblinBackOrderVo.java
...om/liquidnet/service/goblin/dto/vo/GoblinBackOrderVo.java
+2
-0
GoblinStoreBackOrderListVo.java
...net/service/goblin/dto/vo/GoblinStoreBackOrderListVo.java
+15
-3
GoblinOrderAppServiceImpl.java
...ervice/goblin/service/impl/GoblinOrderAppServiceImpl.java
+18
-12
GoblinStoreBackOrderServiceImpl.java
.../service/impl/manage/GoblinStoreBackOrderServiceImpl.java
+80
-28
GoblinMongoUtils.java
...a/com/liquidnet/service/goblin/util/GoblinMongoUtils.java
+3
-1
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinBackOrderVo.java
View file @
8d6488fa
...
...
@@ -83,6 +83,8 @@ public class GoblinBackOrderVo implements Serializable, Cloneable {
private
String
auditAt
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
String
createdAt
;
@ApiModelProperty
(
value
=
"发起方[1-用户|2-商家]"
)
private
Integer
operationType
;
@ApiModelProperty
(
value
=
"过期时间"
)
private
String
expireAt
;
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinStoreBackOrderListVo.java
View file @
8d6488fa
...
...
@@ -20,11 +20,23 @@ public class GoblinStoreBackOrderListVo implements Cloneable {
private
Integer
type
;
@ApiModelProperty
(
value
=
"退款/退货状态[0-商铺发起退款|1-退款申请(用户发送退款请求)|2-退款成功(商家同意退款)|3-退款拒绝(商家拒绝退款)|4-退货申请(用户发起退货请求)|5-退货拒绝(商家拒绝退货)|6-退货审核通过等待用户填写物流(商家审核通过,等待用户寄回商品)|7-待收货(用户已确认)|8-退货完成(商家收货并且同意退款给用户)|9-退货失败(商家不同意退款)|10-退款失败|11-取消退款"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
" 退款金额"
)
@ApiModelProperty
(
value
=
"退款范围[1-整单退款|2-部分退款]"
)
private
Integer
refundScope
;
@ApiModelProperty
(
value
=
"原订单实付金额"
)
private
BigDecimal
priceActual
;
@ApiModelProperty
(
value
=
"实际退款金额"
)
private
BigDecimal
realBackPrice
;
@ApiModelProperty
(
value
=
" 创建时间"
)
@ApiModelProperty
(
value
=
"发起方[1-用户发起|2-商家发起]"
)
private
Integer
operationType
;
@ApiModelProperty
(
value
=
"申请时间"
)
private
String
createdAt
;
@ApiModelProperty
(
value
=
"退款sku"
)
@ApiModelProperty
(
value
=
"审核时间"
)
private
String
auditAt
;
@ApiModelProperty
(
value
=
"退款完成时间"
)
private
String
refundAt
;
@ApiModelProperty
(
value
=
"处理时间(优先退款完成时间,否则审核时间)"
)
private
String
processedAt
;
@ApiModelProperty
(
value
=
"退款商品明细"
)
private
List
<
GoblinBackOrderSkuVo
>
backOrderSkuVos
;
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/GoblinOrderAppServiceImpl.java
View file @
8d6488fa
...
...
@@ -517,22 +517,12 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
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
));
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
);
}
}
//redis
redisUtils
.
setBackOrderVo
(
backOrder
.
getBackOrderId
(),
vo
);
redisUtils
.
setGoblinOrder
(
orderVo
.
getOrderId
(),
orderVo
);
...
...
@@ -556,7 +546,23 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
});
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
())
{
if
(
backOrder
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_10
.
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
()))
{
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/manage/GoblinStoreBackOrderServiceImpl.java
View file @
8d6488fa
...
...
@@ -54,16 +54,7 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
long
total
=
(
long
)
map
.
get
(
"total"
);
List
<
GoblinBackOrderVo
>
voList
=
(
List
<
GoblinBackOrderVo
>)
map
.
get
(
"data"
);
for
(
GoblinBackOrderVo
item
:
voList
)
{
GoblinStoreBackOrderListVo
vo
=
GoblinStoreBackOrderListVo
.
getNew
();
vo
.
setCreatedAt
(
item
.
getCreatedAt
());
vo
.
setBackOrderId
(
item
.
getBackOrderId
());
vo
.
setBackCode
(
item
.
getBackCode
());
vo
.
setBackOrderSkuVos
(
item
.
getBackOrderSkuVos
());
vo
.
setOrderCode
(
item
.
getOrderCode
());
vo
.
setRealBackPrice
(
item
.
getRealBackPrice
());
vo
.
setStatus
(
item
.
getStatus
());
vo
.
setType
(
item
.
getType
());
listVos
.
add
(
vo
);
listVos
.
add
(
buildStoreBackOrderListVo
(
item
));
}
PageInfo
<
GoblinStoreBackOrderListVo
>
pageInfo
=
new
PageInfo
(
listVos
);
pageInfo
.
setTotal
(
total
);
...
...
@@ -177,20 +168,8 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrderLog
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_22
.
getValue
());
backOrderLog
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_2
.
getValue
());
backOrderLog
.
setMessage
(
"商户退款-同意退款:backOrderId=["
+
backOrderId
+
"]"
);
//调用退款
String
returnString
=
refundHelper
.
initRefund
(
orderVo
,
backOrderVo
.
getRealBackPrice
(),
backOrderVo
.
getBackCode
());
Boolean
success
=
refundHelper
.
isRefundSuccess
(
returnString
);
String
message
=
refundHelper
.
getRefundMessage
(
returnString
);
if
(!
success
)
{
backOrderVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_10
.
getValue
());
backOrderVo
.
setErrorReason
(
"失败原因:"
+
message
);
log
.
error
(
"REFUND DATA = "
+
returnString
);
}
//redis
redisUtils
.
setBackOrderVo
(
backOrderId
,
backOrderVo
);
//mongo
mongoUtils
.
updateGoblinBackOrderVo
(
backOrderId
,
backOrderVo
);
//mysql
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_STORE_ORDER_OPERA
.
getKey
(),
SqlMapping
.
get
(
"goblin_order.store.applyRefund"
,
...
...
@@ -198,6 +177,15 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrderId
,
now
,
now
)
);
String
returnString
=
refundHelper
.
initRefund
(
orderVo
,
backOrderVo
.
getRealBackPrice
(),
backOrderVo
.
getBackCode
());
Boolean
success
=
refundHelper
.
isRefundSuccess
(
returnString
);
String
message
=
refundHelper
.
getRefundMessage
(
returnString
);
if
(!
success
)
{
backOrderVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_10
.
getValue
());
backOrderVo
.
setErrorReason
(
"失败原因:"
+
message
);
log
.
error
(
"REFUND DATA = "
+
returnString
);
updateStoreRefundOrderAfterPayment
(
backOrderVo
,
now
);
}
//添加日志
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_STORE_ORDER_OPERA
.
getKey
(),
...
...
@@ -282,6 +270,11 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
return
ResponseDto
.
success
();
}
/**
* 管理端新退款入口。
* 发货前(子单全为待发货):整单 + 运费,自动退款;
* 发货后(存在待收货/已完成子单):可选商品,不含运费,生成待审核退款单。
*/
@Override
public
ResponseDto
<
Boolean
>
refundOrder
(
GoblinStoreOrderRefundParam
param
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
...
...
@@ -302,13 +295,18 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
return
ResponseDto
.
failure
(
"已有退款处理中"
);
}
// 管理端发起退款:根据子单状态决定「发货前整单自动退」还是「发货后部分退待审核」
List
<
GoblinOrderSkuVo
>
orderSkuVos
=
getOrderSkuVos
(
orderVo
);
// 发货前:所有子单均为 status=2(待发货)→ 强制整单退、含运费、自动调支付
boolean
beforeShip
=
orderSkuVos
.
stream
().
allMatch
(
GoblinRefundHelper:
:
isUnshippedSku
);
// 是否允许发起:全部待发货,或至少有一个子单已发货/已完成(status=3/4)
// 注意:若存在已退完子单(status=6)与待发货子单混合(如旧接口部分退后),此处会判为不可退,需单独兼容
boolean
canRefund
=
beforeShip
||
orderSkuVos
.
stream
().
anyMatch
(
GoblinRefundHelper:
:
isShippedSku
);
if
(!
canRefund
)
{
return
ResponseDto
.
failure
(
"不可退款"
);
}
// 发货前忽略 orderSkuIds,整单退;发货后按入参选择子单(不传则默认整单剩余可退商品)
List
<
GoblinOrderSkuVo
>
refundSkuVos
=
beforeShip
?
orderSkuVos
:
getSelectedOrderSkuVos
(
orderVo
,
orderSkuVos
,
param
.
getOrderSkuIds
());
if
(
refundSkuVos
.
isEmpty
())
{
return
ResponseDto
.
failure
(
"请选择退款商品"
);
...
...
@@ -458,12 +456,14 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrderVo
.
setAuditAt
(
beforeShip
?
nowStr
:
null
);
backOrderVo
.
setBackPriceExpress
(
backPriceExpress
);
backOrderVo
.
setBackOrderSkuVos
(
backOrderSkuVos
);
backOrderVo
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_2
.
getValue
());
GoblinBackOrderLog
backOrderLog
=
initBackLog
(
backOrder
.
getBackOrderId
(),
uid
,
now
);
backOrderLog
.
setStatus
(
beforeShip
?
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_22
.
getValue
()
:
GoblinStatusConst
.
Status
.
ORDER_LOG_STATUS_20
.
getValue
());
backOrderLog
.
setOperationType
(
GoblinStatusConst
.
Type
.
OPERATION_TYPE_2
.
getValue
());
backOrderLog
.
setMessage
(
"商户发起退款:orderSkuIds=["
+
backOrder
.
getSkuIdNums
()
+
"],refundPrice=["
+
realBackPrice
+
"],[refundCode="
+
refundCode
+
"]"
);
saveStoreRefundOrder
(
orderVo
,
refundSkuVos
,
backOrder
,
backOrderVo
,
backOrderLog
,
now
);
if
(
beforeShip
)
{
String
returnString
=
refundHelper
.
initRefund
(
orderVo
,
realBackPrice
,
refundCode
);
if
(!
refundHelper
.
isRefundSuccess
(
returnString
))
{
...
...
@@ -472,14 +472,11 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrder
.
setStatus
(
backOrderVo
.
getStatus
());
backOrder
.
setErrorReason
(
backOrderVo
.
getErrorReason
());
log
.
error
(
"REFUND DATA = "
+
returnString
);
updateStoreRefundOrderAfterPayment
(
backOrderVo
,
now
);
}
else
if
(
DragonConstant
.
REFUND_TYPE_MICROPAY_ALIPAY
.
equals
(
orderVo
.
getPaymentType
()))
{
refundHelper
.
alipayCallBack
(
orderVo
,
refundCode
);
}
}
saveStoreRefundOrder
(
orderVo
,
refundSkuVos
,
backOrder
,
backOrderVo
,
backOrderLog
,
now
);
if
(
beforeShip
&&
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_0
.
getValue
()
==
backOrderVo
.
getStatus
()
&&
DragonConstant
.
REFUND_TYPE_MICROPAY_ALIPAY
.
equals
(
orderVo
.
getPaymentType
()))
{
refundHelper
.
alipayCallBack
(
orderVo
,
refundCode
);
}
return
backOrderVo
.
getStatus
()
==
GoblinStatusConst
.
Status
.
ORDER_BACK_STATUS_10
.
getValue
()
?
ResponseDto
.
failure
(
"退款失败:"
+
backOrderVo
.
getErrorReason
())
:
ResponseDto
.
success
();
...
...
@@ -527,6 +524,61 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
SqlMapping
.
gets
(
sqls
,
backOrderSql
,
orderSkuStatusSql
,
refundLogSql
));
}
private
void
updateStoreRefundOrderAfterPayment
(
GoblinBackOrderVo
backOrderVo
,
LocalDateTime
now
)
{
redisUtils
.
setBackOrderVo
(
backOrderVo
.
getBackOrderId
(),
backOrderVo
);
mongoUtils
.
updateGoblinBackOrderVo
(
backOrderVo
.
getBackOrderId
(),
backOrderVo
);
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_STORE_ORDER_OPERA
.
getKey
(),
SqlMapping
.
get
(
"goblin_order.store.applyRefund"
,
backOrderVo
.
getStatus
(),
backOrderVo
.
getReason
(),
backOrderVo
.
getAuditAt
(),
now
,
backOrderVo
.
getBackOrderId
(),
now
,
now
)
);
}
private
GoblinStoreBackOrderListVo
buildStoreBackOrderListVo
(
GoblinBackOrderVo
item
)
{
GoblinStoreBackOrderListVo
vo
=
GoblinStoreBackOrderListVo
.
getNew
();
vo
.
setBackOrderId
(
item
.
getBackOrderId
());
vo
.
setBackCode
(
item
.
getBackCode
());
vo
.
setOrderCode
(
item
.
getOrderCode
());
vo
.
setType
(
item
.
getType
());
vo
.
setStatus
(
item
.
getStatus
());
vo
.
setRealBackPrice
(
item
.
getRealBackPrice
());
vo
.
setCreatedAt
(
item
.
getCreatedAt
());
vo
.
setAuditAt
(
item
.
getAuditAt
());
vo
.
setRefundAt
(
item
.
getRefundAt
());
vo
.
setBackOrderSkuVos
(
item
.
getBackOrderSkuVos
());
if
(
StringUtil
.
isNotBlank
(
item
.
getRefundAt
()))
{
vo
.
setProcessedAt
(
item
.
getRefundAt
());
}
else
if
(
StringUtil
.
isNotBlank
(
item
.
getAuditAt
()))
{
vo
.
setProcessedAt
(
item
.
getAuditAt
());
}
Integer
operationType
=
resolveBackOrderOperationType
(
item
);
vo
.
setOperationType
(
operationType
);
if
(
StringUtil
.
isNotBlank
(
item
.
getOrderId
()))
{
GoblinStoreOrderVo
orderVo
=
redisUtils
.
getGoblinOrder
(
item
.
getOrderId
());
if
(
orderVo
!=
null
)
{
vo
.
setPriceActual
(
orderVo
.
getPriceActual
());
int
orderSkuCount
=
orderVo
.
getOrderSkuVoIds
()
==
null
?
0
:
orderVo
.
getOrderSkuVoIds
().
size
();
int
refundSkuCount
=
item
.
getBackOrderSkuVos
()
==
null
?
0
:
item
.
getBackOrderSkuVos
().
size
();
boolean
fullRefund
=
orderSkuCount
>
0
&&
refundSkuCount
>=
orderSkuCount
;
vo
.
setRefundScope
(
fullRefund
?
1
:
2
);
}
}
return
vo
;
}
private
Integer
resolveBackOrderOperationType
(
GoblinBackOrderVo
item
)
{
if
(
item
.
getOperationType
()
!=
null
)
{
return
item
.
getOperationType
();
}
if
(
"店铺退款"
.
equals
(
item
.
getDescribes
())
||
GoblinStatusConst
.
Type
.
BACK_REASON_TYPE_8
.
getDesc
().
equals
(
item
.
getReason
()))
{
return
GoblinStatusConst
.
Type
.
OPERATION_TYPE_2
.
getValue
();
}
return
GoblinStatusConst
.
Type
.
OPERATION_TYPE_1
.
getValue
();
}
private
GoblinBackOrderLog
initBackLog
(
String
orderId
,
String
uid
,
LocalDateTime
now
)
{
GoblinBackOrderLog
log
=
GoblinBackOrderLog
.
getNew
();
log
.
setBackOrderId
(
orderId
);
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/util/GoblinMongoUtils.java
View file @
8d6488fa
...
...
@@ -1501,7 +1501,9 @@ public class GoblinMongoUtils {
Query
query
=
Query
.
query
(
criteria
);
query
.
skip
(
skipCount
).
limit
(
size
).
with
(
Sort
.
by
(
Sort
.
Order
.
desc
(
"createdAt"
)));
;
query
.
fields
().
include
(
"backCode"
).
include
(
"orderCode"
).
include
(
"backOrderId"
).
include
(
"type"
).
include
(
"status"
).
include
(
"realBackPrice"
).
include
(
"createdAt"
)
query
.
fields
().
include
(
"backCode"
).
include
(
"orderCode"
).
include
(
"orderId"
).
include
(
"backOrderId"
).
include
(
"type"
).
include
(
"status"
)
.
include
(
"realBackPrice"
).
include
(
"createdAt"
).
include
(
"auditAt"
).
include
(
"refundAt"
).
include
(
"describes"
).
include
(
"reason"
)
.
include
(
"operationType"
)
.
include
(
"backOrderSkuVos.spuName"
).
include
(
"backOrderSkuVos.skuName"
).
include
(
"backOrderSkuVos.spuPic"
).
include
(
"backOrderSkuVos.skuPic"
)
.
include
(
"backOrderSkuVos.skuSpecs"
).
include
(
"backOrderSkuVos.skuId"
).
include
(
"backOrderSkuVos.spuId"
).
include
(
"backOrderSkuVos.orderSkuId"
)
.
include
(
"backOrderSkuVos.refundPrice"
);
...
...
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