package com.ruoyi.auth.service.sms;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Component;
|
import com.ruoyi.common.core.utils.StringUtils;
|
|
/**
|
* 短信发送占位实现
|
*
|
* 当前仅打印日志,不接入真实短信服务商;后续替换为真实实现时,
|
* 新增一个 SmsSender 实现并移除本类 @Component 即可。
|
*
|
* @author hugray
|
*/
|
@Component
|
public class PlaceholderSmsSender implements SmsSender
|
{
|
private static final Logger log = LoggerFactory.getLogger(PlaceholderSmsSender.class);
|
|
/** 手机号脱敏时保留的前后位数 */
|
private static final int PHONE_KEEP_PREFIX = 3;
|
|
private static final int PHONE_KEEP_SUFFIX = 4;
|
|
@Override
|
public void send(String phone, String code)
|
{
|
// 占位实现:仅打印日志,手机号脱敏,禁止在日志中打印完整手机号
|
log.info("[SMS_SEND] placeholder send, phone={}, code={}", maskPhone(phone), code);
|
}
|
|
/**
|
* 手机号脱敏,形如 138****0000
|
*
|
* @param phone 手机号
|
* @return 脱敏后的手机号
|
*/
|
private String maskPhone(String phone)
|
{
|
if (StringUtils.isEmpty(phone) || phone.length() < PHONE_KEEP_PREFIX + PHONE_KEEP_SUFFIX)
|
{
|
return phone;
|
}
|
return phone.substring(0, PHONE_KEEP_PREFIX) + "****" + phone.substring(phone.length() - PHONE_KEEP_SUFFIX);
|
}
|
}
|