⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgmanager.java

📁 淘客在线客服管理系统(TaokeOCS V3.2)
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			if(db.getConnection()==null || db.isClosed())	 
				db.setConnection(); 	
			Calendar now= Calendar.getInstance();
			String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
						  String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
						  String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));			 		 
			for(int i=0;i<ids.length;i++){  
				if(ids[i]==null)
					continue;
				sql="update message set isRead=\"1\", readTime=\""+ nowStr+"\" where id=\""+ids[i]+"\""; 		
				db.setSqlQuery(sql);	
				db.executeUpdate();	
			}		
			if(db.getConnection()!=null && !db.isClosed())
				db.closeConnection();	
		}catch(Exception e){
			closeDbConnection();			 
			Log.log("Class:MsgManager method:markMessageAsRead(String[]) error:"+e.getMessage()+" sql:"+sql);
		}
	}
	/**
	  *标记所有短信为已读短信
	  *调用者:
	  *@param vid 
	  */	
	public void markAllMessagesAsRead(String vid){		 
		try{
			Calendar now= Calendar.getInstance();
			String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
						  String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
						  String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));	 
 			sql="update message set isRead=\"1\", readTime=\""+ nowStr+"\" where toId=\""+vid+"\" and isRead<>\"1\""; 	
			if(db.getConnection()==null || db.isClosed())	 
				db.setConnection();	
			db.setSqlQuery(sql);	
			db.executeUpdate();	
 			if(db.getConnection()!=null && !db.isClosed())
				db.closeConnection();	
		}catch(Exception e){
			closeDbConnection();			 
			Log.log("Class:MsgManager method:markMessageAsRead(String) error:"+e.getMessage()+" sql:"+sql);
		}
	}	
	/**
	  *发送短信息
	  *调用者:msgManager.jsp(a=3时为浏览者浮动窗口读取短信 a=2浏览者或服务人员发送信息)
	  *@param message 待发送的短信息
	  *@return boolean 返回是否发送成功
	  */	
	public boolean sendMsg(Message message){
		try{
			if(db.getConnection()==null || db.isClosed())			 
				db.setConnection(); 		
			//下面的但引号不能变成双引号 
			sql="insert into message values(null,\'"+message.getType()+"\',\'"+message.getFromId()+"\',\'"+
				message.getToId()+"\',\'"+message.getSendTime()+"\',\'"+message.getReadTime()+"\',\'"+
				message.getContent()+"\',\'"+message.isRead()+"\')";	
 			db.setSqlQuery(sql);
			db.executeUpdate();		
			if(db.getConnection()!=null && !db.isClosed())
				db.closeConnection();				
		}catch(Exception e){
			closeDbConnection();
			Log.log("Class:MsgManager method:sendMsg() error:"+e.getMessage()+" sql:"+sql);
			return false;
		}
		return true;
	}
	/**
	  *通知网站所有在线服务人员我(浏览者)离线的信息
	  */
 /**
    public void sendSayMeOffPageMsg(String vid,String url){
		try{		 
			/////获取该浏览者所浏览网站在线服务人员id			 
			sql="select distinct id from user,site "+
			    "where user.domainId=site.domainIds and domain=\""+url+"\" and state<>\"OFFLINE\"";
			if(db.getConnection()==null || db.isClosed())			 
				db.setConnection(); 		
			db.setSqlQuery(sql);
			rs=db.getResult();
			String[] ids=null;
			if(rs!=null && rs.last()){
				ids=new String[rs.getRow()];
				rs.beforeFirst();			
			} 
			for(int i=0;i<ids.length && rs!=null && rs.next();i++) 
				ids[i]=rs.getString("id");
			if(db.getConnection()!=null && !db.isClosed()) //////////////////////////
				db.closeConnection();	
			/////////////////////////////////////////
			/////给在线服务人员发离线的信息
			Calendar now= Calendar.getInstance();
			String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
						  String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
						  String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));	
			for(int i=0;i<ids.length;i++){			 
				//sql="insert into message values(\"\",\"TERMINATE\",\""+vid+"\",\""+
					//ids[i]+"\",\""+nowStr+"\",\"0000-00-00 00:00:00\",\" \",\"0\")";	
				//if(db.getConnection()==null || db.isClosed())			 
					//db.setConnection(); 
				//db.setSqlQuery(sql);
				//db.executeUpdate();	
				sendMsg(new Message("",vid,ids[i],"",nowStr,"0000-00-00 00:00:00","TERMINATE",false) );	
			}
			///////////////////////////////////////						
		}catch(Exception e){}	
	}
**/
	/**
	  *访问者或客户端发送我上线的消息
	  *调用者:webTalk.jsp client.jsp
	  *@param vid 访问者或客户端id
	  *@param type 类型(是否为visitor/stuff:是访问者调用或客户端调用)
	  *@param domain 所在的站点域名
	  *@param msg 消息内容
	  *@param msgType 消息类型
	  */
	public void sendSayMeOnPageInitMsg(String vid,String type,String domain,String msg,String msgType){
		if(type!=null && type.equals("visitor")){ 
			//sendMsgToVisitors(vid,type,domain,msg,msgType);
			sendMsgToStuff(vid,type,domain,msg,msgType);
			String contactMsg=null;
			if((contactMsg=getContact(vid))!=null)
				sendMsgToStuff(vid,type,domain,contactMsg,"SETNOTE");		
		}		 
		if(type!=null && type.equals("stuff")){ 		 
			sendMsgToVisitors(vid,type,domain,msg,msgType);
			sendMsgToStuff(vid,type,domain,msg,msgType);
		}		
	}
	/**
	  *访问者或客户端发短信息给所在网站的所有客户端
	  *调用者:MsgManager.java,webTalkWindow.jsp
	  *@param vid 发送者id
	  *@param type 发送者类别(是否为visitor 将表user 分为user和visitor后不再使用)
	  *@param domain 发送者所在域名
	  *@param msg 消息内容
	  *@param msgType 消息类别
	  */
	public void sendMsgToStuff(String vid,String type,String domain,String msg,String msgType){
		try{
			String[] ids=null;			
			 
 			//String domainId=new UserManager().getDomainId(vid);
			int index=domain.indexOf(",");
			if(index>0)
				domain=domain.substring(0,index);			 	
			sql="select distinct id from user,site "+
				    "where user.domainId=site.domainIds and domain=\""+domain+
				    "\" and state<>\"OFFLINE\"";		
  			if(db.getConnection()==null || db.isClosed())			 
				db.setConnection(); 		
			db.setSqlQuery(sql);
			rs=db.getResult();
			if(rs!=null && rs.last()){
				ids=new String[rs.getRow()];
				rs.beforeFirst();	
			}
			for(int i=0;ids!=null && i<ids.length && rs!=null && rs.next();i++)
				ids[i]=rs.getString("id");
			if(db.getConnection()!=null && !db.isClosed()) //////////////////////////////
					db.closeConnection();			
			for(int i=0;ids!=null && i<ids.length;i++)
				sendMsg(new msg.Message(vid,ids[i],msg,msgType));			
		}catch(Exception e){
			closeDbConnection();
			Log.log("Class:MsgManager method:sendMsgToStuff() error:"+e.getMessage()+" sql:"+sql);
		}		 
	}
	/**
	  *客户端/访问者发短信息给所在网站的所有客户端
	  *调用者:MsgManager.java
	  *@param vid 发送者id
	  *@param type 发送者类别(是否为visitor /user )
	  *@param domain 发送者所在域名
	  *@param msg 消息内容
	  *@param msgType 消息类别
	  */
	public void sendMsgToVisitors(String vid,String type,String domain,String msg,String msgType){	
	
		try{		
			String[] ids=null;			 
 			//String domainIds="";
			String domainIds="";
			if(type!=null && type.equals("stuff"))
				domainIds=new UserManager().getUserDomainId(vid);
			else
				domainIds=new UserManager().getVisitorDomainId(vid);
			//StringTokenizer st = new StringTokenizer(domainId,",");	
			//while(st.hasMoreTokens())
			//	domainIds +=",\""+st.nextToken()+"\"";
			//domainIds=domainIds.substring(1);
			
			sql="select id from visitor where domainId in ("+domainIds+") and state<>\"OFFLINE\"";			 
 			if(db.getConnection()==null || db.isClosed())			 
				db.setConnection(); 		
			db.setSqlQuery(sql);
			rs=db.getResult();
			if(rs!=null && rs.last()){
				ids=new String[rs.getRow()];
				rs.beforeFirst();	
			}				
			for(int i=0;ids!=null && i<ids.length && rs!=null && rs.next();i++)
				ids[i]=rs.getString("id");	
			if(db.getConnection()!=null && !db.isClosed()) /////////////////////////////
					db.closeConnection();		
			for(int i=0;ids!=null && i<ids.length;i++)
				sendMsg(new msg.Message(vid,ids[i],msg,msgType));				 
		}catch(Exception e){
			closeDbConnection();			 
			Log.log("Class:MsgManager method:sendMsgToVisitors() error:"+e.getMessage()+" sql:"+sql);
		}	
	}
	/**
	  *通知网站所有在线服务人员和浏览者我(服务人员)我的状态改变的信息
	  *调用者:msgManager.jsp
	  *@param vid 访问者id
	  *@param domain 发送者所在网站域名
	  *@param state 要改变的状态
	  */
	public void sendChangeStateMsg(String vid,String domain,String state){
 		sendMsgToVisitors(vid,"stuff",domain,state,"STATECHANGE");
		sendMsgToStuff(vid,"stuff",domain,state,"STATECHANGE");
 	}
	/**
	  *通知网站所有在线服务人员和浏览者我(服务人员)离线的信息
	  *调用者:msgManager.jsp
	  *@param vid 访问者id
	  *@param type 发送者类型(visitor stuff)
	  */
    public void sendSayMeLogoffMsg(String vid,String type){
		String domain="";
		if(type!=null && type.equals("stuff")){
			domain=new UserManager().getUserDomain(vid);
			int index=domain.indexOf(",");
			if(index>0)
				domain=domain.substring(0,index);
		}
		else
	 		domain=new UserManager().getVisitorDomain(vid);
		if(type!=null && type.equals("visitor")){ 
			//sendMsgToVisitors(vid,type,domain,msg,msgType);
			sendMsgToStuff(vid,type,domain,"OFFLINE","STATECHANGE");
		}	
		if(type!=null && type.equals("stuff")){ 
			sendMsgToVisitors(vid,type,domain,"OFFLINE","STATECHANGE");
			sendMsgToStuff(vid,type,domain,"OFFLINE","STATECHANGE");
		}		
	}
	/**
	  *通知网站所有在线服务人员和浏览者我(访问者或客户端)上线的信息
	  *调用者:webTalk.jsp client.jsp
	  *@param vid 访问者id
	  *@param type 发送者类型(visitor stuff)
	  *@param domain 发送者所在网站域名
	  */	
	public void sendSayMeLogonMsg(String vid,String type,String domain){
		if(type!=null && type.equals("visitor")){ 
			//sendMsgToVisitors(vid,type,domain,msg,msgType);
			sendMsgToStuff(vid,type,domain,"ONLINE","STATECHANGE");
			//以下3行挪到sendSayMeOnPageInitMsg()
			//String contactMsg=null;
			//if((contactMsg=getContact(vid))!=null)
				//sendMsgToStuff(vid,type,domain,contactMsg,"SETNOTE");
		}	
		if(type!=null && type.equals("stuff")){ 
			sendMsgToVisitors(vid,type,domain,"ONLINE","STATECHANGE");
			sendMsgToStuff(vid,type,domain,"ONLINE","STATECHANGE");
		}		
	}
	/**
	  *通知我所在群的所有在线服务人员我(客户端)上线的信息
	  *调用者:client.jsp
	  *@param vid 客户端id	  
	  */	
	public void tellGroupsImOnlineMsg(String vid){
		 try{			 
 			sql="select groupId from mygroup where userId=\""+vid+"\"";	
 			if(db.getConnection()==null || db.isClosed())			 
				db.setConnection(); 		
			db.setSqlQuery(sql);
			rs=db.getResult();
			String groupIds="";	
			if(rs!=null && rs.last()) 
				 groupIds +=","+rs.getString("groupId");
			if(groupIds.startsWith(","))
				groupIds=groupIds.substring(1);
			sql="select userId,name,groupId from mygroup,user where mygroup.userId=user.id and groupId in("+
			    	    groupIds+") and user.state<>\"OFFLINE\"";	
			if(db.getConnection()==null || db.isClosed())			 
				db.setConnection(); 		
			db.setSqlQuery(sql);
			rs=db.getResult();
			String t="";
			String myName="";
			while(rs!=null && rs.next()){
				if( (rs.getString("userId")).equals(vid) ){
					myName=rs.getString("name");
					rs.beforeFirst();
					break;
				}
			}
			while(rs!=null && rs.next()){		
				if( (rs.getString("userId")).equals(vid) )
					continue;			 
				t="<U i=\""+vid+"\" t=\"9\" s=\"ONLINE\" v=\"\""+
				  " dm=\""+rs.getString("groupId")+"\" n=\""+myName+"\"></U>";
				sendMsg(new msg.Message(vid,rs.getString("userId"),t,"ONPAGEINIT"));	
			}
			 
			if(db.getConnection()!=null && !db.isClosed()) //////////////////////////////
				db.closeConnection();	
			closeDbConnection();	 	 
			///////////////////////////////////////						
		}catch(Exception e){ 
			closeDbConnection();			 
			Log.log("Class:MsgManager method:tellGroupsImOnlineMsg(String vid) error:"+e.getMessage()+" sql:"+sql);
		}	
	}
	/**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -