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
wujiexiang
6 years ago
Commit
d9f08bb9a58f1f5915d2ee395b930dd212efe2f0
1 parent
dba19f91
求购商品状态
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
302 additions
and
238 deletions
dal/src/main/java/com/yohoufo/dal/order/model/BuyerOrder.java
dal/src/main/java/com/yohoufo/dal/product/BidStoragePriceMapper.java
dal/src/main/java/com/yohoufo/dal/product/model/BidStoragePrice.java
order/src/main/java/com/yohoufo/order/model/bo/BidAndSuggestPrice.java
order/src/main/java/com/yohoufo/order/model/request/OrderRequest.java
order/src/main/java/com/yohoufo/order/mq/DelayTime.java
order/src/main/java/com/yohoufo/order/mq/TopicConstants.java
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay15DayMsgConsumer.java
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay30DayMsgConsumer.java
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay3DayMsgConsumer.java
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay7DayMsgConsumer.java
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay1DayMsgConsumer.java → order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelayNDayMsgConsumer.java
order/src/main/java/com/yohoufo/order/service/AbstractBuyerOrderStateChanger.java
order/src/main/java/com/yohoufo/order/service/IBuyerOrderService.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerBidPriceService.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerBidPublishService.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderDetailService.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java
order/src/main/java/com/yohoufo/order/service/impl/SellerOrderDetailService.java
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderBidingCancelChanger.java
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderBidingToWaitingPayChanger.java
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderPayDepositSuccessChanger.java
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderWaitingPayCancelChanger.java
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderWaitingPayDepositCancelChanger.java
order/src/main/java/com/yohoufo/order/service/listener/processor/BuyerOrderChangeBusinessPostProcessor.java
order/src/main/java/com/yohoufo/order/service/proxy/BidProductProxyService.java
order/src/main/java/com/yohoufo/order/service/seller/SellerOrderCancelService.java
order/src/test/resources/rabbitmq.yml
product/src/main/java/com/yohoufo/product/controller/BidProductController.java
product/src/main/java/com/yohoufo/product/service/impl/BidProductService.java
web/src/main/resources/rabbitmq.yml
web/src/main/webapp/META-INF/autoconf/rabbitmq.yml
dal/src/main/java/com/yohoufo/dal/order/model/BuyerOrder.java
View file @
d9f08bb
...
...
@@ -209,7 +209,7 @@ public class BuyerOrder {
*
* @return
*/
public
boolean
isB
uyerB
idOrder
()
{
public
boolean
isBidOrder
()
{
return
bidType
==
OrderConstant
.
BUYER_BID_TYPE
;
}
...
...
dal/src/main/java/com/yohoufo/dal/product/BidStoragePriceMapper.java
View file @
d9f08bb
...
...
@@ -8,5 +8,12 @@ public interface BidStoragePriceMapper {
BidStoragePrice
selectBySkup
(
int
skup
);
/**
*
* @param skup
* @param sourceStatus
* @param targetStatus
* @return
*/
int
updateStatus
(
@Param
(
"skup"
)
int
skup
,
@Param
(
"sourceStatus"
)
int
sourceStatus
,
@Param
(
"targetStatus"
)
int
targetStatus
);
}
...
...
dal/src/main/java/com/yohoufo/dal/product/model/BidStoragePrice.java
View file @
d9f08bb
package
com
.
yohoufo
.
dal
.
product
.
model
;
import
com.yohobuy.ufo.model.order.common.SkupStatus
;
import
com.yohobuy.ufo.model.order.constants.OrderConstant
;
import
com.yohobuy.ufo.model.order.common.BidSkupStatus
;
import
lombok.Data
;
import
lombok.ToString
;
...
...
@@ -31,7 +30,9 @@ public class BidStoragePrice {
private
Integer
attribute
;
//0:未上架,1:上架
/**
* @see com.yohobuy.ufo.model.order.common.BidSkupStatus
*/
private
Integer
status
;
/**
...
...
@@ -40,10 +41,14 @@ public class BidStoragePrice {
* @return
*/
public
boolean
isCanceled
()
{
return
status
!=
null
&&
status
==
SkupStatus
.
SELLER_CANCEL_SELL
.
getCode
(
);
return
status
!=
null
&&
BidSkupStatus
.
isCancelStatus
(
status
);
}
/**
* 可售状态
* @return
*/
public
boolean
isSaleable
()
{
return
status
!=
null
&&
status
==
SkupStatus
.
CAN_SELL
.
getCode
();
return
status
!=
null
&&
status
==
BidSkupStatus
.
BIDING
.
getCode
();
}
}
...
...
order/src/main/java/com/yohoufo/order/model/bo/BidAndSuggestPrice.java
View file @
d9f08bb
...
...
@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.util.Assert
;
import
java.math.BigDecimal
;
import
java.util.Objects
;
/**
* 出购价
...
...
@@ -25,9 +26,15 @@ public class BidAndSuggestPrice {
Assert
.
notNull
(
prdPrice
,
"prdPrice must not be null"
);
Assert
.
notNull
(
prdPrice
,
"buyerBidConfig must not be null"
);
validateBase
(
prdPrice
,
prdPriceRange
);
validateBidPriceConfig
(
prdPrice
,
BigDecimal
.
valueOf
(
bidAndSuggestConfig
.
getMinBidPrice
()));
BigDecimal
minBidPrice
=
BigDecimal
.
valueOf
(
bidAndSuggestConfig
.
getMinBidPrice
());
validateBidPriceConfig
(
prdPrice
,
minBidPrice
);
this
.
price
=
prdPrice
;
this
.
suggestPrice
=
calculateSuggestPrice
(
prdPriceRange
.
getLeastPrice
(),
bidAndSuggestConfig
.
getSuggestRate
());
//leastPrice 现货最低价,如果为null,则赋值为系统要求的最小求购价
BigDecimal
leastPrice
;
if
(
Objects
.
isNull
(
leastPrice
=
prdPriceRange
.
getLeastPrice
()))
{
leastPrice
=
minBidPrice
;
}
this
.
suggestPrice
=
calculateSuggestPrice
(
leastPrice
,
bidAndSuggestConfig
.
getSuggestRate
());
}
/**
...
...
@@ -65,7 +72,7 @@ public class BidAndSuggestPrice {
* @param leastPrice 现货最低价
* @param suggestRate 建议比例
*/
public
BigDecimal
calculateSuggestPrice
(
BigDecimal
leastPrice
,
double
suggestRate
)
{
public
BigDecimal
calculateSuggestPrice
(
BigDecimal
leastPrice
,
double
suggestRate
)
{
log
.
info
(
"in BidAndSuggestPrice, leastPrice:{}, suggestRate:{}"
,
leastPrice
,
suggestRate
);
String
priceText
=
leastPrice
.
multiply
(
BigDecimal
.
valueOf
(
suggestRate
)).
setScale
(
0
,
BigDecimal
.
ROUND_DOWN
).
toPlainString
();
String
endNumber
=
"9"
;
...
...
order/src/main/java/com/yohoufo/order/model/request/OrderRequest.java
View file @
d9f08bb
package
com
.
yohoufo
.
order
.
model
.
request
;
import
com.yohobuy.ufo.model.order.common.TabType
;
import
com.yohoufo.order.common.Operator
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
@@ -27,4 +28,7 @@ public class OrderRequest {
String
appVersion
;
//操作者
Operator
operator
;
}
...
...
order/src/main/java/com/yohoufo/order/mq/DelayTime.java
View file @
d9f08bb
...
...
@@ -11,6 +11,8 @@ public interface DelayTime {
int
BUYER_ORDER_WAITING_PAY
=
10
;
int
BUYER_ORDER_WAITING_PAY_DEPOSIT
=
15
;
int
MINUTES_36_HOURS
=
36
*
60
;
...
...
order/src/main/java/com/yohoufo/order/mq/TopicConstants.java
View file @
d9f08bb
...
...
@@ -12,6 +12,10 @@ public interface TopicConstants {
String
BUYER_ORDER_AUTO_CANCEL
=
"buyerOrder.autoCancel"
;
String
BUYER_ORDER_AUTO_CANCEL_AFTER_N_DAY
=
"buyerOrder.autoCancelAfterNDay"
;
/**
* 买家订单自动确认
* 7天自动确认
...
...
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay15DayMsgConsumer.java
deleted
100644 → 0
View file @
dba19f9
package
com
.
yohoufo
.
order
.
mq
.
consumer
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
BuyerOrderAutoCancelDelay15DayMsgConsumer
extends
AbsOrderAutoCancelDelayMsgConsumer
{
@Autowired
private
IBuyerOrderService
buyerOrderService
;
@Override
public
String
getTopic
()
{
return
"buyerOrder.autoCancelAfter15Day"
;
}
@Override
public
void
cancel
(
OrderCancelEvent
event
)
{
int
uid
=
event
.
getUid
();
long
orderCode
=
event
.
getOrderCode
();
OrderRequest
req
=
OrderRequest
.
builder
().
uid
(
uid
).
orderCode
(
orderCode
).
build
();
buyerOrderService
.
cancelBidByAuto
(
req
);
}
@Override
public
void
sendAgain
(
OrderCancelEvent
cancelBean
)
{
}
}
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay30DayMsgConsumer.java
deleted
100644 → 0
View file @
dba19f9
package
com
.
yohoufo
.
order
.
mq
.
consumer
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
BuyerOrderAutoCancelDelay30DayMsgConsumer
extends
AbsOrderAutoCancelDelayMsgConsumer
{
@Autowired
private
IBuyerOrderService
buyerOrderService
;
@Override
public
String
getTopic
()
{
return
"buyerOrder.autoCancelAfter30Day"
;
}
@Override
public
void
cancel
(
OrderCancelEvent
event
)
{
int
uid
=
event
.
getUid
();
long
orderCode
=
event
.
getOrderCode
();
OrderRequest
req
=
OrderRequest
.
builder
().
uid
(
uid
).
orderCode
(
orderCode
).
build
();
buyerOrderService
.
cancelBidByAuto
(
req
);
}
@Override
public
void
sendAgain
(
OrderCancelEvent
cancelBean
)
{
}
}
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay3DayMsgConsumer.java
deleted
100644 → 0
View file @
dba19f9
package
com
.
yohoufo
.
order
.
mq
.
consumer
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
BuyerOrderAutoCancelDelay3DayMsgConsumer
extends
AbsOrderAutoCancelDelayMsgConsumer
{
@Autowired
private
IBuyerOrderService
buyerOrderService
;
@Override
public
String
getTopic
()
{
return
"buyerOrder.autoCancelAfter3Day"
;
}
@Override
public
void
cancel
(
OrderCancelEvent
event
)
{
int
uid
=
event
.
getUid
();
long
orderCode
=
event
.
getOrderCode
();
OrderRequest
req
=
OrderRequest
.
builder
().
uid
(
uid
).
orderCode
(
orderCode
).
build
();
buyerOrderService
.
cancelBidByAuto
(
req
);
}
@Override
public
void
sendAgain
(
OrderCancelEvent
cancelBean
)
{
}
}
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay7DayMsgConsumer.java
deleted
100644 → 0
View file @
dba19f9
package
com
.
yohoufo
.
order
.
mq
.
consumer
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
BuyerOrderAutoCancelDelay7DayMsgConsumer
extends
AbsOrderAutoCancelDelayMsgConsumer
{
@Autowired
private
IBuyerOrderService
buyerOrderService
;
@Override
public
String
getTopic
()
{
return
"buyerOrder.autoCancelAfter7Day"
;
}
@Override
public
void
cancel
(
OrderCancelEvent
event
)
{
int
uid
=
event
.
getUid
();
long
orderCode
=
event
.
getOrderCode
();
OrderRequest
req
=
OrderRequest
.
builder
().
uid
(
uid
).
orderCode
(
orderCode
).
build
();
buyerOrderService
.
cancelBidByAuto
(
req
);
}
@Override
public
void
sendAgain
(
OrderCancelEvent
cancelBean
)
{
}
}
order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay
1
DayMsgConsumer.java → order/src/main/java/com/yohoufo/order/mq/consumer/BuyerOrderAutoCancelDelay
N
DayMsgConsumer.java
View file @
d9f08bb
package
com
.
yohoufo
.
order
.
mq
.
consumer
;
import
com.yohoufo.order.common.Operator
;
import
com.yohoufo.order.event.OrderCancelEvent
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.mq.TopicConstants
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
BuyerOrderAutoCancelDelay
1
DayMsgConsumer
extends
AbsOrderAutoCancelDelayMsgConsumer
{
public
class
BuyerOrderAutoCancelDelay
N
DayMsgConsumer
extends
AbsOrderAutoCancelDelayMsgConsumer
{
@Autowired
private
IBuyerOrderService
buyerOrderService
;
@Override
public
String
getTopic
()
{
return
"buyerOrder.autoCancelAfter1Day"
;
return
TopicConstants
.
BUYER_ORDER_AUTO_CANCEL_AFTER_N_DAY
;
}
@Override
public
void
cancel
(
OrderCancelEvent
event
)
{
int
uid
=
event
.
getUid
();
long
orderCode
=
event
.
getOrderCode
();
OrderRequest
req
=
OrderRequest
.
builder
().
uid
(
uid
).
orderCode
(
orderCode
).
build
();
buyerOrderService
.
cancelBidByAuto
(
req
);
OrderRequest
req
=
OrderRequest
.
builder
().
uid
(
uid
).
orderCode
(
orderCode
).
operator
(
Operator
.
SYSTEM
).
build
();
buyerOrderService
.
cancelBiding
(
req
);
}
@Override
...
...
order/src/main/java/com/yohoufo/order/service/AbstractBuyerOrderStateChanger.java
View file @
d9f08bb
...
...
@@ -97,7 +97,6 @@ public abstract class AbstractBuyerOrderStateChanger<T extends RequestedStatusCh
if
(
beforeChange
(
statusChangeBuyerOrder
))
{
if
(
doChange
(
statusChangeBuyerOrder
))
{
afterChange
(
statusChangeBuyerOrder
);
logger
.
info
(
"[{}] status changed success"
,
buyerOrder
.
getOrderCode
());
//清理缓存
cacheCleaner
.
cleanList
(
buyerOrder
.
getUid
(),
TabType
.
BUY
.
getValue
());
}
else
{
...
...
@@ -147,6 +146,7 @@ public abstract class AbstractBuyerOrderStateChanger<T extends RequestedStatusCh
);
boolean
success
=
rows
>
0
;
if
(
success
)
{
logger
.
info
(
"[{}] status was changed in db"
,
buyerOrder
.
getOrderCode
());
try
{
orderStatusFlowService
.
addAsy
(
orderCode
,
targetStatus
.
getCode
());
}
catch
(
Exception
ex
)
{
...
...
order/src/main/java/com/yohoufo/order/service/IBuyerOrderService.java
View file @
d9f08bb
...
...
@@ -35,10 +35,10 @@ public interface IBuyerOrderService {
void
cancelByAuto
(
OrderRequest
orderRequest
);
/**
* 取消求购订单
* 取消求购
中的
订单
* @param orderRequest
*/
void
cancelBid
ByAuto
(
OrderRequest
orderRequest
);
void
cancelBid
ing
(
OrderRequest
orderRequest
);
/**
* 提交订单
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerBidPriceService.java
View file @
d9f08bb
...
...
@@ -107,7 +107,7 @@ public class BuyerBidPriceService {
logger
.
info
(
"[{}] will change price,orderCode:{},oldSkup:{}"
,
uid
,
context
.
buyerOrder
.
getOrderCode
(),
oldSkup
);
//调价前将原skup取消,若生成新skup失败,则需要手动恢复原skup
bidProductProxyService
.
tryCancelSale
(
oldSkup
);
bidProductProxyService
.
cancelSaleByUser
(
oldSkup
);
logger
.
info
(
"[{}] was canceled success"
,
oldSkup
);
//构建参数
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerBidPublishService.java
View file @
d9f08bb
...
...
@@ -340,7 +340,7 @@ public class BuyerBidPublishService {
BuyerOrderDelayCancelEvent
buyerCancelEvent
=
BuyerOrderDelayCancelEvent
.
builder
().
uid
(
uid
)
.
orderCode
(
bidPublishResult
.
getOrderCode
())
.
topic
(
TopicConstants
.
BUYER_ORDER_AUTO_CANCEL
)
.
delayTime
(
DelayTime
.
BUYER_ORDER_WAITING_PAY
)
.
delayTime
(
DelayTime
.
BUYER_ORDER_WAITING_PAY
_DEPOSIT
)
.
build
();
EventBusPublisher
.
publishEvent
(
buyerCancelEvent
);
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderDetailService.java
View file @
d9f08bb
...
...
@@ -161,11 +161,11 @@ public class BuyerOrderDetailService extends AbsOrderDetailService implements IO
String
detailDesc
=
temp
;
Integer
orderStatus
=
buyerOrder
.
getStatus
();
try
{
if
(
buyerOrder
.
isB
uyerB
idOrder
()
&&
orderStatus
==
OrderStatus
.
BIDING
.
getCode
())
{
if
(
buyerOrder
.
isBidOrder
()
&&
orderStatus
==
OrderStatus
.
BIDING
.
getCode
())
{
//求购中状态
BidOrderMetaBo
bidOrderMetaBo
=
buyerOrderMetaMapperSupport
.
selectByMetaKey
(
buyerOrder
.
getUid
(),
buyerOrder
.
getOrderCode
(),
MetaKey
.
BID_KEY
,
BidOrderMetaBo
.
class
);
detailDesc
=
String
.
format
(
temp
,
bidOrderMetaBo
.
getDay
());
}
else
if
(
buyerOrder
.
isB
uyerB
idOrder
()
&&
orderStatus
==
OrderStatus
.
WAITING_PAY
.
getCode
())
{
}
else
if
(
buyerOrder
.
isBidOrder
()
&&
orderStatus
==
OrderStatus
.
WAITING_PAY
.
getCode
())
{
//求购 待付尾款
detailDesc
=
OrderDetailDesc
.
BID_NO_PAY
;
}
else
if
(
orderStatus
==
OrderStatus
.
BUYER_CANCEL_BEFORE_DEPOT_RECEIVE
.
getCode
()
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java
View file @
d9f08bb
...
...
@@ -28,7 +28,6 @@ import com.yohoufo.order.event.*;
import
com.yohoufo.order.model.OperateTransferExpressInfo
;
import
com.yohoufo.order.model.PayQueryBo
;
import
com.yohoufo.order.model.RequestedCancelEventStatusChangeBuyerOrder
;
import
com.yohoufo.order.model.RequestedStatusChangeBuyerOrder
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.model.request.SaveQualityCheckInfoRequest
;
import
com.yohoufo.order.model.response.OrderSummaryResp
;
...
...
@@ -51,7 +50,6 @@ import org.apache.commons.lang3.StringUtils;
import
org.slf4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
...
...
@@ -389,8 +387,24 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
logger
.
info
(
"Buyer Order cancel time out ,(OrderRequest) {}"
,
orderRequest
);
DataNode
node
=
checkBase
(
orderRequest
);
BuyerOrder
buyerOrder
=
node
.
buyerOrderInDB
;
if
(
buyerOrder
.
isBuyerBidOrder
())
{
doCancelBidByAuto
(
buyerOrder
,
orderRequest
.
getOrderCancelEvent
(),
OrderStatus
.
getOrderStatus
(
buyerOrder
.
getStatus
()),
OrderStatus
.
BUYER_CANCEL_TIMEOUT
);
if
(
buyerOrder
.
isBidOrder
())
{
//1.待付定金
//3.待付款
OrderStatus
expectStatus
=
OrderStatus
.
getOrderStatus
(
buyerOrder
.
getStatus
());
OrderStatus
targetStatus
;
switch
(
expectStatus
)
{
case
WAITING_PAY_DEPOSIT:
case
WAITING_PAY:
targetStatus
=
OrderStatus
.
BUYER_CANCEL_TIMEOUT
;
break
;
default
:
logger
.
warn
(
"in buyer auto cancel fail uid {} order code {} expectStatus {}"
,
buyerOrder
.
getUid
(),
buyerOrder
.
getOrderCode
(),
expectStatus
);
throw
new
UfoServiceException
(
401
,
"订单状态已变更,不能自动取消"
);
}
doCancelBidByAuto
(
buyerOrder
,
orderRequest
.
getOrderCancelEvent
(),
expectStatus
,
targetStatus
);
}
else
{
doCancelByAuto
(
orderRequest
,
node
);
}
...
...
@@ -408,9 +422,14 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
orderStatusFlowService
.
addAsy
(
orderRequest
.
getOrderCode
(),
targetStatus
.
getCode
());
}
/**
* 取消求购订单
*
* @param orderRequest
*/
@Override
public
void
cancelBidByAuto
(
OrderRequest
orderRequest
)
{
buyerOrderStateChangers
.
selectOneToChange
(
orderRequest
.
getUid
(),
orderRequest
.
getOrderCode
(),
OrderStatus
.
BIDING
,
OrderStatus
.
BUYER_CANCEL_TIMEOUT
,
Operator
.
SYSTEM
);
public
void
cancelBiding
(
OrderRequest
orderRequest
)
{
buyerOrderStateChangers
.
selectOneToChange
(
orderRequest
.
getUid
(),
orderRequest
.
getOrderCode
(),
OrderStatus
.
BIDING
,
OrderStatus
.
BUYER_BID_CLOSE
,
orderRequest
.
getOperator
());
}
private
void
doCancelBidByAuto
(
BuyerOrder
buyerOrder
,
OrderCancelEvent
orderCancelEvent
,
OrderStatus
sourceStatus
,
OrderStatus
targetStatus
)
{
...
...
@@ -459,26 +478,24 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
boolean
useDepositGoods
=
node
.
useDepositGoods
;
switch
(
expectStatus
){
case
WAITING_PAY_DEPOSIT:
targetStatus
=
OrderStatus
.
BUYER_
CANCEL_BEFORE_PAY
;
targetStatus
=
OrderStatus
.
BUYER_
BID_CLOSE
;
buyerOrderStateChangers
.
selectOneToChange
(
buyerOrder
,
OrderStatus
.
WAITING_PAY_DEPOSIT
,
targetStatus
);
break
;
case
BIDING:
targetStatus
=
OrderStatus
.
BUYER_
CANCEL_BEFORE_PAY
;
targetStatus
=
OrderStatus
.
BUYER_
BID_CLOSE
;
//求购中取消
buyerOrderStateChangers
.
selectOneToChange
(
buyerOrder
,
OrderStatus
.
BIDING
,
targetStatus
);
break
;
case
WAITING_PAY:
targetStatus
=
OrderStatus
.
BUYER_CANCEL_BEFORE_PAY
;
if
(
buyerOrder
.
isB
uyerB
idOrder
())
{
if
(
buyerOrder
.
isBidOrder
())
{
RequestedCancelEventStatusChangeBuyerOrder
statusChangeBuyerOrder
=
new
RequestedCancelEventStatusChangeBuyerOrder
(
buyerOrder
,
expectStatus
,
OrderStatus
.
BUYER_CANCEL_BEFORE_PAY
,
targetStatus
,
Operator
.
USER
,
orderRequest
.
getOrderCancelEvent
());
buyerOrderStateChangers
.
selectOneToChange
(
statusChangeBuyerOrder
);
}
else
{
targetStatus
=
OrderStatus
.
BUYER_CANCEL_BEFORE_PAY
;
cancelBeforePaid
(
orderRequest
,
node
,
expectStatus
,
targetStatus
);
//取消事件
orderChangeListenerContainer
.
fireAsyncEvent
(
new
BuyerOrderChangeEvent
(
buyerOrder
,
BuyerOrderChangeEvent
.
BizCase
.
CANCEL_BYBUYER
,
targetStatus
));
...
...
order/src/main/java/com/yohoufo/order/service/impl/SellerOrderDetailService.java
View file @
d9f08bb
...
...
@@ -521,7 +521,7 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
}
else
{
detailDesc
=
String
.
format
(
detailDesc
,
skupType
==
SkupType
.
FAST_DELIVERY
?
24
:
72
);
}
}
else
if
(
buyerOrder
.
isB
uyerB
idOrder
()
&&
orderStatus
.
getCode
()
==
OrderStatus
.
WAITING_PAY
.
getCode
())
{
}
else
if
(
buyerOrder
.
isBidOrder
()
&&
orderStatus
.
getCode
()
==
OrderStatus
.
WAITING_PAY
.
getCode
())
{
detailDesc
=
OrderDetailDesc
.
Seller
.
BID_BUYER_NO_PAY
;
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderBidingCancelChanger.java
View file @
d9f08bb
...
...
@@ -43,7 +43,7 @@ public class BuyerOrderBidingCancelChanger extends AbstractBuyerOrderStateChange
* 调价时,原skup已经取消,但原订单是在新订单定金支付完后再取消
*/
int
skup
=
sellerOrderGoods
.
getId
();
boolean
result
=
bidProductProxyService
.
isCanceled
(
skup
)
||
bidProductProxyService
.
tryCancelSale
(
skup
);
boolean
result
=
bidProductProxyService
.
isCanceled
(
skup
)
||
bidProductProxyService
.
cancelSale
(
skup
,
statusChangeBuyerOrder
.
getOperator
()
);
logger
.
info
(
"[{}] bid skup was canceled,result:{}"
,
sellerOrderGoods
.
getId
(),
result
);
return
result
;
}
...
...
@@ -76,7 +76,6 @@ public class BuyerOrderBidingCancelChanger extends AbstractBuyerOrderStateChange
public
boolean
isSupport
(
RequestedStatusChangeBuyerOrder
statusChangeBuyerOrder
)
{
OrderStatus
sourceStatus
=
statusChangeBuyerOrder
.
getSourceStatus
();
OrderStatus
targetStatus
=
statusChangeBuyerOrder
.
getTargetStatus
();
return
sourceStatus
==
BIDING
&&
(
targetStatus
==
BUYER_CANCEL_BEFORE_PAY
||
targetStatus
==
BUYER_CANCEL_TIMEOUT
);
return
sourceStatus
==
BIDING
&&
targetStatus
==
BUYER_BID_CLOSE
;
}
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderBidingToWaitingPayChanger.java
View file @
d9f08bb
...
...
@@ -6,6 +6,7 @@ import com.yohoufo.common.alarm.EventBusPublisher;
import
com.yohoufo.dal.order.model.BuyerOrder
;
import
com.yohoufo.order.event.BuyerOrderDelayCancelEvent
;
import
com.yohoufo.order.model.RequestedStatusChangeBuyerOrder
;
import
com.yohoufo.order.mq.TopicConstants
;
import
com.yohoufo.order.service.AbstractBuyerOrderStateChanger
;
import
org.springframework.stereotype.Service
;
...
...
@@ -37,7 +38,7 @@ public class BuyerOrderBidingToWaitingPayChanger extends AbstractBuyerOrderState
//自动取消事件
BuyerOrderDelayCancelEvent
buyerCancelEvent
=
BuyerOrderDelayCancelEvent
.
builder
().
uid
(
uid
)
.
orderCode
(
orderCode
)
.
topic
(
"buyerOrder.autoCancelAfter1Day"
)
.
topic
(
TopicConstants
.
BUYER_ORDER_AUTO_CANCEL
)
.
delayTime
(
1
*
24
*
60
).
build
();
EventBusPublisher
.
publishEvent
(
buyerCancelEvent
);
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderPayDepositSuccessChanger.java
View file @
d9f08bb
...
...
@@ -13,6 +13,7 @@ import com.yohoufo.order.event.BuyerOrderDelayCancelEvent;
import
com.yohoufo.order.model.RequestedStatusChangeBuyerOrder
;
import
com.yohoufo.order.model.bo.BidOrderMetaBo
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.mq.TopicConstants
;
import
com.yohoufo.order.service.AbstractBuyerOrderStateChanger
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
com.yohoufo.order.service.impl.BuyerChangePriceRecordService
;
...
...
@@ -52,8 +53,8 @@ public class BuyerOrderPayDepositSuccessChanger extends AbstractBuyerOrderStateC
@Override
public
boolean
isSupport
(
RequestedStatusChangeBuyerOrder
statusChangeBuyerOrder
)
{
return
OrderStatus
.
WAITING_PAY_DEPOSIT
.
getCode
()
==
statusChangeBuyerOrder
.
getSourceStatus
().
getCode
()
&&
OrderStatus
.
BIDING
.
getCode
()
==
statusChangeBuyerOrder
.
getTargetStatus
().
getCode
();
return
OrderStatus
.
WAITING_PAY_DEPOSIT
==
statusChangeBuyerOrder
.
getSourceStatus
()
&&
OrderStatus
.
BIDING
==
statusChangeBuyerOrder
.
getTargetStatus
();
}
...
...
@@ -104,7 +105,7 @@ public class BuyerOrderPayDepositSuccessChanger extends AbstractBuyerOrderStateC
int
day
=
bidOrderMetaBo
.
getDay
();
BuyerOrderDelayCancelEvent
buyerCancelEvent
=
BuyerOrderDelayCancelEvent
.
builder
().
uid
(
buyerOrder
.
getUid
())
.
orderCode
(
buyerOrder
.
getOrderCode
())
.
topic
(
"buyerOrder.autoCancelAfter"
+
day
+
"Day"
)
.
topic
(
TopicConstants
.
BUYER_ORDER_AUTO_CANCEL_AFTER_N_DAY
)
.
delayTime
(
day
*
24
*
60
).
build
();
EventBusPublisher
.
publishEvent
(
buyerCancelEvent
);
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderWaitingPayCancelChanger.java
View file @
d9f08bb
...
...
@@ -76,7 +76,7 @@ public class BuyerOrderWaitingPayCancelChanger extends AbstractBuyerOrderStateCh
protected
Collection
<
Statement
>
afterStatements
(
RequestedCancelEventStatusChangeBuyerOrder
statusChangeBuyerOrder
)
{
BuyerOrder
buyerOrder
=
statusChangeBuyerOrder
.
getBuyerOrder
();
List
<
Statement
>
statements
=
new
ArrayList
<>();
if
(
buyerOrder
.
isB
uyerB
idOrder
())
{
if
(
buyerOrder
.
isBidOrder
())
{
statements
.
add
(()
->
bidOrderAfterStatement
(
buyerOrder
));
}
else
{
//nothing
...
...
order/src/main/java/com/yohoufo/order/service/impl/statechange/BuyerOrderWaitingPayDepositCancelChanger.java
View file @
d9f08bb
...
...
@@ -37,8 +37,7 @@ public class BuyerOrderWaitingPayDepositCancelChanger extends AbstractBuyerOrder
public
boolean
isSupport
(
RequestedStatusChangeBuyerOrder
statusChangeBuyerOrder
)
{
OrderStatus
sourceStatus
=
statusChangeBuyerOrder
.
getSourceStatus
();
OrderStatus
targetStatus
=
statusChangeBuyerOrder
.
getTargetStatus
();
return
sourceStatus
==
WAITING_PAY_DEPOSIT
&&
(
targetStatus
==
BUYER_CANCEL_BEFORE_PAY
||
targetStatus
==
BUYER_CANCEL_TIMEOUT
);
return
sourceStatus
==
WAITING_PAY_DEPOSIT
&&
targetStatus
==
BUYER_BID_CLOSE
;
}
private
void
processIfExistChangePriceRecord
(
long
orderCode
,
Operator
operator
)
{
...
...
@@ -60,7 +59,7 @@ public class BuyerOrderWaitingPayDepositCancelChanger extends AbstractBuyerOrder
//还原原skup为可售状态
logger
.
info
(
"[{}] bid skup need to be reset saleable status"
,
buyerChangePriceRecord
.
getPreSkup
());
bidProductProxyService
.
resetSaleable
(
buyerChangePriceRecord
.
getPreSkup
());
bidProductProxyService
.
resetSaleable
FromUserCancel
(
buyerChangePriceRecord
.
getPreSkup
());
}
private
BuyerChangePriceRecord
getWaitingDealBuyerChangePriceRecord
(
long
orderCode
)
{
...
...
order/src/main/java/com/yohoufo/order/service/listener/processor/BuyerOrderChangeBusinessPostProcessor.java
View file @
d9f08bb
...
...
@@ -18,7 +18,6 @@ import com.yohoufo.dal.order.model.*;
import
com.yohoufo.order.constants.ActivityTypeEnum
;
import
com.yohoufo.order.constants.MetaKey
;
import
com.yohoufo.order.model.bo.ActivityBo
;
import
com.yohoufo.order.model.bo.AmountDetailBo
;
import
com.yohoufo.order.model.bo.BidOrderMetaBo
;
import
com.yohoufo.order.model.request.PaymentRequest
;
import
com.yohoufo.order.service.IPaymentService
;
...
...
@@ -313,7 +312,7 @@ public class BuyerOrderChangeBusinessPostProcessor {
*/
private
boolean
shouldRefundDeposit
(
BuyerOrder
buyerOrder
)
{
//求购订单且以支付
return
buyerOrder
.
isB
uyerB
idOrder
()
&&
buyerOrder
.
getStatus
().
intValue
()
==
OrderStatus
.
HAS_PAYED
.
getCode
();
return
buyerOrder
.
isBidOrder
()
&&
buyerOrder
.
getStatus
().
intValue
()
==
OrderStatus
.
HAS_PAYED
.
getCode
();
}
private
void
refundBidDeposit
(
BuyerOrder
buyerOrder
)
{
...
...
order/src/main/java/com/yohoufo/order/service/proxy/BidProductProxyService.java
View file @
d9f08bb
...
...
@@ -3,6 +3,7 @@ package com.yohoufo.order.service.proxy;
import
com.yohobuy.ufo.model.BidStoragePriceVo
;
import
com.yohobuy.ufo.model.order.common.OrderAttributes
;
import
com.yohoufo.dal.order.model.SellerOrderGoods
;
import
com.yohoufo.order.common.Operator
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Service
;
...
...
@@ -14,7 +15,11 @@ public class BidProductProxyService extends AbsProxyService {
private
final
static
String
CREATE_API
=
"ufo.product.bid.createSkup"
;
private
final
static
String
CANCEL_SALE_API
=
"ufo.product.bid.cancelSale"
;
private
final
static
String
CANCEL_SALE_BY_USER_API
=
"ufo.product.bid.cancelSaleByUser"
;
private
final
static
String
CANCEL_SALE_BY_SYSTEM_API
=
"ufo.product.bid.cancelSaleBySystem"
;
private
final
static
String
CANCEL_SALE_BY_CS_API
=
"ufo.product.bid.cancelSaleByCS"
;
private
final
static
String
SALE_API
=
"ufo.product.bid.sale"
;
...
...
@@ -22,7 +27,9 @@ public class BidProductProxyService extends AbsProxyService {
private
final
static
String
GET_SALEABLE_API
=
"ufo.product.bid.getSaleable"
;
private
final
static
String
RESET_SALEABLE_API
=
"ufo.product.bid.resetSaleable"
;
private
final
static
String
RESET_SALEABLE_FROM_USERCANCEL_API
=
"ufo.product.bid.resetSaleableFromUserCancel"
;
private
final
static
String
RESET_SALEABLE_FROM_BIDFINISHED_API
=
"ufo.product.bid.resetSaleableFromBidFinished"
;
public
void
createSkup
(
int
bidUid
,
SellerOrderGoods
goods
)
{
BidStoragePriceVo
bidStoragePriceBo
=
BidStoragePriceVo
.
builder
().
skup
(
goods
.
getId
())
...
...
@@ -36,12 +43,33 @@ public class BidProductProxyService extends AbsProxyService {
ufoServiceCaller
.
call
(
CREATE_API
,
bidStoragePriceBo
);
}
public
boolean
tryCancelSale
(
int
skup
)
{
logger
.
info
(
"tryCancelSale,skup:{}"
,
skup
);
ufoServiceCaller
.
call
(
CANCEL_SALE_API
,
skup
);
public
boolean
cancelSale
(
int
skup
,
Operator
operator
)
{
logger
.
info
(
"cancelSale,skup:{},operator:{}"
,
skup
,
operator
);
String
api
;
switch
(
operator
)
{
case
USER:
api
=
CANCEL_SALE_BY_USER_API
;
break
;
case
SYSTEM:
api
=
CANCEL_SALE_BY_SYSTEM_API
;
break
;
case
CS:
api
=
CANCEL_SALE_BY_CS_API
;
break
;
default
:
api
=
null
;
}
ufoServiceCaller
.
call
(
api
,
skup
);
return
true
;
}
public
boolean
cancelSaleByUser
(
int
skup
)
{
logger
.
info
(
"cancelSaleByUser,skup:{}"
,
skup
);
return
cancelSale
(
skup
,
Operator
.
USER
);
}
public
boolean
trySale
(
int
productId
,
int
skup
)
{
logger
.
info
(
"trySale,productId:{},skup:{}"
,
productId
,
skup
);
ufoServiceCaller
.
call
(
SALE_API
,
productId
,
skup
);
...
...
@@ -63,10 +91,21 @@ public class BidProductProxyService extends AbsProxyService {
return
ufoServiceCaller
.
call
(
GET_SALEABLE_API
,
skup
);
}
public
boolean
resetSaleable
(
int
skup
)
{
logger
.
info
(
"resetSaleable,skup:{}"
,
skup
);
public
boolean
resetSaleableFromUserCancel
(
int
skup
)
{
logger
.
info
(
"resetSaleableFromUserCancel,skup:{}"
,
skup
);
try
{
ufoServiceCaller
.
call
(
RESET_SALEABLE_FROM_USERCANCEL_API
,
skup
);
return
true
;
}
catch
(
Exception
ex
)
{
logger
.
warn
(
"exception happened when reset saleable,skup:{}"
,
skup
);
return
false
;
}
}
public
boolean
resetSaleableFromBidFinished
(
int
skup
)
{
logger
.
info
(
"resetSaleableFromBidFinished,skup:{}"
,
skup
);
try
{
ufoServiceCaller
.
call
(
RESET_SALEABLE_API
,
skup
);
ufoServiceCaller
.
call
(
RESET_SALEABLE_
FROM_BIDFINISHED_
API
,
skup
);
return
true
;
}
catch
(
Exception
ex
)
{
logger
.
warn
(
"exception happened when reset saleable,skup:{}"
,
skup
);
...
...
order/src/main/java/com/yohoufo/order/service/seller/SellerOrderCancelService.java
View file @
d9f08bb
...
...
@@ -439,7 +439,7 @@ public class SellerOrderCancelService {
SellerOrderGoods
tsog
=
new
SellerOrderGoods
();
tsog
.
setId
(
skup
);
try
{
bidProductProxyService
.
resetSaleable
(
skup
);
bidProductProxyService
.
resetSaleable
FromBidFinished
(
skup
);
}
catch
(
Exception
ex
)
{
logger
.
warn
(
"in seller cancel waiting pay and then reset saleable skup fail, uid {}, skup {}"
,
uid
,
skup
,
ex
);
}
...
...
order/src/test/resources/rabbitmq.yml
View file @
d9f08bb
...
...
@@ -4,31 +4,37 @@ consumer:
password
:
yoho
consumers
:
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay1DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter1Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayMsgConsumer
topic
:
buyerOrder.autoCancel
delay
:
interval
:
1440
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
1440
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay3DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter3Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
4320
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay7DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter7Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
10080
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay15DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter15Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
21600
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay30DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter30Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
43200
-
class
:
com.yohoufo.order.mq.consumer.SellerOrderAutoCancelDelayMsgConsumer
topic
:
sellerOrder.autoCancel
delay
:
...
...
product/src/main/java/com/yohoufo/product/controller/BidProductController.java
View file @
d9f08bb
...
...
@@ -44,11 +44,11 @@ public class BidProductController {
* @param skup
* @return
*/
@RequestMapping
(
params
=
"method=ufo.product.bid.cancelSale"
)
public
ApiResponse
cancelSale
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.cancelSale, skup = {}"
,
skup
);
bidProductService
.
cancelSale
(
skup
);
logger
.
info
(
"cancelSale success, skup = {}"
,
skup
);
@RequestMapping
(
params
=
"method=ufo.product.bid.cancelSaleByUser"
)
public
ApiResponse
cancelSaleByUser
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.cancelSaleByUser, skup = {}"
,
skup
);
bidProductService
.
cancelSaleByUser
(
skup
);
logger
.
info
(
"cancelSaleByUser success, skup = {}"
,
skup
);
return
new
ApiResponse
(
200
,
"ok"
,
Boolean
.
TRUE
);
}
...
...
@@ -56,10 +56,46 @@ public class BidProductController {
* @param skup
* @return
*/
@RequestMapping
(
params
=
"method=ufo.product.bid.resetSaleable"
)
public
ApiResponse
resetSaleable
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.resetSaleable, skup = {}"
,
skup
);
bidProductService
.
resetSaleable
(
skup
);
@RequestMapping
(
params
=
"method=ufo.product.bid.cancelSaleBySystem"
)
public
ApiResponse
cancelSaleBySystem
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.cancelSaleBySystem, skup = {}"
,
skup
);
bidProductService
.
cancelSaleBySystem
(
skup
);
logger
.
info
(
"cancelSaleBySystem success, skup = {}"
,
skup
);
return
new
ApiResponse
(
200
,
"ok"
,
Boolean
.
TRUE
);
}
/**
* @param skup
* @return
*/
@RequestMapping
(
params
=
"method=ufo.product.bid.cancelSaleByCS"
)
public
ApiResponse
cancelSaleByCS
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.cancelSaleByCS, skup = {}"
,
skup
);
bidProductService
.
cancelSaleByPlatform
(
skup
);
logger
.
info
(
"cancelSaleByCS success, skup = {}"
,
skup
);
return
new
ApiResponse
(
200
,
"ok"
,
Boolean
.
TRUE
);
}
/**
* @param skup
* @return
*/
@RequestMapping
(
params
=
"method=ufo.product.bid.resetSaleableFromUserCancel"
)
public
ApiResponse
resetSaleableFromUserCancel
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.resetSaleableFromUserCancel, skup = {}"
,
skup
);
bidProductService
.
resetSaleableFromUserCancel
(
skup
);
logger
.
info
(
"resetSaleable success, skup = {}"
,
skup
);
return
new
ApiResponse
(
200
,
"ok"
,
Boolean
.
TRUE
);
}
/**
* @param skup
* @return
*/
@RequestMapping
(
params
=
"method=ufo.product.bid.resetSaleableFromBidFinished"
)
public
ApiResponse
resetSaleableFromBidFinished
(
@RequestParam
(
value
=
"skup"
)
int
skup
)
{
logger
.
info
(
"in method=ufo.product.bid.resetSaleableFromBidFinished, skup = {}"
,
skup
);
bidProductService
.
resetSaleableFromBidFinished
(
skup
);
logger
.
info
(
"resetSaleable success, skup = {}"
,
skup
);
return
new
ApiResponse
(
200
,
"ok"
,
Boolean
.
TRUE
);
}
...
...
product/src/main/java/com/yohoufo/product/service/impl/BidProductService.java
View file @
d9f08bb
...
...
@@ -3,7 +3,7 @@ package com.yohoufo.product.service.impl;
import
com.yoho.core.dal.datasource.annotation.Database
;
import
com.yoho.error.exception.ServiceException
;
import
com.yohobuy.ufo.model.BidStoragePriceVo
;
import
com.yohobuy.ufo.model.order.common.SkupStatus
;
import
com.yohobuy.ufo.model.order.common.
Bid
SkupStatus
;
import
com.yohoufo.dal.product.BidStoragePriceMapper
;
import
com.yohoufo.dal.product.ProductMapper
;
import
com.yohoufo.dal.product.model.BidStoragePrice
;
...
...
@@ -50,33 +50,77 @@ public class BidProductService {
}
/**
*
取消销售
*
用户取消
*
* @param skup
* @return
*/
public
void
cancelSale
(
int
skup
)
{
logger
.
info
(
"cancelSale, skup:{}"
,
skup
);
public
void
cancelSaleByUser
(
int
skup
)
{
logger
.
info
(
"cancelSaleByUser, skup:{}"
,
skup
);
//检测一下skup是否存在
checkAndGetSkup
(
skup
);
if
(!
doCancelSale
(
skup
))
{
throw
new
ServiceException
(
500
,
"商品(skup)取消变现失败:"
+
skup
);
if
(!
doCancelSale
(
skup
,
BidSkupStatus
.
USER_CANCEL
))
{
throw
new
ServiceException
(
500
,
"商品(skup)取消失败:"
+
skup
);
}
}
/**
*
重置可
售
*
系统取消销
售
*
* @param skup
* @return
*/
public
void
resetSaleable
(
int
skup
)
{
logger
.
info
(
"resetSaleable, skup:{}"
,
skup
);
if
(!
doResetSaleable
(
skup
))
{
public
void
cancelSaleBySystem
(
int
skup
)
{
logger
.
info
(
"cancelSaleBySystem, skup:{}"
,
skup
);
//检测一下skup是否存在
checkAndGetSkup
(
skup
);
if
(!
doCancelSale
(
skup
,
BidSkupStatus
.
SYS_CANCEL
))
{
throw
new
ServiceException
(
500
,
"商品(skup)取消失败:"
+
skup
);
}
}
/**
* 平台取消销售
*
* @param skup
* @return
*/
public
void
cancelSaleByPlatform
(
int
skup
)
{
logger
.
info
(
"cancelSaleByPlatform, skup:{}"
,
skup
);
//检测一下skup是否存在
checkAndGetSkup
(
skup
);
if
(!
doCancelSale
(
skup
,
BidSkupStatus
.
PLATFORM_CANCEL
))
{
throw
new
ServiceException
(
500
,
"商品(skup)取消失败:"
+
skup
);
}
}
/**
* 从用户取消状态或求购成功 才能重置为 可售
*
* @param skup
* @return
*/
public
void
resetSaleableFromUserCancel
(
int
skup
)
{
logger
.
info
(
"resetSaleableFromUserCancel, skup:{}"
,
skup
);
if
(!
doResetSaleable
(
skup
,
BidSkupStatus
.
USER_CANCEL
))
{
throw
new
ServiceException
(
500
,
"商品(skup)恢复到可售状态失败:"
+
skup
);
}
}
/**
* 从用户取消状态或求购成功 才能重置为 可售
*
* @param skup
* @return
*/
public
void
resetSaleableFromBidFinished
(
int
skup
)
{
logger
.
info
(
"resetSaleableFromBidFinished, skup:{}"
,
skup
);
if
(!
doResetSaleable
(
skup
,
BidSkupStatus
.
BID_FINISHED
))
{
throw
new
ServiceException
(
500
,
"商品(skup)恢复到可售状态失败:"
+
skup
);
}
}
/**
* 出售
*
...
...
@@ -93,16 +137,24 @@ public class BidProductService {
}
}
private
boolean
doCancelSale
(
int
skup
)
{
return
bidStoragePriceMapper
.
updateStatus
(
skup
,
SkupStatus
.
CAN_SELL
.
getCode
(),
SkupStatus
.
SELLER_CANCEL_SELL
.
getCode
())
>
0
;
private
boolean
doCancelSale
(
int
skup
,
BidSkupStatus
targetStatus
)
{
if
(
targetStatus
==
BidSkupStatus
.
BIDING
)
{
logger
.
warn
(
"[{}] can't cancel,because target status must not be biding status"
,
skup
);
throw
new
ServiceException
(
500
,
"操作失败"
);
}
return
bidStoragePriceMapper
.
updateStatus
(
skup
,
BidSkupStatus
.
BIDING
.
getCode
(),
targetStatus
.
getCode
())
>
0
;
}
private
boolean
doSale
(
int
skup
)
{
return
bidStoragePriceMapper
.
updateStatus
(
skup
,
SkupStatus
.
CAN_SELL
.
getCode
(),
SkupStatus
.
SELL_OUT
.
getCode
())
>
0
;
return
bidStoragePriceMapper
.
updateStatus
(
skup
,
BidSkupStatus
.
BIDING
.
getCode
(),
BidSkupStatus
.
BID_FINISHED
.
getCode
())
>
0
;
}
private
boolean
doResetSaleable
(
int
skup
)
{
return
bidStoragePriceMapper
.
updateStatus
(
skup
,
0
,
SkupStatus
.
CAN_SELL
.
getCode
())
>
0
;
private
boolean
doResetSaleable
(
int
skup
,
BidSkupStatus
sourceStatus
)
{
if
(
sourceStatus
==
BidSkupStatus
.
BIDING
)
{
logger
.
warn
(
"[{}] can't resetSaleable,because source status must not be biding status"
,
skup
);
throw
new
ServiceException
(
500
,
"操作失败"
);
}
return
bidStoragePriceMapper
.
updateStatus
(
skup
,
sourceStatus
.
getCode
(),
BidSkupStatus
.
BIDING
.
getCode
())
>
0
;
}
/**
...
...
@@ -166,7 +218,7 @@ public class BidProductService {
sp
.
setStorageId
(
storageId
);
sp
.
setPrice
(
price
);
sp
.
setBidUid
(
bidUid
);
sp
.
setStatus
(
SkupStatus
.
CAN_SELL
.
getCode
());
//默认上架
sp
.
setStatus
(
BidSkupStatus
.
BIDING
.
getCode
());
//默认上架
sp
.
setSkup
(
skup
);
sp
.
setCreateTime
((
int
)
(
System
.
currentTimeMillis
()
/
1000
));
sp
.
setUpdateTime
(
0
);
...
...
web/src/main/resources/rabbitmq.yml
View file @
d9f08bb
...
...
@@ -3,28 +3,33 @@ consumer:
username
:
yoho
password
:
yoho
consumers
:
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay1DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter1Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayMsgConsumer
topic
:
buyerOrder.autoCancel
delay
:
interval
:
1440
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
1440
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay3DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter3Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
4320
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay7DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter7Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
10080
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay15DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter15Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
21600
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay30DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter30Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
43200
...
...
web/src/main/webapp/META-INF/autoconf/rabbitmq.yml
View file @
d9f08bb
...
...
@@ -4,30 +4,35 @@ consumer:
password
:
${rabbit_ufo_password}
consumers
:
# order
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay1DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter1Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayMsgConsumer
topic
:
buyerOrder.autoCancel
delay
:
interval
:
1440
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay3DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter3Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
1440
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
4320
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay7DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter7Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
10080
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay15DayMsgConsumer
topic
:
buyerOrder.autoCancelAfter15Day
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
21600
#- class: com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelay30DayMsgConsumer
# topic: buyerOrder.autoCancelAfter30Day
# delay:
# interval: 43200
-
class
:
com.yohoufo.order.mq.consumer.BuyerOrderAutoCancelDelayNDayMsgConsumer
topic
:
buyerOrder.autoCancelAfterNDay
delay
:
interval
:
43200
-
class
:
com.yohoufo.order.mq.consumer.SellerOrderAutoCancelDelayMsgConsumer
topic
:
sellerOrder.autoCancel
...
...
Please
register
or
login
to post a comment