sms、邮件数据库配置
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
package org.xyzh.system.config;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.xyzh.api.system.config.SysConfigService;
|
||||
import org.xyzh.common.config.properties.EmailConfigProperties;
|
||||
import org.xyzh.common.config.properties.SmsConfigProperties;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @description 动态配置加载器 - 从数据库加载配置并应用到组件
|
||||
* @filename DynamicConfigLoader.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-11-26
|
||||
*/
|
||||
@Configuration
|
||||
@Order(100) // 确保在其他组件初始化之后再加载配置
|
||||
public class DynamicConfigLoader implements ApplicationRunner {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DynamicConfigLoader.class);
|
||||
|
||||
@Autowired
|
||||
private SysConfigService sysConfigService;
|
||||
|
||||
@Autowired(required = false)
|
||||
private JavaMailSenderImpl mailSender;
|
||||
|
||||
@Autowired
|
||||
private EmailConfigProperties emailConfigProperties;
|
||||
|
||||
@Autowired
|
||||
private SmsConfigProperties smsConfigProperties;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
logger.info("=== 开始加载动态配置 ===");
|
||||
|
||||
// 加载邮件配置
|
||||
loadEmailConfig();
|
||||
|
||||
// 加载短信配置
|
||||
loadSmsConfig();
|
||||
|
||||
logger.info("=== 动态配置加载完成 ===");
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载邮件配置
|
||||
*/
|
||||
private void loadEmailConfig() {
|
||||
try {
|
||||
String host = sysConfigService.getStringConfig("email.host");
|
||||
String port = sysConfigService.getStringConfig("email.port");
|
||||
String username = sysConfigService.getStringConfig("email.username");
|
||||
String password = sysConfigService.getStringConfig("email.password");
|
||||
String fromName = sysConfigService.getStringConfig("email.fromName");
|
||||
String sslEnable = sysConfigService.getStringConfig("email.ssl.enable");
|
||||
String timeout = sysConfigService.getStringConfig("email.timeout");
|
||||
|
||||
// 更新配置属性
|
||||
emailConfigProperties.setHost(host);
|
||||
emailConfigProperties.setPort(StringUtils.hasText(port) ? Integer.valueOf(port) : 587);
|
||||
emailConfigProperties.setUsername(username);
|
||||
emailConfigProperties.setPassword(password);
|
||||
emailConfigProperties.setFromName(fromName);
|
||||
emailConfigProperties.setSslEnable("true".equalsIgnoreCase(sslEnable));
|
||||
emailConfigProperties.setTimeout(StringUtils.hasText(timeout) ? Integer.valueOf(timeout) : 30000);
|
||||
|
||||
// 如果邮箱配置完整,则配置JavaMailSender
|
||||
if (mailSender != null && StringUtils.hasText(host) && StringUtils.hasText(username) && StringUtils.hasText(password)) {
|
||||
mailSender.setHost(host);
|
||||
mailSender.setPort(emailConfigProperties.getPort());
|
||||
mailSender.setUsername(username);
|
||||
mailSender.setPassword(password);
|
||||
|
||||
// 设置邮件属性
|
||||
Properties props = mailSender.getJavaMailProperties();
|
||||
props.put("mail.smtp.auth", "true");
|
||||
props.put("mail.smtp.starttls.enable", emailConfigProperties.getSslEnable() ? "true" : "false");
|
||||
props.put("mail.smtp.starttls.required", emailConfigProperties.getSslEnable() ? "true" : "false");
|
||||
props.put("mail.smtp.timeout", emailConfigProperties.getTimeout());
|
||||
props.put("mail.smtp.connectiontimeout", emailConfigProperties.getTimeout());
|
||||
|
||||
logger.info("邮件配置加载成功: host={}, port={}, username={}", host, emailConfigProperties.getPort(), username);
|
||||
} else {
|
||||
logger.warn("邮件配置不完整,将使用默认配置或模拟模式");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("加载邮件配置失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载短信配置
|
||||
*/
|
||||
private void loadSmsConfig() {
|
||||
try {
|
||||
String provider = sysConfigService.getStringConfig("sms.provider");
|
||||
String accessKeyId = sysConfigService.getStringConfig("sms.accessKeyId");
|
||||
String accessKeySecret = sysConfigService.getStringConfig("sms.accessKeySecret");
|
||||
String signName = sysConfigService.getStringConfig("sms.signName");
|
||||
String templateCodeLogin = sysConfigService.getStringConfig("sms.templateCode.login");
|
||||
String templateCodeRegister = sysConfigService.getStringConfig("sms.templateCode.register");
|
||||
String timeout = sysConfigService.getStringConfig("sms.timeout");
|
||||
|
||||
// 更新配置属性
|
||||
smsConfigProperties.setProvider(StringUtils.hasText(provider) ? provider : "aliyun");
|
||||
smsConfigProperties.setAccessKeyId(accessKeyId);
|
||||
smsConfigProperties.setAccessKeySecret(accessKeySecret);
|
||||
smsConfigProperties.setSignName(StringUtils.hasText(signName) ? signName : "校园新闻");
|
||||
smsConfigProperties.setTemplateCodeLogin(templateCodeLogin);
|
||||
smsConfigProperties.setTemplateCodeRegister(templateCodeRegister);
|
||||
smsConfigProperties.setTimeout(StringUtils.hasText(timeout) ? Integer.valueOf(timeout) : 30000);
|
||||
|
||||
if (StringUtils.hasText(accessKeyId) && StringUtils.hasText(accessKeySecret)) {
|
||||
logger.info("短信配置加载成功: provider={}, signName={}", smsConfigProperties.getProvider(), smsConfigProperties.getSignName());
|
||||
} else {
|
||||
logger.warn("短信配置不完整,将使用模拟模式");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("加载短信配置失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -720,7 +720,7 @@ public class SysUserServiceImpl implements SysUserService {
|
||||
|
||||
TbSysUser user = existResult.getData();
|
||||
// TODO: 这里应该对密码进行加密处理
|
||||
user.setPassword(newPassword);
|
||||
user.setPassword(passwordEncoder.encode(newPassword));
|
||||
user.setUpdateTime(new Date());
|
||||
|
||||
int result = userMapper.updateUser(user);
|
||||
|
||||
Reference in New Issue
Block a user