package cn.miloer.museumsystemservice.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.Duration;
import java.util.Objects;
import java.util.Random;
/**
* @author milo
* @create 2023/4/13 10:54
* 手机验证码缓存
*/
@Slf4j
@Component
public class SMSRedisTemplate {
@Resource
private StringRedisTemplate stringRedisTemplate;
public void set(String phone,String code){
code=code+"_"+System.currentTimeMillis();
stringRedisTemplate.opsForValue().set("mu_cache:sms_"+phone,code, Duration.ofMinutes(5));
}
public boolean checkCode(String phone,String code){
String tempCode=stringRedisTemplate.opsForValue().get("mu_cache:sms_"+phone);
if(StringUtils.isNotBlank(code)&&tempCode!=null){
tempCode=tempCode.split("_")[0];
if(Objects.equals(code.toLowerCase(),tempCode.toLowerCase())){
stringRedisTemplate.delete("mu_cache:sms_"+phone);
return true;
}
}
return false;
}
public boolean isLimitTime(String phone){
String tempCode=stringRedisTemplate.opsForValue().get("mu_cache:sms_"+phone);
if(StringUtils.isNotBlank(tempCode)) {
long l = Long.parseLong(tempCode.split("_")[1]);
// 当前系统事件减去之前验证码存入的事件 小于60000毫秒=60秒
if (System.currentTimeMillis() -l < 60000) {
return true;
}
}
return false;
}
public String getCode(){
Random rand = new Random();
String result="";
for (int i = 0; i < 6; i++) {
result+=rand.nextInt(10);
}
return result;
}
}