修复短信服务中存在的隐藏Bug,并优化代码,修复魔法值

This commit is contained in:
wen 2021-12-30 16:06:33 +08:00
parent edbab6dbee
commit 762fe744ea
5 changed files with 132 additions and 41 deletions

View File

@ -0,0 +1,17 @@
package com.xhpc.general.constant;
/**
* 阿里云短信服务发送结果常量类
*
* @author WH
* @date 2021/12/30 14:56
* @since version-1.0
*/
public class AliyunSendResult {
/**
* 短信发送成功
*/
public static final String SUCCESS = "OK";
}

View File

@ -0,0 +1,42 @@
package com.xhpc.general.constant;
/**
* 阿里云短信模板常量类
*
* @author WH
* @date 2021/12/30 14:40
* @since version-1.0
*/
public class AliyunTemplate {
/**
* 阿里云短信签名
*/
public static final String SIGNATURE_NAME = "小华充电";
/**
* 电量充满
*/
public static final String CHARGE_FULL = "SMS_227005968";
/**
* 充电金额不足
*/
public static final String CHARGE_MONEY_INSUFFICIENT = "SMS_226935795";
/**
* 直流桩停止充电
*/
public static final String DIRECT_STREAM_PILE_STOP_CHARGE = "SMS_226945037";
/**
* 直流桩停止充电
*/
public static final String INTERFLOW_STREAM_PILE_STOP_CHARGE = "SMS_226786374";
/**
* 验证码
*/
public static final String VALIDATE_CODE = "SMS_226786362";
/**
* 退款失败
*/
public static final String REFUND_FAIL = "SMS_231445428";
}

View File

@ -0,0 +1,38 @@
package com.xhpc.general.constant;
/**
* 阿里云模板内容关键字常量类
* 根据模板话语判断该调用哪个模板id
*
* @author WH
* @date 2021/12/30 15:59
* @since version-1.0
*/
public class AliyunTemplateKeyWord {
/**
* 电量充满
*/
public static final String CHARGE_FULL = "设定的SOC";
/**
* 充电金额不足
*/
public static final String CHARGE_MONEY_INSUFFICIENT = "余额小于";
/**
* 直流桩停止充电
*/
public static final String DIRECT_STREAM_PILE_STOP_CHARGE = "电量为";
/**
* 直流桩停止充电
*/
public static final String INTERFLOW_STREAM_PILE_STOP_CHARGE = "总费用为";
/**
* 验证码
*/
public static final String VALIDATE_CODE = "SMS_226786362";
/**
* 退款失败
*/
public static final String REFUND_FAIL = "退款-尊敬的用户";
}

View File

@ -3,6 +3,8 @@ package com.xhpc.general.controller;
import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.general.constant.AliyunTemplate;
import com.xhpc.general.constant.AliyunTemplateKeyWord;
import com.xhpc.general.service.IXhpcSmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -58,21 +60,21 @@ public class XhpcSmsController extends BaseController {
paramMap.remove("phone");
paramMap.remove("content");
//判断内容是什么调用相应的模板
if (content.contains("电量为")) {
signatureName = "小华充电";
templateId = "SMS_226945037";
} else if (content.contains("总费用为")) {
signatureName = "小华充电";
templateId = "SMS_226786374";
} else if (content.contains("余额小于")) {
signatureName = "小华充电";
templateId = "SMS_226935795";
} else if (content.contains("设定的SOC")) {
signatureName = "小华充电";
templateId = "SMS_227005968";
}else if (content.contains("退款-尊敬的用户")) {
signatureName = "小华充电";
templateId = "SMS_231445428";
if (content.contains(AliyunTemplateKeyWord.DIRECT_STREAM_PILE_STOP_CHARGE)) {
signatureName = AliyunTemplate.SIGNATURE_NAME;
templateId = AliyunTemplate.DIRECT_STREAM_PILE_STOP_CHARGE;
} else if (content.contains(AliyunTemplateKeyWord.INTERFLOW_STREAM_PILE_STOP_CHARGE)) {
signatureName = AliyunTemplate.SIGNATURE_NAME;
templateId = AliyunTemplate.INTERFLOW_STREAM_PILE_STOP_CHARGE;
} else if (content.contains(AliyunTemplateKeyWord.CHARGE_MONEY_INSUFFICIENT)) {
signatureName = AliyunTemplate.SIGNATURE_NAME;
templateId = AliyunTemplate.CHARGE_MONEY_INSUFFICIENT;
} else if (content.contains(AliyunTemplateKeyWord.CHARGE_FULL)) {
signatureName = AliyunTemplate.SIGNATURE_NAME;
templateId = AliyunTemplate.CHARGE_FULL;
} else if (content.contains(AliyunTemplateKeyWord.REFUND_FAIL)) {
signatureName = AliyunTemplate.SIGNATURE_NAME;
templateId = AliyunTemplate.REFUND_FAIL;
}
xhpcSmsService.sendNotice(phone, signatureName, templateId, paramMap);

View File

@ -7,6 +7,8 @@ import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.redis.service.RedisService;
import com.xhpc.general.constant.AliyunSendResult;
import com.xhpc.general.constant.AliyunTemplate;
import com.xhpc.general.domain.XhpcSms;
import com.xhpc.general.mapper.XhpcSmsMapper;
import com.xhpc.general.util.sms.SmsUtil;
@ -103,7 +105,7 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService {
//判断发送结果
String statusCode = neededParam.get("statusCode");
if (statusCode.equals("OK")) {
if (statusCode.equals(AliyunSendResult.SUCCESS)) {
REDIS.setCacheObject(pvToken, random, 300L, TimeUnit.SECONDS);
//1分钟有效时间设置防止用户频繁调用
REDIS.setCacheObject(token, random, 60L, TimeUnit.SECONDS);
@ -152,7 +154,7 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService {
//判断发送结果
String statusCode = neededParam.get("statusCode");
if ("OK".equals(statusCode)) {
if (AliyunSendResult.SUCCESS.equals(statusCode)) {
xhpcSms.setStatus(0);
} else {
xhpcSms.setStatus(1);
@ -217,40 +219,30 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService {
private String getTemplateContent(String templateId, Map<String, String> paramMap) throws Exception {
if (templateId == "SMS_227005968") {
if (AliyunTemplate.CHARGE_FULL.equals(templateId)) {
String battery = paramMap.get("battery");
String templateContent = "尊敬的用户你的车辆已充电达至设定的SOC:" + battery + "%并停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。";
return templateContent;
return "尊敬的用户你的车辆已充电达至设定的SOC:" + battery + "%并停止充电,请您尽快将车辆挪走以方便他人使用充电桩,谢谢合作。";
}
if (templateId == "SMS_226935795") {
if (AliyunTemplate.CHARGE_MONEY_INSUFFICIENT.equals(templateId)) {
String money = paramMap.get("money");
String templateContent = "尊敬的用户,你的账户余额小于" + money + "元,为不影响您的正常充电,请您尽快充值交费,谢谢。";
return templateContent;
return "尊敬的用户,你的账户余额小于" + money + "元,为不影响您的正常充电,请您尽快充值交费,谢谢。";
}
if (templateId == "SMS_226786374") {
String sumMoney = paramMap.get("sumMoney");
String templateContent = "尊敬的用户,你的爱车已停止充电,请尽快挪车。总费用为:" + sumMoney + "元,充电费用明细,请查询小华充电小程序,谢谢。";
return templateContent;
}
if (templateId == "SMS_227005968") {
if (AliyunTemplate.DIRECT_STREAM_PILE_STOP_CHARGE.equals(templateId)) {
String elec = paramMap.get("elec");
String sumMoney = paramMap.get("sumMoney");
String templateContent = "尊敬的用户,你的爱车已停止充电,请尽快挪车。电量为:" + elec + ",总费用为:" + sumMoney + "元,充电费用明细,请查询小华充电小程序,谢谢。";
return templateContent;
return "尊敬的用户,你的爱车已停止充电,请尽快挪车。电量为:" + elec + ",总费用为:" + sumMoney + "元,充电费用明细,请查询小华充电小程序,谢谢。";
}
if (templateId == "SMS_226786362") {
if (AliyunTemplate.INTERFLOW_STREAM_PILE_STOP_CHARGE.equals(templateId)) {
String sumMoney = paramMap.get("sumMoney");
return "尊敬的用户,你的爱车已停止充电,请尽快挪车。总费用为:" + sumMoney + "元,充电费用明细,请查询小华充电小程序,谢谢。";
}
if (AliyunTemplate.VALIDATE_CODE.equals(templateId)) {
String code = paramMap.get("code");
String templateContent = "您的验证码是:" + code + "有效期为5分钟。如非本人操作可不用理会。";
return templateContent;
return "您的验证码是:" + code + "有效期为5分钟。如非本人操作可不用理会。";
}
if (templateId == "SMS_231445428") {
String templateContent = "【小华充电】退款-尊敬的用户,当前退款人数较多,申请退款失败,请您重新提交申请!";
return templateContent;
if (AliyunTemplate.REFUND_FAIL.equals(templateId)) {
return "【小华充电】退款-尊敬的用户,当前退款人数较多,申请退款失败,请您重新提交申请!";
}
throw new Exception("没有对应的模板id");
}
}