Explorar o código

查询和限制接口

yuhongqi hai 5 días
pai
achega
67a56cabb4

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -148,7 +148,7 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
     private static final String SHORT_LINK_PREFIX = "/courseH5/pages/course/learning?s=";
     private static final String SHORT_LINK_PREFIX = "/courseH5/pages/course/learning?s=";
     // 排除看课数量限制的公司集合
     // 排除看课数量限制的公司集合
     private static final Set<String> EXCLUDE_PROJECTS = new HashSet<>(Arrays.asList(
     private static final Set<String> EXCLUDE_PROJECTS = new HashSet<>(Arrays.asList(
-            "福本源", "宽益堂", "叮当国医", "易行健","河山医院", "鸿森堂"
+            "福本源", "宽益堂", "叮当国医", "易行健","河山医院", "鸿森堂", "北京卓美"
     ));
     ));
     @Autowired
     @Autowired
     ICompanyService companyService;
     ICompanyService companyService;

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsCityScrmMapper.java

@@ -73,4 +73,7 @@ public interface FsCityScrmMapper
 
 
     @Select("select city_id from fs_city where city_name = #{name} limit 1")
     @Select("select city_id from fs_city where city_name = #{name} limit 1")
     String selectCityIdByName(@Param("name") String name);
     String selectCityIdByName(@Param("name") String name);
+
+    @Select("select id, city_id, level, parent_id, lng, lat from fs_city where city_id = #{cityId} limit 1")
+    FsCityScrm selectFsCityByCityId(@Param("cityId") String cityId);
 }
 }

+ 6 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsCityScrmService.java

@@ -64,4 +64,10 @@ public interface IFsCityScrmService
     List<FsCityScrm> selectFsCitys();
     List<FsCityScrm> selectFsCitys();
 
 
     List<CitysAreaVO> getCitysArea();
     List<CitysAreaVO> getCitysArea();
+
+    /**
+     * 解析运费匹配用的 cityId 列表:自身 + 各级上级 + 默认全国(0)。
+     * 用户地址常为区县级(如 110105000000),运费模板可能配置为市级(如 110000000000)。
+     */
+    List<String> resolveShippingMatchCityIds(String cityId);
 }
 }

+ 26 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsCityScrmServiceImpl.java

@@ -1,8 +1,11 @@
 package com.fs.hisStore.service.impl;
 package com.fs.hisStore.service.impl;
 
 
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.List;
 
 
 import com.fs.his.vo.CitysAreaVO;
 import com.fs.his.vo.CitysAreaVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import com.fs.hisStore.mapper.FsCityScrmMapper;
 import com.fs.hisStore.mapper.FsCityScrmMapper;
@@ -103,4 +106,27 @@ public class FsCityScrmServiceImpl implements IFsCityScrmService
     public List<CitysAreaVO> getCitysArea() {
     public List<CitysAreaVO> getCitysArea() {
         return fsCityMapper.getCitysArea();
         return fsCityMapper.getCitysArea();
     }
     }
+
+    @Override
+    public List<String> resolveShippingMatchCityIds(String cityId) {
+        LinkedHashSet<String> ids = new LinkedHashSet<>();
+        if (StringUtils.isBlank(cityId)) {
+            ids.add("0");
+            return new ArrayList<>(ids);
+        }
+        String current = cityId.trim();
+        for (int depth = 0; depth < 10; depth++) {
+            if (StringUtils.isBlank(current) || "0".equals(current) || ids.contains(current)) {
+                break;
+            }
+            ids.add(current);
+            FsCityScrm city = fsCityMapper.selectFsCityByCityId(current);
+            if (city == null || StringUtils.isBlank(city.getParentId()) || "0".equals(city.getParentId())) {
+                break;
+            }
+            current = city.getParentId();
+        }
+        ids.add("0");
+        return new ArrayList<>(ids);
+    }
 }
 }

+ 4 - 3
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -293,6 +293,9 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     @Autowired
     @Autowired
     private IFsShippingTemplatesRegionScrmService shippingTemplatesRegionService;
     private IFsShippingTemplatesRegionScrmService shippingTemplatesRegionService;
 
 
+    @Autowired
+    private IFsCityScrmService fsCityService;
+
     @Autowired
     @Autowired
     private IFsShippingTemplatesFreeScrmService shippingTemplatesFreeService;
     private IFsShippingTemplatesFreeScrmService shippingTemplatesFreeService;
     @Autowired
     @Autowired
@@ -4438,9 +4441,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 return storePostage;
                 return storePostage;
             }
             }
             String cityId = userAddress.getCityId();
             String cityId = userAddress.getCityId();
-            List<String> citys = new ArrayList<>();
-            citys.add(cityId);
-            citys.add("0");//城市包括默认
+            List<String> citys = fsCityService.resolveShippingMatchCityIds(cityId);
             List<Long> tempIds = cartInfo
             List<Long> tempIds = cartInfo
                     .stream()
                     .stream()
                     .map(FsStoreCartQueryVO::getTempId)
                     .map(FsStoreCartQueryVO::getTempId)

+ 1 - 4
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java

@@ -23,10 +23,7 @@ import com.fs.common.annotation.DataScope;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.CustomException;
 import com.fs.common.exception.CustomException;
-import com.fs.common.utils.CloudHostUtils;
-import com.fs.common.utils.DateUtils;
-import com.fs.common.utils.ServletUtils;
-import com.fs.common.utils.StringUtils;
+import com.fs.common.utils.*;
 import com.fs.common.utils.ip.IpUtils;
 import com.fs.common.utils.ip.IpUtils;
 import com.fs.company.domain.Company;
 import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.domain.CompanyUser;

+ 5 - 8
fs-service/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -268,6 +268,8 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
     @Autowired
     @Autowired
     private IFsShippingTemplatesRegionScrmService shippingTemplatesRegionService;
     private IFsShippingTemplatesRegionScrmService shippingTemplatesRegionService;
     @Autowired
     @Autowired
+    private IFsCityScrmService fsCityService;
+    @Autowired
     private IFsShippingTemplatesFreeScrmService shippingTemplatesFreeService;
     private IFsShippingTemplatesFreeScrmService shippingTemplatesFreeService;
 
 
     @Autowired
     @Autowired
@@ -2811,17 +2813,14 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         if (ObjectUtil.isNull(fsStoreProduct.getTempId())) {
         if (ObjectUtil.isNull(fsStoreProduct.getTempId())) {
             return storePostage;
             return storePostage;
         }
         }
-        List<Long> citys = new ArrayList<>();
-        citys.add(cityId);
-        citys.add(0l);
+        List<String> citys = fsCityService.resolveShippingMatchCityIds(String.valueOf(cityId));
         String ids = String.valueOf(fsStoreProduct.getTempId());
         String ids = String.valueOf(fsStoreProduct.getTempId());
         //如果没有配置运费 直接返回
         //如果没有配置运费 直接返回
         if (StringUtils.isBlank(ids)) {
         if (StringUtils.isBlank(ids)) {
             return storePostage;
             return storePostage;
         }
         }
         List<FsShippingTemplatesScrm> shippingTemplatesList = shippingTemplatesService.selectFsShippingTemplatesByIds(ids);
         List<FsShippingTemplatesScrm> shippingTemplatesList = shippingTemplatesService.selectFsShippingTemplatesByIds(ids);
-        String cityIds = String.join(",", citys.stream()
-                .map(String::valueOf).collect(Collectors.toList()));
+        String cityIds = String.join(",", citys);
         List<FsShippingTemplatesRegionScrm> shippingTemplatesRegionList = shippingTemplatesRegionService.selectFsShippingTemplatesRegionListByTempIdsAndCityIds(ids, cityIds);
         List<FsShippingTemplatesRegionScrm> shippingTemplatesRegionList = shippingTemplatesRegionService.selectFsShippingTemplatesRegionListByTempIdsAndCityIds(ids, cityIds);
         // 有运费模板,但当前城市没有匹配的区域
         // 有运费模板,但当前城市没有匹配的区域
         if (shippingTemplatesList != null && !shippingTemplatesList.isEmpty()
         if (shippingTemplatesList != null && !shippingTemplatesList.isEmpty()
@@ -4703,9 +4702,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         BigDecimal storePostage = BigDecimal.ZERO;
         BigDecimal storePostage = BigDecimal.ZERO;
         BigDecimal badCode = BigDecimal.valueOf(-1);
         BigDecimal badCode = BigDecimal.valueOf(-1);
         if (liveOrder.getUserAddress() == null || liveOrder.getCityId() == null) return storePostage;
         if (liveOrder.getUserAddress() == null || liveOrder.getCityId() == null) return storePostage;
-        List<Long> citys = new ArrayList<>();
-        citys.add(liveOrder.getCityId());
-        citys.add(0l);
+        List<String> citys = fsCityService.resolveShippingMatchCityIds(String.valueOf(liveOrder.getCityId()));
         FsStoreProductScrm fsStoreProduct = fsStoreProductService.selectFsStoreProductById(liveOrder.getProductId());
         FsStoreProductScrm fsStoreProduct = fsStoreProductService.selectFsStoreProductById(liveOrder.getProductId());
         if (fsStoreProduct == null || fsStoreProduct.getTempId() == null) return storePostage;
         if (fsStoreProduct == null || fsStoreProduct.getTempId() == null) return storePostage;
         String ids = String.valueOf(fsStoreProduct.getTempId());
         String ids = String.valueOf(fsStoreProduct.getTempId());