| | |
| | | "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; |
| | |
| | | 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); |
| | |
| | | } |
| | | 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())) { |
| | |
| | | }; |
| | | } |
| | | |
| | | 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)) { |
| | |
| | | } |
| | | 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( |
| | |
| | | }; |
| | | } |
| | | |
| | | 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); |
| | | } |