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); } }