From 54769b7feba13e47627d606d5367528efb196ff0 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Mon, 3 Feb 2025 11:14:32 +0800 Subject: [PATCH] sms --- .../bonus/auth/service/SysPasswordService.java | 6 +++++- .../bonus/common/core/utils/sms/SmsConfig.java | 17 ++++++++++++----- .../bonus/common/core/utils/sms/SmsUtils.java | 13 +++++++------ .../common/security/service/SmsService.java | 5 ++++- ...boot.autoconfigure.AutoConfiguration.imports | 1 + .../system/service/impl/SysUserServiceImpl.java | 6 +++++- 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/bonus-auth/src/main/java/com/bonus/auth/service/SysPasswordService.java b/bonus-auth/src/main/java/com/bonus/auth/service/SysPasswordService.java index b2bac6c..0180d7e 100644 --- a/bonus-auth/src/main/java/com/bonus/auth/service/SysPasswordService.java +++ b/bonus-auth/src/main/java/com/bonus/auth/service/SysPasswordService.java @@ -7,6 +7,7 @@ import com.bonus.common.core.exception.CaptchaException; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.VerificationCodeUtils; +import com.bonus.common.core.utils.sms.SmsConfig; import com.bonus.common.core.utils.sms.SmsUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.redis.service.RedisService; @@ -41,6 +42,9 @@ public class SysPasswordService { @Resource private RemoteConfigService configService; + @Resource + private SmsConfig smsConfig; + /** * 登录账户密码错误次数缓存键名 * @@ -107,7 +111,7 @@ public class SysPasswordService { String code = VerificationCodeUtils.generateVerificationCode(VerificationCodeUtils.CodeType.NUMERIC); String str = "您的验证码为" + code + ",尊敬的客户,以上验证码3分钟有效,微服务平台提醒您:转发可能导致账号被盗,请勿将验证码泄露于他人"; String verifyKey = CacheConstants.VERIFICATION_CODE + phone; - String s = SmsUtils.smsToken(phone, str, ""); + String s = SmsUtils.smsToken(smsConfig, phone, str, ""); if (StringUtils.isNotEmpty(s)) { if (s.contains("ok")) { redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsConfig.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsConfig.java index 2080b0e..1fff0bd 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsConfig.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsConfig.java @@ -1,16 +1,23 @@ package com.bonus.common.core.utils.sms; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "sms-config") +@Data public class SmsConfig { - public static final String DOMAIN = "http://api.ktsms.cn/"; + private String domain; - public static final String DDT_KEY = "bonusyn"; + private String ddtKey; - public static final String SECRET_KEY = "IU0ypHbH"; + private String securityKey; - public static final String SMS_SIGNATURE = "【博诺思】"; + private String signature; - public static final String SMS_TOKEN = "sms_token"; + private String smsToken; } diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsUtils.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsUtils.java index c80a381..5a81699 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsUtils.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/sms/SmsUtils.java @@ -3,6 +3,7 @@ package com.bonus.common.core.utils.sms; import com.alibaba.fastjson2.JSON; import com.bonus.common.core.utils.http.HttpRequestHelper; +import javax.annotation.Resource; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; @@ -16,18 +17,18 @@ public class SmsUtils { * @param sendTime 为空表示立即发送,定时发送格式:20101024090810 * @return 是否发送成功 */ - public static String smsToken(String mobile, String content, String sendTime) { + public static String smsToken(SmsConfig smsConfig, String mobile, String content, String sendTime) { Map headers = new HashMap<>(); Map mapJson = new HashMap<>(6); - mapJson.put("ddtkey", SmsConfig.DDT_KEY); - mapJson.put("secretkey", SmsConfig.SECRET_KEY); + mapJson.put("ddtkey", smsConfig.getDdtKey()); + mapJson.put("secretkey", smsConfig.getSecurityKey()); mapJson.put("mobile", mobile); - mapJson.put("content", SmsConfig.SMS_SIGNATURE + content); + mapJson.put("content", smsConfig.getSignature() + content); mapJson.put("sendTime", sendTime); mapJson.put("extno", ""); // 将mapJson转换为URL查询参数格式 - StringBuilder urlBuilder = new StringBuilder(SmsConfig.SMS_TOKEN + "?"); + StringBuilder urlBuilder = new StringBuilder(smsConfig.getSmsToken() + "?"); for (Map.Entry entry : mapJson.entrySet()) { try { String encodedKey = URLEncoder.encode(entry.getKey(), "UTF-8"); @@ -43,6 +44,6 @@ public class SmsUtils { String urlWithParams = urlBuilder.toString(); String json = JSON.toJSONString(mapJson); - return HttpRequestHelper.postJson(SmsConfig.DOMAIN, urlWithParams, json, headers); + return HttpRequestHelper.postJson(smsConfig.getDomain(), urlWithParams, json, headers); } } diff --git a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/SmsService.java b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/SmsService.java index 2133f29..0c1e9d4 100644 --- a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/SmsService.java +++ b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/SmsService.java @@ -4,6 +4,7 @@ import com.bonus.common.core.constant.CacheConstants; import com.bonus.common.core.exception.CaptchaException; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.VerificationCodeUtils; +import com.bonus.common.core.utils.sms.SmsConfig; import com.bonus.common.core.utils.sms.SmsUtils; import com.bonus.common.redis.service.RedisService; import com.bonus.common.security.config.VerificationCodeConfig; @@ -22,6 +23,8 @@ public class SmsService { @Resource private VerificationCodeConfig verificationCodeConfig; @Resource + private SmsConfig smsConfig; + @Resource private RedisService redisService; /** @@ -37,7 +40,7 @@ public class SmsService { String code = VerificationCodeUtils.generateVerificationCode(NUMERIC); String str = verificationCodeConfig.getContent().replace("", code); str = str.replace("