Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ufo
/
yohoufo-fore
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
LUOXC
5 years ago
Commit
6180491341939e7379acce1f1508a142b6bfd442
1 parent
1d026239
修复超时取消补偿BUG
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
71 deletions
order/src/main/java/com/yohoufo/order/controller/OrderHelpController.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderCancelService.java
order/src/main/java/com/yohoufo/order/controller/OrderHelpController.java
View file @
6180491
package
com
.
yohoufo
.
order
.
controller
;
import
com.yohobuy.ufo.model.order.bo.MerchantOrderAttachInfo
;
import
com.yohobuy.ufo.model.order.common.OrderStatus
;
import
com.yohobuy.ufo.model.order.constants.OrderConstant
;
import
com.yohobuy.ufo.model.user.resp.AuthorizeResultRespVO
;
import
com.yohoufo.common.ApiResponse
;
import
com.yohoufo.common.annotation.IgnoreSession
;
...
...
@@ -14,15 +16,14 @@ import com.yohoufo.dal.order.model.BuyerOrderGoods;
import
com.yohoufo.dal.order.model.SellerOrder
;
import
com.yohoufo.dal.order.model.SellerWalletDetail
;
import
com.yohoufo.order.common.RefundCase
;
import
com.yohoufo.order.constants.AlarmConfig
;
import
com.yohoufo.order.event.BillLogEvent
;
import
com.yohoufo.order.event.BuyerRefundCouponEvent
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.model.request.PaymentRequest
;
import
com.yohoufo.order.model.request.TransferMoneyRequest
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
com.yohoufo.order.service.impl.BuyerOrderCancelService
;
import
com.yohoufo.order.service.impl.PayRefundService
;
import
com.yohoufo.order.service.impl.PaymentServiceImpl
;
import
com.yohoufo.order.service.impl.TransferService
;
import
com.yohoufo.order.service.impl.*
;
import
com.yohoufo.order.service.pay.alipay.AlipayOuyinService
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -66,21 +67,6 @@ public class OrderHelpController {
@Autowired
private
BuyerOrderGoodsMapper
buyerOrderGoodsMapper
;
/**
* 转账
*/
@IgnoreSession
@IgnoreSignature
@InnerApi
@RequestMapping
(
value
=
"/transfer"
)
public
ApiResponse
transfer
(
@RequestBody
TransferMoneyRequest
req
)
{
return
new
ApiResponse
.
ApiResponseBuilder
()
.
code
(
200
)
.
message
(
transferService
.
transfer
(
req
)
?
"ok"
:
"ko"
)
.
build
();
}
@Data
public
static
class
RefundEarnestMoneyRequest
{
private
Integer
uid
;
...
...
@@ -91,57 +77,15 @@ public class OrderHelpController {
@IgnoreSession
@IgnoreSignature
@InnerApi
@RequestMapping
(
value
=
"/refundEarnestMoney"
)
public
ApiResponse
refundEarnestMoney
(
@RequestBody
RefundEarnestMoneyRequest
request
)
{
BuyerOrderGoods
orderGoods
=
buyerOrderGoodsMapper
.
selectByOrderCode
(
request
.
getUid
(),
request
.
getOrderCode
());
Integer
skup
=
orderGoods
.
getSkup
();
SellerOrder
sellerOrder
=
sellerOrderMapper
.
selectBySkup
(
skup
);
PaymentRequest
refundReq
=
PaymentRequest
.
builder
()
.
uid
(
sellerOrder
.
getUid
())
.
refundCase
(
RefundCase
.
SELLER_EARNEST_MONEY
)
.
orderCode
(
sellerOrder
.
getOrderCode
())
.
refundAmount
(
request
.
getRefundAmount
().
doubleValue
())
.
refundattch
(
MerchantOrderAttachInfo
.
builder
().
type
(
SellerWalletDetail
.
Type
.
SELLER_CAN_NOT_SEND_OUT
.
getValue
()).
build
())
.
build
();
BillLogEvent
.
BillLogEventBuilder
bleBuilder
=
BillLogEvent
.
builder
()
.
buyerUid
(
request
.
getUid
())
.
sellerUid
(
sellerOrder
.
getUid
())
.
orderCode
(
sellerOrder
.
getOrderCode
())
.
payType
(
sellerOrder
.
getPayment
())
.
refundCase
(
RefundCase
.
SELLER_EARNEST_MONEY
)
.
amount
(
request
.
getRefundAmount
())
.
skup
(
skup
);
return
new
ApiResponse
.
ApiResponseBuilder
()
.
code
(
200
)
.
data
(
payRefundService
.
refund
(
refundReq
,
bleBuilder
))
.
message
(
"处理成功"
)
.
build
();
}
/**
* 转账
*/
@IgnoreSession
@IgnoreSignature
@InnerApi
@RequestMapping
(
value
=
"/transAllEarnest"
)
public
ApiResponse
transAllEarnest
(
@RequestBody
TransferAllEarnestRequest
req
)
{
@RequestMapping
(
value
=
"/cancelForSellerSendOutTimeoutCompensation"
)
public
ApiResponse
refundEarnestMoney
(
@RequestBody
OrderRequest
request
)
{
buyerOrderCancelService
.
cancelForSellerSendOutTimeoutCompensation
(
request
.
getUid
(),
request
.
getOrderCode
());
return
new
ApiResponse
.
ApiResponseBuilder
()
.
code
(
200
)
.
message
(
transferService
.
transAllEarnest
(
req
.
getOrderCode
(),
req
.
getUid
(),
req
.
getAmount
(),
req
.
getAliPayAccount
())
?
"ok"
:
"ko
"
)
.
message
(
"ok
"
)
.
build
();
}
@Data
public
static
class
TransferAllEarnestRequest
{
long
orderCode
;
Integer
uid
;
BigDecimal
amount
;
AuthorizeResultRespVO
aliPayAccount
;
}
@RequestMapping
(
value
=
"/transferQueryAsOriginalResult"
)
public
ApiResponse
transferQuery
(
@RequestBody
List
<
String
>
orderCodes
)
{
val
result
=
orderCodes
.
stream
().
map
(
alipayService:
:
transferQueryAsOriginalResult
).
collect
(
Collectors
.
toList
());
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderCancelService.java
View file @
6180491
...
...
@@ -274,6 +274,35 @@ public class BuyerOrderCancelService {
.
cancel
();
}
/**
* 2020-03-13超时取消BUG修复数据使用
*
* @param uid
* @param orderCode
*/
public
void
cancelForSellerSendOutTimeoutCompensation
(
int
uid
,
long
orderCode
)
{
new
BuyerOrderCancelHandler
(
uid
,
orderCode
)
.
withBuyerOrderSupplier
(
buyerOrderMapper
,
buyerOrderGoodsMapper
)
.
withSellerOrderSupplier
(
sellerOrderGoodsMapper
,
sellerOrderMetaMapper
)
// 超时未发货取消 -> 超时未发货取消
.
withStateTransition
(
OrderStatus
.
SEND_OUT_TIMEOUT
,
OrderStatus
.
SEND_OUT_TIMEOUT
,
null
)
// 保证金分账给平台和买家
.
withTransferEarnestMoney2Buyer
(
transferService
,
SellerWalletDetail
.
Type
.
SELLER_OVER_TIME
)
// 退买家货款
.
withRefundGoodsMoney
(
payRefundService:
:
refund
).
refundCase
(
RefundCase
.
BUYER_GOODS_MONEY
).
and
()
// 通知卖家商品发货超时
.
withNoticeSeller
((
soa
,
buyerOrder
)
->
sellerNoticeFacade
.
sellerDeliverWithTimes
(
soa
,
buyerOrder
,
OrderConstant
.
SellerDeliverNotice
.
TIME_OF_CANCELED
,
0
,
null
)).
and
()
// 通知买家卖家商品发货超时
.
withNoticeBuyer
(
buyerNoticeFacade:
:
noticeBuyerOfSellerSendOutTimeout
).
and
()
// 退优惠券
.
withRefundCoupon
(
BuyerRefundCouponEvent
.
BizCase
.
SELLER_DELIVER_TIMEOUT
)
.
withCacheCleaner
(
cacheCleaner:
:
delete
)
.
withFailAlarm
(
AlarmConfig
.
DELIVER_TIME_OUT
)
.
withOrderChangeListenerContainer
(
orderChangeListenerContainer
)
.
cancel
();
}
public
void
cancelForSellerShamSendOut
(
int
uid
,
long
orderCode
,
OrderStatus
targetStatus
)
{
if
(
serviceOrderProcessor
.
isGoodsServiceOrder
(
orderCode
))
{
...
...
@@ -317,9 +346,9 @@ public class BuyerOrderCancelService {
.
withStateTransition
(
OrderStatus
.
HAS_PAYED
,
OrderStatus
.
SELLER_CAN_NOT_SEND_OUT
,
orderStatusFlowService
)
// 退保证金给卖家
.
withRefundEarnestMoney
(
payRefundService:
:
refund
,
sellerOrderMapper:
:
selectBySkup
)
.
refundCase
(
RefundCase
.
SELLER_EARNEST_MONEY
)
.
sellerWalletDetailType
(
SellerWalletDetail
.
Type
.
SELLER_CAN_NOT_SEND_OUT
)
.
and
()
.
refundCase
(
RefundCase
.
SELLER_EARNEST_MONEY
)
.
sellerWalletDetailType
(
SellerWalletDetail
.
Type
.
SELLER_CAN_NOT_SEND_OUT
)
.
and
()
// 退买家货款
.
withRefundGoodsMoney
(
payRefundService:
:
refund
).
refundCase
(
RefundCase
.
BUYER_GOODS_MONEY
).
and
()
// 通知买家卖家无法发货
...
...
@@ -392,7 +421,7 @@ public class BuyerOrderCancelService {
inBoxFacade
.
buyerCancelBeforeDepotReceive
(
buyerOrder
,
penaltyAmount
.
toPlainString
(),
psog
,
useDepositGoods
);
}
if
(
fastDeliveryProxyService
.
isFastDeliveryGoods
(
skup
)){
if
(
fastDeliveryProxyService
.
isFastDeliveryGoods
(
skup
))
{
fastDeliveryProxyService
.
cancel
(
psog
.
getUid
(),
skup
,
true
);
}
...
...
@@ -442,7 +471,7 @@ public class BuyerOrderCancelService {
int
rows
=
buyerOrderMapper
.
updateStatusWithStatusList
(
orderCode
,
targetStatus
.
getCode
(),
statusList
,
DateUtil
.
getCurrentTimeSecond
());
logger
.
info
(
"in buyer order cancelByCS because pull wool, req {} updateStatusWithStatusList {}"
,
request
,
rows
);
if
(
rows
>
0
)
{
asyncRefundSellerCoupon
(
pbo
.
getOrderCode
(),
targetStatus
,
preparedData
.
getSellerOrderGoods
());
asyncRefundSellerCoupon
(
pbo
.
getOrderCode
(),
targetStatus
,
preparedData
.
getSellerOrderGoods
());
asyncProcessPenalty
(
preparedData
,
targetStatus
);
//clean cache
cacheCleaner
.
cleanSellerAndBuyerOrderDetailAndList
(
pbo
.
getSellerUid
(),
pbo
.
getUid
(),
orderCode
);
...
...
@@ -686,7 +715,7 @@ public class BuyerOrderCancelService {
}
public
void
asyncRefundSellerCoupon
(
long
orderCode
,
OrderStatus
targetStatus
,
SellerOrderGoods
sellerOrderGoods
){
public
void
asyncRefundSellerCoupon
(
long
orderCode
,
OrderStatus
targetStatus
,
SellerOrderGoods
sellerOrderGoods
)
{
sellerOrderServiceDelegate
.
getSellerOrderService
()
.
asyncCancelWithCouponIfPresent
(
orderCode
,
targetStatus
.
getCode
(),
sellerOrderGoods
);
}
...
...
Please
register
or
login
to post a comment