Authored by mali

Merge branch 'test6.9.9' of http://git.yoho.cn/ufo/yohoufo-fore into test6.9.9

... ... @@ -34,6 +34,7 @@ import com.yohoufo.order.service.seller.support.SkupTypeCodeSupport;
import com.yohoufo.order.service.support.BuyerOrderMetaMapperSupport;
import com.yohoufo.order.utils.*;
import lombok.Builder;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -61,7 +62,7 @@ public abstract class AbsOrderDetailService extends AbsOrderViewService implemen
abstract SellerOrderGoods getSellerOrderGoods(int skup);
abstract void assembleSoldPrdCompute(OrderDetailInfo orderDetailInfo, int uid, int skup);
//abstract void assembleSoldPrdCompute(OrderDetailInfo orderDetailInfo, int uid, int skup);
abstract ExpressInfoDetail getExpressInfoDetail(OrderStatus orderStatus, long orderCode);
... ... @@ -111,7 +112,7 @@ public abstract class AbsOrderDetailService extends AbsOrderViewService implemen
TabType actor = orderRequest.getActor();
boolean isBuyer = actor.equals(TabType.BUY);
boolean isSeller = actor.equals(TabType.SELL);
// 查询订单状态
BuyerOrder buyerOrder = getBuyerOrder(uid, orderCode);
if (buyerOrder == null){
... ... @@ -144,19 +145,21 @@ public abstract class AbsOrderDetailService extends AbsOrderViewService implemen
throw new ServiceException(ServiceError.ORDER_ORDERS_GOODS_IS_EMPTY);
}
//buyer_order_meta 批量查询
List<BuyerOrderMeta> buyerOrderMetas = getBuyerOrderMetas(uid, orderCode, Lists.newArrayList(MetaKey.BUYER_DELIVERY_HIDDEN_ADDRESS, MetaKey.AMOUNT_DETAIL));
SkupType skupType = SkupType.getSkupType(sellerOrderGoods.getAttributes());
boolean isQuickDeliverDepositOrder = BuyerOrderUtils.isQuickDeliverDeposit(skupType, buyerOrder);
Optional<BuyerOrderMeta> buyerDeliveryHiddenAddressMetaOptional = buyerOrderMetas.stream().filter(meta -> StringUtils.equals(MetaKey.BUYER_DELIVERY_HIDDEN_ADDRESS, meta.getMetaKey())).findFirst();
//buyer_order_meta 批量查询
List<BuyerOrderMeta> buyerOrderMetas = null;
if (isBuyer){
buyerOrderMetas = getBuyerOrderMetas(uid, orderCode, Lists.newArrayList(MetaKey.AMOUNT_DETAIL));
}
AddressInfo userAddress;
if (buyerDeliveryHiddenAddressMetaOptional.isPresent()) {
userAddress = BuyerOrderMetaMapperSupport.convert(buyerDeliveryHiddenAddressMetaOptional.get(), AddressInfo.class);
} else {
boolean showAddress = isBuyer || (isSeller && !isQuickDeliverDepositOrder);
AddressInfo userAddress = null;
if(showAddress) {
// 收货地址 and 用户信息
userAddress = getHiddenAddressInfo(uid, orderCode, sellerOrderGoods.getId());
}
// 需要查询 时间点 and 物流定位
ExpressInfoDetail lastEID = getExpressInfoDetail(orderStatus, orderCode);
... ... @@ -234,7 +237,7 @@ public abstract class AbsOrderDetailService extends AbsOrderViewService implemen
//user address
orderDetailInfo.setUserAddress(userAddress);
//
//只有买家能够查看
OrderDetailInfo.PriceInfo priceInfo = buildPriceInfo(buyerOrder, buyerOrderGoods, buildNode.buyerOrderMetas);
orderDetailInfo.setPriceInfo(priceInfo);
// 支付状态
... ... @@ -245,15 +248,20 @@ public abstract class AbsOrderDetailService extends AbsOrderViewService implemen
orderDetailInfo.setLastExpressInfo(buildNode.lastEID);
//只有卖家在查看买家的订单时才有
assembleSoldPrdCompute(orderDetailInfo, buyerOrder.getSellerUid(), buyerOrderGoods.getSkup());
//assembleSoldPrdCompute(orderDetailInfo, buyerOrder.getSellerUid(), buyerOrderGoods.getSkup());
orderDetailInfo.setAppraiseVideoUrl(buildNode.appraiseVideoUrl);
orderDetailInfo.setAttributes(buyerOrder.getAttributes());
orderDetailInfo.setIsAdvance(OrderAssist.getOrderIsAdvance(buyerOrder.getAttributes()));
return orderDetailInfo;
}
OrderDetailInfo.PriceInfo buildPriceInfo(BuyerOrder buyerOrder, BuyerOrderGoods buyerOrderGoods, List<BuyerOrderMeta> buyerOrderMetas){
OrderDetailInfo.PriceInfo priceInfo;
OrderDetailInfo.PriceInfo buildPriceInfo(BuyerOrder buyerOrder, BuyerOrderGoods buyerOrderGoods,
List<BuyerOrderMeta> buyerOrderMetas){
OrderDetailInfo.PriceInfo priceInfo = null;
if (CollectionUtils.isEmpty(buyerOrderMetas)){
return priceInfo;
}
//订单金额明细
Optional<BuyerOrderMeta> buyerAmountDetailMetaOptional = buyerOrderMetas.stream()
.filter(meta -> StringUtils.equals(meta.getMetaKey(), MetaKey.AMOUNT_DETAIL))
... ...
... ... @@ -116,10 +116,6 @@ public class BuyerOrderDetailService extends AbsOrderDetailService implements IO
return sellerOrderGoods;
}
@Override
void assembleSoldPrdCompute(OrderDetailInfo orderDetailInfo, int uid, int skup) {
}
@Override
ExpressInfoDetail getExpressInfoDetail(OrderStatus orderStatus, long orderCode) {
... ...
... ... @@ -151,7 +151,7 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
SkupStatus skupStatus = SkupStatus.getSkupStatus(skupStatusCode);
AddressInfo addressInfo = sellerAddressService.getHiddenAddressInfo(uid, skup);
orderDetailInfo = buildOrderDetail(sellerOrder, skupStatus, sellerOrderGoods, addressInfo, sellerType,orderRequest.getAppVersion());
orderDetailInfo = buildSellerOrderDetail(sellerOrder, skupStatus, sellerOrderGoods, addressInfo, sellerType,orderRequest.getAppVersion());
orderCacheService.cacheSellerOrderDetailInfo(sellerOrderGoods, orderDetailInfo);
}
... ... @@ -163,21 +163,28 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
orderDetailInfo = super.buildOrderDetail(buildNode);
SellerOrderGoods sellerOrderGoods = buildNode.sellerOrderGoods;
BuyerOrder pbo = buildNode.buyerOrder;
Integer pboa;
boolean isSpecialDepot = BuyerOrderUtils.isDeposit(pboa=pbo.getAttributes())
|| BuyerOrderUtils.isQuickDeliver(pboa);
SkupType skupType = SkupType.getSkupType(sellerOrderGoods.getAttributes());
Integer pboa = pbo.getAttributes();
boolean isQuickDeliverDepositOrder = BuyerOrderUtils.isQuickDeliverDeposit(skupType, pbo);
boolean isInstockDepositOrder = BuyerOrderUtils.isInstockDeposit(skupType, pboa);
boolean isQuickDeliverOrder = BuyerOrderUtils.isQuickDeliver(pboa);
boolean isSpecialDepot = isInstockDepositOrder || isQuickDeliverOrder;
AppraiseAddressInfo aai = null;
if (isSpecialDepot) {
AppraiseAddressResp aaResp = appraiseAddressService.findByDepotType(DepotType.NJ.getCode());
aai = AppraiseAddressService.convert2AppraiseAddressInfo(aaResp);
}else {
// 收货地址 and 用户信息
if (Objects.nonNull(buildNode.userAddress)) {
//卖家订单详情里才会有,买家没有
aai= appraiseAddressService.findAppraiseAddress(sellerOrderGoods.getDepotNo(), buildNode.userAddress.getAreaCode());
//big prepare condition : not isQuickDeliverDepositOrder
if(!isQuickDeliverDepositOrder){
if (isSpecialDepot) {
AppraiseAddressResp aaResp = appraiseAddressService.findByDepotType(DepotType.NJ.getCode());
aai = AppraiseAddressService.convert2AppraiseAddressInfo(aaResp);
}else {
// 收货地址 and 用户信息
if (Objects.nonNull(buildNode.userAddress)) {
//卖家订单详情里才会有,买家没有
aai= appraiseAddressService.findAppraiseAddress(sellerOrderGoods.getDepotNo(), buildNode.userAddress.getAreaCode());
}
}
orderDetailInfo.setAppraiseAddress(aai);
}
orderDetailInfo.setAppraiseAddress(aai);
assembleSoldPrdCompute(orderDetailInfo, uid, sellerOrderGoods.getId());
//cache
orderCacheService.cacheOrderDetailInfo(uid, orderCode, TabType.SELL, orderDetailInfo);
}
... ... @@ -191,7 +198,6 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
}
@Override
void assembleSoldPrdCompute(OrderDetailInfo orderDetailInfo, int uid, int skup){
SellerOrderMeta feeMeta = somMapper.selectByMetaKey(uid, skup, MetaKey.SELLER_FEE);
boolean metaIsPresent = Objects.nonNull(feeMeta);
... ... @@ -202,8 +208,10 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
computeBo = SellerOrderConvertor.computeResult2SoldPrdComputeBo(computeResult, tipsConfigSupplier);
}
if(Objects.nonNull(computeBo)){
orderDetailInfo.setEarnestMoneyStr(computeBo.getEarnestMoneyStr());
orderDetailInfo.setEarnestMoney(computeBo.getEarnestMoney());
if (computeBo.getEarnestMoney() > 0D) {
orderDetailInfo.setEarnestMoneyStr(computeBo.getEarnestMoneyStr());
orderDetailInfo.setEarnestMoney(computeBo.getEarnestMoney());
}
orderDetailInfo.setBankTransferFee(computeBo.getBankTransferFee());
orderDetailInfo.setPlatformFee(computeBo.getPlatformFee());
orderDetailInfo.setIncome(computeBo.getIncome());
... ... @@ -347,9 +355,9 @@ public class SellerOrderDetailService extends AbsOrderDetailService implements I
return defaultResult;
}
private OrderDetailInfo buildOrderDetail(SellerOrder order, SkupStatus skupStatus,
SellerOrderGoods sellerOrderGoods, AddressInfo addressInfo,
SellerType sellerType,String appVersion
private OrderDetailInfo buildSellerOrderDetail(SellerOrder order, SkupStatus skupStatus,
SellerOrderGoods sellerOrderGoods, AddressInfo addressInfo,
SellerType sellerType, String appVersion
) {
OrderDetailInfo orderDetailInfo = new OrderDetailInfo();
orderDetailInfo.setUid(order.getUid());
... ...
... ... @@ -2,11 +2,11 @@ package com.yohoufo.order.service.seller.changePrice;
import com.alibaba.fastjson.JSON;
import com.yohobuy.ufo.model.order.bo.SoldPrdComputeBo;
import com.yohobuy.ufo.model.order.common.Payment;
import com.yohobuy.ufo.model.order.constants.SkupType;
import com.yohobuy.ufo.model.order.req.SingleGoodsChangePriceReq;
import com.yohoufo.common.exception.UfoServiceException;
import com.yohoufo.dal.order.model.SellerWalletDetail;
import com.yohobuy.ufo.model.order.common.Payment;
import com.yohoufo.order.model.dto.ChangePricePrepareDTO;
import com.yohoufo.order.model.dto.LifeCycleSellerGoods;
import com.yohoufo.order.model.dto.SellerTaskDTO;
... ... @@ -15,7 +15,6 @@ import com.yohoufo.order.model.response.OrderSubmitResp;
import com.yohoufo.order.service.handler.SellerDecrPriceTaskHandler;
import com.yohoufo.order.service.handler.SellerIncrPriceTaskHandler;
import com.yohoufo.order.service.impl.SellerOrderService;
import com.yohoufo.order.service.seller.imperfect.ImperfectGoodsService;
import com.yohoufo.order.service.seller.processor.SellerTaskProcessor;
import com.yohoufo.order.utils.LoggerUtils;
import org.slf4j.Logger;
... ... @@ -39,9 +38,6 @@ public class ChangePriceService {
private SingleGoodsChangePricePrepareProcessor singleGoodsChangePricePrepareProcessor;
@Autowired
private ImperfectGoodsService imperfectGoodsService;
@Autowired
private SellerTaskProcessor sellerTaskProcessor;
@Autowired
... ... @@ -63,7 +59,6 @@ public class ChangePriceService {
public SoldPrdComputeBo computeChangePrice(SingleGoodsChangePriceReq req){
LifeCycleSellerGoods lcsg = getLifeCycleSellerGoods(req.getSkup());
final SkupType skupType = lcsg.getSkupType();
final Payment payment = lcsg.getPayment();
logger.info("in computeChangePrice 4 single goods, req {} LifeCycleSellerGoods {}", req, lcsg);
SoldPrdComputeBo spcb = null;
switch (skupType){
... ...
... ... @@ -14,9 +14,9 @@ import com.yohoufo.order.model.SellerOrderContext;
import com.yohoufo.order.model.dto.ChangePricePrepareDTO;
import com.yohoufo.order.model.dto.SellerOrderComputeResult;
import com.yohoufo.order.model.dto.SkupDto;
import com.yohoufo.order.service.seller.orderMeta.SellerAddressService;
import com.yohoufo.order.service.seller.SkupService;
import com.yohoufo.order.service.seller.PublishProcessor;
import com.yohoufo.order.service.seller.SkupService;
import com.yohoufo.order.service.seller.orderMeta.SellerAddressService;
import com.yohoufo.order.utils.LoggerUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -44,7 +44,6 @@ public class NEGChangePricePublishProcessor
@Autowired
private SingleGoodsChangePricePrepareProcessor singleGoodsChangePricePrepareProcessor;
@Override
public ChangePriceOrderContext buildPublishCtx(SingleGoodsChangePriceReq im) {
return buildSellerOrderContext(im);
... ...
... ... @@ -26,6 +26,7 @@ import com.yohoufo.order.model.request.PrdQueryReq;
import com.yohoufo.order.service.seller.OrderComputeHandler;
import com.yohoufo.order.service.seller.OrderComputeProvider;
import com.yohoufo.order.service.seller.SellerAuthCheckService;
import com.yohoufo.order.service.seller.SellerOrderRiskWatchDog;
import com.yohoufo.order.service.seller.fee.GoodsAmountService;
import com.yohoufo.order.service.seller.processor.ChangePriceCommonPrepareProcessor;
import com.yohoufo.order.service.seller.processor.PriceComputePrepareProcessor;
... ... @@ -77,6 +78,9 @@ public class SingleGoodsChangePricePrepareProcessor {
@Autowired
private GoodsAmountService goodsAmountService;
@Autowired
private SellerOrderRiskWatchDog sellerOrderRiskWatchDog;
public void checkGoodsStatus(SellerOrderGoods psog){
if (SkupStatus.CAN_SELL.getCode() != psog.getStatus().intValue()){
logger.warn("in SingleGoodsChangePricePrepareProcessor.checkGoodsStatus not can sale, SellerOrderGoods {}", psog);
... ... @@ -128,6 +132,7 @@ public class SingleGoodsChangePricePrepareProcessor {
changePriceCommonPrepareProcessor.checkChangeNecessary(skup, preSalePrice, salePrice);
PrdPrice prdPrice;
int storageId = psog.getStorageId();
sellerOrderRiskWatchDog.checkPublishPriceLimit(uid, storageId, skupType, salePrice);
PrdQueryReq pqr = PrdQueryReq.builder()
.uid(uid).prdPrice(salePrice).storageId(storageId).build();
prdPrice = priceComputePrepareProcessor.checkPriceRange(pqr, true);
... ...
... ... @@ -21,6 +21,7 @@ import com.yohoufo.order.model.dto.SkupDto;
import com.yohoufo.order.model.request.PrdQueryReq;
import com.yohoufo.order.service.seller.OrderComputeHandler;
import com.yohoufo.order.service.seller.OrderComputeProvider;
import com.yohoufo.order.service.seller.SellerOrderRiskWatchDog;
import com.yohoufo.order.service.seller.fee.GoodsAmountService;
import com.yohoufo.order.service.seller.setting.SellerService;
import com.yohoufo.order.utils.LoggerUtils;
... ... @@ -73,6 +74,9 @@ public abstract class AbsEntryChangePricePrepareProcessor<T extends SellerBaseCh
@Autowired
private GoodsAmountService goodsAmountService;
@Autowired
private SellerOrderRiskWatchDog sellerOrderRiskWatchDog;
public ChangePricePrepareDTO checkAndAcquire(T req) {
int uid = req.getUid();
... ... @@ -102,7 +106,7 @@ public abstract class AbsEntryChangePricePrepareProcessor<T extends SellerBaseCh
SellerOrder sellerOrder = sellerOrderMapper.selectBySkup(sampleSkup);
BigDecimal sourceEM = sellerOrder.getEarnestMoney();
int storageId = sampleSog.getStorageId();
sellerOrderRiskWatchDog.checkPublishPriceLimit(uid, storageId, skupType, salePrice);
PrdQueryReq pqr = PrdQueryReq.builder().uid(uid).storageId(storageId)
.prdPrice(salePrice).build();
PrdPrice prdPrice;
... ...
... ... @@ -65,7 +65,17 @@ public class BuyerOrderUtils {
* 是否闪购寄存订单
*/
public static boolean isQuickDeliverDeposit(SkupType skupType, BuyerOrder buyerOrder) {
return skupType == SkupType.QUICK_DELIVER && isDeposit(buyerOrder.getAttributes());
return SellerGoodsHelper.isQuickDeliver(skupType) && isDeposit(buyerOrder.getAttributes());
}
/**
* 现货寄存
* @param skupType
* @param orderAttrCode
* @return
*/
public static boolean isInstockDeposit(SkupType skupType, Integer orderAttrCode){
return SellerGoodsHelper.isInStock(skupType) && isDeposit(orderAttrCode);
}
... ...