...
|
...
|
@@ -4,6 +4,7 @@ import com.yoho.error.ServiceError; |
|
|
import com.yoho.error.exception.ServiceException;
|
|
|
import com.yohobuy.ufo.model.order.bo.GoodsInfo;
|
|
|
import com.yohobuy.ufo.model.order.common.*;
|
|
|
import com.yohobuy.ufo.model.order.constants.OrderConstant;
|
|
|
import com.yohobuy.ufo.model.order.resp.OrderListInfo;
|
|
|
import com.yohobuy.ufo.model.order.resp.PageResp;
|
|
|
import com.yohobuy.ufo.model.order.vo.OrderListVo;
|
...
|
...
|
@@ -20,14 +21,17 @@ import com.yohoufo.dal.order.model.SellerOrderGoods; |
|
|
import com.yohoufo.order.model.request.OrderListRequest;
|
|
|
import com.yohoufo.order.service.IOrderListService;
|
|
|
import com.yohoufo.order.service.cache.OrderCacheService;
|
|
|
import com.yohoufo.order.service.impl.processor.SellerOrderPrepareProcessor;
|
|
|
import com.yohoufo.order.service.proxy.ProductProxyService;
|
|
|
import com.yohoufo.order.service.proxy.UserProxyService;
|
|
|
import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
|
|
|
import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
...
|
...
|
@@ -99,14 +103,15 @@ public class SellerOrderListService extends AbsOrderListService implements IOrde |
|
|
sogList.stream().forEach(item -> {
|
|
|
item.setImageUrl(ImageUrlAssist.getAllProductPicUrl(item.getImageUrl(), "goodsimg", "center", "d2hpdGU="));
|
|
|
});
|
|
|
|
|
|
Map<Integer,String> overPriceTipsMap = buildOverPriceTipsMap(sogList);
|
|
|
Map<Integer, SellerOrderGoods> skupSellerOrderGoodsMap = sogList.parallelStream()
|
|
|
.collect(Collectors.toMap(SellerOrderGoods::getId, (SellerOrderGoods sog) -> sog));
|
|
|
List<Integer> skupList = sogList.parallelStream().map(SellerOrderGoods::getId).collect(Collectors.toList());
|
|
|
List<SellerOrder> sellerOrders = sellerOrderMapper.selectBySkups(skupList);
|
|
|
List<OrderListInfo> data ;
|
|
|
data = sellerOrders.parallelStream()
|
|
|
.map(sellerOrder -> buildOrderListInfo(skupSellerOrderGoodsMap.get(sellerOrder.getSkup()), sellerOrder, sellerType))
|
|
|
.map(sellerOrder -> buildOrderListInfo(skupSellerOrderGoodsMap.get(sellerOrder.getSkup()),
|
|
|
sellerOrder, sellerType, overPriceTipsMap))
|
|
|
.filter(oli -> Objects.nonNull(oli))
|
|
|
.collect(Collectors.toList());
|
|
|
|
...
|
...
|
@@ -139,8 +144,43 @@ public class SellerOrderListService extends AbsOrderListService implements IOrde |
|
|
}
|
|
|
}
|
|
|
|
|
|
@Autowired
|
|
|
private ProductProxyService productProxyService;
|
|
|
|
|
|
@Autowired
|
|
|
private SellerOrderPrepareProcessor sellerOrderPrepareProcessor;
|
|
|
|
|
|
/**
|
|
|
* todo 需要商品提供批量接口,减少db net IO, 目前的工期太短,后期再优化
|
|
|
* @param sogList
|
|
|
* @return
|
|
|
*/
|
|
|
private Map<Integer,String> buildOverPriceTipsMap(List<SellerOrderGoods> sogList){
|
|
|
Map<Integer,String> map = new HashMap<>(sogList.size());
|
|
|
for(SellerOrderGoods sog : sogList) {
|
|
|
int storageId = sog.getStorageId();
|
|
|
if (map.containsKey(storageId)){
|
|
|
continue;
|
|
|
}
|
|
|
BigDecimal prdPrice = sog.getGoodsPrice();
|
|
|
final String defaultResult = "";
|
|
|
String value;
|
|
|
try {
|
|
|
ProductProxyService.PrdPrice prdPriceRange = productProxyService.getPrdPriceRange(storageId);
|
|
|
log.info("in buildOverPriceTipsMap, prdPrice {}, storageId {} prdPriceRange {}", prdPrice, storageId, prdPriceRange);
|
|
|
boolean isOverflow = sellerOrderPrepareProcessor.isOverSuggestMaxPrice(prdPriceRange.getSuggestMaxPrice(), prdPrice);
|
|
|
value = isOverflow ? OrderConstant.Tips.SUGGEST_MAX_PRICE_OVERFLOW : defaultResult;
|
|
|
} catch (Exception ex) {
|
|
|
log.warn("in buildOverPriceTipsMap storageId {},prdPrice {}", storageId, prdPrice, ex);
|
|
|
value = defaultResult;
|
|
|
}
|
|
|
map.put(storageId, value);
|
|
|
}
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
OrderListInfo buildOrderListInfo(SellerOrderGoods sellerOrderGoods,
|
|
|
SellerOrder sellerOrder, SellerType st) {
|
|
|
SellerOrder sellerOrder, SellerType st, Map<Integer,String> overPriceTipsMap) {
|
|
|
|
|
|
OrderListInfo orderListInfo = new OrderListInfo();
|
|
|
Long orderCode;
|
...
|
...
|
@@ -157,7 +197,6 @@ public class SellerOrderListService extends AbsOrderListService implements IOrde |
|
|
// 订单中状态显示
|
|
|
orderListInfo.setStatus(skupStatus.getCode());
|
|
|
orderListInfo.setStatuStr(skupStatus.getDesc());
|
|
|
CodeMeta codeMeta = orderCodeGenerator.expId(orderCode);
|
|
|
//异常扯淡,兼容老数据,
|
|
|
final SellerType lst = (st == SellerType.ENTRY
|
|
|
&& OrderCodeType.SELLER_RECHARGE_EARNEST_TYPE.getType() == sellerOrder.getPayment()) ?
|
...
|
...
|
@@ -186,6 +225,7 @@ public class SellerOrderListService extends AbsOrderListService implements IOrde |
|
|
orderListInfo.setGoodsInfo(goodsInfo);
|
|
|
orderListInfo.setSecendLevelCreateTime(sellerOrder.getCreateTime());
|
|
|
orderListInfo.setCreateTime(DateUtil.formatDate(sellerOrder.getCreateTime(), DateUtil.yyyy_MM_dd_HH_mm_SS));
|
|
|
orderListInfo.setTips(overPriceTipsMap.get(sellerOrderGoods.getStorageId()));
|
|
|
return orderListInfo;
|
|
|
}
|
|
|
|
...
|
...
|
|