sms
This commit is contained in:
parent
40f2183d6e
commit
54769b7feb
|
|
@ -7,6 +7,7 @@ import com.bonus.common.core.exception.CaptchaException;
|
||||||
import com.bonus.common.core.exception.ServiceException;
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
import com.bonus.common.core.utils.StringUtils;
|
import com.bonus.common.core.utils.StringUtils;
|
||||||
import com.bonus.common.core.utils.VerificationCodeUtils;
|
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.utils.sms.SmsUtils;
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
import com.bonus.common.redis.service.RedisService;
|
import com.bonus.common.redis.service.RedisService;
|
||||||
|
|
@ -41,6 +42,9 @@ public class SysPasswordService {
|
||||||
@Resource
|
@Resource
|
||||||
private RemoteConfigService configService;
|
private RemoteConfigService configService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SmsConfig smsConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录账户密码错误次数缓存键名
|
* 登录账户密码错误次数缓存键名
|
||||||
*
|
*
|
||||||
|
|
@ -107,7 +111,7 @@ public class SysPasswordService {
|
||||||
String code = VerificationCodeUtils.generateVerificationCode(VerificationCodeUtils.CodeType.NUMERIC);
|
String code = VerificationCodeUtils.generateVerificationCode(VerificationCodeUtils.CodeType.NUMERIC);
|
||||||
String str = "您的验证码为" + code + ",尊敬的客户,以上验证码3分钟有效,微服务平台提醒您:转发可能导致账号被盗,请勿将验证码泄露于他人";
|
String str = "您的验证码为" + code + ",尊敬的客户,以上验证码3分钟有效,微服务平台提醒您:转发可能导致账号被盗,请勿将验证码泄露于他人";
|
||||||
String verifyKey = CacheConstants.VERIFICATION_CODE + phone;
|
String verifyKey = CacheConstants.VERIFICATION_CODE + phone;
|
||||||
String s = SmsUtils.smsToken(phone, str, "");
|
String s = SmsUtils.smsToken(smsConfig, phone, str, "");
|
||||||
if (StringUtils.isNotEmpty(s)) {
|
if (StringUtils.isNotEmpty(s)) {
|
||||||
if (s.contains("ok")) {
|
if (s.contains("ok")) {
|
||||||
redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,23 @@
|
||||||
package com.bonus.common.core.utils.sms;
|
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 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;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.bonus.common.core.utils.sms;
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.bonus.common.core.utils.http.HttpRequestHelper;
|
import com.bonus.common.core.utils.http.HttpRequestHelper;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -16,18 +17,18 @@ public class SmsUtils {
|
||||||
* @param sendTime 为空表示立即发送,定时发送格式:20101024090810
|
* @param sendTime 为空表示立即发送,定时发送格式:20101024090810
|
||||||
* @return 是否发送成功
|
* @return 是否发送成功
|
||||||
*/
|
*/
|
||||||
public static String smsToken(String mobile, String content, String sendTime) {
|
public static String smsToken(SmsConfig smsConfig, String mobile, String content, String sendTime) {
|
||||||
Map<String, String> headers = new HashMap<>();
|
Map<String, String> headers = new HashMap<>();
|
||||||
Map<String, Object> mapJson = new HashMap<>(6);
|
Map<String, Object> mapJson = new HashMap<>(6);
|
||||||
mapJson.put("ddtkey", SmsConfig.DDT_KEY);
|
mapJson.put("ddtkey", smsConfig.getDdtKey());
|
||||||
mapJson.put("secretkey", SmsConfig.SECRET_KEY);
|
mapJson.put("secretkey", smsConfig.getSecurityKey());
|
||||||
mapJson.put("mobile", mobile);
|
mapJson.put("mobile", mobile);
|
||||||
mapJson.put("content", SmsConfig.SMS_SIGNATURE + content);
|
mapJson.put("content", smsConfig.getSignature() + content);
|
||||||
mapJson.put("sendTime", sendTime);
|
mapJson.put("sendTime", sendTime);
|
||||||
mapJson.put("extno", "");
|
mapJson.put("extno", "");
|
||||||
|
|
||||||
// 将mapJson转换为URL查询参数格式
|
// 将mapJson转换为URL查询参数格式
|
||||||
StringBuilder urlBuilder = new StringBuilder(SmsConfig.SMS_TOKEN + "?");
|
StringBuilder urlBuilder = new StringBuilder(smsConfig.getSmsToken() + "?");
|
||||||
for (Map.Entry<String, Object> entry : mapJson.entrySet()) {
|
for (Map.Entry<String, Object> entry : mapJson.entrySet()) {
|
||||||
try {
|
try {
|
||||||
String encodedKey = URLEncoder.encode(entry.getKey(), "UTF-8");
|
String encodedKey = URLEncoder.encode(entry.getKey(), "UTF-8");
|
||||||
|
|
@ -43,6 +44,6 @@ public class SmsUtils {
|
||||||
String urlWithParams = urlBuilder.toString();
|
String urlWithParams = urlBuilder.toString();
|
||||||
|
|
||||||
String json = JSON.toJSONString(mapJson);
|
String json = JSON.toJSONString(mapJson);
|
||||||
return HttpRequestHelper.postJson(SmsConfig.DOMAIN, urlWithParams, json, headers);
|
return HttpRequestHelper.postJson(smsConfig.getDomain(), urlWithParams, json, headers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.bonus.common.core.constant.CacheConstants;
|
||||||
import com.bonus.common.core.exception.CaptchaException;
|
import com.bonus.common.core.exception.CaptchaException;
|
||||||
import com.bonus.common.core.utils.StringUtils;
|
import com.bonus.common.core.utils.StringUtils;
|
||||||
import com.bonus.common.core.utils.VerificationCodeUtils;
|
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.utils.sms.SmsUtils;
|
||||||
import com.bonus.common.redis.service.RedisService;
|
import com.bonus.common.redis.service.RedisService;
|
||||||
import com.bonus.common.security.config.VerificationCodeConfig;
|
import com.bonus.common.security.config.VerificationCodeConfig;
|
||||||
|
|
@ -22,6 +23,8 @@ public class SmsService {
|
||||||
@Resource
|
@Resource
|
||||||
private VerificationCodeConfig verificationCodeConfig;
|
private VerificationCodeConfig verificationCodeConfig;
|
||||||
@Resource
|
@Resource
|
||||||
|
private SmsConfig smsConfig;
|
||||||
|
@Resource
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -37,7 +40,7 @@ public class SmsService {
|
||||||
String code = VerificationCodeUtils.generateVerificationCode(NUMERIC);
|
String code = VerificationCodeUtils.generateVerificationCode(NUMERIC);
|
||||||
String str = verificationCodeConfig.getContent().replace("<code>", code);
|
String str = verificationCodeConfig.getContent().replace("<code>", code);
|
||||||
str = str.replace("<time>", verificationCodeConfig.getTime().toString());
|
str = str.replace("<time>", verificationCodeConfig.getTime().toString());
|
||||||
String s = SmsUtils.smsToken(to, str, "");
|
String s = SmsUtils.smsToken(smsConfig, to, str, "");
|
||||||
if (StringUtils.isNotEmpty(s)) {
|
if (StringUtils.isNotEmpty(s)) {
|
||||||
if (s.contains("ok")) {
|
if (s.contains("ok")) {
|
||||||
String verifyKey = CacheConstants.VERIFICATION_CODE + StringUtils.nvl(to, "");
|
String verifyKey = CacheConstants.VERIFICATION_CODE + StringUtils.nvl(to, "");
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
com.bonus.common.security.config.MyFilter
|
com.bonus.common.security.config.MyFilter
|
||||||
com.bonus.common.security.config.WebMvcConfig
|
com.bonus.common.security.config.WebMvcConfig
|
||||||
com.bonus.common.security.config.VerificationCodeConfig
|
com.bonus.common.security.config.VerificationCodeConfig
|
||||||
|
com.bonus.common.core.utils.sms.SmsConfig
|
||||||
com.bonus.common.security.service.TokenService
|
com.bonus.common.security.service.TokenService
|
||||||
com.bonus.common.security.service.SmsService
|
com.bonus.common.security.service.SmsService
|
||||||
com.bonus.common.security.service.EmailService
|
com.bonus.common.security.service.EmailService
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import com.bonus.common.core.utils.SpringUtils;
|
||||||
import com.bonus.common.core.utils.StringUtils;
|
import com.bonus.common.core.utils.StringUtils;
|
||||||
import com.bonus.common.core.utils.bean.BeanValidators;
|
import com.bonus.common.core.utils.bean.BeanValidators;
|
||||||
import com.bonus.common.core.utils.encryption.Sm4Utils;
|
import com.bonus.common.core.utils.encryption.Sm4Utils;
|
||||||
|
import com.bonus.common.core.utils.sms.SmsConfig;
|
||||||
import com.bonus.common.core.utils.sms.SmsUtils;
|
import com.bonus.common.core.utils.sms.SmsUtils;
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
import com.bonus.common.core.web.domain.BaseEntity;
|
import com.bonus.common.core.web.domain.BaseEntity;
|
||||||
|
|
@ -77,6 +78,9 @@ public class SysUserServiceImpl implements ISysUserService {
|
||||||
@Resource
|
@Resource
|
||||||
private VerificationCodeConfig verificationCodeConfig;
|
private VerificationCodeConfig verificationCodeConfig;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SmsConfig smsConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private JavaMailSender mailSender; // 自动注入JavaMailSender,用于发送邮件
|
private JavaMailSender mailSender; // 自动注入JavaMailSender,用于发送邮件
|
||||||
|
|
||||||
|
|
@ -603,7 +607,7 @@ public class SysUserServiceImpl implements ISysUserService {
|
||||||
Integer i = userMapper.approvalStatus(userId);
|
Integer i = userMapper.approvalStatus(userId);
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
if (StringUtils.isNotEmpty(sysUser.getPhonenumber())) {
|
if (StringUtils.isNotEmpty(sysUser.getPhonenumber())) {
|
||||||
SmsUtils.smsToken(sysUser.getPhonenumber(), "您的账号:" + sysUser.getUserName() + "已通过审批,请登录系统", "");
|
SmsUtils.smsToken(smsConfig, sysUser.getPhonenumber(), "您的账号:" + sysUser.getUserName() + "已通过审批,请登录系统", "");
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(sysUser.getEmail())) {
|
if (StringUtils.isNotEmpty(sysUser.getEmail())) {
|
||||||
sendSimpleEmail(sysUser.getEmail(), "您的账号:" + sysUser.getUserName() + "已通过审批,请登录系统");
|
sendSimpleEmail(sysUser.getEmail(), "您的账号:" + sysUser.getUserName() + "已通过审批,请登录系统");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue