00aef788e34dcb4ad22e88e440c817400c104eaa.svn-base 3.2 KB
package com.espeed.service.impl;

import java.util.List;
import java.util.Map;
import com.espeed.dao.YxyMailCountDao;
import com.espeed.dao.YxyMailDayCountDao;
import com.espeed.dao.YxyMailMonthCountDao;
import com.espeed.service.MailSendVerificationService;

public class MailSendVerificationServiceImpl implements MailSendVerificationService {

	/**用户发送量判断*/
	public int VerificationSendNum(String loginid, String domain,int commitnum, Map<String,String> usergraph,String time) throws Exception {
		
		//日发量限制
		int daysendBig=Integer.parseInt(usergraph.get("yxy_day_send_mail_limit").toString());//日最大量	
		//月发量限制
		int monthsendBig=Integer.parseInt(usergraph.get("yxy_month_send_mail_limit").toString());//月最大量	
		//单次最大发送量限制
		int onesendBig=Integer.parseInt(usergraph.get("yxy_single_send_num").toString());//单次最大量	
		//总最大发量(-1无限制)
		int tolBig=Integer.parseInt(usergraph.get("yxy_sum_send").toString());
		
		//日已发量
		String dayhql="select yxy_day_count_tol_num from YxyMailDayCount where yxy_day_count_loiginid='"+loginid+"' and yxy_day_count_domain='"+domain+"' and yxy_day_count_date='"+time+"'";
		int daysendMax=yxymaildaycountdao.findByHqlCount(dayhql);
		//判断是否满了
		if(daysendMax+commitnum>=daysendBig){
			return -2;//日已发量满
		}
		//月已发量
		String monthdate=time.substring(0,time.length()-3);
		String monthhql="select yxy_month_count_tol_num from YxyMailMonthCount where yxy_month_count_loginid='"+loginid+"' and yxy_month_count_domain='"+domain+"' and yxy_month_count_date='"+monthdate+"'";
		int monthsendMax=yxymailmonthcountdao.findByHqlCount(monthhql);//当月已发量
		//判断是否满了
		if(monthsendMax+commitnum>=monthsendBig){
			return -3;//月已发量满
		}
		//总量
		String tolhql="select yxy_count_tol_num from YxyMailCount where yxy_count_loginid='"+loginid+"' and yxy_count_domain='"+domain+"'";
		int tolNum=yxymailcountdao.findByHqlCount(tolhql);
		//判断是否满了
		if(tolNum+commitnum>=tolBig){
			return -4;  //总量满                                                                                                                                                                                             
		}
		
		//单次最大发送量
		if(commitnum>=onesendBig){
			return -5; //单次最大发送量满
		}
		return 1;
		
	}

	private YxyMailDayCountDao yxymaildaycountdao;//日统计
	private YxyMailMonthCountDao yxymailmonthcountdao;//月统计
	private YxyMailCountDao yxymailcountdao;//总统计
	public YxyMailDayCountDao getYxymaildaycountdao() {
		return yxymaildaycountdao;
	}
	public void setYxymaildaycountdao(YxyMailDayCountDao yxymaildaycountdao) {
		this.yxymaildaycountdao = yxymaildaycountdao;
	}
	public YxyMailMonthCountDao getYxymailmonthcountdao() {
		return yxymailmonthcountdao;
	}
	public void setYxymailmonthcountdao(YxyMailMonthCountDao yxymailmonthcountdao) {
		this.yxymailmonthcountdao = yxymailmonthcountdao;
	}
	public YxyMailCountDao getYxymailcountdao() {
		return yxymailcountdao;
	}
	public void setYxymailcountdao(YxyMailCountDao yxymailcountdao) {
		this.yxymailcountdao = yxymailcountdao;
	}
	
}