|
|
package com.yohoufo.order.service.seller.deposit;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yoho.error.ServiceError;
|
|
|
import com.yoho.error.exception.ServiceException;
|
|
|
import com.yohobuy.ufo.model.order.common.AppraiseOrderStatus;
|
|
|
import com.yohobuy.ufo.model.order.common.OrderAttributes;
|
|
|
import com.yohobuy.ufo.model.order.common.OrderCodeType;
|
...
|
...
|
@@ -8,8 +11,11 @@ import com.yohobuy.ufo.model.order.resp.DepositOrderInStorePrdListResp; |
|
|
import com.yohobuy.ufo.model.order.resp.PageResp;
|
|
|
import com.yohobuy.ufo.model.order.resp.SellerDepositOrderComputeResp;
|
|
|
import com.yohobuy.ufo.model.order.resp.SellerDepositOrderSubmitResp;
|
|
|
import com.yohobuy.ufo.model.order.vo.AddressInfo;
|
|
|
import com.yohobuy.ufo.model.order.vo.GoodsVo;
|
|
|
import com.yohobuy.ufo.model.order.vo.ProductVo;
|
|
|
import com.yohoufo.common.exception.UfoServiceException;
|
|
|
import com.yohoufo.common.utils.AddressUtil;
|
|
|
import com.yohoufo.common.utils.BigDecimalHelper;
|
|
|
import com.yohoufo.dal.order.AppraiseOrderGoodsMapper;
|
|
|
import com.yohoufo.dal.order.AppraiseOrderMapper;
|
...
|
...
|
@@ -17,18 +23,17 @@ import com.yohoufo.dal.order.AppraiseOrderMetaMapper; |
|
|
import com.yohoufo.dal.order.AppraiseOrderStorageMapper;
|
|
|
import com.yohoufo.dal.order.model.AppraiseOrder;
|
|
|
import com.yohoufo.dal.order.model.AppraiseOrderGoods;
|
|
|
import com.yohoufo.dal.order.model.AppraiseOrderMeta;
|
|
|
import com.yohoufo.dal.order.model.AppraiseOrderStorage;
|
|
|
import com.yohoufo.order.common.ClientType;
|
|
|
import com.yohoufo.order.convert.SellerOrderConvertor;
|
|
|
import com.yohoufo.order.model.dto.SellerDepositOrderContext;
|
|
|
import com.yohoufo.order.model.dto.SellerDepositSubOrderContext;
|
|
|
import com.yohoufo.order.model.dto.SellerOrderComputeResult;
|
|
|
import com.yohoufo.order.service.DepositService;
|
|
|
import com.yohoufo.order.service.IGoodsService;
|
|
|
import com.yohoufo.order.service.impl.AbsGoodsServiceOrderService;
|
|
|
import com.yohoufo.order.service.impl.AppraiseAddressService;
|
|
|
import com.yohoufo.order.service.impl.AppraiseOrderCreateService;
|
|
|
import com.yohoufo.order.service.impl.*;
|
|
|
import com.yohoufo.order.service.proxy.OrderStatusFlowService;
|
|
|
import com.yohoufo.order.service.proxy.UserProxyService;
|
|
|
import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
|
|
|
import com.yohoufo.order.utils.LoggerUtils;
|
|
|
import org.slf4j.Logger;
|
...
|
...
|
@@ -38,6 +43,7 @@ import org.springframework.stereotype.Service; |
|
|
import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
|
|
|
@Service
|
|
|
public class SellerDepositOrderService extends AbsGoodsServiceOrderService implements IGoodsService {
|
...
|
...
|
@@ -79,7 +85,8 @@ public class SellerDepositOrderService extends AbsGoodsServiceOrderService imple |
|
|
@Autowired
|
|
|
private DepositService depositService;
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
private UserProxyService userProxyService;
|
|
|
|
|
|
|
|
|
|
...
|
...
|
@@ -162,9 +169,42 @@ public class SellerDepositOrderService extends AbsGoodsServiceOrderService imple |
|
|
return null;
|
|
|
}
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
private ServiceOrderProcessor serviceOrderProcessor;
|
|
|
|
|
|
public void cancel(SellerDepositOrderDetailReq req){
|
|
|
//TODO
|
|
|
long orderCode = req.getOrderCode();
|
|
|
if(serviceOrderProcessor.isGoodsServiceOrder(orderCode)){
|
|
|
logger.warn("cancel AppraiseOrder not GoodsServiceOrder, orderCode {}", orderCode);
|
|
|
throw new UfoServiceException(400, "订单已迷路");
|
|
|
}
|
|
|
ServiceOrderProcessor.ExistenceNode existenceNode = serviceOrderProcessor.isAppraiseOrder(orderCode);
|
|
|
|
|
|
if (!existenceNode.isExisted()){
|
|
|
logger.warn("cancel AppraiseOrder not exist, orderCode {}", orderCode);
|
|
|
throw new UfoServiceException(400, "订单已迷路");
|
|
|
}
|
|
|
AppraiseOrder pao = existenceNode.getAppraiseOrder();
|
|
|
|
|
|
OrderAttributes oa = OrderAttributes.getOrderAttributes(pao.getAttributes());
|
|
|
if (!OrderAttributes.DEPOSITE.equals(oa)){
|
|
|
logger.warn("cancel AppraiseOrder not deposit Order, orderCode {}", orderCode);
|
|
|
throw new UfoServiceException(400, "订单已迷路");
|
|
|
}
|
|
|
|
|
|
AppraiseOrderStatus appraiseOrderStatus = AppraiseOrderStatus.getByCode(pao.getStatus());
|
|
|
switch (appraiseOrderStatus){
|
|
|
case WAITING_PAY:
|
|
|
super.triggerStatusChange(orderCode, AppraiseOrderStatus.CANCEL_BEFORE_PAY, appraiseOrderStatus);
|
|
|
break;
|
|
|
case HAS_PAYED:
|
|
|
super.triggerStatusChange(orderCode, AppraiseOrderStatus.CANCEL_BEFORE_DELIVER, appraiseOrderStatus);
|
|
|
//TODO refund amount
|
|
|
break;
|
|
|
default:
|
|
|
throw new UfoServiceException(400, "订单不支持取消");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
...
|
...
|
@@ -173,7 +213,6 @@ public class SellerDepositOrderService extends AbsGoodsServiceOrderService imple |
|
|
@Override
|
|
|
public int deliver2Depot(DeliverToDepotReq req) {
|
|
|
//
|
|
|
|
|
|
int rows = super.deliver2Depot(req);
|
|
|
if (rows==0){
|
|
|
return rows;
|
...
|
...
|
@@ -247,4 +286,93 @@ public class SellerDepositOrderService extends AbsGoodsServiceOrderService imple |
|
|
depositService.insertFakeDeposit(appraiseOrder.getUid(), appraiseOrder.getOrderCode(), appraiseOrder.getParentOrderCode());
|
|
|
return rows;
|
|
|
}
|
|
|
|
|
|
|
|
|
public void addOrModifyAddress(int uid, Long orderCode, String addressIdstr) {
|
|
|
int addressId = AddressUtil.getDecryptStr(addressIdstr);
|
|
|
if (addressId < 0){
|
|
|
logger.warn("addOrModifyAddress addressId invalidate, uid {}, orderCode {}, addressId is {}",
|
|
|
uid, orderCode, addressIdstr);
|
|
|
throw new ServiceException(ServiceError.ORDER_ADDRESSID_INVALIDATE);
|
|
|
}
|
|
|
AppraiseOrder pbo = appraiseOrderMapper.selectByOrderCode(orderCode);
|
|
|
if (pbo == null ){
|
|
|
logger.warn("in addOrModifyAddress AppraiseOrder is null,uid {} orderCode {} addressIdstr {}",
|
|
|
uid, orderCode, addressIdstr);
|
|
|
return;
|
|
|
}
|
|
|
Integer oa;
|
|
|
if (OrderAttributes.DEPOSITE.getCode() != (oa=pbo.getAttributes())){
|
|
|
logger.warn("in addOrModifyAddress AppraiseOrder.Attributes is {},uid {} orderCode {} addressIdstr {}",
|
|
|
oa, uid, orderCode, addressIdstr);
|
|
|
return;
|
|
|
}
|
|
|
MetaAddressService.ActionCallBack<AppraiseOrderMeta> callBack = new MetaAddressService.ActionCallBack<AppraiseOrderMeta>() {
|
|
|
@Override
|
|
|
public List<AppraiseOrderMeta> selectByMetaKeys(int uid, long orderCode, List<String> metaKeys) {
|
|
|
List<AppraiseOrderMeta> pboms = appraiseOrderMetaMapper.selectByOrderCodeMetaKeys(orderCode, metaKeys);
|
|
|
return pboms;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void insertBatch(List<AppraiseOrderMeta> list) {
|
|
|
appraiseOrderMetaMapper.insertBatch(list);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void insert(AppraiseOrderMeta appraiseOrderMeta) {
|
|
|
appraiseOrderMetaMapper.insert(appraiseOrderMeta);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void updateMetaVal(AppraiseOrderMeta appraiseOrderMeta) {
|
|
|
appraiseOrderMetaMapper.updateMetaValueByOrderCodeAndMetaKey(appraiseOrderMeta);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public AddressInfo hiddenBackAddress(int uid, int addressId) {
|
|
|
return userProxyService.getHiddenAddressInfo(uid, addressId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public AddressInfo noHiddenBackAddress(int uid, int addressId) {
|
|
|
return userProxyService.getAddressInfoNotHidden(uid, addressId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public AppraiseOrderMeta buildnoHiddenAddressMeta(int uid, long orderCode, String key, AddressInfo noHiddenBackAddress) {
|
|
|
AppraiseOrderMeta noHiddenAddressMeta = new AppraiseOrderMeta();
|
|
|
noHiddenAddressMeta.setUid(uid);
|
|
|
noHiddenAddressMeta.setOrderCode(orderCode);
|
|
|
noHiddenAddressMeta.setMetaKey(key);
|
|
|
noHiddenAddressMeta.setMetaValue(JSONObject.toJSONString(noHiddenBackAddress));
|
|
|
return noHiddenAddressMeta;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public AppraiseOrderMeta buildHiddenAddressMeta(int uid, long orderCode, String hiddenKey, AddressInfo hiddenBackAddress) {
|
|
|
AppraiseOrderMeta hiddenAddressMeta=new AppraiseOrderMeta();
|
|
|
hiddenAddressMeta.setUid(uid);
|
|
|
hiddenAddressMeta.setOrderCode(orderCode);
|
|
|
hiddenAddressMeta.setMetaKey(hiddenKey);
|
|
|
hiddenAddressMeta.setMetaValue(JSONObject.toJSONString(hiddenBackAddress));
|
|
|
return hiddenAddressMeta;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean hitHidden(AppraiseOrderMeta appraiseOrderMeta, String hidden_key) {
|
|
|
return appraiseOrderMeta.getMetaKey().equals(hidden_key);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean hitNoHidden(AppraiseOrderMeta appraiseOrderMeta, String noHiddenKey) {
|
|
|
return appraiseOrderMeta.getMetaKey().equals(noHiddenKey);
|
|
|
}
|
|
|
};
|
|
|
new MetaAddressService().modifyAddressOfDepositOrder(uid, orderCode, addressIdstr, callBack);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|