65978f215ec15329006ce7f1331af008ac7d0b62.svn-base 10.8 KB
package com.espeed.service.impl;
   
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.espeed.centre.pojo.YxyUserInfo;
import com.espeed.dao.YxySysParamaterDao;
import com.espeed.dao.YxySysParamatersValueDao;
import com.espeed.pojo.YxySysParamaters;
import com.espeed.pojo.YxySysParamatersValue;
import com.espeed.service.YxySysParamaterService;

/**
 * 程序名称:    	EspeedMail_时速邮箱
 * 程序版本:    	V1.0
 * 作    者:    	深圳市科飞时速网络技术有限公司(0755-88843776)
 * 版权所有:    	深圳市科飞时速网络技术有限公司
 * 技术支持:    	Tech@21gmail.com
 * 单元名称:     	控制参数Service实现类(营销游)
 * 开始时间:    	2013.12.09
 * 程 序 员:    	谢勇
 * 最后修改:    
 * 备    注:		如需修改请通知程序员    
 */
public class YxySysParamaterServiceImpl implements YxySysParamaterService{
	
	/**通过level查询控制参数*/
	public Map<String,String> findParamaterByLevel(int level,String loginid,String domain) throws Exception {
		//返回一个map集合
		Map<String,String> paraMap=new HashMap<String,String>();		
		//查询控制参数(所有level的默认参数)
		String parahql="from YxySysParamaters where owner_type="+level;
		List<YxySysParamaters> paras=yxysysparamaterdao.findByHql(parahql);
		if(level==-1){//系统级
			for(int j=0;j<paras.size();j++){
				paraMap.put(paras.get(j).getPara_code(), paras.get(j).getDefault_value());
			}
		}else if(level==1){//企业级
			//查询控制参数值(所有用户控制参数的配置值)
			String paravaluehql="from YxySysParamatersValue where company_domain='"+domain+"' and owner_type=2";
			List<YxySysParamatersValue> paraValue=yxysysparamatersvaluedao.findByHql(paravaluehql);
			//循环赋值
			int isexits=0;//判断是否存在
			for(int j=0;j<paras.size();j++){
				isexits=0;//不存在
				if(paraValue.size()>0){
					our:for(int i=0;i<paraValue.size();i++){
						//当参数中的id等于参数值id
						if(paras.get(j).getPara_id()==paraValue.get(i).getPara_id()){
							isexits++;
							if(paraValue.get(i).getPara_value()!=null||paraValue.get(i).getPara_value().equals("")){
								paraMap.put(paras.get(j).getPara_code(), paraValue.get(i).getPara_value());
							}else{
								paraMap.put(paras.get(j).getPara_code(), paras.get(j).getDefault_value());
							}
							break our;
						}
					}
					if(isexits==0){
						paraMap.put(paras.get(j).getPara_code(), paras.get(j).getDefault_value());
					}
				}else{
					paraMap.put(paras.get(j).getPara_code(), paras.get(j).getDefault_value());
				}
			}
		}else if(level==4){//用户级
			//查询控制参数值(所有用户控制参数的配置值)
			String paravaluehql="from YxySysParamatersValue where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and owner_type=4";
			List<YxySysParamatersValue> paraValue=yxysysparamatersvaluedao.findByHql(paravaluehql);
			//循环赋值
			int isexits=0;
			for(int j=0;j<paras.size();j++){
				isexits=0;
				if(paraValue.size()>0){
					our:for(int i=0;i<paraValue.size();i++){
						if(paras.get(j).getPara_id()==paraValue.get(i).getPara_id()){
							isexits++;
							if(paraValue.get(i).getPara_value()!=null||paraValue.get(i).getPara_value().equals("")){
								paraMap.put(paras.get(j).getPara_code(), paraValue.get(i).getPara_value());
							}
							break our;
						}
					}
					if(isexits==0){
						paraMap.put(paras.get(j).getPara_code(), paras.get(j).getDefault_value());
					}
				}
			}
		}
		
		return paraMap;
	}

	/**通过code查询控制参数,如果用户参数不存在则查企业控制参数,企业控制参数不存在则查询企业默认参数(用户级)*/
	public String findUserParamValue(String loginid,String domain,String usercode,String syscode)throws Exception{
		//根据code查询paraid
		String usercodehql="from YxySysParamaters where para_code='"+usercode+"'";
		List<YxySysParamaters> paramlist=yxysysparamaterdao.findByHql(usercodehql);
		int paramid=paramlist.get(0).getPara_id();
		//根据paramid查询值
		String paravaluehql="from YxySysParamatersValue where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id="+paramid;
		List<YxySysParamatersValue> paramvlist=yxysysparamatersvaluedao.findByHql(paravaluehql);
		if(paramvlist.size()>0){
			return paramvlist.get(0).getPara_value();
		}else{
			//查询系统参数
			String syscodehql="from YxySysParamaters where para_code='"+syscode+"'";
			List<YxySysParamaters> sysparamlist=yxysysparamaterdao.findByHql(syscodehql);
			int sysparamid=sysparamlist.get(0).getPara_id();
			//根据paramid查询值
			String sysparavaluehql="from YxySysParamatersValue where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id="+sysparamid;
			List<YxySysParamatersValue> sysparamvlist=yxysysparamatersvaluedao.findByHql(sysparavaluehql);
			if(sysparamvlist.size()>0){
				return sysparamvlist.get(0).getPara_value();
			}else{
				return sysparamlist.get(0).getDefault_value();
			}
		}
	}
	
	/**查询用户总分配量*/
	//public int findTolFenPeiCount(String loginid,String domain)throws Exception{
	public int findTolFenPeiCount(YxyUserInfo user)throws Exception{
		//String hql="select count(*) from YxySysParamatersValue where para_id=34 and owner_loginid='"+loginid+"' and company_domain='"+domain+"'";
		//return yxysysparamatersvaluedao.findByHqlCount(hql);
		if(user.getUser_role()==1)
		{
			int counts = 0;
			
			String hql="from YxySysParamatersValue where para_id=34 and company_domain='"+user.getDomain()+"' and para_value != '-1'";
			
			List<YxySysParamatersValue> values = yxysysparamatersvaluedao.findByHql(hql);
			
			if(values.size()>0)
			{
				for(YxySysParamatersValue value : values)
				{
					if(null!=value.getPara_value()&&!"".equals(value.getPara_value())||value.getPara_value().length()!=0)
					{
						counts += Integer.parseInt(value.getPara_value());
					}
				}
				
				return counts;
			}
			else
			{
				return counts;
			}
		}
		else
		{
			int counts = 0;
			
			String hql="from YxySysParamatersValue where para_id=34 and company_domain='"+user.getDomain()+"' " +
					"and para_value != '-1' and owner_loginid ='"+user.getLogin_id()+"'";
			
			List<YxySysParamatersValue> values = yxysysparamatersvaluedao.findByHql(hql);
			
			if(values.size()>0)
			{
				for(YxySysParamatersValue value : values)
				{
					if(null!=value.getPara_value()&&!"".equals(value.getPara_value())||value.getPara_value().length()!=0)
					{
						counts += Integer.parseInt(value.getPara_value());
					}
				}
				
				return counts;
			}
			else
			{
				return counts;
			}
		}
	}
	
	/**修改用户营销发送量控制参数*/
	public void updateParamaters(String loginid,String domain,String valuestr)throws Exception{
		//解析出传递的值
		String[] arraystr=valuestr.split("#");
		//需要添加的集合
		List<YxySysParamatersValue> paramvaluelist=new ArrayList<YxySysParamatersValue>();
		//循环处理
		for(int i=0;i<arraystr.length;i++){
			String[] valuearray=arraystr[i].split(",");
			String conntion=valuearray[0];
			String value=valuearray[1];
			if("1".equals(conntion)){//日发量
				//查询用户是否有记录
				String findhql1="select count(*) from YxySysParamatersValue where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id=1";
				int isday=yxysysparamatersvaluedao.findByHqlCount(findhql1);
				if(isday>0){
					//修改记录
					String hql="update YxySysParamatersValue set para_value="+value+" where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id=1";
					yxysysparamatersvaluedao.updateByHql(hql);
				}else{//添加记录
					YxySysParamatersValue daypara=new YxySysParamatersValue();
					daypara.setCompany_domain(domain);
					daypara.setOwner_loginid(loginid);
					daypara.setOwner_type(4);
					daypara.setPara_id(1);
					daypara.setPara_value(value);
					
					paramvaluelist.add(daypara);
				}
			}else if("2".equals(conntion)){//月发量
				String findhql1="select count(*) from YxySysParamatersValue where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id=2";
				int ismonth=yxysysparamatersvaluedao.findByHqlCount(findhql1);
				if(ismonth>0){
					String hql="update YxySysParamatersValue set para_value="+value+" where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id=2";
					yxysysparamatersvaluedao.updateByHql(hql);
				}else{
					YxySysParamatersValue monthpara=new YxySysParamatersValue();
					monthpara.setCompany_domain(domain);
					monthpara.setOwner_loginid(loginid);
					monthpara.setOwner_type(4);
					monthpara.setPara_id(2);
					monthpara.setPara_value(value);
					
					paramvaluelist.add(monthpara);
				}
			}else if("3".equals(conntion)){//总发量
				String findhql1="select count(*) from YxySysParamatersValue where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id=34";
				int ismonth=yxysysparamatersvaluedao.findByHqlCount(findhql1);
				if(ismonth>0){
					String hql="update YxySysParamatersValue set para_value="+value+" where owner_loginid='"+loginid+"' and company_domain='"+domain+"' and para_id=34";
					yxysysparamatersvaluedao.updateByHql(hql);
				}else{
					YxySysParamatersValue tolpara=new YxySysParamatersValue();
					tolpara.setCompany_domain(domain);
					tolpara.setOwner_loginid(loginid);
					tolpara.setOwner_type(4);
					tolpara.setPara_id(34);
					tolpara.setPara_value(value);
					paramvaluelist.add(tolpara);
				}
				
			}
		}
		//批量插入
		yxysysparamatersvaluedao.addPojoPi(paramvaluelist);
	}
	
	/**查询用户参数*/
	public YxySysParamatersValue findUserParam(String loginid,String domain,int para_id)throws Exception
	{
		String hql = "from YxySysParamatersValue where owner_type = 4 and owner_loginid = '"+loginid+"' and " +
				" company_domain = '"+domain+"' and para_id = "+para_id;
		
		List<YxySysParamatersValue> values = yxysysparamatersvaluedao.findByHql(hql);
		
		if(values.size() > 0)
		{
			return values.get(0);
		}
		else
		{
			return null;
		}
	}
	
	/**查询系统级参数*/
	public List<YxySysParamatersValue> findCompanyParam(String domain,int para_id)throws Exception
	{
		String hql = "from YxySysParamatersValue where owner_type = 1 and company_domain = '"+domain+"' and para_id = "+para_id;
		
		return yxysysparamatersvaluedao.findByHql(hql);
	}
	
	private YxySysParamaterDao yxysysparamaterdao;
	private YxySysParamatersValueDao yxysysparamatersvaluedao;
	public YxySysParamaterDao getYxysysparamaterdao() {
		return yxysysparamaterdao;
	}
	public void setYxysysparamaterdao(YxySysParamaterDao yxysysparamaterdao) {
		this.yxysysparamaterdao = yxysysparamaterdao;
	}
	public YxySysParamatersValueDao getYxysysparamatersvaluedao() {
		return yxysysparamatersvaluedao;
	}
	public void setYxysysparamatersvaluedao(
			YxySysParamatersValueDao yxysysparamatersvaluedao) {
		this.yxysysparamatersvaluedao = yxysysparamatersvaluedao;
	}
}