PersonFileLimit.java 2.5 KB
package com.jflyfox.component.controller;

import java.util.concurrent.atomic.AtomicLong;

import com.jflyfox.util.DateUtils;
import com.jflyfox.util.StrUtils;

public class PersonFileLimit {

	public static final int nowHourMaxCount = 50;
	public static final int nowDayMaxCount = 200;

	public static final String OK = "ok";
	public static final String ERROR_NOWDAY = "nowDayError";
	public static final String ERROR_NOWHOUR = "nowHourError";

	/**
	 * 用户ID
	 */
	private int id;
	/**
	 * 当前天
	 */
	private String nowDay = "";
	/**
	 * 当前小时
	 */
	private String nowHour = "";
	/***
	 * 当前天数上传次数
	 */
	private AtomicLong nowDayCount = new AtomicLong(0);
	/**
	 * 当前小时上传次数
	 */
	private AtomicLong nowHourCount = new AtomicLong(0);
	
	private String legal = OK;
	
	/**
	 * 入库
	 */
	private boolean insert = false;

	public boolean isLegal() {
		return OK.equals(legal);
	}

	public void add() {
		// 用户不合法了~你就什么都别干了~
		if (!OK.equals(legal)) {
			return;
		}
		
		String tmpDay = DateUtils.getNow("yyyyMMdd");
		if (StrUtils.isEmpty(nowDay)) {
			nowDay = tmpDay;
		} else if(!tmpDay.equals(nowDay)){
			nowDay = tmpDay;
			nowDayCount.set(0); // 清0从算
		}
		nowDayCount.incrementAndGet();
		if (nowDayCount.get() > nowDayMaxCount) {
			legal = ERROR_NOWDAY;
		}
		
		String tmpHour = DateUtils.getNow("yyyyMMddHH");
		if (StrUtils.isEmpty(nowHour)) {
			nowHour = tmpHour;
		} else if(!tmpHour.equals(nowHour)){
			nowHour = tmpHour;
			nowHourCount.set(0); // 清0从算
		}
		nowHourCount.incrementAndGet();
		if (nowHourCount.get() > nowHourMaxCount) {
			legal = ERROR_NOWHOUR;
		}
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNowDay() {
		return nowDay;
	}

	public void setNowDay(String nowDay) {
		this.nowDay = nowDay;
	}

	public String getNowHour() {
		return nowHour;
	}

	public void setNowHour(String nowHour) {
		this.nowHour = nowHour;
	}

	public AtomicLong getNowDayCount() {
		return nowDayCount;
	}

	public void setNowDayCount(AtomicLong nowDayCount) {
		this.nowDayCount = nowDayCount;
	}

	public AtomicLong getNowHourCount() {
		return nowHourCount;
	}

	public void setNowHourCount(AtomicLong nowHourCount) {
		this.nowHourCount = nowHourCount;
	}

	public String getLegal() {
		return legal;
	}

	public void setLegal(String legal) {
		this.legal = legal;
	}

	public boolean isInsert() {
		return insert;
	}

	public void setInsert(boolean insert) {
		this.insert = insert;
	}
}