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
Plain Diff
Browse Files
Authored by
Lixiaodi
6 years ago
Commit
4f1083e64a168d4bb8ff33306f67e3dd79139ccd
2 parents
1bc57ba3
9fe353df
Merge branch 'dev' of
http://git.yoho.cn/ufo/yohoufo-fore
into dev
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
119 additions
and
58 deletions
order/src/main/java/com/yohoufo/order/common/ActionStatusHold.java
order/src/main/java/com/yohoufo/order/common/TransferCase.java
order/src/main/java/com/yohoufo/order/controller/AppraiseController.java
order/src/main/java/com/yohoufo/order/convert/SellerOrderConvertor.java
order/src/main/java/com/yohoufo/order/model/OrderInfo.java
order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java
order/src/main/java/com/yohoufo/order/service/impl/SellerOrderCancelService.java
order/src/main/java/com/yohoufo/order/common/ActionStatusHold.java
View file @
4f1083e
...
...
@@ -11,7 +11,7 @@ import java.util.List;
public
class
ActionStatusHold
{
public
static
List
<
Integer
>
getSellerCan
Refund
Status
(){
public
static
List
<
Integer
>
getSellerCan
Cancel
Status
(){
List
<
Integer
>
sellerCanCancelStatus
;
sellerCanCancelStatus
=
Arrays
.
asList
(
SellerOrderStatus
.
WAITING_PAY
.
getCode
(),
SellerOrderStatus
.
HAS_PAYED
.
getCode
());
...
...
@@ -22,8 +22,7 @@ public class ActionStatusHold {
static
List
<
Integer
>
sellerCanRefundStatus
;
static
{
sellerCanRefundStatus
=
Arrays
.
asList
(
SellerOrderStatus
.
YOHO_CANCEL_SELL
.
getCode
(),
SellerOrderStatus
.
FINISH
.
getCode
());
SellerOrderStatus
.
HAS_PAYED
.
getCode
());
}
public
static
List
<
Integer
>
getSellerCanRefundEarnestMoneyStatus
(){
...
...
order/src/main/java/com/yohoufo/order/common/TransferCase.java
0 → 100644
View file @
4f1083e
package
com
.
yohoufo
.
order
.
common
;
/**
* 1:鉴定通过(货款-->卖家);
* 2:鉴定不通过(保证金 --> 买家);
* 3:有买家时卖家不卖了(保证金 --> 买家)
* Created by chenchao on 2018/10/9.
*/
public
enum
TransferCase
{
APPRAISE_SUCCESS
(
1
),
APPRAISE_FAIL
(
2
),
SELLER_PLAY_BUYER
(
3
);
private
int
code
;
TransferCase
(
int
code
)
{
this
.
code
=
code
;
}
public
int
getCode
()
{
return
code
;
}
}
...
...
order/src/main/java/com/yohoufo/order/controller/AppraiseController.java
View file @
4f1083e
package
com
.
yohoufo
.
order
.
controller
;
import
com.yoho.core.rest.annotation.ServiceDesc
;
import
com.yohobuy.ufo.model.order.bo.AppraiseExpressInfoBo
;
import
com.yohoufo.common.ApiResponse
;
import
com.yohoufo.common.annotation.IgnoreSession
;
import
com.yohoufo.common.annotation.IgnoreSignature
;
import
com.yohoufo.order.service.impl.AppraiseService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -14,8 +17,12 @@ import org.springframework.web.bind.annotation.RestController;
* @date 2018/9/25
*/
@RestController
@RequestMapping
(
value
=
"/order/appraise"
)
@ServiceDesc
(
"orderAppraise"
)
public
class
AppraiseController
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
private
AppraiseService
appraiseService
;
...
...
@@ -24,10 +31,11 @@ public class AppraiseController {
* 提供给运营平台使用
* @return
*/
@RequestMapping
(
params
=
"method=ufo.order.appraiseFail
"
)
@RequestMapping
(
value
=
"/reject
"
)
@IgnoreSession
@IgnoreSignature
public
ApiResponse
appraiseFail
(
AppraiseExpressInfoBo
appraiseExpressInfoBo
)
{
logger
.
info
(
"in appraise Fail, req {}"
,
appraiseExpressInfoBo
);
boolean
result
=
appraiseService
.
appraiseFail
(
appraiseExpressInfoBo
.
getExpressCompanyId
(),
appraiseExpressInfoBo
.
getOrderCode
(),
appraiseExpressInfoBo
.
getWayBillCode
());
return
new
ApiResponse
.
ApiResponseBuilder
().
code
(
200
)
.
data
(
result
).
message
(
""
).
build
();
...
...
@@ -37,10 +45,11 @@ public class AppraiseController {
* 鉴定通过,鉴定中心发货给买家
* @return
*/
@RequestMapping
(
params
=
"method=ufo.order.appraiseSucce
ss"
)
@RequestMapping
(
value
=
"/pa
ss"
)
@IgnoreSession
@IgnoreSignature
public
ApiResponse
appraiseSuccess
(
AppraiseExpressInfoBo
appraiseExpressInfoBo
)
{
logger
.
info
(
"in appraiseSuccess, req {}"
,
appraiseExpressInfoBo
);
boolean
result
=
appraiseService
.
appraiseSuccess
(
appraiseExpressInfoBo
.
getExpressCompanyId
(),
appraiseExpressInfoBo
.
getOrderCode
(),
appraiseExpressInfoBo
.
getWayBillCode
());
return
new
ApiResponse
.
ApiResponseBuilder
().
code
(
200
)
.
data
(
result
).
message
(
""
).
build
();
...
...
order/src/main/java/com/yohoufo/order/convert/SellerOrderConvertor.java
View file @
4f1083e
...
...
@@ -50,6 +50,9 @@ public final class SellerOrderConvertor {
public
static
String
formatFee
(
BigDecimal
fee
){
if
(
null
==
fee
){
return
null
;
}
return
PriceFormater
.
addCnCurrencySymbol
(
BigDecimalHelper
.
formatNumber
(
fee
,
BigDecimalHelper
.
FORMAT_TWOBITAFTERPOINT
));
}
}
...
...
order/src/main/java/com/yohoufo/order/model/OrderInfo.java
View file @
4f1083e
package
com
.
yohoufo
.
order
.
model
;
import
com.yohobuy.ufo.model.order.resp.ExpressInfoDetail
;
import
com.yohoufo.common.utils.DateUtil
;
import
com.yohoufo.common.utils.TimeUtils
;
import
com.yohoufo.order.common.OrderCodeType
;
...
...
@@ -49,6 +50,11 @@ public class OrderInfo {
private
Integer
createTime
;
/**
* 最新物流
*/
private
ExpressInfoDetail
lastExpressInfo
;
/**
* 获取实付金额分
* @return
*/
...
...
order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java
View file @
4f1083e
...
...
@@ -11,9 +11,11 @@ import com.yohoufo.dal.order.model.BuyerOrderGoods;
import
com.yohoufo.dal.order.model.SellerOrder
;
import
com.yohoufo.order.common.OrderStatus
;
import
com.yohoufo.order.common.SellerOrderStatus
;
import
com.yohoufo.order.common.TransferCase
;
import
com.yohoufo.order.event.BuyerConfirmEvent
;
import
com.yohoufo.order.event.EventBusPublisher
;
import
com.yohoufo.order.model.request.PaymentRequest
;
import
com.yohoufo.order.model.request.TransferMoneyRequest
;
import
com.yohoufo.order.service.IExpressInfoService
;
import
com.yohoufo.order.service.IPaymentService
;
import
org.slf4j.Logger
;
...
...
@@ -58,6 +60,32 @@ public class AppraiseService {
//记录物流信息
expressInfoService
.
appraiseSuccess
(
buyerUid
=
buyerOrder
.
getUid
(),
expressCompanyId
,
orderCode
,
wayBillCode
);
BuyerOrderGoods
bog
=
buyerOrderGoodsMapper
.
selectByOrderCode
(
buyerUid
,
orderCode
);
int
skup
=
bog
.
getSkup
();
SellerOrder
sellerOrder
=
sellerOrderMapper
.
selectBySkup
(
skup
);
final
SellerOrderStatus
expectSOStatus
=
SellerOrderStatus
.
HAS_PAYED
;
final
SellerOrderStatus
targetSoStatus
=
SellerOrderStatus
.
FINISH
;
if
(!
expectSOStatus
.
equals
(
sellerOrder
.
getStatus
())){
LOGGER
.
warn
(
"in appraiseSuccess, seller Order pstatus {}, expect Seller Order Status {}"
,
sellerOrder
.
getStatus
(),
expectSOStatus
);
throw
new
ServiceException
(
ServiceError
.
ORDER_STATUS_INVALIDATE
);
}
final
Integer
sellerUid
=
sellerOrder
.
getUid
();
final
Long
sellerOrderCode
=
sellerOrder
.
getOrderCode
();
/**
* 退保证金给卖家
*/
//refund earnestMoney
BigDecimal
earnestMoney
=
sellerOrder
.
getEarnestMoney
();
PaymentRequest
req
=
PaymentRequest
.
builder
().
uid
(
sellerUid
)
.
orderCode
(
sellerOrderCode
).
refundAmount
(
earnestMoney
.
doubleValue
())
.
build
();
paymentService
.
refund
(
req
);
//分账
TransferMoneyRequest
tmReq
=
TransferMoneyRequest
.
builder
().
buyerOrderCode
(
orderCode
)
.
type
(
TransferCase
.
APPRAISE_SUCCESS
.
getCode
()).
build
();
paymentService
.
transferMon
(
tmReq
);
// 更新买家订单状态
LOGGER
.
info
(
"appraiseSuccess update buyer order {} "
,
buyerOrder
);
final
OrderStatus
expectOrderStatus
=
OrderStatus
.
PLATFORM_CHECKING
;
...
...
@@ -70,21 +98,14 @@ public class AppraiseService {
* 退款给卖家(仅退一次)
*
*/
// 退保证金给卖家
if
(
updateBuyerCnt
==
1
){
BuyerOrderGoods
bog
=
buyerOrderGoodsMapper
.
selectByOrderCode
(
buyerUid
,
orderCode
);
int
skup
=
bog
.
getSkup
();
SellerOrder
sellerOrder
=
sellerOrderMapper
.
selectBySkup
(
skup
);
final
SellerOrderStatus
expectSOStatus
=
SellerOrderStatus
.
HAS_PAYED
;
final
SellerOrderStatus
targetSoStatus
=
SellerOrderStatus
.
FINISH
;
if
(!
expectSOStatus
.
equals
(
sellerOrder
.
getStatus
())){
LOGGER
.
warn
(
"in appraiseSuccess, seller Order pstatus {}, expect Seller Order Status {}"
,
sellerOrder
.
getStatus
(),
expectSOStatus
);
}
else
{
LOGGER
.
warn
(
"in appraiseSuccess, buyer Order pstatus {}, expect expectOrderStatus {}"
,
buyerOrder
.
getStatus
(),
expectOrderStatus
);
throw
new
ServiceException
(
ServiceError
.
ORDER_STATUS_INVALIDATE
);
}
final
Integer
sellerUid
=
sellerOrder
.
getUid
();
final
Long
sellerOrderCode
=
sellerOrder
.
getOrderCode
();
SellerOrder
tso
=
new
SellerOrder
();
tso
.
setUid
(
sellerUid
);
tso
.
setOrderCode
(
sellerOrderCode
);
...
...
@@ -93,12 +114,7 @@ public class AppraiseService {
tso
.
setExceptStatus
(
expectSOStatus
.
getCode
());
int
soCnt
=
sellerOrderMapper
.
updateByOrderCode
(
tso
);
if
(
soCnt
==
1
){
//refund earnestMoney
BigDecimal
earnestMoney
=
sellerOrder
.
getEarnestMoney
();
PaymentRequest
req
=
PaymentRequest
.
builder
().
uid
(
sellerUid
)
.
orderCode
(
sellerOrderCode
).
refundAmount
(
earnestMoney
.
doubleValue
())
.
build
();
paymentService
.
refund
(
req
);
LOGGER
.
info
(
"in appraiseSuccess, refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}"
,
sellerUid
,
sellerOrderCode
,
skup
,
earnestMoney
);
}
else
{
...
...
@@ -110,12 +126,6 @@ public class AppraiseService {
//通知卖家退还保证金
BuyerConfirmEvent
buyerConfirmEvent
=
BuyerConfirmEvent
.
builder
().
uid
(
buyerUid
).
orderCode
(
orderCode
).
build
();
EventBusPublisher
.
publishEvent
(
buyerConfirmEvent
);
}
else
{
LOGGER
.
warn
(
"in appraiseSuccess, buyer Order pstatus {}, expect expectOrderStatus {}"
,
buyerOrder
.
getStatus
(),
expectOrderStatus
);
throw
new
ServiceException
(
ServiceError
.
ORDER_STATUS_INVALIDATE
);
}
return
true
;
}
...
...
@@ -130,15 +140,15 @@ public class AppraiseService {
//更新物流信息
expressInfoService
.
appraiseFail
(
buyerOrder
.
getSellerUid
(),
expressCompanyId
,
orderCode
,
wayBillCode
);
//分账
TransferMoneyRequest
tmReq
=
TransferMoneyRequest
.
builder
().
buyerOrderCode
(
orderCode
)
.
type
(
TransferCase
.
APPRAISE_FAIL
.
getCode
()).
build
();
paymentService
.
transferMon
(
tmReq
);
// 更新买家订单状态
buyerOrder
.
setStatus
(
OrderStatus
.
CHECKING_FAKE
.
getCode
());
buyerOrder
.
setUpdateTime
(
DateUtil
.
getCurrentTimeSecond
());
LOGGER
.
info
(
"appraiseFail update buyer order {} "
,
buyerOrder
);
buyerOrderMapper
.
updateByPrimaryKeySelective
(
buyerOrder
);
//TODO 开始分账
return
true
;
}
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/SellerOrderCancelService.java
View file @
4f1083e
...
...
@@ -15,6 +15,7 @@ import com.yohoufo.order.common.*;
import
com.yohoufo.order.event.ErpCancelSellerOrderEvent
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
com.yohoufo.order.model.request.PaymentRequest
;
import
com.yohoufo.order.model.request.TransferMoneyRequest
;
import
com.yohoufo.order.mq.TopicConstants
;
import
com.yohoufo.order.mq.producer.TradeMqSender
;
import
com.yohoufo.order.service.IPaymentService
;
...
...
@@ -27,7 +28,6 @@ import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta;
import
com.yohoufo.order.utils.LoggerUtils
;
import
lombok.experimental.Builder
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -115,7 +115,7 @@ public class SellerOrderCancelService {
if
(
Objects
.
isNull
(
status
)){
return
result
;
}
List
<
Integer
>
sellerCanCancelStatus
=
ActionStatusHold
.
getSellerCan
Refund
Status
();
List
<
Integer
>
sellerCanCancelStatus
=
ActionStatusHold
.
getSellerCan
Cancel
Status
();
if
(!
sellerCanCancelStatus
.
contains
(
status
)){
logger
.
warn
(
"seller cancel can not execute in this status, uid {} orderCode {}, status {}"
,
uid
,
orderCode
,
status
);
throw
new
ServiceException
(
ServiceError
.
ORDER_REQUEST_PARM_IS_EMPTY
);
...
...
@@ -226,26 +226,30 @@ public class SellerOrderCancelService {
*/
final
int
sellerUid
=
sellerOrder
.
getUid
();
final
long
orderCode
=
sellerOrder
.
getOrderCode
();
int
skup
=
sellerOrder
.
getSkup
();
logger
.
info
(
"in seller cancel when Seller Pay But Not Buy Action, uid {}, orderCode {}"
,
sellerUid
,
orderCode
);
double
earnestMoney
=
sellerOrder
.
getEarnestMoney
().
doubleValue
();
PaymentRequest
refundReq
=
PaymentRequest
.
builder
().
uid
(
sellerUid
)
.
orderCode
(
orderCode
)
.
refundAmount
(
earnestMoney
).
build
();
paymentService
.
refund
(
refundReq
);
logger
.
info
(
"in cancelAfterPayButNotBuyAction, refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}"
,
sellerUid
,
orderCode
,
skup
,
earnestMoney
);
int
result
=
0
;
SellerOrderStatus
targetSOStatus
;
targetSOStatus
=
SellerOrderStatus
.
PLAY_SELF
;
SellerOrderStatus
expectStatus
=
SellerOrderStatus
.
HAS_PAYED
;
int
skup
=
sellerOrder
.
getSkup
();
SellerOrderStatusNode
statusNode
=
SellerOrderStatusNode
.
builder
().
targetStatus
(
targetSOStatus
)
.
exceptStatus
(
expectStatus
).
build
();
result
=
cancelBeforePayAction
(
sellerUid
,
orderCode
,
skup
,
statusNode
);
//refund earnestMoney
if
(
result
>
0
){
double
earnestMoney
=
sellerOrder
.
getEarnestMoney
().
doubleValue
();
PaymentRequest
refundReq
=
PaymentRequest
.
builder
().
uid
(
sellerUid
)
.
orderCode
(
orderCode
)
.
refundAmount
(
earnestMoney
).
build
();
paymentService
.
refund
(
refundReq
);
logger
.
info
(
"in cancelAfterPayButNotBuyAction, refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}"
,
sellerUid
,
orderCode
,
skup
,
earnestMoney
);
}
return
result
;
}
...
...
@@ -264,6 +268,11 @@ public class SellerOrderCancelService {
logger
.
info
(
"in seller cancel After Pay while Exist Buy Action, uid {}, orderCode {}, buyerOrderCode {}"
,
sellerUid
,
sellerOrderCode
,
buyerOrderCode
);
//TODO 分赃(分账) 有待考虑使用2比对
TransferMoneyRequest
tmReq
=
TransferMoneyRequest
.
builder
().
buyerOrderCode
(
buyerOrderCode
)
.
type
(
TransferCase
.
SELLER_PLAY_BUYER
.
getCode
()).
build
();
paymentService
.
transferMon
(
tmReq
);
int
result
=
0
;
//actions of buyer order and related
...
...
@@ -290,10 +299,8 @@ public class SellerOrderCancelService {
target
.
setExceptStatus
(
SellerOrderStatus
.
HAS_PAYED
.
getCode
());
result
+=
sellerOrderMapper
.
updateByOrderCode
(
target
);
//TODO 分赃(分账) 有待考虑使用2比对
if
(
result
==
2
){
}
return
result
;
}
...
...
@@ -307,8 +314,6 @@ public class SellerOrderCancelService {
int
buyOrderCnt
=
buyerOrder
==
null
?
0
:
1
;
if
(
buyOrderCnt
==
0
){
/**case 2: 支付完成,没有买家下单
* actions as blow:
...
...
@@ -388,6 +393,16 @@ public class SellerOrderCancelService {
logger
.
warn
(
"in offShelveCancelCase, SellerOrderGoods status illegal, skup {}, status {}"
,
skup
,
skupStatus
);
return
;
}
SellerOrder
sellerOrder
=
sellerOrderMapper
.
selectBySkup
(
skup
);
Integer
sellerUid
=
sellerOrder
.
getUid
();
Long
orderCode
=
sellerOrder
.
getOrderCode
();
double
earnestMoney
=
sellerOrder
.
getEarnestMoney
().
doubleValue
();
PaymentRequest
refundReq
=
PaymentRequest
.
builder
().
uid
(
sellerOrder
.
getUid
())
.
orderCode
(
sellerOrder
.
getOrderCode
())
.
refundAmount
(
earnestMoney
).
build
();
paymentService
.
refund
(
refundReq
);
logger
.
info
(
"in yoho Off Shelve Cancel , refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}"
,
sellerUid
,
orderCode
,
skup
,
earnestMoney
);
final
SellerOrderStatus
targetSellerOrderStatus
=
SellerOrderStatus
.
YOHO_CANCEL_SELL
;
//TODO check skup is buy away
...
...
@@ -401,9 +416,6 @@ public class SellerOrderCancelService {
return
;
}
SellerOrder
sellerOrder
=
sellerOrderMapper
.
selectBySkup
(
skup
);
Integer
sellerUid
=
sellerOrder
.
getUid
();
Long
orderCode
=
sellerOrder
.
getOrderCode
();
SellerOrder
tso
=
new
SellerOrder
();
tso
.
setOrderCode
(
sellerOrder
.
getOrderCode
());
tso
.
setExceptStatus
(
sellerOrder
.
getStatus
());
...
...
@@ -413,13 +425,7 @@ public class SellerOrderCancelService {
result
=
sellerOrderMapper
.
updateByOrderCode
(
tso
);
//refund earnestMoney only has payed
if
(
isPayEarnestMoney
&&
result
>
0
)
{
double
earnestMoney
=
sellerOrder
.
getEarnestMoney
().
doubleValue
();
PaymentRequest
refundReq
=
PaymentRequest
.
builder
().
uid
(
sellerOrder
.
getUid
())
.
orderCode
(
sellerOrder
.
getOrderCode
())
.
refundAmount
(
earnestMoney
).
build
();
paymentService
.
refund
(
refundReq
);
logger
.
info
(
"in yoho Off Shelve Cancel , refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}"
,
sellerUid
,
orderCode
,
skup
,
earnestMoney
);
}
}
...
...
Please
register
or
login
to post a comment