Procházet zdrojové kódy

店铺资质过期时,购买药品时,订单拦截

yjwang před 1 týdnem
rodič
revize
8e22f07e53

+ 1 - 1
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreScrmController.java

@@ -82,7 +82,7 @@ public class FsStoreScrmController extends BaseController
     public AjaxResult getInfo(@PathVariable("storeId") Long storeId)
     {
         FsStoreScrm fsStore = fsStoreService.selectFsStoreByStoreId(storeId);
-        fsStore.setPhone(ParseUtils.parsePhone(fsStore.getPhone()));
+//        fsStore.setPhone(ParseUtils.parsePhone(fsStore.getPhone()));
         return AjaxResult.success(fsStore);
     }
 

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/config/MedicalMallConfig.java

@@ -24,4 +24,7 @@ public class MedicalMallConfig {
     // 资源配置
     private boolean isResource;
     private boolean isStores;
+
+    //是否三方入驻
+    private boolean isThreePartyEntry;
 }

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

@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 店铺管理Mapper接口
@@ -129,4 +130,9 @@ public interface FsStoreScrmMapper
      * @param storeIds 店铺id
      * **/
     void batchUpdateStoreStatusById(@Param("storeIds") List<Long> storeIds);
+
+    /**
+     * 通过商品ID获取关联店偶
+     * **/
+    List<FsStoreScrm> getStoreInfoByproductId(@Param("productIds") Set<Long> productIds);
 }

+ 32 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -58,6 +58,7 @@ import com.fs.his.utils.ConfigUtil;
 import com.fs.his.vo.FsInquiryOrderVO;
 import com.fs.his.vo.FsStoreOrderExcelVO;
 import com.fs.hisStore.config.FsErpConfig;
+import com.fs.hisStore.config.MedicalMallConfig;
 import com.fs.hisStore.dto.*;
 import com.fs.hisStore.mapper.*;
 import com.fs.hisStore.param.*;
@@ -78,6 +79,7 @@ import com.fs.hisStore.constants.StoreConstants;
 import com.fs.hisStore.domain.*;
 import com.fs.hisStore.enums.*;
 import com.fs.hisStore.service.*;
+import com.fs.system.domain.SysConfig;
 import com.fs.system.service.ISysConfigService;
 import com.fs.ybPay.domain.RefundResult;
 import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
@@ -111,6 +113,7 @@ import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
@@ -591,6 +594,27 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         //计算金额
         FsStoreOrderComputeDTO dto = this.computedOrder(userId, computedParam);
         String cartIds = redisCache.getCacheObject("orderKey:" + param.getOrderKey());
+
+        SysConfig mallconfig = configService.selectConfigByConfigKey("medicalMall.func.switch");
+        MedicalMallConfig medicalMallConfig = JSON.parseObject(mallconfig.getConfigValue(), MedicalMallConfig.class);
+
+        if(medicalMallConfig != null && medicalMallConfig.isThreePartyEntry()){
+            List<FsStoreCartQueryVO> cartQueryVOList=cartMapper.selectFsStoreCartListByIds(cartIds);
+            Set<Long> productIds = cartQueryVOList.stream().map(FsStoreCartQueryVO::getProductId).collect(Collectors.toSet());
+            // 获取店铺数据信息
+            List<FsStoreScrm> storeScrmList = fsStoreMapper.getStoreInfoByproductId(productIds);
+            if (!storeScrmList.isEmpty()) {
+//                LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
+                FsStoreScrm expiredStore = storeScrmList.stream()
+//                        .filter(store -> isStoreQualificationExpired(store, today))
+                        .findFirst()
+                        .orElse(null);
+                if (expiredStore != null) {
+                    return R.error(expiredStore.getStoreName() + "资质过期无法购买!");
+                }
+            }
+        }
+
 //        Integer totalNum = 0;
         BigDecimal integral = BigDecimal.ZERO;
         if (cartIds != null) {
@@ -3701,4 +3725,12 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         map.put("DBL", "德邦");
         return map;
     }
+
+    // 抽取的资质检查方法
+    private boolean isStoreQualificationExpired(FsStoreScrm store, LocalDate today) {
+        return store.getBusinessLicenseExpireEnd().isBefore(today) ||
+                store.getDrugLicenseExpiryEnd().isBefore(today) ||
+                store.getMedicalDevice2ExpiryEnd().isBefore(today) ||
+                store.getMedicalLicenseExpiryEnd().isBefore(today);
+    }
 }

+ 19 - 0
fs-service/src/main/resources/mapper/hisStore/FsStoreScrmMapper.xml

@@ -435,4 +435,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{item}
         </foreach>
     </update>
+
+    <select id="getStoreInfoByproductId" resultType="com.fs.hisStore.domain.FsStoreScrm">
+        SELECT
+            ss.store_name,
+            ss.business_license_expire_end,
+            ss.drug_license_expiry_end,
+            ss.medical_device2_expiry_end,
+            ss.medical_license_expiry_end,
+            ss.`status`
+        FROM
+            fs_store_scrm ss
+                INNER JOIN fs_store_product_scrm sps ON ss.store_id = sps.store_id
+        WHERE ss.`status` != 1 AND ss.is_business_license_permanent != 1
+	    AND sps.product_id IN
+    <foreach collection="productIds" index="index" item="item" open="(" separator="," close=")">
+        #{item}
+    </foreach>
+        GROUP BY ss.store_id
+    </select>
 </mapper>

+ 15 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/ProductScrmController.java

@@ -1,12 +1,14 @@
 package com.fs.app.controller.store;
 
 
+import com.alibaba.fastjson.JSON;
 import com.fs.app.annotation.Login;
 import com.fs.app.controller.AppBaseController;
 import com.fs.common.core.domain.R;
 import com.fs.common.param.BaseQueryParam;
 import com.fs.common.utils.StringUtils;
 import com.fs.erp.service.IErpGoodsService;
+import com.fs.hisStore.config.MedicalMallConfig;
 import com.fs.hisStore.domain.*;
 import com.fs.hisStore.param.*;
 import com.fs.hisStore.service.*;
@@ -14,6 +16,8 @@ import com.fs.hisStore.vo.FsStoreCartVO;
 import com.fs.hisStore.vo.FsStoreProductAttrValueQueryVO;
 import com.fs.hisStore.vo.FsStoreProductListQueryVO;
 import com.fs.hisStore.vo.FsStoreProductQueryVO;
+import com.fs.system.domain.SysConfig;
+import com.fs.system.service.ISysConfigService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -54,6 +58,10 @@ public class ProductScrmController extends AppBaseController {
 
     @Autowired
     private IFsStoreScrmService storeScrmService;
+
+    @Autowired
+    private ISysConfigService configService;
+
     /**
      * 获取用户信息
      * @param storeId
@@ -108,6 +116,13 @@ public class ProductScrmController extends AppBaseController {
         FsStoreScrm fsStoreScrm = null;
         if(StringUtils.isNotEmpty(product.getStoreId())){
             fsStoreScrm = storeScrmService.selectFsStoreByStoreId(Long.parseLong(product.getStoreId()));
+            //根据按判断校验条件
+            SysConfig mallconfig = configService.selectConfigByConfigKey("medicalMall.func.switch");
+            MedicalMallConfig medicalMallConfig = JSON.parseObject(mallconfig.getConfigValue(), MedicalMallConfig.class);
+
+            if(medicalMallConfig != null && medicalMallConfig.isThreePartyEntry() && fsStoreScrm.getStatus() != 1){
+                return R.error("当前商品店铺"+fsStoreScrm.getStoreName()+"已停用!");
+            }
         }
         List<FsStoreProductAttrScrm> productAttr=attrService.selectFsStoreProductAttrByProductId(product.getProductId());
         List<FsStoreProductAttrValueScrm> productValues=attrValueService.selectFsStoreProductAttrValueByProductId(product.getProductId());