Explorar o código

修改仓库代码为实时获取

xdd hai 1 mes
pai
achega
65f070bff7

+ 8 - 3
fs-admin/src/main/java/com/fs/store/controller/FsStoreHealthOrderController.java

@@ -14,7 +14,10 @@ import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.company.service.ICompanyMoneyLogsService;
 import com.fs.erp.service.IErpOrderService;
 import com.fs.store.cache.IFsStoreProductCacheService;
+import com.fs.store.cache.IFsWarehouseCacheService;
+import com.fs.store.cache.impl.FsWarehouseCacheServiceImpl;
 import com.fs.store.domain.FsStoreProduct;
+import com.fs.store.domain.FsWarehouses;
 import com.fs.store.dto.StoreOrderProductDTO;
 import com.fs.store.param.FsStoreOrderParam;
 import com.fs.store.service.*;
@@ -55,6 +58,8 @@ public class FsStoreHealthOrderController extends BaseController {
 
     @Autowired
     private IFsStoreProductCacheService fsStoreProductCacheService;
+    @Autowired
+    private FsWarehouseCacheServiceImpl fsWarehouseCacheService;
 
     /**
      * 查询健康商城订单列表
@@ -164,9 +169,9 @@ public class FsStoreHealthOrderController extends BaseController {
             for (FsStoreOrderItemExportVO vo : list) {
                 // 设置仓库名称
                 if(ObjectUtil.isNotNull(vo.getProductId())){
-                    FsStoreProduct fsStoreProduct = fsStoreProductCacheService.selectFsStoreProductById(vo.getProductId());
-                    if(ObjectUtil.isNotNull(fsStoreProduct)){
-                        vo.setWarehouseCode(fsStoreProduct.getWarehouseCode());
+                    String warehouseCode = fsStoreProductCacheService.getWarehouseCodeByProductId(vo.getProductId());
+                    if(StringUtils.isNotBlank(warehouseCode)){
+                        vo.setWarehouseCode(warehouseCode);
                     }
                 }
                 if (vo.getUserPhone() != null) {

+ 3 - 4
fs-admin/src/main/java/com/fs/store/controller/FsStoreOrderController.java

@@ -307,10 +307,9 @@ public class FsStoreOrderController extends BaseController {
         List<FsStoreOrderItem> items = orderItemService.selectFsStoreOrderItemList(itemMap);
         for (FsStoreOrderItem item : items) {
             if(ObjectUtil.isNotNull(item.getProductId())){
-                FsStoreProduct fsStoreProduct =
-                        fsStoreProductCacheService.selectFsStoreProductById(item.getProductId());
-                if(ObjectUtil.isNotNull(fsStoreProduct)){
-                    item.setWarehouseCode(fsStoreProduct.getWarehouseCode());
+                String warehouseCode = fsStoreProductCacheService.getWarehouseCodeByProductId(item.getProductId());
+                if(StringUtils.isNotBlank(warehouseCode)){
+                    item.setWarehouseCode(warehouseCode);
                 }
             }
         }

+ 11 - 1
fs-admin/src/main/java/com/fs/store/controller/FsStoreProductPackageController.java

@@ -5,6 +5,8 @@ import java.util.List;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
+import com.fs.store.cache.IFsStoreProductCacheService;
+import com.fs.store.cache.impl.IFsStoreProductCacheServiceImpl;
 import com.fs.store.domain.FsStoreProduct;
 import com.fs.store.domain.FsStoreProductAttrValue;
 import com.fs.store.dto.StoreOrderProductDTO;
@@ -15,6 +17,7 @@ import com.fs.store.service.IFsStoreProductAttrValueService;
 import com.fs.store.service.IFsStoreProductService;
 import com.fs.store.vo.FsStoreProductPacketExportVO;
 import com.fs.store.vo.FsStoreProductPacketVO;
+import com.hc.openapi.tool.util.StringUtils;
 import org.springframework.beans.BeanUtils;
 
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -52,6 +55,9 @@ public class FsStoreProductPackageController extends BaseController
     private IFsStoreProductAttrValueService attrValueService;
     @Autowired
     private IFsStoreProductService storeProductService;
+    @Autowired
+    private IFsStoreProductCacheServiceImpl fsStoreProductCacheService;
+
     /**
      * 查询商品组合套餐列表
      */
@@ -132,7 +138,11 @@ public class FsStoreProductPackageController extends BaseController
                     productDTO.setSku(attrValue.getSku());
                     productDTO.setImage(attrValue.getImage());
                     productDTO.setProductName(product.getProductName());
-                    productDTO.setProdWareHouseCode(product.getWarehouseCode());
+
+                    String warehouseCode = fsStoreProductCacheService.getWarehouseCodeByProductId(attrValue.getProductId());
+                    if(StringUtils.isNotBlank(warehouseCode)){
+                        productDTO.setProdWareHouseCode(warehouseCode);
+                    }
                     productList.add(productDTO);
                 }
             }

+ 7 - 0
fs-service-system/src/main/java/com/fs/store/cache/IFsStoreProductCacheService.java

@@ -11,4 +11,11 @@ public interface IFsStoreProductCacheService {
      */
     public FsStoreProduct selectFsStoreProductById(Long productId);
 
+    /**
+     * 获取仓库编码
+     *
+     * @param productId 商品ID
+     * @return 仓库编码
+     */
+    String getWarehouseCodeByProductId(Long productId);
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/store/cache/IFsWarehouseCacheService.java

@@ -0,0 +1,7 @@
+package com.fs.store.cache;
+
+import com.fs.store.domain.FsWarehouses;
+
+public interface IFsWarehouseCacheService {
+    FsWarehouses selectFsWarehousesById(Long id);
+}

+ 36 - 0
fs-service-system/src/main/java/com/fs/store/cache/impl/FsWarehouseCacheServiceImpl.java

@@ -0,0 +1,36 @@
+package com.fs.store.cache.impl;
+
+import com.fs.store.cache.IFsStoreProductCacheService;
+import com.fs.store.cache.IFsWarehouseCacheService;
+import com.fs.store.domain.FsStoreProduct;
+import com.fs.store.domain.FsWarehouses;
+import com.fs.store.service.IFsWarehousesService;
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class FsWarehouseCacheServiceImpl implements IFsWarehouseCacheService {
+    private final IFsWarehousesService fsWarehousesService;
+    /**
+     * 使用Caffeine本地缓存
+     * maximumSize: 最大缓存条数
+     * expireAfterWrite: 写入后多久过期(分钟)
+     */
+    private static final Cache<Long, FsWarehouses> CACHE = Caffeine.newBuilder()
+            .maximumSize(1000)
+            .expireAfterWrite(1, TimeUnit.MINUTES)
+            .build();
+
+
+    @Override
+    public FsWarehouses selectFsWarehousesById(Long id) {
+        return CACHE.get(id, e -> fsWarehousesService.selectFsWarehousesById(id));
+    }
+}

+ 26 - 0
fs-service-system/src/main/java/com/fs/store/cache/impl/IFsStoreProductCacheServiceImpl.java

@@ -1,7 +1,10 @@
 package com.fs.store.cache.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.fs.store.cache.IFsStoreProductCacheService;
+import com.fs.store.cache.IFsWarehouseCacheService;
 import com.fs.store.domain.FsStoreProduct;
+import com.fs.store.domain.FsWarehouses;
 import com.fs.store.service.IFsStoreProductService;
 import com.fs.system.cache.impl.SysDictDataCacheServiceImpl;
 import com.github.benmanes.caffeine.cache.Cache;
@@ -17,6 +20,7 @@ import java.util.concurrent.TimeUnit;
 @RequiredArgsConstructor
 public class IFsStoreProductCacheServiceImpl implements IFsStoreProductCacheService {
     private final IFsStoreProductService fsStoreProductService;
+    private final IFsWarehouseCacheService fsWarehouseCacheService;
     /**
      * 使用Caffeine本地缓存
      * maximumSize: 最大缓存条数
@@ -27,8 +31,30 @@ public class IFsStoreProductCacheServiceImpl implements IFsStoreProductCacheServ
             .expireAfterWrite(1, TimeUnit.MINUTES)
             .build();
 
+    private static final Cache<Long, String> WAREHOUSE_CACHE = Caffeine.newBuilder()
+            .maximumSize(1000)
+            .expireAfterWrite(1, TimeUnit.MINUTES)
+            .build();
+
     @Override
     public FsStoreProduct selectFsStoreProductById(Long productId) {
         return CACHE.get(productId, e -> fsStoreProductService.selectFsStoreProductById(productId));
     }
+
+    @Override
+    public String getWarehouseCodeByProductId(Long productId) {
+        return WAREHOUSE_CACHE.get(productId,e->{
+            FsStoreProduct fsStoreProduct = selectFsStoreProductById(productId);
+            if(ObjectUtil.isNotNull(fsStoreProduct)){
+                if(ObjectUtil.isNotNull(fsStoreProduct.getWarehouseId())){
+                    FsWarehouses fsWarehouses = fsWarehouseCacheService.selectFsWarehousesById(fsStoreProduct.getWarehouseId());
+                    if(ObjectUtil.isNotNull(fsWarehouses)){
+                        return fsWarehouses.getWarehouseCode();
+                    }
+                }
+            }
+            return null;
+        });
+
+    }
 }

+ 4 - 339
fs-service-system/src/main/java/com/fs/store/domain/FsStoreProduct.java

@@ -3,6 +3,8 @@ package com.fs.store.domain;
 import java.math.BigDecimal;
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * 商品对象 fs_store_product
@@ -10,6 +12,8 @@ import com.fs.common.core.domain.BaseEntity;
  * @author fs
  * @date 2022-03-15
  */
+@EqualsAndHashCode(callSuper = true)
+@Data
 public class FsStoreProduct extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -180,343 +184,4 @@ public class FsStoreProduct extends BaseEntity
     @Excel(name = "仓库代码")
     private String warehouseCode;
 
-    public Long getWarehouseId() {
-        return warehouseId;
-    }
-
-    public void setWarehouseId(Long warehouseId) {
-        this.warehouseId = warehouseId;
-    }
-
-    public String getWarehouseCode() {
-        return warehouseCode;
-    }
-
-    public void setWarehouseCode(String warehouseCode) {
-        this.warehouseCode = warehouseCode;
-    }
-
-    public Integer getTuiCateId() {
-        return tuiCateId;
-    }
-
-    public void setTuiCateId(Integer tuiCateId) {
-        this.tuiCateId = tuiCateId;
-    }
-
-    public Integer getIsDisplay() {
-        return isDisplay;
-    }
-
-    public void setIsDisplay(Integer isDisplay) {
-        this.isDisplay = isDisplay;
-    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getProductId() {
-        return productId;
-    }
-
-    public void setProductId(Long productId) {
-        this.productId = productId;
-    }
-
-    public String getImage() {
-        return image;
-    }
-
-    public void setImage(String image) {
-        this.image = image;
-    }
-
-    public String getSliderImage() {
-        return sliderImage;
-    }
-
-    public void setSliderImage(String sliderImage) {
-        this.sliderImage = sliderImage;
-    }
-
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    public String getProductInfo() {
-        return productInfo;
-    }
-
-    public void setProductInfo(String productInfo) {
-        this.productInfo = productInfo;
-    }
-
-    public String getKeyword() {
-        return keyword;
-    }
-
-    public void setKeyword(String keyword) {
-        this.keyword = keyword;
-    }
-
-    public String getBarCode() {
-        return barCode;
-    }
-
-    public void setBarCode(String barCode) {
-        this.barCode = barCode;
-    }
-
-    public Long getCateId() {
-        return cateId;
-    }
-
-    public void setCateId(Long cateId) {
-        this.cateId = cateId;
-    }
-
-    public BigDecimal getPrice() {
-        return price;
-    }
-
-    public void setPrice(BigDecimal price) {
-        this.price = price;
-    }
-
-    public BigDecimal getVipPrice() {
-        return vipPrice;
-    }
-
-    public void setVipPrice(BigDecimal vipPrice) {
-        this.vipPrice = vipPrice;
-    }
-
-    public BigDecimal getOtPrice() {
-        return otPrice;
-    }
-
-    public void setOtPrice(BigDecimal otPrice) {
-        this.otPrice = otPrice;
-    }
-
-    public BigDecimal getPostage() {
-        return postage;
-    }
-
-    public void setPostage(BigDecimal postage) {
-        this.postage = postage;
-    }
-
-    public String getUnitName() {
-        return unitName;
-    }
-
-    public void setUnitName(String unitName) {
-        this.unitName = unitName;
-    }
-
-    public Long getSort() {
-        return sort;
-    }
-
-    public void setSort(Long sort) {
-        this.sort = sort;
-    }
-
-    public Long getSales() {
-        return sales;
-    }
-
-    public void setSales(Long sales) {
-        this.sales = sales;
-    }
-
-    public Long getStock() {
-        return stock;
-    }
-
-    public void setStock(Long stock) {
-        this.stock = stock;
-    }
-
-    public Integer getIsShow() {
-        return isShow;
-    }
-
-    public void setIsShow(Integer isShow) {
-        this.isShow = isShow;
-    }
-
-    public Integer getIsHot() {
-        return isHot;
-    }
-
-    public void setIsHot(Integer isHot) {
-        this.isHot = isHot;
-    }
-
-    public Integer getIsBenefit() {
-        return isBenefit;
-    }
-
-    public void setIsBenefit(Integer isBenefit) {
-        this.isBenefit = isBenefit;
-    }
-
-    public Integer getIsBest() {
-        return isBest;
-    }
-
-    public void setIsBest(Integer isBest) {
-        this.isBest = isBest;
-    }
-
-    public Integer getIsNew() {
-        return isNew;
-    }
-
-    public void setIsNew(Integer isNew) {
-        this.isNew = isNew;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public Integer getIsPostage() {
-        return isPostage;
-    }
-
-    public void setIsPostage(Integer isPostage) {
-        this.isPostage = isPostage;
-    }
-
-    public Integer getIsDel() {
-        return isDel;
-    }
-
-    public void setIsDel(Integer isDel) {
-        this.isDel = isDel;
-    }
-
-    public BigDecimal getGiveIntegral() {
-        return giveIntegral;
-    }
-
-    public void setGiveIntegral(BigDecimal giveIntegral) {
-        this.giveIntegral = giveIntegral;
-    }
-
-    public BigDecimal getCost() {
-        return cost;
-    }
-
-    public void setCost(BigDecimal cost) {
-        this.cost = cost;
-    }
-
-    public Integer getIsGood() {
-        return isGood;
-    }
-
-    public void setIsGood(Integer isGood) {
-        this.isGood = isGood;
-    }
-
-    public Long getBrowse() {
-        return browse;
-    }
-
-    public void setBrowse(Long browse) {
-        this.browse = browse;
-    }
-
-    public String getCodePath() {
-        return codePath;
-    }
-
-    public void setCodePath(String codePath) {
-        this.codePath = codePath;
-    }
-
-    public Integer getTempId() {
-        return tempId;
-    }
-
-    public void setTempId(Integer tempId) {
-        this.tempId = tempId;
-    }
-
-    public Integer getSpecType() {
-        return specType;
-    }
-
-    public void setSpecType(Integer specType) {
-        this.specType = specType;
-    }
-
-    public Integer getIsIntegral() {
-        return isIntegral;
-    }
-
-    public void setIsIntegral(Integer isIntegral) {
-        this.isIntegral = isIntegral;
-    }
-
-    public Long getIntegral() {
-        return integral;
-    }
-
-    public void setIntegral(Long integral) {
-        this.integral = integral;
-    }
-
-    public Integer getProductType() {
-        return productType;
-    }
-
-    public void setProductType(Integer productType) {
-        this.productType = productType;
-    }
-
-    public String getPrescribeCode() {
-        return prescribeCode;
-    }
-
-    public void setPrescribeCode(String prescribeCode) {
-        this.prescribeCode = prescribeCode;
-    }
-
-    public String getPrescribeSpec() {
-        return prescribeSpec;
-    }
-
-    public void setPrescribeSpec(String prescribeSpec) {
-        this.prescribeSpec = prescribeSpec;
-    }
-
-    public String getPrescribeFactory() {
-        return prescribeFactory;
-    }
-
-    public void setPrescribeFactory(String prescribeFactory) {
-        this.prescribeFactory = prescribeFactory;
-    }
-
-    public String getPrescribeName() {
-        return prescribeName;
-    }
-
-    public void setPrescribeName(String prescribeName) {
-        this.prescribeName = prescribeName;
-    }
 }

+ 11 - 7
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -53,6 +53,7 @@ import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.pay.pay.domain.RefundResult;
 import com.fs.pay.pay.service.PayService;
+import com.fs.store.cache.impl.IFsStoreProductCacheServiceImpl;
 import com.fs.store.config.StoreConfig;
 import com.fs.store.config.StoreIntegralConfig;
 import com.fs.store.constants.StoreConstants;
@@ -201,6 +202,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
     @Autowired
     private IFsStoreProductPackageService fsStoreProductPackageService;
+    @Autowired
+    private IFsStoreProductCacheServiceImpl fsStoreProductCacheService;
+
     /**
      * 查询订单
      *
@@ -1729,9 +1733,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                             item.setQty(dto.getCount()*cartDTO.getNum());
                             item.setRefund(0);
                             // 查询仓库代码
-                            FsStoreProduct fsStoreProduct = productService.selectFsStoreProductById(dto.getProductId());
-                            if(ObjectUtil.isNotNull(fsStoreProduct)){
-                                item.setWarehouseCode(fsStoreProduct.getWarehouseCode());
+                            String warehouseCode = fsStoreProductCacheService.getWarehouseCodeByProductId(dto.getProductId());
+                            if(StringUtils.isNotBlank(warehouseCode)){
+                                item.setWarehouseCode(warehouseCode);
                             }
                             details.add(item);
                         }
@@ -1808,12 +1812,12 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             FsStoreProductAttrValue attrValue=attrValueService.selectFsStoreProductAttrValueById(id);
             if(attrValue!=null) {
                 // 根据产品id找仓库id
-                FsStoreProduct product = storeProductService.selectFsStoreProductById(attrValue.getProductId());
-                if(ObjectUtil.isNull(product)){
-                    logger.error("套餐商品id找不到! 商品id:{} 订单id:{}", product.getProductId(), orderId);
+                String warehouseCode = fsStoreProductCacheService.getWarehouseCodeByProductId(attrValue.getProductId());
+                if(StringUtils.isBlank(warehouseCode)){
+                    logger.error("套餐商品id找不到! 商品id:{} 订单id:{}", attrValue.getProductId(), orderId);
                     return;
                 }
-                erpOrder.setWarehouse_code(product.getWarehouseCode());
+                erpOrder.setWarehouse_code(warehouseCode);
             }
 
         }

+ 5 - 3
fs-user-app/src/main/java/com/fs/app/controller/StoreOrderController.java

@@ -189,10 +189,12 @@ public class StoreOrderController extends  AppBaseController {
     @ApiOperation("获取订单")
     @GetMapping("/getStoreOrderById")
     public R getStoreOrderById(@RequestParam("orderId") Long orderId, HttpServletRequest request){
+        logger.info("开始处理获取订单请求, 订单ID: {}", orderId);
+
         FsStoreOrder order=orderService.selectFsStoreOrderById(orderId);
-          if(order.getUserId()-Long.parseLong(getUserId())!=0){
-              return R.error("非法操作");
-          }
+        if(ObjectUtil.isNull(order)){
+            return R.error("订单不存在");
+        }
         order.setUserPhone(ParseUtils.parsePhone(order.getUserPhone()));
         order.setUserAddress(ParseUtils.parseIdCard(order.getUserAddress()));