Selaa lähdekoodia

门店入驻添加门店过期时间

penghao 1 viikko sitten
vanhempi
commit
7c4e387608

+ 57 - 6
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -882,22 +882,38 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
                     Date expirationTime = parseFoodLicenceExpirationDate(ocrResult);
                     if (expirationTime != null) {
                         storeInfo.setFoodLicenceExpirationTime(expirationTime);
+                    } else if (storeInfoDto.getFoodLicenceExpirationTime() != null) {
+                        // OCR解析结果为空时,使用DTO中传入的值
+                        storeInfo.setFoodLicenceExpirationTime(storeInfoDto.getFoodLicenceExpirationTime());
+                        log.info("使用DTO中的食品经营许可证到期时间:{}", storeInfoDto.getFoodLicenceExpirationTime());
                     }
                     // 设置食品经营许可证状态为"待审核"(字典值2)
                     storeInfo.setFoodLicenceStatus(2);
                     storeInfo.setUpdateFoodLicenceTime(new Date());
-                    log.info("食品经营许可证OCR数据解析成功,到期时间:{}", expirationTime);
+                    log.info("食品经营许可证OCR数据解析成功,到期时间:{}", storeInfo.getFoodLicenceExpirationTime());
                 } catch (Exception e) {
                     log.error("解析食品经营许可证OCR数据失败", e);
-                    // 解析失败时仍设置状态为待审核
+                    // 解析失败时使用DTO中传入的值
+                    if (storeInfoDto.getFoodLicenceExpirationTime() != null) {
+                        storeInfo.setFoodLicenceExpirationTime(storeInfoDto.getFoodLicenceExpirationTime());
+                        log.info("OCR解析失败,使用DTO中的食品经营许可证到期时间:{}", storeInfoDto.getFoodLicenceExpirationTime());
+                    }
                     storeInfo.setFoodLicenceStatus(2);
                     storeInfo.setUpdateFoodLicenceTime(new Date());
                 }
             } else {
-                // 没有OCR记录时,设置状态为待审核
+                // 没有OCR记录时,使用DTO中传入的值
+                if (storeInfoDto.getFoodLicenceExpirationTime() != null) {
+                    storeInfo.setFoodLicenceExpirationTime(storeInfoDto.getFoodLicenceExpirationTime());
+                    log.info("无OCR记录,使用DTO中的食品经营许可证到期时间:{}", storeInfoDto.getFoodLicenceExpirationTime());
+                }
                 storeInfo.setFoodLicenceStatus(2);
                 storeInfo.setUpdateFoodLicenceTime(new Date());
             }
+        } else if (storeInfoDto.getFoodLicenceExpirationTime() != null) {
+            // 没有食品经营许可证URL,但有传入到期时间时直接使用
+            storeInfo.setFoodLicenceExpirationTime(storeInfoDto.getFoodLicenceExpirationTime());
+            log.info("无食品经营许可证URL,使用DTO中的到期时间:{}", storeInfoDto.getFoodLicenceExpirationTime());
         }
         
         // 处理娱乐经营许可证OCR数据(复用营业执照OCR类型,数据库中ocr_type存的是BUSINESS_LICENSE)
@@ -917,22 +933,57 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
                     Date expirationTime = parseEntertainmentLicenceExpirationDate(ocrResult);
                     if (expirationTime != null) {
                         storeInfo.setEntertainmentLicenceExpirationTime(expirationTime);
+                    } else if (storeInfoDto.getEntertainmentLicenceExpirationTime() != null) {
+                        // OCR解析结果为空时,使用DTO中传入的值
+                        storeInfo.setEntertainmentLicenceExpirationTime(storeInfoDto.getEntertainmentLicenceExpirationTime());
+                        log.info("使用DTO中的娱乐经营许可证到期时间:{}", storeInfoDto.getEntertainmentLicenceExpirationTime());
                     }
                     // 设置娱乐经营许可证状态为"待审核"(字典值2)
                     storeInfo.setEntertainmentLicenceStatus(2);
                     storeInfo.setUpdateEntertainmentLicenceTime(new Date());
-                    log.info("娱乐经营许可证OCR数据解析成功,到期时间:{}", expirationTime);
+                    log.info("娱乐经营许可证OCR数据解析成功,到期时间:{}", storeInfo.getEntertainmentLicenceExpirationTime());
                 } catch (Exception e) {
                     log.error("解析娱乐经营许可证OCR数据失败", e);
-                    // 解析失败时仍设置状态为待审核
+                    // 解析失败时使用DTO中传入的值
+                    if (storeInfoDto.getEntertainmentLicenceExpirationTime() != null) {
+                        storeInfo.setEntertainmentLicenceExpirationTime(storeInfoDto.getEntertainmentLicenceExpirationTime());
+                        log.info("OCR解析失败,使用DTO中的娱乐经营许可证到期时间:{}", storeInfoDto.getEntertainmentLicenceExpirationTime());
+                    }
                     storeInfo.setEntertainmentLicenceStatus(2);
                     storeInfo.setUpdateEntertainmentLicenceTime(new Date());
                 }
             } else {
-                // 没有OCR记录时,设置状态为待审核
+                // 没有OCR记录时,使用DTO中传入的值
+                if (storeInfoDto.getEntertainmentLicenceExpirationTime() != null) {
+                    storeInfo.setEntertainmentLicenceExpirationTime(storeInfoDto.getEntertainmentLicenceExpirationTime());
+                    log.info("无OCR记录,使用DTO中的娱乐经营许可证到期时间:{}", storeInfoDto.getEntertainmentLicenceExpirationTime());
+                }
                 storeInfo.setEntertainmentLicenceStatus(2);
                 storeInfo.setUpdateEntertainmentLicenceTime(new Date());
             }
+        } else if (storeInfoDto.getEntertainmentLicenceExpirationTime() != null) {
+            // 没有娱乐经营许可证URL,但有传入到期时间时直接使用
+            storeInfo.setEntertainmentLicenceExpirationTime(storeInfoDto.getEntertainmentLicenceExpirationTime());
+            log.info("无娱乐经营许可证URL,使用DTO中的到期时间:{}", storeInfoDto.getEntertainmentLicenceExpirationTime());
+        }
+
+        // 计算并设置到期时间为三个过期时间的最小值
+        List<Date> expirationTimeList = new ArrayList<>();
+        // 收集所有非空的过期时间
+        if (storeInfoDto.getExpirationTime() != null) {
+            expirationTimeList.add(storeInfoDto.getExpirationTime());
+        }
+        if (storeInfo.getFoodLicenceExpirationTime() != null) {
+            expirationTimeList.add(storeInfo.getFoodLicenceExpirationTime());
+        }
+        if (storeInfo.getEntertainmentLicenceExpirationTime() != null) {
+            expirationTimeList.add(storeInfo.getEntertainmentLicenceExpirationTime());
+        }
+        // 取最小值设置为门店到期时间
+        if (!expirationTimeList.isEmpty()) {
+            Date minExpirationTime = Collections.min(expirationTimeList);
+            storeInfo.setExpirationTime(minExpirationTime);
+            log.info("设置门店到期时间为三个过期时间的最小值:{}", minExpirationTime);
         }
         
         storeInfoMapper.insert(storeInfo);