用户冻结解冻逻辑与代码
1.冻结用户,将数据存入Redis,并设置key的失效时间。
2.解冻用户,删除Redis数据
3.探花系统在用户登录,评论,发布动态时判断其冻结状态,如果被冻结抛出异常
用户状态枚举
public enum UserStatusEnum {
    FREEZE_LOGIN("1","冻结登录"),
    FREEZE_FANYAN("2","冻结评论"),
    FREEZE_DONGTAI("3","冻结发布动态");
    private String code;
    private String msg;
    UserStatusEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    public String getCode() {
        return code;
    }
    public String getMsg() {
        return msg;
    }
}
后台代码
   /**
     * 冻结用户
     * @param map
     * @return
     */
    public HashMap<String, String> freezeUser(Map map) {
//        1.构造key
        String userId = map.get("userId").toString();
        String key = Constants.FREEZE_USER + userId;
//        2.获取冻结时间,设置redis的存活时间
        int day=0;
        Integer freezingTime = Integer.parseInt(map.get("freezingTime").toString()) ;
        if (freezingTime==1){
            day=3;
        }
        if (freezingTime==2){
            day=7;
        }
//        3.存入redis
        String value = JSON.toJSONString(map);
        if (day>0){
            redisTemplate.opsForValue().set(key,value,day,TimeUnit.DAYS);
        }else {
            redisTemplate.opsForValue().set(key,value);
        }
        HashMap<String, String> msg = new HashMap<>();
        msg.put("message","冻结用户成功");
        return msg;
    }
    /**
     * 解冻用户
     * @param map
     * @return
     */
    public HashMap<Object, Object> unfreezeUser(Map map) {
        String userId = map.get("userId").toString();
        String key = Constants.FREEZE_USER + userId;
        redisTemplate.delete(key);
        HashMap<Object, Object> res = new HashMap<>();
        res.put("message","解冻用户成功");
        return res;
    }
前台代码
@Service
public class UserFreezeService {
    @Autowired
    private RedisTemplate redisTemplate;
    public void checkStatus(String freezeRange, Long userId) {
//            取出value,判断封禁类型
        String key = Constants.FREEZE_USER + userId.toString();
        String vlaue = (String) redisTemplate.opsForValue().get(key);
        if (!StringUtils.isEmpty(vlaue)) {
            Map map = JSON.parseObject(vlaue, Map.class);
            String range = (String) map.get("freezingRange");
//            取出封禁类型进行判断
            if (freezeRange.equals(range)) {
                throw new BusinessException(ErrorResult.countError());
            }
        }
    }
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号