每日总结


package com.mentalhealth.service;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
@Service
@Slf4j
public class SmsService {
// 模拟短信发送,实际项目中应该集成第三方短信服务
@Value("${app.sms.mock:true}")
private boolean mockSms;
// 存储验证码,实际项目中应该使用Redis
private final ConcurrentHashMap<String, SmsCode> smsCache = new ConcurrentHashMap<>();
public boolean sendSmsCode(String phone, String deviceId) {
try {
// 生成6位随机验证码
String code = generateRandomCode();
// 存储验证码,5分钟有效
smsCache.put(buildCacheKey(phone, deviceId),
new SmsCode(code, LocalDateTime.now().plusMinutes(5)));
if (mockSms) {
// 模拟发送,实际环境中应该调用短信服务商API
log.info("模拟发送短信验证码: 手机号={}, 验证码={}", phone, code);
return true;
} else {
// 调用真实短信服务
// return realSmsService.send(phone, code);
return true;
}
} catch (Exception e) {
log.error("发送短信验证码失败", e);
return false;
}
}
public boolean verifySmsCode(String phone, String deviceId, String code) {
String cacheKey = buildCacheKey(phone, deviceId);
SmsCode smsCode = smsCache.get(cacheKey);
if (smsCode == null) {
return false;
}
if (LocalDateTime.now().isAfter(smsCode.getExpireTime())) {
smsCache.remove(cacheKey);
return false;
}
if (smsCode.getCode().equals(code)) {
smsCache.remove(cacheKey);
return true;
}
return false;
}
private String generateRandomCode() {
Random random = new Random();
return String.format("%06d", random.nextInt(999999));
}
private String buildCacheKey(String phone, String deviceId) {
return phone + ":" + deviceId;
}
// 验证码存储类
@Data
private static class SmsCode {
private final String code;
private final LocalDateTime expireTime;
public SmsCode(String code, LocalDateTime expireTime) {
this.code = code;
this.expireTime = expireTime;
}
public String getCode() {
return code;
}
public LocalDateTime getExpireTime() {
return expireTime;
}
}
}
用户画像与体验地图
用户画像虚构典型用户,描述人口统计、目标、痛点,帮助团队理解用户。用户体验地图可视化用户完成任务的步骤、思考、情绪和痛点。例如,用户网购的步骤:搜索商品-对比-下单-支付-收货。地图揭示改进机会,如简化支付流程。

浙公网安备 33010602011771号