From 7617d46abee2950b7336e3379f8c7a564939cb54 Mon Sep 17 00:00:00 2001
From: yanderong <307678080@qq.com>
Date: 星期六, 10 十月 2026 17:54:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.3' into 2.3
---
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java | 87 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 87 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 44841bc..d09ed0d 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
@@ -220,6 +220,93 @@
return encode;
}
/**
+ * 公司总账户余额不足提醒:尊敬的客户您好!您公司{[公司名称]}总账户余额不足,当前余额{[当前余额]}元,已低于预警线{[预警线]}元。为避免影响车辆正常充电,请及时充值。感谢配合!
+ * @param phone 手机号
+ * @param companyName 公司名称(纯中文,总长度10)
+ * @param balance 当前余额(纯数字,总长度10)
+ * @param warnAmount 预警线(纯数字,总长度10)
+ * @return
+ */
+ public static String companyBalanceWarnMsg(String phone, String companyName, String balance, String warnAmount){
+ return buildBalanceWarnMsg(phone, MsgConstants.COMPANY_BALANCE_WARN_TEMPLATE_ID,
+ new String[]{limitChinese(companyName), limitDecimal(balance), limitDecimal(warnAmount)});
+ }
+
+ /**
+ * 公司子账号余额不足提醒:尊敬的客户您好!您公司{[公司名称]}用户{[用户信息]}子账户余额不足,当前子账户余额{[当前余额]}元,已低于预警线{[预警线]}元。为避免影响车辆正常充电,请及时分配额度。感谢配合!
+ * @param phone 手机号
+ * @param companyName 公司名称(纯中文,总长度10)
+ * @param userInfo 用户信息(中文+字母+数字,总长度10)
+ * @param balance 当前余额(纯数字,总长度10)
+ * @param warnAmount 预警线(纯数字,总长度10)
+ * @return
+ */
+ public static String subBalanceWarnMsg(String phone, String companyName, String userInfo, String balance, String warnAmount){
+ return buildBalanceWarnMsg(phone, MsgConstants.SUB_BALANCE_WARN_TEMPLATE_ID,
+ new String[]{limitChinese(companyName), limitUserInfo(userInfo), limitDecimal(balance), limitDecimal(warnAmount)});
+ }
+
+ /**
+ * 余额预警模板短信组包(公共逻辑)
+ */
+ private static String buildBalanceWarnMsg(String phone, String templateId, String[] params){
+ SubmitTempletReq submitReq = new SubmitTempletReq();
+ submitReq.setApId(MsgConstants.BALANCE_WARN_AP_ID);
+ submitReq.setEcName(ecName);
+ submitReq.setSecretKey(secretKey);
+ submitReq.setParams(JSON.toJSONString(params));
+ submitReq.setMobiles(phone);
+ submitReq.setAddSerial("");
+ submitReq.setSign(sign);
+ submitReq.setTemplateId(templateId);
+ 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());
+ }
+
+ /**
+ * 公司名称参数约束:纯中文,总长度10;剔除非法字符,空值兜底
+ */
+ private static String limitChinese(String value) {
+ String v = value == null ? "" : value.replaceAll("[^\\u4e00-\\u9fa5]", "");
+ if (v.length() == 0) {
+ v = "公司";
+ }
+ return v.length() <= 10 ? v : v.substring(0, 10);
+ }
+
+ /**
+ * 用户信息参数约束:中文+字母+数字,总长度10;剔除非法字符,空值兜底
+ */
+ private static String limitUserInfo(String value) {
+ String v = value == null ? "" : value.replaceAll("[^\\u4e00-\\u9fa5A-Za-z0-9]", "");
+ if (v.length() == 0) {
+ v = "用户";
+ }
+ return v.length() <= 10 ? v : v.substring(0, 10);
+ }
+
+ /**
+ * 金额参数约束:纯数字(允许小数点),总长度10;剔除非法字符,空值兜底
+ */
+ private static String limitDecimal(String value) {
+ String v = value == null ? "" : value.replaceAll("[^\\d.]", "");
+ if (v.length() == 0) {
+ v = "0";
+ }
+ return v.length() <= 10 ? v : v.substring(0, 10);
+ }
+
+ /**
* 生成验证码
* @return
*/
--
Gitblit v1.7.1