Переглянути джерело

1.益寿缘商城订单推送聚水潭判单手机号是否加密,修改推送业务 2.益寿缘互联网医院疗法制单其它套餐包分享重复使用业务 3.益寿缘商城制单重复使用业务 4.修复互联网医院订单获取物流信息错误问题

wjj 2 тижнів тому
батько
коміт
994f4ece6d

+ 13 - 4
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -849,11 +849,20 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
             userCoupon.setStatus(1);
             userCouponService.updateFsUserCoupon(userCoupon);
         }
+
         if (StringUtils.isNotEmpty(param.getCreatePackageOrderKey())) {
-            redisCache.deleteObject("createPackageOrderKey:" + param.getCreatePackageOrderKey());
-            redisCache.deleteObject("createPackageOrderPayType:" + param.getCreatePackageOrderKey());
-            redisCache.deleteObject("createPackageOrderAmount:" + param.getCreatePackageOrderKey());
-            redisCache.deleteObject("createPackageOrderMoney:" + param.getCreatePackageOrderKey());
+            FsPackage fsPackage = redisCache.getCacheObject("package:" + param.getCreatePackageOrderKey());
+            if (fsPackage == null) {
+                return R.error("套餐包数据异常");
+            }
+            //药品删除缓存 其它重复使用
+            boolean flag = fsPackage.getProductType() == 1 || fsPackage.getProductType() == 2;
+            if (flag) {
+                redisCache.deleteObject("createPackageOrderKey:" + param.getCreatePackageOrderKey());
+                redisCache.deleteObject("createPackageOrderPayType:" + param.getCreatePackageOrderKey());
+                redisCache.deleteObject("createPackageOrderAmount:" + param.getCreatePackageOrderKey());
+                redisCache.deleteObject("createPackageOrderMoney:" + param.getCreatePackageOrderKey());
+            }
         }
 
         return R.ok();

+ 11 - 6
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -118,8 +118,7 @@ import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static com.fs.his.utils.PhoneUtil.decryptPhone;
-import static com.fs.his.utils.PhoneUtil.encryptPhone;
+import static com.fs.his.utils.PhoneUtil.*;
 
 /**
  * 订单Service业务层处理
@@ -2113,13 +2112,13 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                 //大于100发发顺丰云配
                 if (order.getPayMoney().compareTo(new BigDecimal(100)) > 0) {
                     //发互联网医院SF.0235488558_241101
-                    FsExpress express = expressService.selectFsExpressByOmsCode("SF.0235488558_241101");
+                    FsExpress express = expressService.selectFsExpressByOmsCode("SF.13");
                     erpOrder.setExpress_code(express.getOmsCode());
                     order.setDeliveryName(express.getName());
                     order.setDeliveryCode(express.getCode());
                 } else {
                     //发ztpdd
-                    FsExpress express = expressService.selectFsExpressByOmsCode("CDYJFYD.400011111705_241230");
+                    FsExpress express = expressService.selectFsExpressByOmsCode("SF.13");
                     erpOrder.setExpress_code(express.getOmsCode());
                     order.setDeliveryName(express.getName());
                     order.setDeliveryCode(express.getCode());
@@ -2131,10 +2130,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
                     if (company != null && StringUtils.isNotEmpty(company.getOmsCode())) {
                         express = expressService.selectFsExpressByOmsCode(company.getOmsCode());
                     } else {
-                        express = expressService.selectFsExpressByOmsCode("SF.0235469535");
+                        express = expressService.selectFsExpressByOmsCode("SF.13");
                     }
                 } else {
-                    express = expressService.selectFsExpressByOmsCode("SF.0235469535");
+                    express = expressService.selectFsExpressByOmsCode("SF.13");
                 }
                 //物流代发互联网医院顺
                 erpOrder.setExpress_code(express.getOmsCode());
@@ -4308,4 +4307,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         return moneys;
     }
 
+//    public static void main(String[] args) {
+//        boolean likelyEncryptedByEntropy = isLikelyEncryptedByEntropy("xeE80LndJJEVSISg1XhuQQ==");
+//        System.out.println(likelyEncryptedByEntropy);
+//        String s = decryptPhone("xeE80LndJJEVSISg1XhuQQ==");
+//        System.out.println(s);
+//    }
 }

+ 38 - 0
fs-service/src/main/java/com/fs/his/utils/PhoneUtil.java

@@ -5,6 +5,8 @@ import com.fs.common.utils.ParseUtils;
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
 
 public class PhoneUtil {
 
@@ -77,4 +79,40 @@ public class PhoneUtil {
 
         return text;
     }
+
+    /**
+     * 计算字符串的香农熵
+     * 熵值高可能表示加密文本
+     */
+    public static double calculateShannonEntropy(String text) {
+        if (text == null || text.isEmpty()) {
+            return 0;
+        }
+
+        Map<Character, Integer> freqMap = new HashMap<>();
+        for (char c : text.toCharArray()) {
+            freqMap.put(c, freqMap.getOrDefault(c, 0) + 1);
+        }
+
+        double entropy = 0;
+        int length = text.length();
+
+        for (int count : freqMap.values()) {
+            double probability = (double) count / length;
+            entropy -= probability * (Math.log(probability) / Math.log(2));
+        }
+
+        return entropy;
+    }
+
+    /**
+     * 基于熵值判断是否为密文
+     */
+    public static boolean isLikelyEncryptedByEntropy(String text) {
+        double entropy = calculateShannonEntropy(text);
+
+        // 经验阈值:熵值高于3.5可能为密文
+        // 这个阈值可以根据实际数据调整
+        return entropy > 3.5;
+    }
 }

+ 27 - 9
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -137,7 +137,7 @@ import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
-import static com.fs.his.utils.PhoneUtil.decryptPhone;
+import static com.fs.his.utils.PhoneUtil.*;
 import static com.fs.hisStore.constants.StoreConstants.DELIVERY;
 
 /**
@@ -863,19 +863,27 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String payLimitTime = format.format(calendar.getTime());
             redisCache.setCacheObject("orderAmount:" + storeOrder.getId(), storeOrder.getPayMoney(), 24, TimeUnit.HOURS);//物流代收自定义金额
+
             //删除推荐订单KEY
             String createOrderKey = param.getCreateOrderKey();
-            if (StringUtils.isNotEmpty(createOrderKey)) {
-                if (config.getIsBrushOrders() == null || !(config.getIsBrushOrders() && param.getCompanyUserId() != null)) {//未开启刷单
-                    redisCache.deleteObject("createOrderKey:" + createOrderKey);
-                    redisCache.deleteObject("orderCarts:" + createOrderKey);
-                    redisCache.deleteObject("createOrderMoney:" + createOrderKey);
-                }
-
+            if ("益善缘".equals(cloudHostProper.getCompanyName())) {
                 //货到付款自定义金额 key改为id存储
                 BigDecimal amount = redisCache.getCacheObject("createOrderAmount:" + createOrderKey);
-                redisCache.deleteObject("createOrderAmount:" + createOrderKey);
+                //redisCache.deleteObject("createOrderAmount:" + createOrderKey);
                 redisCache.setCacheObject("orderAmount:" + storeOrder.getId(), amount, 24, TimeUnit.HOURS);//物流代收自定义金额
+            } else {
+                if (StringUtils.isNotEmpty(createOrderKey)) {
+                    if (config.getIsBrushOrders() == null || !(config.getIsBrushOrders() && param.getCompanyUserId() != null)) {//未开启刷单
+                        redisCache.deleteObject("createOrderKey:" + createOrderKey);
+                        redisCache.deleteObject("orderCarts:" + createOrderKey);
+                        redisCache.deleteObject("createOrderMoney:" + createOrderKey);
+                    }
+
+                    //货到付款自定义金额 key改为id存储
+                    BigDecimal amount = redisCache.getCacheObject("createOrderAmount:" + createOrderKey);
+                    redisCache.deleteObject("createOrderAmount:" + createOrderKey);
+                    redisCache.setCacheObject("orderAmount:" + storeOrder.getId(), amount, 24, TimeUnit.HOURS);//物流代收自定义金额
+                }
             }
             return R.ok().put("order", storeOrder).put("payLimitTime", payLimitTime);
         } else {
@@ -1909,6 +1917,16 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         erpOrder.setDetails(details);
         erpOrder.setReceiver_name(order.getRealName());
         if (order.getUserPhone().length() > 11) {
+            //判断是否加密
+            boolean likelyEncryptedByEntropy = isLikelyEncryptedByEntropy(order.getUserPhone());
+            if (likelyEncryptedByEntropy) {
+                String phone = decryptPhone(order.getUserPhone());
+                if (phone.length() > 11) {
+                    erpOrder.setReceiver_phone(phone);
+                } else {
+                    erpOrder.setReceiver_mobile(phone);
+                }
+            }
             erpOrder.setReceiver_phone(order.getUserPhone());
         } else {
             erpOrder.setReceiver_mobile(order.getUserPhone());