|
|
@@ -1,22 +1,31 @@
|
|
|
package org.dromara.product.dubbo;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
+import org.dromara.common.core.domain.zhongche.domain.Prices;
|
|
|
import org.dromara.product.api.RemoteProductService;
|
|
|
+import org.dromara.product.api.domain.ProductCategoryRemoteVo;
|
|
|
import org.dromara.product.api.domain.ProductChangeLogApiVo;
|
|
|
import org.dromara.product.api.domain.ProductVo;
|
|
|
-import org.dromara.product.domain.bo.ProductBaseBo;
|
|
|
+import org.dromara.product.api.domain.zhongche.dto.StocksResult;
|
|
|
+import org.dromara.product.api.domain.zhongche.dto.StocksResultDto;
|
|
|
+import org.dromara.product.domain.ProductPriceInventory;
|
|
|
+import org.dromara.product.domain.bo.ProductCategoryBo;
|
|
|
import org.dromara.product.domain.bo.ProductChangeLogBo;
|
|
|
import org.dromara.product.domain.vo.ProductBaseVo;
|
|
|
+import org.dromara.product.domain.vo.ProductCategoryVo;
|
|
|
import org.dromara.product.domain.vo.ProductChangeLogVo;
|
|
|
import org.dromara.product.service.IProductBaseService;
|
|
|
+import org.dromara.product.service.IProductCategoryService;
|
|
|
import org.dromara.product.service.IProductChangeLogService;
|
|
|
+import org.dromara.product.service.IProductPriceInventoryService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -34,6 +43,10 @@ public class RemoteProductServiceImpl implements RemoteProductService {
|
|
|
|
|
|
private final IProductChangeLogService productChangeLogService;
|
|
|
|
|
|
+ private final IProductCategoryService productCategoryService;
|
|
|
+
|
|
|
+ private final IProductPriceInventoryService productPriceInventoryService;
|
|
|
+
|
|
|
/**
|
|
|
* 获取商品详情
|
|
|
*
|
|
|
@@ -89,4 +102,70 @@ public class RemoteProductServiceImpl implements RemoteProductService {
|
|
|
public void delMessagePool(Long messageId) {
|
|
|
productBaseService.removeById(messageId);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ProductCategoryRemoteVo> queryList() {
|
|
|
+ List<ProductCategoryVo> productCategoryVos = productCategoryService.queryList(new ProductCategoryBo());
|
|
|
+ return BeanUtil.copyToList(productCategoryVos, ProductCategoryRemoteVo.class);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public StocksResultDto queryProductStock(Map<String, Integer> goods, String areaId) {
|
|
|
+ List<String> goodsIds = goods.keySet().stream()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<ProductPriceInventory> productPriceInventories= productPriceInventoryService.queryProductStock(goodsIds);
|
|
|
+
|
|
|
+ StocksResultDto stocksResultDto = new StocksResultDto();
|
|
|
+ productPriceInventories.forEach(productPriceInventory -> {
|
|
|
+ StocksResult stocksResult= new StocksResult();
|
|
|
+ stocksResult.setGoodsId(productPriceInventory.getProductId().toString());
|
|
|
+ stocksResult.setAreaId(areaId);
|
|
|
+ stocksResult.setStockState("1");
|
|
|
+ stocksResult.setStockStateDesc("有货");
|
|
|
+
|
|
|
+ //TODO 支持无库存下单商品返回(-999)
|
|
|
+ //当值为-1时,为未查询到。
|
|
|
+ //stockState=1或stockState=2时,入参goodsNum<50,该值为实际库存。
|
|
|
+ //入参50<=goodsNum<=100时,该值为-1。
|
|
|
+ //入参goodsNum>100,该值等于goodsNum。(这种情况并未返回真实库存)
|
|
|
+ long nowInventory = productPriceInventory.getNowInventory()+productPriceInventory.getVirtualInventory();
|
|
|
+ Integer goodsNum = goods.get(productPriceInventory.getProductId().toString());
|
|
|
+ if (goodsNum<50){
|
|
|
+ stocksResult.setRemainNum((int)nowInventory);
|
|
|
+ }else if(goodsNum<=100){
|
|
|
+ stocksResult.setRemainNum(-1);
|
|
|
+ }else if (goodsNum>100){
|
|
|
+ stocksResult.setRemainNum(goodsNum);
|
|
|
+ }
|
|
|
+ //DateTime now = DateTime.now();
|
|
|
+ //DateTime after15Days = DateUtil.offsetDay(now, 15);
|
|
|
+ //stocksResult.setEstimatedShippingTime("");
|
|
|
+ if (stocksResultDto.getStocks() == null) {
|
|
|
+ stocksResultDto.setStocks(new ArrayList<>());
|
|
|
+ }
|
|
|
+ stocksResultDto.getStocks().add(stocksResult);
|
|
|
+ });
|
|
|
+
|
|
|
+ return stocksResultDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Prices> queryProductPrice(List<String> goodsIds) {
|
|
|
+ List<ProductPriceInventory> productPriceInventories= productPriceInventoryService.queryProductPrice(goodsIds);
|
|
|
+ return productPriceInventories.stream().map(productPriceInventory -> {
|
|
|
+ Prices prices = new Prices();
|
|
|
+ prices.setGoodsId(productPriceInventory.getProductId().toString());
|
|
|
+ prices.setPrice(productPriceInventory.getMemberPrice());
|
|
|
+ prices.setDsPrice(productPriceInventory.getMarketPrice());
|
|
|
+ prices.setTaxFreePrice(null);
|
|
|
+ prices.setTax(productPriceInventory.getTaxRate());
|
|
|
+ prices.setTaxCode(null);
|
|
|
+ return prices;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|