• 缓存限定登录次数


    package com.yjf.borncrm.web.util;

    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;

    import org.springframework.stereotype.Component;

    import com.yjf.borncrm.common.util.DateUtil;
    import com.yjf.borncrm.common.util.StringUtil;

    @Component("cacheUtil")
    public class CacheUtil {

    public static Map<String,Map<String,String>> loginCacheMap=new HashMap<String, Map<String,String>>();
    /**
    * 写登录记录到缓存,返回登录剩余次数
    * @param name
    * @return
    */
    public long writeCache(String name){
    if(null==loginCacheMap.get(name)){//第一次登录
    Map<String,String> map=new HashMap<String,String>();
    map.put("count", 2+"");
    map.put("loginTime", DateUtil.formatDateTime(new Date()));
    map.put("loginFlag", "Y");
    loginCacheMap.put(name, map);
    return 2;
    }else{//非第一次登录
    Map<String,String> map=loginCacheMap.get(name);
    Date date=DateUtil.parseDateTime(map.get("loginTime"));
    long count=Long.valueOf(map.get("count"));
    String flag=map.get("loginFlag");
    if("N".equals(flag)){//锁状态:判断时间,超过一个小时,重新计算count,没超过,不让登录
    if(addOneHour(date)){//超过一个小时
    map.put("count", 2+"");
    map.put("loginTime", DateUtil.formatDateTime(new Date()));
    map.put("loginFlag", "Y");
    loginCacheMap.put(name, map);
    return 2;
    }else{
    return 0;
    }
    }else if("Y".equals(flag)){//没锁状态:判断时间,超过一个小时,从头计算count,未超过一个小时,继续计算count
    if(addOneHour(date)){//超过一个小时
    map.put("count", 2+"");
    map.put("loginTime", DateUtil.formatDateTime(new Date()));
    map.put("loginFlag", "Y");
    loginCacheMap.put(name, map);
    return 2;
    }else{
    if(count<=0){//三次登录失败,帐号标记为锁定
    map.put("loginFlag", "N");
    map.put("count", count+"");
    map.put("loginTime", DateUtil.formatDateTime(new Date()));
    loginCacheMap.put(name, map);
    return count;
    }else{
    map.put("count", count-1+"");
    if(count-1==0){
    map.put("loginFlag", "N");
    }else{
    map.put("loginFlag", "Y");
    }

    map.put("loginTime", DateUtil.formatDateTime(new Date()));
    loginCacheMap.put(name, map);
    return count-1;
    }
    }
    }


    }
    return 0;
    }

    //检查状态,返回true,允许登录,false不允许登录
    public boolean checkStatus(String name){
    if(!StringUtil.isEmpty(name)){
    if(null!=loginCacheMap.get(name)){
    Map<String,String> map=loginCacheMap.get(name);
    Date date=DateUtil.parseDateTime(map.get("loginTime"));
    long count=Long.valueOf(map.get("count"));
    String flag=map.get("loginFlag");
    if(addOneHour(date)){
    return true;
    }else{
    if("Y".equals(flag)){
    return true;
    }else{
    return false;
    }
    }
    }
    }
    return true;
    }
    //清登录记录
    public void clearLoginCache(String name){
    if(!StringUtil.isEmpty(name)){
    loginCacheMap.remove(name);
    }
    }
    //获取用户上次登录时间
    public Date findLastLoginTime(String name){
    if(!StringUtil.isEmpty(name)){
    if(null!=loginCacheMap.get(name)){
    return DateUtil.parseDateTime(loginCacheMap.get(name).get("loginTime"));
    }
    }
    return null;
    }
    //获取用户登录次数
    public long findLoginCount(String name){
    if(!StringUtil.isEmpty(name)){
    if(null==loginCacheMap.get(name)){
    return 2;
    }else{
    return Long.valueOf( loginCacheMap.get(name).get("count"));
    }
    }
    return 0;
    }
    /**
    * 判断date加一个小时后与当前时间的大小
    * 小于当前时间,返回true
    * 大于当前时间,返回false
    * @param date
    * @return
    */
    public boolean addOneHour(Date date){
    if(null!=date){
    Calendar ca=Calendar.getInstance();
    ca.setTime(date);
    ca.add(Calendar.HOUR_OF_DAY, 1);
    //ca.add(Calendar.MINUTE,1);//加一分钟,测试用的
    Date dateNow=new Date();
    if(ca.getTime().getTime()<dateNow.getTime()){
    return true;
    }else{
    return false;
    }
    }
    return true;
    }
    // @Autowired
    // private YshPurchaseCategoryInfoService yshPurchaseCategoryInfoService;
    // @Autowired
    // private CrmYshCustomService crmYshCustomService;
    // //缓存
    // public static Map<String,List<String>> cacheMap=new HashMap<String, List<String>>();
    //
    // public void LoadAreaCache(){
    // List<String> areaList= crmYshCustomService.searchDistinctArea();//crmYshCustomService
    // List<String> catgroyList=yshPurchaseCategoryInfoService.searchBigCatgroy();
    // List<String> teamNameList= crmYshCustomService.searchDistinctWholseSaleTeamName();
    // cacheMap.put("areaList", areaList);
    // cacheMap.put("catgroyList", catgroyList);
    // cacheMap.put("teamNameList", teamNameList);
    // }
    // //地区
    // public List<String> getAreaCache(){
    // List<String> areaList=cacheMap.get("areaList");
    // if(null==areaList || areaList.isEmpty()){
    // LoadAreaCache();
    // areaList=cacheMap.get("areaList");
    // }
    //
    // return areaList;
    // }
    // //采购大类
    // public List<String> getCatgroyCache(){
    // List<String> catgroyList=cacheMap.get("catgroyList");
    // if(null==catgroyList || catgroyList.isEmpty()){
    // LoadAreaCache();
    // catgroyList=cacheMap.get("catgroyList");
    // }
    //
    // return catgroyList;
    //
    //
    // }
    // //团队所属
    // public List<String> getTeamNameCache(){
    // List<String> teamNameList=cacheMap.get("teamNameList");
    // if(null==teamNameList || teamNameList.isEmpty()){
    // LoadAreaCache();
    // teamNameList=cacheMap.get("teamNameList");
    // }
    //
    // return teamNameList;
    // }
    //
    // //清楚缓存指定缓存,key为null 则清除所有缓存
    // public void clearCache(String key){
    // if(null==key){
    // cacheMap.remove("teamNameList");
    // cacheMap.remove("catgroyList");
    // cacheMap.remove("areaList");
    // }else{
    // cacheMap.remove(key);
    // }
    //
    // }
    }

  • 相关阅读:
    流媒体传输协议之 RTP(下篇)
    我在春晚现场护航直播
    【邀请有礼】全球视频云创新挑战赛邀请有礼:参与 100% 获得 “壕” 礼,更有机会获得 JBL 音箱、Cherry 机械键盘
    流媒体传输协议之 RTMP
    WebRTC 音视频同步原理与实现
    阿里云联手 Intel 举办首届视频云挑战赛,40 万奖金邀你来战!
    你真的懂 MP4 格式吗?
    如何用 4 个小时搭建一个新 “Clubhouse” ,引爆声音社交新风口
    流媒体传输协议之 RTP (上篇)
    POJ 1655 Balancing Act【树形DP】POJ 1655 Balancing Act Balancing Act POJ 1655
  • 原文地址:https://www.cnblogs.com/xuehen/p/4832977.html
Copyright © 2020-2023  润新知