From 11029948d45564975527b2c21e9c2def1903164a Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期四, 14 五月 2026 14:30:23 +0800
Subject: [PATCH] 优化fix

---
 backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java |   36 +++++++++++++++++++++++++++++++++---
 1 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java b/backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java
index 4b111c0..09fad61 100644
--- a/backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java
+++ b/backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java
@@ -39,6 +39,8 @@
             "BX49OBHvRcoYiCw0ZLqx04BiWQ9KaEQwuVth_Lh_M2A";
     private static final String APPROVAL_TODO_PAGE = "pages/reviewList/index";
     private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+    private static final DateTimeFormatter TEMPLATE_TIME_FORMATTER =
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
 
     private final WechatMiniGateway wechatMiniGateway;
     private final MpUserMapper mpUserMapper;
@@ -65,7 +67,7 @@
         Map<String, String> templateData = new LinkedHashMap<>();
         templateData.put("thing1", approved ? "审核通过" : "审核未通过");
         templateData.put("thing2", abbreviate(resolveSubmitterName(submitter), 20));
-        templateData.put("time3", buildVisitTimeText(order));
+        templateData.put("time3", buildVisitTemplateTimeValue(order));
         templateData.put("thing4", abbreviate(buildVisitReasonText(order), 20));
         wechatMiniGateway.sendSubscribeMessage(
                 submitter.getOpenId(), APPROVAL_RESULT_TEMPLATE_ID, APPROVAL_RESULT_PAGE, templateData);
@@ -83,7 +85,7 @@
         }
         Map<String, String> templateData = new LinkedHashMap<>();
         templateData.put("thing6", buildVisitorCountText(visitorCount));
-        templateData.put("time18", buildVisitTimeText(order));
+        templateData.put("time18", buildVisitTemplateTimeValue(order));
         templateData.put("thing20", abbreviate(buildNoticeBusinessTypeText(order, approved), 20));
         for (MpUser noticeUser : noticeUsers) {
             if (noticeUser == null || !StringUtils.hasText(noticeUser.getOpenId())) {
@@ -179,6 +181,25 @@
         };
     }
 
+    private String buildVisitTemplateTimeValue(AppointmentOrder order) {
+        LocalDate start = order.getVisitStartDate();
+        LocalDate end = order.getVisitEndDate();
+        if (start == null && end == null) {
+            return "2099-12-31 00:00";
+        }
+        if (start == null) {
+            start = end;
+        }
+        if (end == null) {
+            end = start;
+        }
+        return switch (safeTrim(order.getVisitTimeMode())) {
+            case "MULTI" -> start.atTime(0, 0).format(TEMPLATE_TIME_FORMATTER);
+            default -> start.atTime(resolveTemplateHour(order.getVisitTimeSlot()), 0)
+                    .format(TEMPLATE_TIME_FORMATTER);
+        };
+    }
+
     private String buildVisitReasonText(AppointmentOrder order) {
         String reasonCode = safeTrim(order.getVisitReasonCode());
         if (!StringUtils.hasText(reasonCode)) {
@@ -186,7 +207,7 @@
         }
         if (AppointmentBizConstants.VISIT_REASON_OTHER.equalsIgnoreCase(reasonCode)) {
             String other = safeTrim(order.getVisitReasonOther());
-            return StringUtils.hasText(other) ? other : "其他";
+            return StringUtils.hasText(other) ? "其他:" + other : "其他";
         }
         BizVisitReason reason =
                 bizVisitReasonMapper.selectOne(
@@ -239,6 +260,15 @@
         };
     }
 
+    private int resolveTemplateHour(String slot) {
+        return switch (safeTrim(slot)) {
+            case "AM" -> 9;
+            case "PM" -> 14;
+            case "ALL_DAY" -> 9;
+            default -> 9;
+        };
+    }
+
     private String formatDate(LocalDate date) {
         return date.format(DATE_FORMATTER);
     }

--
Gitblit v1.7.1