Authored by qinchao

平台收货后直接鉴定流程

... ... @@ -70,74 +70,71 @@ public class AppraiseController {
}
/**
* 商品鉴定不通过,不发物流
* 鉴定中心鉴定不通过后,寄回
* 提供给运营平台使用
* @return
*/
@RequestMapping(value="/judgeCenterNotPass")
@RequestMapping(value="/returnBackOrderCauseOfJudgeFailure")
@IgnoreSession
@IgnoreSignature
public ApiResponse judgeCenterNotPass(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo) {
logger.info("in judgeCenterNotPass, req {}", appraiseExpressInfoBo);
return appraiseService.judgeCenterNotPass(appraiseExpressInfoBo);
public ApiResponse returnBackOrderCauseOfJudgeFailure(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo) {
logger.info("in returnBackOrderCauseOfJudgeFailure , req {}", appraiseExpressInfoBo);
appraiseService.returnBackOrderCauseOfJudgeFailure(appraiseExpressInfoBo);
return new ApiResponse();
}
/**
*
* 质检不通过 -- > 商品鉴定不通过,
* 但是不发物流
* 提供给运营平台使用
* 鉴定通过,鉴定中心发货给买家
* @return
*/
@RequestMapping(value="/appraiseFailWithoutExpress")
@RequestMapping(value="/pass")
@IgnoreSession
@IgnoreSignature
public ApiResponse appraiseFailWithoutExpress(@RequestBody SaveQualityCheckInfoRequest request) {
logger.info("in appraiseFailWithoutExpress , req {}", request);
return appraiseService.qualityCheckReject(request);
public ApiResponse appraiseSuccess(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo) {
logger.info("in appraiseSuccess, req {}", appraiseExpressInfoBo);
return appraiseService.appraiseSuccessAndDelivery(appraiseExpressInfoBo.getExpressCompanyId(), appraiseExpressInfoBo.getOrderCode(), appraiseExpressInfoBo.getWayBillCode(),appraiseExpressInfoBo.getDepotNum(),appraiseExpressInfoBo.getMobile());
}
/**
* 鉴定中心鉴定不通过后,寄回
*
* 质检不通过 -- > 商品鉴定不通过,
* 但是不发物流
* 提供给运营平台使用
* @return
*/
@RequestMapping(value="/returnBackOrderCauseOfJudgeFailure")
@RequestMapping(value="/appraiseFailWithoutExpress")
@IgnoreSession
@IgnoreSignature
public ApiResponse returnBackOrderCauseOfJudgeFailure(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo) {
logger.info("in returnBackOrderCauseOfJudgeFailure , req {}", appraiseExpressInfoBo);
appraiseService.returnBackOrderCauseOfJudgeFailure(appraiseExpressInfoBo);
return new ApiResponse();
public ApiResponse appraiseFailWithoutExpress(@RequestBody SaveQualityCheckInfoRequest request) {
logger.info("in appraiseFailWithoutExpress , req {}", request);
return appraiseService.qualityCheckReject(request);
}
/**
* 鉴定通过,鉴定中心发货给买家
* 商品鉴定不通过,不发物流
* @return
*/
@RequestMapping(value="/pass")
@RequestMapping(value="/judgeCenterNotPass")
@IgnoreSession
@IgnoreSignature
public ApiResponse appraiseSuccess(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo) {
logger.info("in appraiseSuccess, req {}", appraiseExpressInfoBo);
return appraiseService.appraiseSuccessAndDelivery(appraiseExpressInfoBo.getExpressCompanyId(), appraiseExpressInfoBo.getOrderCode(), appraiseExpressInfoBo.getWayBillCode(),appraiseExpressInfoBo.getDepotNum(),appraiseExpressInfoBo.getMobile());
public ApiResponse judgeCenterNotPass(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo) {
logger.info("in judgeCenterNotPass, req {}", appraiseExpressInfoBo);
return appraiseService.judgeCenterNotPass(appraiseExpressInfoBo.getOrderCode());
}
/**
* TODO 手机质检: 鉴定通过流程,订单进入JUDGE_PASS状态,但是没有发货
* 瑕疵确认通过 -->鉴定通过
* 平台鉴定中 -->鉴定通过
* 平台已收货 -->鉴定通过
*/
@RequestMapping(value="/judgeCenterPass")
@IgnoreSession
@IgnoreSignature
public ApiResponse judgeCenterPass(Long orderCode){
logger.info("in judgeCenterPass, orderCode {}", orderCode);
return appraiseService.judgeCenterPass(orderCode);
public ApiResponse judgeCenterPass(@RequestBody AppraiseExpressInfoBo appraiseExpressInfoBo){
logger.info("in judgeCenterPass, appraiseExpressInfoBo {}", appraiseExpressInfoBo);
return appraiseService.judgeCenterPass(appraiseExpressInfoBo.getOrderCode());
}
/**
... ...
... ... @@ -13,6 +13,7 @@ import com.yohoufo.order.model.request.OrderListRequest;
import com.yohoufo.order.model.request.OrderRequest;
import com.yohoufo.order.model.response.OrderDetailInfo;
import com.yohoufo.order.service.IBuyerOrderService;
import com.yohoufo.order.service.impl.AppraiseService;
import com.yohoufo.order.service.impl.SellerFeeService;
import com.yohoufo.order.service.impl.SellerOrderService;
import com.yohoufo.order.utils.LoggerUtils;
... ... @@ -41,6 +42,9 @@ public class BuyerOrderController {
@Autowired
private SellerFeeService sellerFeeService;
@Autowired
private AppraiseService appraiseService;
/**
* [购买]订单列表
* 1: 全部
... ... @@ -160,7 +164,7 @@ public class BuyerOrderController {
.uid(uid)
.orderCode(orderCode)
.build();
buyerOrderService.miniFaultAccept(orderRequest);
appraiseService.miniFaultAccept(orderRequest);
LOG.info("method ufo.buyer.miniFaultAccept out, orderCode is {}, uid is {}", orderCode, uid);
... ... @@ -177,7 +181,7 @@ public class BuyerOrderController {
.uid(uid)
.orderCode(orderCode)
.build();
buyerOrderService.miniFaultReject(orderRequest);
appraiseService.miniFaultNotAccept(orderRequest);
LOG.info("method ufo.buyer.miniFaultReject out, orderCode is {}, uid is {}", orderCode, uid);
... ...
... ... @@ -60,10 +60,6 @@ public interface IBuyerOrderService extends IOrderListService, IOrderDetailServi
void miniFaultCreate(SaveQualityCheckInfoRequest request);
void miniFaultAccept(OrderRequest orderRequest);
void miniFaultReject(OrderRequest orderRequest);
OrderCntResp getOrderCnt(OrderRequest req, OrderListType listType);
OrderCancelComputeResult cancelCompute(OrderRequest orderRequest);
... ...
... ... @@ -12,6 +12,7 @@ import com.yohoufo.common.alarm.EventBusPublisher;
import com.yohoufo.common.utils.DateUtil;
import com.yohoufo.dal.order.*;
import com.yohoufo.dal.order.model.*;
import com.yohoufo.order.common.Payment;
import com.yohoufo.order.common.RefundCase;
import com.yohoufo.order.common.TransferCase;
import com.yohoufo.order.constants.AlarmConfig;
... ... @@ -19,10 +20,7 @@ import com.yohoufo.order.event.BillLogEvent;
import com.yohoufo.order.event.BuyerConfirmEvent;
import com.yohoufo.order.event.BuyerRefundCouponEvent;
import com.yohoufo.order.event.ErpBuyerOrderEvent;
import com.yohoufo.order.model.request.PaymentRequest;
import com.yohoufo.order.model.request.SaveQualityCheckInfoRequest;
import com.yohoufo.order.model.request.TranseferCellNode;
import com.yohoufo.order.model.request.TransferMoneyRequest;
import com.yohoufo.order.model.request.*;
import com.yohoufo.order.model.response.AppraiseAddressResp;
import com.yohoufo.order.service.IExpressInfoService;
import com.yohoufo.order.service.IPaymentService;
... ... @@ -171,6 +169,58 @@ public class AppraiseService {
}
/**
* 正常发货
* 鉴定通过 -- 待收货
* 瑕疵接收 -- 待收货
*/
public void deliveryGoodsToBuyer(AppraiseExpressInfoBo appraiseExpressInfoBo){
LOGGER.info("deliveryGoodsToBuyer enter req {}", appraiseExpressInfoBo);
final OrderStatus expectOrderStatus ;
final OrderStatus targetOrderStatus = OrderStatus.WAITING_RECEIVE;
Long orderCode = appraiseExpressInfoBo.getOrderCode();
BuyerOrder buyerOrder = buyerOrderMapper.selectOnlyByOrderCode(orderCode);
if (buyerOrder == null){
LOGGER.warn("deliveryGoodsToBuyer getOrderInfo order not exist, orderCode is {}", orderCode);
throw new ServiceException(ServiceError.ORDER_NULL);
}
if(buyerOrder.getStatus() == OrderStatus.JUDGE_PASS.getCode()){
expectOrderStatus = OrderStatus.JUDGE_PASS;
}else if(buyerOrder.getStatus() == OrderStatus.MINI_FAULT_ACCEPT.getCode()){
expectOrderStatus = OrderStatus.MINI_FAULT_ACCEPT;
}else{
LOGGER.warn("in deliveryGoodsToBuyer, buyer Order orderCode {} pstatus {}, expect Order Status JUDGE_PASS or MINI_FAULT_ACCEPT ",
orderCode, buyerOrder.getStatus());
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
Integer buyerUid = buyerOrder.getUid();
int updateBuyerCnt = buyerOrderMapper.updateStatusByOrderCode(orderCode, buyerUid,
expectOrderStatus.getCode(), targetOrderStatus.getCode(), DateUtil.getCurrentTimeSecond());
if (updateBuyerCnt == 1){
//发货,这个时候产生:买家确认收货的mq
BuyerConfirmEvent buyerConfirmEvent = BuyerConfirmEvent.builder().uid(buyerUid).orderCode(orderCode).build();
EventBusPublisher.publishEvent(buyerConfirmEvent);
//记录物流信息
//发物流
expressInfoService.deliverGoods(buyerUid, appraiseExpressInfoBo.getExpressCompanyId(), orderCode, appraiseExpressInfoBo.getWayBillCode(), appraiseExpressInfoBo.getDepotNum(),appraiseExpressInfoBo.getMobile());
//记录订单的状态变更信息
orderStatusFlowService.addAsy(buyerOrder.getOrderCode(),targetOrderStatus.getCode());
//TODO 平台已发货给买家
//清缓存
cleanCacheAfterUpdateStatus(buyerOrder.getOrderCode(),buyerOrder.getUid(),buyerOrder.getSellerUid());
}else{
LOGGER.warn("in deliveryGoodsToBuyer update status number zero, buyer Order orderCode {} pstatus {}, expect Order Status {}",
orderCode, buyerOrder.getStatus(), expectOrderStatus);
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
}
/**
* 鉴定不通过退回
* (1)记录物流
* (2)消息 :寄回有4种情形: 鉴定不通过、质检不通过的商品、瑕疵不接受的 、瑕疵不接受(超时)的
... ... @@ -307,6 +357,148 @@ public class AppraiseService {
}
/**
* 接受瑕疵
* @param orderRequest
*/
public void miniFaultAccept(OrderRequest orderRequest){
LOGGER.info("Buyer Order miniFaultAccept (OrderRequest) {}", orderRequest);
//订单状态变更为鉴定中 ,记录调拨的物流信息 ,发消息 ,
OrderStatus expectStatusNew = OrderStatus.MINI_FAULT_WAITING;
//拆分状态,版本升级之后存在的特殊订单
OrderStatus expectStatusAnother = OrderStatus.PLATFORM_RECEIVE;
List<Integer> expectStatusList= Lists.newArrayList(expectStatusNew.getCode(),expectStatusAnother.getCode());
OrderStatus targetStatus = OrderStatus.MINI_FAULT_ACCEPT;
// 参数检查
if (orderRequest.getUid() < 0
|| orderRequest.getOrderCode() < 0){
LOGGER.warn("miniFaultNotAccept check uid or orderCode empty");
throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
}
BuyerOrder buyerOrder = buyerOrderMapper.selectByOrderCodeUid(orderRequest.getOrderCode(), orderRequest.getUid());
if (buyerOrder == null){
LOGGER.warn("miniFaultNotAccept check orderCode exist, uid is {}, orderCode is {}",
orderRequest.getUid(), orderRequest.getOrderCode() );
throw new ServiceException(ServiceError.ORDER_NULL);
}
checkStatusWithMoreExpectStatus(buyerOrder,orderRequest, expectStatusList);
int buyerUid=orderRequest.getUid();
long orderCode=orderRequest.getOrderCode();
int sellerUid = buyerOrder.getSellerUid();
if (1 == buyerOrderMapper.updateStatusByOrderCodeMoreExpectStatus(orderCode, buyerUid,
expectStatusList,
targetStatus.getCode(),
DateUtil.getCurrentTimeSecond())) {
LOGGER.info("Buyer Order miniFaultAccept (OrderRequest) {} ,update status success ", orderRequest);
//更新瑕疵确认结果
int updateNum = qualityCheckMapper.updateByOrderCode(orderCode,EnumQualityCheckStatus.PASS.getCode(),DateUtil.getCurrentTimeSecond());
LOGGER.info("Buyer Order miniFaultAccept (OrderRequest) {} ,update quality check record status num {} ", orderRequest,updateNum);
//记录订单的状态变更信息
LOGGER.info("in judgeCenterPass record status change, orderCode {},uid {} ,sellerUid {}", orderCode,buyerUid,sellerUid);
orderStatusFlowService.addAsy(buyerOrder.getOrderCode(),targetStatus.getCode());
BuyerOrderGoods bog = buyerOrderGoodsMapper.selectByOrderCode(buyerUid, orderCode);
int skup = bog.getSkup();
SellerOrder sellerOrder = sellerOrderMapper.selectBySkup(skup);
long sellerOrderCode = sellerOrder.getOrderCode();
final SellerOrderStatus expectSOStatus = SellerOrderStatus.HAS_PAYED;
final SellerOrderStatus targetSoStatus = SellerOrderStatus.FINISH;
/**
* 更新卖家订单状态,
*/
SellerOrderGoods sellerOrderGoods = updateSellerOrderStatusAndCleanCache(sellerUid ,sellerOrderCode,expectSOStatus,targetSoStatus,
skup, orderCode, buyerUid);
//退款给卖家(仅退一次)
PaymentRequest refundReqOfSeller = operateMoneyWhenOk(buyerUid,orderCode,skup,sellerOrder,targetSoStatus);
//记录新的调拨信息
//记录调拨信息(只保存卖家一条)
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.mini_fault_accept;
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
// 新的变更,买家接受,直接退款,因此还需要增加一个鉴定通过的物流 2019-2-28 craig
expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
expressDataType = EnumExpressDataType.operate_transfer;
operateTransferCode = EnumExpressDataOperateTransferCode.judge_pass;
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
cleanCacheAfterUpdateStatus(orderCode,buyerUid,sellerUid);
//记录操作记录
orderOperateRecordService.addRecord(orderCode,"买家操作",OperateTypeEnum.OPERATE_TYPE_QUALITY_MINI_FAULT_PASS);
//TODO 发消息
}else{
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE); // 更新失败,可能是因为订单状态已经被并发修改
}
}
/**
* 不接受瑕疵
* @param orderRequest
*/
public void miniFaultNotAccept(OrderRequest orderRequest){
LOGGER.info("Buyer Order miniFaultNotAccept (OrderRequest) {}", orderRequest);
//订单状态变更为 鉴定不通过 ,记录调拨的物流信息 ,发消息 ,
OrderStatus expectStatusNew = OrderStatus.MINI_FAULT_WAITING;
//拆分状态,版本升级之后存在的特殊订单
OrderStatus expectStatusAnother = OrderStatus.PLATFORM_RECEIVE;
List<Integer> expectStatusList= Lists.newArrayList(expectStatusNew.getCode(),expectStatusAnother.getCode());
OrderStatus targetStatus = OrderStatus.MINI_FAULT_REJECT;
// 参数检查
if (orderRequest.getUid() < 0
|| orderRequest.getOrderCode() < 0){
LOGGER.warn("miniFaultNotAccept check uid or orderCode empty");
throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
}
BuyerOrder buyerOrder = buyerOrderMapper.selectByOrderCodeUid(orderRequest.getOrderCode(), orderRequest.getUid());
if (buyerOrder == null){
LOGGER.warn("miniFaultNotAccept check orderCode exist, uid is {}, orderCode is {}",
orderRequest.getUid(), orderRequest.getOrderCode() );
throw new ServiceException(ServiceError.ORDER_NULL);
}
checkStatusWithMoreExpectStatus(buyerOrder,orderRequest, expectStatusList);
long orderCode=orderRequest.getOrderCode();
ApiResponse result=this.miniFaultReject(orderCode,targetStatus,false);
if(result!=null&&result.getCode()==200){
//TODO 发消息
}else{
LOGGER.warn("Buyer Order miniFaultReject (OrderRequest) {} ,call appraiseFail fail result {} ", orderRequest,result);
}
}
/**
* 该方法再6.8.6.5版本中使用,拆分订单的时候,存在多种情况expectStatus
* 瑕疵接受
* 瑕疵不接受 这两种情形使用
*/
@Deprecated
private void checkStatusWithMoreExpectStatus(BuyerOrder buyerOrder, OrderRequest orderRequest, List<Integer> expectStatusList ) {
// 检查 订单状态
int status = buyerOrder.getStatus() == null ? -1 : buyerOrder.getStatus().intValue();
OrderStatus orderStatus = OrderStatus.getOrderStatus(status);
if (orderStatus == null || !expectStatusList.contains(orderStatus.getCode())){
LOGGER.warn("check status invalidate, uid is {}, orderCode is {}, status is {}",
orderRequest.getUid(), orderRequest.getOrderCode(), buyerOrder.getStatus());
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
}
/**
* 瑕疵不通过: 买家不接受或者超时确认
* @outTimeFlag 超时
* @return
... ... @@ -764,14 +956,14 @@ public class AppraiseService {
}
/**
* 鉴定不通过 3->13 或者 MINI_FAULT_ACCEPT ->13
* 不发物流
* 手机质检端的鉴定不通过
*
* 直接平台收货后 -> 直接鉴定不通过
*/
public ApiResponse judgeCenterNotPass(AppraiseExpressInfoBo appraiseExpressInfoBo){
LOGGER.info("judgeCenterNotPass enter , appraiseExpressInfoBo {} ", appraiseExpressInfoBo );
OrderStatus expectStatus ;
public ApiResponse judgeCenterNotPass(Long orderCode){
LOGGER.info("judgeCenterNotPass enter , orderCode {} ", orderCode );
OrderStatus expectStatus = OrderStatus.PLATFORM_RECEIVE;
OrderStatus targetStatus = OrderStatus.CHECKING_FAKE;
Long orderCode = appraiseExpressInfoBo.getOrderCode();
ApiResponse apiResponse=new ApiResponse();
BuyerOrder buyerOrder = buyerOrderMapper.selectOnlyByOrderCode(orderCode);
... ... @@ -781,12 +973,8 @@ public class AppraiseService {
throw new ServiceException(ServiceError.ORDER_NULL);
}
if(buyerOrder.getStatus() == OrderStatus.PLATFORM_CHECKING.getCode()){
expectStatus = OrderStatus.PLATFORM_CHECKING;
}else if(buyerOrder.getStatus() == OrderStatus.MINI_FAULT_ACCEPT.getCode()){
expectStatus = OrderStatus.MINI_FAULT_ACCEPT;
}else{
LOGGER.warn("judgeCenterNotPass expectStatus PLATFORM_CHECKING or MINI_FAULT_ACCEPT, actual status {}, orderCode {}",
if (buyerOrder.getStatus()!= expectStatus.getCode()){
LOGGER.warn("judgeCenterNotPass expectStatus {}, actual status {}, orderCode {}",expectStatus,
buyerOrder.getStatus(), orderCode);
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
... ... @@ -821,10 +1009,15 @@ public class AppraiseService {
}finally {
/// 物流信息异步执行
executorService.execute(()->{
//鉴定通过,不发物流
//鉴定通过,不发物流
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.judge_reject;
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.judging;
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
expressDataType = EnumExpressDataType.operate_transfer;
operateTransferCode = EnumExpressDataOperateTransferCode.judge_reject;
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
});
... ... @@ -930,55 +1123,8 @@ public class AppraiseService {
}
/**
* 正常发货
* 鉴定通过 -- 待收货
*/
public void deliveryGoodsToBuyer(AppraiseExpressInfoBo appraiseExpressInfoBo){
LOGGER.info("deliveryGoodsToBuyer enter req {}", appraiseExpressInfoBo);
final OrderStatus expectOrderStatus = OrderStatus.JUDGE_PASS;
final OrderStatus targetOrderStatus = OrderStatus.WAITING_RECEIVE;
Long orderCode = appraiseExpressInfoBo.getOrderCode();
BuyerOrder buyerOrder = buyerOrderMapper.selectOnlyByOrderCode(orderCode);
if (buyerOrder == null){
LOGGER.warn("deliveryGoodsToBuyer getOrderInfo order not exist, orderCode is {}", orderCode);
throw new ServiceException(ServiceError.ORDER_NULL);
}
if (expectOrderStatus.getCode() != buyerOrder.getStatus().intValue()){
LOGGER.warn("in deliveryGoodsToBuyer, buyer Order orderCode {} pstatus {}, expect Order Status {}",
orderCode, buyerOrder.getStatus(), expectOrderStatus);
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
Integer buyerUid = buyerOrder.getUid();
int updateBuyerCnt = buyerOrderMapper.updateStatusByOrderCode(orderCode, buyerUid,
expectOrderStatus.getCode(), targetOrderStatus.getCode(), DateUtil.getCurrentTimeSecond());
if (updateBuyerCnt == 1){
//发货,这个时候产生:买家确认收货的mq
BuyerConfirmEvent buyerConfirmEvent = BuyerConfirmEvent.builder().uid(buyerUid).orderCode(orderCode).build();
EventBusPublisher.publishEvent(buyerConfirmEvent);
//记录物流信息
//发物流
expressInfoService.deliverGoods(buyerUid, appraiseExpressInfoBo.getExpressCompanyId(), orderCode, appraiseExpressInfoBo.getWayBillCode(), appraiseExpressInfoBo.getDepotNum(),appraiseExpressInfoBo.getMobile());
//记录订单的状态变更信息
orderStatusFlowService.addAsy(buyerOrder.getOrderCode(),targetOrderStatus.getCode());
//TODO 平台已发货给买家
//清缓存
cleanCacheAfterUpdateStatus(buyerOrder.getOrderCode(),buyerOrder.getUid(),buyerOrder.getSellerUid());
}else{
LOGGER.warn("in deliveryGoodsToBuyer update status number zero, buyer Order orderCode {} pstatus {}, expect Order Status {}",
orderCode, buyerOrder.getStatus(), expectOrderStatus);
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
}
/**
* 鉴定通过,但是不发货
* 手机质检端 :平台已收货 --> JUDGE_PASS
* @return
*/
public ApiResponse judgeCenterPass(Long orderCode){
... ... @@ -990,14 +1136,11 @@ public class AppraiseService {
LOGGER.warn("judgeCenterPass getOrderInfo order not exist, orderCode is {}", orderCode);
throw new ServiceException(ServiceError.ORDER_NULL);
}
final OrderStatus expectOrderStatus ;
final OrderStatus expectOrderStatus = OrderStatus.PLATFORM_RECEIVE;
final OrderStatus targetOrderStatus = OrderStatus.JUDGE_PASS;
if( OrderStatus.PLATFORM_CHECKING.getCode() == buyerOrder.getStatus().intValue()){
expectOrderStatus = OrderStatus.PLATFORM_CHECKING;
}else if(OrderStatus.MINI_FAULT_ACCEPT.getCode() == buyerOrder.getStatus().intValue()){
expectOrderStatus = OrderStatus.MINI_FAULT_ACCEPT;
}else{
LOGGER.warn("in judgeCenterPass, buyer Order orderCode {} status {}, expect Order Status is OrderStatus.PLATFORM_CHECKING or OrderStatus.MINI_FAULT_ACCEPT ",
if ( buyerOrder.getStatus() != expectOrderStatus.getCode()){
LOGGER.warn("in judgeCenterPass, buyer Order orderCode {} status {}, expect Order Status is {} ",expectOrderStatus,
orderCode, buyerOrder.getStatus());
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
... ...
... ... @@ -2,16 +2,13 @@ package com.yohoufo.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.yoho.error.ServiceError;
import com.yoho.error.exception.ServiceException;
import com.yohobuy.ufo.model.order.bo.AppraiseExpressInfoBo;
import com.yohobuy.ufo.model.order.common.*;
import com.yohobuy.ufo.model.order.req.BuyerOrderMetaUpdateReq;
import com.yohobuy.ufo.model.order.resp.*;
import com.yohobuy.ufo.model.order.vo.AddressInfo;
import com.yohobuy.ufo.model.order.vo.OrderListVo;
import com.yohoufo.common.ApiResponse;
import com.yohoufo.common.alarm.EventBusPublisher;
import com.yohoufo.common.exception.UfoServiceException;
import com.yohoufo.common.utils.DateUtil;
... ... @@ -42,7 +39,6 @@ import com.yohoufo.order.service.cache.OrderCacheService;
import com.yohoufo.order.service.handler.BuyerCancelCompensateComputeHandler;
import com.yohoufo.order.service.pay.AbstractPayService;
import com.yohoufo.order.service.proxy.InBoxFacade;
import com.yohoufo.order.service.proxy.OrderOperateRecordService;
import com.yohoufo.order.service.proxy.OrderStatusFlowService;
import com.yohoufo.order.service.proxy.ProductProxyService;
import com.yohoufo.order.utils.LoggerUtils;
... ... @@ -110,12 +106,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
private QualityCheckMapper qualityCheckMapper;
@Autowired
private AppraiseService appraiseService;
@Autowired
private OrderOperateRecordService orderOperateRecordService;
@Autowired
private BuyerCancelCompensateComputeHandler buyerCancelCompensateComputeHandler;
... ... @@ -483,42 +473,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
}
/**
* 该方法再6.8.6.5版本中使用,拆分订单的时候,存在多种情况expectStatus
* 瑕疵接受
* 瑕疵不接受 这两种情形使用
*/
@Deprecated
private void checkStatusWithMoreExpectStatus(DataNode node, OrderRequest orderRequest, List<Integer> expectStatusList ) {
BuyerOrder buyerOrder = node.buyerOrderInDB;
// 检查 订单状态
int status = buyerOrder.getStatus() == null ? -1 : buyerOrder.getStatus().intValue();
OrderStatus orderStatus = OrderStatus.getOrderStatus(status);
if (orderStatus == null || !expectStatusList.contains(orderStatus.getCode())){
logger.warn("check status invalidate, uid is {}, orderCode is {}, status is {}",
orderRequest.getUid(), orderRequest.getOrderCode(), buyerOrder.getStatus());
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}
// 状态是待支付的场合,到第三方检查是否支付过了
Payment payment = Payment.getPayment(buyerOrder.getPayment());
if (payment != null && status == OrderStatus.WAITING_PAY.getCode()){
/*AbstractPayService payService = paymentService.getPayService(payment.getCode());
PayQueryBo payQueryBo = payService.payQuery(String.valueOf(buyerOrder.getOrderCode()));
if (payQueryBo != null && payQueryBo.isPayStatus()){
logger.warn("check status failed ,confirm paid, uid is {}, orderCode is {}, status is {}",
orderRequest.getUid(), orderRequest.getOrderCode(), buyerOrder.getStatus());
// 主动触发支付结果确认
PayConfirmEvent event = new PayConfirmEvent(buyerOrder.getUid(), buyerOrder.getOrderCode(), buyerOrder.getPayment());
EventBusPublisher.publishEvent(event);
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
}*/
}
}
/**
*
* @param orderRequest
* @param orderStatusEx
... ... @@ -829,82 +783,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
}
}
/**
* 接受瑕疵
* @param orderRequest
*/
@Override
public void miniFaultAccept(OrderRequest orderRequest){
logger.info("Buyer Order miniFaultAccept (OrderRequest) {}", orderRequest);
//订单状态变更为鉴定中 ,记录调拨的物流信息 ,发消息 ,
OrderStatus expectStatusNew = OrderStatus.MINI_FAULT_WAITING;
//拆分状态,版本升级之后存在的特殊订单
OrderStatus expectStatusAnother = OrderStatus.PLATFORM_RECEIVE;
List<Integer> expectStatusList= Lists.newArrayList(expectStatusNew.getCode(),expectStatusAnother.getCode());
OrderStatus targetStatus = OrderStatus.MINI_FAULT_ACCEPT;
// 参数检查
DataNode node = checkBase(orderRequest);
checkStatusWithMoreExpectStatus(node,orderRequest, expectStatusList);
int uid=orderRequest.getUid();
long orderCode=orderRequest.getOrderCode();
BuyerOrder buyerOrder = node.buyerOrderInDB;
int sellerUid = buyerOrder.getSellerUid();
if (1 == buyerOrderMapper.updateStatusByOrderCodeMoreExpectStatus(orderCode, uid,
expectStatusList,
targetStatus.getCode(),
DateUtil.getCurrentTimeSecond())) {
logger.info("Buyer Order miniFaultAccept (OrderRequest) {} ,update status success ", orderRequest);
//更新瑕疵确认结果
int updateNum = qualityCheckMapper.updateByOrderCode(orderCode,EnumQualityCheckStatus.PASS.getCode(),DateUtil.getCurrentTimeSecond());
logger.info("Buyer Order miniFaultAccept (OrderRequest) {} ,update quality check record status num {} ", orderRequest,updateNum);
//记录新的调拨信息
//记录调拨信息(只保存卖家一条)
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.mini_fault_accept;
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
cleanCacheAfterUpdateStatus(orderCode,uid,sellerUid);
//记录操作记录
orderOperateRecordService.addRecord(orderCode,"买家操作",OperateTypeEnum.OPERATE_TYPE_QUALITY_MINI_FAULT_PASS);
//TODO 发消息
}else{
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE); // 更新失败,可能是因为订单状态已经被并发修改
}
}
/**
* 不接受瑕疵
* @param orderRequest
*/
@Override
public void miniFaultReject(OrderRequest orderRequest){
logger.info("Buyer Order miniFaultReject (OrderRequest) {}", orderRequest);
//订单状态变更为 鉴定不通过 ,记录调拨的物流信息 ,发消息 ,
OrderStatus expectStatusNew = OrderStatus.MINI_FAULT_WAITING;
//拆分状态,版本升级之后存在的特殊订单
OrderStatus expectStatusAnother = OrderStatus.PLATFORM_RECEIVE;
List<Integer> expectStatusList= Lists.newArrayList(expectStatusNew.getCode(),expectStatusAnother.getCode());
OrderStatus targetStatus = OrderStatus.MINI_FAULT_REJECT;
// 参数检查
DataNode node = checkBase(orderRequest);
checkStatusWithMoreExpectStatus(node,orderRequest, expectStatusList);
long orderCode=orderRequest.getOrderCode();
ApiResponse result=appraiseService.miniFaultReject(orderCode,targetStatus,false);
if(result!=null&&result.getCode()==200){
//TODO 发消息
}else{
logger.warn("Buyer Order miniFaultReject (OrderRequest) {} ,call appraiseFail fail result {} ", orderRequest,result);
}
}
//清理缓存
private SellerOrderGoods cleanCacheAfterUpdateStatus(long orderCode,int uid,int sellerUid){
... ...