...
|
...
|
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
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.BuyerOrderNums;
|
...
|
...
|
@@ -12,12 +13,14 @@ import com.yohobuy.ufo.model.order.resp.OrderListInfo; |
|
|
import com.yohobuy.ufo.model.order.resp.PageResp;
|
|
|
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;
|
|
|
import com.yohoufo.common.utils.UserInfoHiddenHelper;
|
|
|
import com.yohoufo.dal.order.BuyerOrderGoodsMapper;
|
|
|
import com.yohoufo.dal.order.BuyerOrderMapper;
|
|
|
import com.yohoufo.dal.order.QualityCheckMapper;
|
|
|
import com.yohoufo.dal.order.SellerOrderGoodsMapper;
|
|
|
import com.yohoufo.dal.order.model.BuyOrderNums;
|
|
|
import com.yohoufo.dal.order.model.BuyerOrder;
|
...
|
...
|
@@ -107,6 +110,12 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
private OrderStatusFlowService orderStatusFlowService;
|
|
|
|
|
|
@Autowired
|
|
|
private QualityCheckMapper qualityCheckMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private AppraiseService appraiseService;
|
|
|
|
|
|
@Autowired
|
|
|
private TransferService transferService;
|
|
|
|
|
|
@Autowired
|
...
|
...
|
@@ -311,6 +320,85 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
return changed;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 接受瑕疵
|
|
|
* @param orderRequest
|
|
|
*/
|
|
|
@Override
|
|
|
public void miniFaultAccept(OrderRequest orderRequest){
|
|
|
logger.info("Buyer Order miniFaultAccept (OrderRequest) {}", orderRequest);
|
|
|
//订单状态变更为鉴定中 ,记录调拨的物流信息 ,发消息 ,
|
|
|
OrderStatus expectStatus = OrderStatus.PLATFORM_RECEIVE;
|
|
|
OrderStatus targetStatus = OrderStatus.PLATFORM_CHECKING;
|
|
|
// 参数检查
|
|
|
DataNode node = checkBase(orderRequest);
|
|
|
checkStatus(node,orderRequest, expectStatus);
|
|
|
int uid=orderRequest.getUid();
|
|
|
long orderCode=orderRequest.getOrderCode();
|
|
|
|
|
|
BuyerOrder buyerOrder = node.buyerOrderInDB;
|
|
|
int sellerUid = buyerOrder.getSellerUid();
|
|
|
if (1 == buyerOrderMapper.updateStatusByOrderCode(orderCode, uid,
|
|
|
expectStatus.getCode(),
|
|
|
targetStatus.getCode(),
|
|
|
DateUtil.getCurrentTimeSecond())) {
|
|
|
logger.info("Buyer Order miniFaultAccept (OrderRequest) {} ,update status success ", orderRequest);
|
|
|
//更新瑕疵确认结果
|
|
|
int updateNum = qualityCheckMapper.updateByOrderCode(orderCode,EnumQualityCheckStatus.PASS.getCode());
|
|
|
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);
|
|
|
|
|
|
|
|
|
//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 expectStatus = OrderStatus.PLATFORM_RECEIVE;
|
|
|
OrderStatus targetStatus = OrderStatus.CHECKING_FAKE;
|
|
|
// 参数检查
|
|
|
DataNode node = checkBase(orderRequest);
|
|
|
checkStatus(node,orderRequest, expectStatus);
|
|
|
int uid=orderRequest.getUid();
|
|
|
long orderCode=orderRequest.getOrderCode();
|
|
|
|
|
|
BuyerOrder buyerOrder = node.buyerOrderInDB;
|
|
|
int sellerUid = buyerOrder.getSellerUid();
|
|
|
|
|
|
//调用鉴定不通过的逻辑
|
|
|
int type= 3; //1 鉴定不通过 ;2 质检不通过 ; 3,瑕疵确认不通过
|
|
|
AppraiseExpressInfoBo appraiseExpressInfoBo=new AppraiseExpressInfoBo();
|
|
|
appraiseExpressInfoBo.setOrderCode(orderCode);
|
|
|
ApiResponse result=appraiseService.appraiseFail(appraiseExpressInfoBo,expectStatus,type);
|
|
|
|
|
|
if(result!=null&&result.getCode()==200){
|
|
|
//更新瑕疵确认结果
|
|
|
int updateNum = qualityCheckMapper.updateByOrderCode(orderCode,EnumQualityCheckStatus.REJECT_BY_BUYER.getCode());
|
|
|
logger.info("Buyer Order miniFaultReject (OrderRequest) {} ,update quality check record status num {} ", orderRequest,updateNum);
|
|
|
|
|
|
//TODO 发消息
|
|
|
|
|
|
}else{
|
|
|
logger.warn("Buyer Order miniFaultReject (OrderRequest) {} ,call appraiseFail fail result {} ", orderRequest,result);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取消订单
|
...
|
...
|
@@ -689,7 +777,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
|
|
|
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
|
|
|
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.platform_receive;
|
|
|
//expressInfoService.saveOperateTransferExpressInfo(uid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
|
|
|
cleanCacheAfterUpdateStatus(orderCode,uid,sellerUid);
|
...
|
...
|
@@ -711,6 +798,7 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
}
|
|
|
}
|
|
|
|
|
|
// 质检通过,不需要记录物流调拨信息
|
|
|
@Override
|
|
|
public void qualityCheckPass(long orderCode){
|
|
|
logger.info("in qualityCheckPass, orderCode {}", orderCode);
|
...
|
...
|
@@ -729,21 +817,54 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
if(num>=1){
|
|
|
logger.info("in qualityCheckPass record status change, orderCode {},uid {} ,sellerUid {}", orderCode,uid,sellerUid);
|
|
|
orderStatusFlowService.addAsy(buyerOrder.getOrderCode(),targetStatus.getCode());
|
|
|
|
|
|
//记录调拨信息(只保存卖家一条)
|
|
|
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
|
|
|
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
|
|
|
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.judging;
|
|
|
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
|
|
|
|
|
|
}else{
|
|
|
logger.warn("in qualityCheckPass not record status change cause of update empty num , orderCode {},uid {} ,sellerUid {}", orderCode,uid,sellerUid);
|
|
|
}
|
|
|
|
|
|
//记录调拨信息(只保存卖家一条)
|
|
|
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
|
|
|
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
|
|
|
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.quality_check_pass;
|
|
|
//expressInfoService.saveOperateTransferExpressInfo(uid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
|
|
|
cleanCacheAfterUpdateStatus(orderCode,uid,sellerUid);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 瑕疵创建
|
|
|
@Override
|
|
|
public void miniFaultCreate(long orderCode){
|
|
|
logger.info("in miniFaultCreate, orderCode {}", orderCode);
|
|
|
OrderStatus expectStatus = OrderStatus.PLATFORM_RECEIVE;
|
|
|
BuyerOrder buyerOrder = buyerOrderMapper.selectByOrderCode(orderCode);
|
|
|
if (buyerOrder == null ){
|
|
|
throw new ServiceException(400,"订单为空");
|
|
|
}
|
|
|
|
|
|
if( buyerOrder.getStatus() != expectStatus.getCode()){
|
|
|
throw new ServiceException(400,"订单状态发生变化");
|
|
|
}
|
|
|
int uid = buyerOrder.getUid();
|
|
|
int sellerUid = buyerOrder.getSellerUid();
|
|
|
|
|
|
|
|
|
//先补一条鉴定中
|
|
|
EnumExpressType expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
|
|
|
EnumExpressDataType expressDataType = EnumExpressDataType.operate_transfer;
|
|
|
EnumExpressDataOperateTransferCode operateTransferCode = EnumExpressDataOperateTransferCode.judging;
|
|
|
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
|
|
|
//记录调拨信息(只保存卖家一条)
|
|
|
expressType = EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER;
|
|
|
expressDataType = EnumExpressDataType.operate_transfer;
|
|
|
operateTransferCode = EnumExpressDataOperateTransferCode.mini_fault_create;
|
|
|
expressInfoService.saveOperateTransferExpressInfo(sellerUid,orderCode,expressType.getCode(),expressDataType,operateTransferCode);
|
|
|
|
|
|
cleanCacheAfterUpdateStatus(orderCode,uid,sellerUid);
|
|
|
}
|
|
|
|
|
|
//清理缓存
|
|
|
private void cleanCacheAfterUpdateStatus(long orderCode,int uid,int sellerUid){
|
|
|
BuyerOrderGoods bog = buyerOrderGoodsMapper.selectByOrderCode(uid, orderCode);
|
...
|
...
|
|