package com.sinata.rest.modular.auth.util;
|
|
import com.alibaba.fastjson.JSON;
|
import com.sinata.common.enums.EnumRedisKey;
|
import com.sinata.common.model.AccountCheckNumVo;
|
import com.sinata.rest.core.util.DateUtils;
|
import com.sinata.rest.modular.system.service.RedisTemplateService;
|
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
|
/**
|
* 验证密码/验证码次数限制
|
*/
|
@Service
|
@Component
|
public class AccountCheckUtil {
|
|
@Resource
|
public RedisTemplateService redisTemplateService;
|
|
/**
|
* 账号验证码-验证次数
|
*
|
* @param account 账号
|
* @return vo为null则超次数逻辑终止,不为空逻辑继续
|
*/
|
public AccountCheckNumVo accountCheckCodeNum(String account) {
|
// 获取账户验证次数
|
Object chMap = redisTemplateService.hashGet(EnumRedisKey.MAP_ACCOUNT_CHECK.index, account);
|
String today = DateUtils.formatDate(new Date(), "yyyy-MM-dd");
|
AccountCheckNumVo ch;
|
if (chMap != null) {
|
ch = JSON.parseObject(chMap.toString(), AccountCheckNumVo.class);
|
if (today.equals(ch.getCheckCodeDate())) {
|
ch.setCheckCodeNum(ch.getCheckCodeNum() + 1);
|
} else {
|
ch.setCheckCodeNum(1);
|
}
|
} else {
|
ch = new AccountCheckNumVo();
|
ch.setAccount(account);
|
}
|
ch.setCheckCodeDate(today);
|
|
// 判断验证次数
|
if (ch.getTotalCodeNum() < ch.getCheckCodeNum()) {
|
redisTemplateService.hashPushHashMap(EnumRedisKey.MAP_ACCOUNT_CHECK.index, account, JSON.toJSONString(ch));
|
return null;
|
} else {
|
redisTemplateService.hashPushHashMap(EnumRedisKey.MAP_ACCOUNT_CHECK.index, account, JSON.toJSONString(ch));
|
}
|
return ch;
|
}
|
|
public void resetAccountCheckCodeNum(AccountCheckNumVo vo) {
|
// 重置-账户验证次数
|
vo.setCheckCodeNum(1);
|
redisTemplateService.hashPushHashMap(EnumRedisKey.MAP_ACCOUNT_CHECK.index, vo.getAccount(), JSON.toJSONString(vo));
|
}
|
|
/**
|
* 账号密码-验证次数
|
*/
|
public AccountCheckNumVo accountCheckPwdNum(String account) {
|
// 获取账户验证次数
|
Object chMap = redisTemplateService.hashGet(EnumRedisKey.MAP_ACCOUNT_CHECK.index, account);
|
String today = DateUtils.formatDate(new Date(), "yyyy-MM-dd");
|
AccountCheckNumVo ch;
|
if (chMap != null) {
|
ch = JSON.parseObject(chMap.toString(), AccountCheckNumVo.class);
|
if (today.equals(ch.getCheckPwdDate())) {
|
ch.setCheckPwdNum(ch.getCheckPwdNum() + 1);
|
} else {
|
ch.setCheckPwdNum(1);
|
}
|
} else {
|
ch = new AccountCheckNumVo();
|
ch.setAccount(account);
|
}
|
ch.setCheckPwdDate(today);
|
|
if (ch.getTotalPwdNum() < ch.getCheckPwdNum()) {
|
redisTemplateService.hashPushHashMap(EnumRedisKey.MAP_ACCOUNT_CHECK.index, account, JSON.toJSONString(ch));
|
return null;
|
} else {
|
redisTemplateService.hashPushHashMap(EnumRedisKey.MAP_ACCOUNT_CHECK.index, account, JSON.toJSONString(ch));
|
}
|
|
return ch;
|
}
|
|
public void resetAccountCheckPwdNum(AccountCheckNumVo vo) {
|
//重置-账户验证次数
|
vo.setCheckPwdNum(1);
|
redisTemplateService.hashPushHashMap(EnumRedisKey.MAP_ACCOUNT_CHECK.index, vo.getAccount(), JSON.toJSONString(vo));
|
}
|
|
}
|