📄 msgmanager.java
字号:
*通知我所在群的所有在线服务人员我(客户端)离线的信息
*调用者:msgManager.jsp
*@param vid 客户端id
*/
public void tellGroupsImOfflineMsg(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();
while( rs!=null && rs.next() ){
if( (rs.getString("userId")).equals(vid) )
continue;
sendMsg(new msg.Message(vid,rs.getString("userId"),"OFFLINE","STATECHANGE"));
}
if(db.getConnection()!=null && !db.isClosed()) //////////////////////////////
db.closeConnection();
closeDbConnection();
///////////////////////////////////////
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:tellGroupsImOfflineMsg(String vid) error:"+e.getMessage()+" sql:"+sql);
}
}
/**
*通知我所在群的所有在线服务人员我(客户端)上线的信息
*调用者:client.jsp
*@param vid 客户端id
*/
public void tellFriendsImOnlineMsg(String vid){
try{
sql="select name from user where id=\""+vid+"\"";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
String myName="";
if(rs!=null && rs.next())
myName=rs.getString("name");
sql="select id2 from friend where id1=\""+vid+"\"";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
String t="";
while(rs!=null && rs.next()){
t="<U i=\""+vid+"\" t=\"99\" s=\"ONLINE\" v=\"\""+
" dm=\"friend\" n=\""+myName+"\"></U>";
sendMsg(new msg.Message(vid,rs.getString("id2"),t,"ONPAGEINIT"));
}
if(db.getConnection()!=null && !db.isClosed()) //////////////////////////////
db.closeConnection();
closeDbConnection();
///////////////////////////////////////
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:tellFriendsImOnlineMsg(String vid) error:"+e.getMessage()+" sql:"+sql);
}
}
/**
*通知我所在群的所有在线服务人员我(客户端)离线的信息
*调用者:msgManager.jsp
*@param vid 客户端id
*/
public void tellFriendsImOfflineMsg(String vid){
try{
sql="select id2 from friend where id1=\""+vid+"\"";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
while(rs!=null && rs.next())
sendMsg(new msg.Message(vid,rs.getString("id2"),"OFFLINE","STATECHANGE"));
if(db.getConnection()!=null && !db.isClosed()) //////////////////////////////
db.closeConnection();
closeDbConnection();
///////////////////////////////////////
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:tellFriendsImOfflineMsg(String vid) error:"+e.getMessage()+" sql:"+sql);
}
}
/**
*客户端向某个群发送信息
*调用者:msgManager.jsp
*@param vid 客户端id
*@param groupId 群组id
*@param msg 消息内容
*@return int 返回发送信息的条数
*/
public int sendGroupsMsg(String vid,String groupId,String msg){
int numberOfmessages=0;
try{
sql="select userId,state from mygroup,user where user.id=mygroup.userId and "+
"groupId=\""+groupId+"\"";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
while( rs!=null && rs.next() ){
if( (rs.getString("userId")).equals(vid) )
continue;
if( (rs.getString("state")).equals("OFFLINE"))
sendMsg(new msg.Message(vid,rs.getString("userId"),msg,"TALKMSG","2") ); //发送留言
else
sendMsg( new msg.Message(vid,rs.getString("userId"),msg,"TALKMSG") );
numberOfmessages++;
}
if(db.getConnection()!=null && !db.isClosed()) //////////////////////////////
db.closeConnection();
closeDbConnection();
///////////////////////////////////////
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:sendGroupsMsg() error:"+e.getMessage()+" sql:"+sql);
}
return numberOfmessages;
}
/**
*获取所有在线访问者的contact信息
*调用者:msgManager.jsp
*@param vid 访问者id
*/
public void sendContactMsgToMe(String vid){
try{
String[] ids=null;
//String domainIds="";
String domainIds=new UserManager().getUserDomainId(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();
closeDbConnection();
for(int i=0;ids!=null && i<ids.length;i++)
sendMsg(new msg.Message(ids[i],vid,getContact(ids[i]),"SETNOTE"));
///////////////////////////////////////
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:sendContactMsgToMe() error:"+e.getMessage()+" sql:"+sql);
}
}
/**
*获取访问者的contact(标注信息)信息
*调用者:msgManager.jsp
*@param vid 访问者id
*@return String 返回访问者的标注信息
*/
public String getContact(String vid){
String contactMsg=null;
try{
sql="select name,sex,workphone,mobilephone,sht,email,qq,msn,address from visitor where id=\""+vid+"\"";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next()){
if(rs.getString("name")==null || rs.getString("name").equals("null")|| rs.getString("name").equals(""))
return null;
contactMsg="<contact name=\""+rs.getString("name")+"\" sex=\""+rs.getString("sex")+"\" workphone=\""+
rs.getString("workphone")+"\" mobilephone=\""+rs.getString("mobilephone")+"\" sht=\""+
rs.getString("sht")+"\" email=\""+rs.getString("email")+"\" qq=\""+rs.getString("qq")+
"\" msn=\""+rs.getString("msn")+"\" address=\""+rs.getString("address")+"\" type=\"\"/>";
}
///////////////////////////////////////
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:getContact() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return contactMsg;
}
/**
*通知网站所有在线服务人员我离线的信息
*当url为null时为user即客户端调用,当url为某域名时为访问者调用。
*/
/**
public void sendKeyInfoMsg(String vid,String url){
try{
///////////////////////////////////////
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){}
}
**/
/**
*更新网站服务人员的状态
*/
/**
public void changeUserStateTo(String vid,String state){
try{
sql="update user set state=\""+state+"\" where id=\""+vid+"\"";
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:changeUserStateTo() error:"+e.getMessage()+" sql:"+sql);
}
}
**/
/**
*更新访问者的状态
*/
/**
public void changeViewerStateTo(String vid,String state){
try{
sql="update visitor set state=\""+state+"\" where id=\""+vid+"\"";
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:changeViewerStateTo() error:"+e.getMessage()+" sql:"+sql);
}
}
**/
/**
*访问者发短信息告诉站点所有的在线服务人员我进入新的页面
*@param vid 访问者id
*@param domain 访问者所在网站域名
*@param frmurl 访问者来自网站域名
*@param curURL 访问者当前网站域名
*/
public void sendSayMeGetInPageMsg(String vid,String domain,String frmurl,String curURL){
String msg="";
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));
try{
//获取页面定义的中文名称
if(curURL.indexOf("?")>0)
sql="select `name` from `pageName`,`site` where `pageName`.domainId=`site`.domainId and `site`.domain=\'"+
Keyword.getCleanURL(curURL)+"\' and ( `pageName`.pageUrl=\'"+
Keyword.getPage(curURL)+"\' or `pageName`.pageUrl=\'"+
Keyword.getPageAndPara(curURL)+"\' )";
else
sql="select name from pageName,site where pageName.domainId=site.domainId and site.domain=\""+
Keyword.getCleanURL(curURL)+"\" and pageName.pageUrl=\""+
Keyword.getPage(curURL)+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection(); //local
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next()){
msg="<T f=\""+Keyword.getPage(frmurl)+"\" u=\""+
rs.getString("name")+"\" t=\""+nowStr+"\"/>";
}
else
msg="<T f=\""+Keyword.getPage(frmurl)+"\" u=\""+
Keyword.getPage(curURL)+"\" t=\""+nowStr+"\"/>";
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:sendSayMeGetInPageMsg() error:"+e.getMessage()+" sql:"+sql);
}
sendMsgToStuff(vid,"visitor",domain,msg,"ONPAGE");
}
/**
*过客向网站所有在线人员发消息
*调用者:msgManager.jsp
*@param vid 访问者id
*@param domain 访问者所在网站域名
*@param msg 要发送的短消息内容
*/
public void sendGuokeMsgToAll(String vid,String domain,String msg){
sendMsgToVisitors(vid,"visitor",domain,msg,"GKMSG");
sendMsgToStuff(vid,"visitor",domain,msg,"GKMSG");
}
private void closeDbConnection(){
try{
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -