From e45e74e5ae207f7642be9a88ed99b593de89fb3b Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 24 六月 2026 16:54:46 +0800
Subject: [PATCH] 1.0
---
backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java | 62 +++++++++++++++++++++---------
1 files changed, 43 insertions(+), 19 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 778babf..940cdec 100644
--- a/backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java
+++ b/backend/src/main/java/com/sinata/appointment/service/IntegrationWechatService.java
@@ -6,11 +6,13 @@
import com.sinata.appointment.constants.ApprovalNodeCode;
import com.sinata.appointment.constants.ApprovalTaskStatus;
import com.sinata.appointment.entity.ApprovalTask;
+import com.sinata.appointment.entity.AppointmentVisitor;
import com.sinata.appointment.entity.AppointmentOrder;
import com.sinata.appointment.entity.BizVisitReason;
import com.sinata.appointment.entity.MpUser;
import com.sinata.appointment.integration.WechatMiniGateway;
import com.sinata.appointment.mapper.ApprovalTaskMapper;
+import com.sinata.appointment.mapper.AppointmentVisitorMapper;
import com.sinata.appointment.mapper.BizVisitReasonMapper;
import com.sinata.appointment.mapper.MpUserMapper;
import java.time.LocalDate;
@@ -32,12 +34,12 @@
public class IntegrationWechatService {
private static final String APPROVAL_RESULT_TEMPLATE_ID =
- "4FQovCBNFM7rth42AWHTusHajO788eT9VpplSN4ZG2s";
+ "rIJpfN51_q818RTpJAqTe5ssTwWCHnxDM5rpq64uuKM";
private static final String NOTICE_RESULT_TEMPLATE_ID =
- "GC1S3T2qHCbz8ow130u7elRczuqW6Z8q54mKRCYE-xo";
+ "Wip0ODJgybZpeFpcvev_0GK1wQXEqZw-LHOjS-UyDLw";
private static final String APPROVAL_RESULT_PAGE = "pages/record/index";
private static final String APPROVAL_TODO_TEMPLATE_ID =
- "BX49OBHvRcoYiCw0ZLqx04BiWQ9KaEQwuVth_Lh_M2A";
+ "QlNwG99WXWztRDgtlLcE0fHxfY2VwaX8PRMrwGpEync";
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 =
@@ -46,6 +48,7 @@
private final WechatMiniGateway wechatMiniGateway;
private final MpUserMapper mpUserMapper;
private final ApprovalTaskMapper approvalTaskMapper;
+ private final AppointmentVisitorMapper appointmentVisitorMapper;
private final BizVisitReasonMapper bizVisitReasonMapper;
@Async
@@ -70,10 +73,9 @@
return;
}
Map<String, String> templateData = new LinkedHashMap<>();
- templateData.put("thing1", approved ? "审核通过" : "审核未通过");
- templateData.put("thing2", abbreviate(resolveSubmitterName(submitter), 20));
- templateData.put("time3", buildVisitTemplateTimeValue(order));
- templateData.put("thing4", abbreviate(buildVisitReasonText(order), 20));
+ templateData.put("phrase4", approved ? "通过" : "未通过");
+ templateData.put("time2", buildVisitTemplateTimeValue(order));
+ templateData.put("thing5", approved ? "预约审核通过" : "预约审核未通过");
wechatMiniGateway.sendSubscribeMessage(
submitter.getOpenId(), APPROVAL_RESULT_TEMPLATE_ID, APPROVAL_RESULT_PAGE, templateData);
log.info(
@@ -97,9 +99,10 @@
return;
}
Map<String, String> templateData = new LinkedHashMap<>();
- templateData.put("thing6", buildVisitorCountText(visitorCount));
- templateData.put("time18", buildVisitTemplateTimeValue(order));
- templateData.put("thing20", abbreviate(buildNoticeBusinessTypeText(order, approved), 20));
+ MpUser submitter = loadSubmitter(order);
+ templateData.put("name1", abbreviate(resolveSubmitterName(submitter), 10));
+ templateData.put("number36", buildVisitorCountNumber(visitorCount));
+ templateData.put("date3", buildVisitTemplateTimeValue(order));
int successCount = 0;
int skippedCount = 0;
int failedCount = 0;
@@ -184,8 +187,11 @@
continue;
}
Map<String, String> templateData = new LinkedHashMap<>();
- templateData.put("thing1", abbreviate(buildTodoTaskName(order), 20));
- templateData.put("thing3", abbreviate(String.join("、", entry.getValue()), 20));
+ MpUser submitter = loadSubmitter(order);
+ templateData.put("name1", abbreviate(resolveSubmitterName(submitter), 10));
+ templateData.put("number15", buildVisitorCountNumber(countVisitors(order)));
+ templateData.put("time16", buildVisitTemplateTimeValue(order));
+ templateData.put("thing5", abbreviate(buildVisitReasonText(order), 20));
try {
wechatMiniGateway.sendSubscribeMessage(
user.getOpenId(), APPROVAL_TODO_TEMPLATE_ID, APPROVAL_TODO_PAGE, templateData);
@@ -210,6 +216,9 @@
}
private String resolveSubmitterName(MpUser submitter) {
+ if (submitter == null) {
+ return "预约人";
+ }
if (StringUtils.hasText(submitter.getNickName())) {
return submitter.getNickName().trim();
}
@@ -217,6 +226,17 @@
return submitter.getMobile().trim();
}
return "预约人";
+ }
+
+ private MpUser loadSubmitter(AppointmentOrder order) {
+ if (order == null || order.getSubmitterId() == null) {
+ return null;
+ }
+ return mpUserMapper.selectOne(
+ new LambdaQueryWrapper<MpUser>()
+ .eq(MpUser::getDelFlag, 0)
+ .eq(MpUser::getId, order.getSubmitterId())
+ .last("limit 1"));
}
private String buildVisitTimeText(AppointmentOrder order) {
@@ -276,16 +296,20 @@
return reasonCode;
}
- private String buildVisitorCountText(int visitorCount) {
- return Math.max(visitorCount, 0) + "人";
+ private String buildVisitorCountNumber(int visitorCount) {
+ return String.valueOf(Math.max(visitorCount, 0));
}
- private String buildNoticeBusinessTypeText(AppointmentOrder order, boolean approved) {
- String reason = buildVisitReasonText(order);
- if (!StringUtils.hasText(reason)) {
- return approved ? "预约通过" : "预约驳回";
+ private int countVisitors(AppointmentOrder order) {
+ if (order == null || order.getId() == null) {
+ return 0;
}
- return reason;
+ Long count =
+ appointmentVisitorMapper.selectCount(
+ new LambdaQueryWrapper<AppointmentVisitor>()
+ .eq(AppointmentVisitor::getDelFlag, 0)
+ .eq(AppointmentVisitor::getOrderId, order.getId()));
+ return count == null ? 0 : count.intValue();
}
private String buildTodoTaskName(AppointmentOrder order) {
--
Gitblit v1.7.1