From 04e4346f9e05f8df3a40a96a8187c93f9d3d524c Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期六, 11 七月 2026 09:07:11 +0800
Subject: [PATCH] 微信短信消息推送
---
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
index 34be928..44841bc 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
@@ -5,6 +5,8 @@
import com.ruoyi.common.core.utils.req.SubmitTempletReq;
import org.apache.commons.codec.binary.Base64;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.concurrent.ThreadLocalRandom;
public class MsgUtil {
@@ -146,6 +148,34 @@
return encode;
}
+ /**
+ * VIP充电完成:VIP 用户您好!您在{电站名称}的充电已完成,本次电量{充电度数}度,费用共计{充电费用}元。
+ */
+ public static String vipChargeFinishMsg(String phone, String site, String chargingCapacity, String chargingFee){
+ SubmitTempletReq submitReq = new SubmitTempletReq();
+ String[] paramss = {limitSiteName(site), limitNumber(chargingCapacity), limitNumber(chargingFee)};
+ submitReq.setParams(JSON.toJSONString(paramss));
+ submitReq.setTemplateId(MsgConstants.VIP_CHARGE_FINISH_TEMPLATE_ID);
+ submitReq.setApId(MsgConstants.VIP_CHARGE_FINISH_AP_ID);
+ submitReq.setEcName(ecName);
+ submitReq.setSecretKey(secretKey);
+ submitReq.setMobiles(phone);
+ submitReq.setAddSerial("");
+ submitReq.setSign(sign);
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append(submitReq.getEcName());
+ stringBuffer.append(submitReq.getApId());
+ stringBuffer.append(submitReq.getSecretKey());
+ stringBuffer.append(submitReq.getTemplateId());
+ stringBuffer.append(submitReq.getMobiles());
+ stringBuffer.append(submitReq.getParams());
+ stringBuffer.append(submitReq.getSign());
+ stringBuffer.append(submitReq.getAddSerial());
+ submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+ String reqText = JSON.toJSONString(submitReq);
+ return Base64.encodeBase64String(reqText.getBytes());
+ }
+
/** phone 单词可拼接5000个号码
* 桩故障(自动/手动):检测到【电站1】【编号】号桩设备离线,请及时查看处理!
* @param phone 手机号
@@ -197,4 +227,31 @@
return String.valueOf(ThreadLocalRandom.current().nextInt(100000, 999999));
}
+ private static String limitSiteName(String site) {
+ String value = site == null ? "充电站" : site.replaceAll("[^\\u4e00-\\u9fa5\\d,。!?、:;()《》【】]", "");
+ if (value.length() == 0) {
+ value = "充电站";
+ }
+ return value.length() <= 10 ? value : value.substring(0, 10);
+ }
+
+ private static String limitNumber(String value) {
+ if (value == null) {
+ return "0";
+ }
+ String number = value.replaceAll("[^\\d.]", "");
+ if (number.length() == 0) {
+ return "0";
+ }
+ try {
+ number = new BigDecimal(number).setScale(0, RoundingMode.HALF_UP).toPlainString();
+ } catch (NumberFormatException e) {
+ number = number.replaceAll("\\D", "");
+ }
+ if (number.length() == 0) {
+ return "0";
+ }
+ return number.length() <= 5 ? number : number.substring(0, 5);
+ }
+
}
--
Gitblit v1.7.1