📄 usermanager.java
字号:
return false;
}
/**
*判断客户端是否为代理商
*调用者:loginValidation.jsp
*@param agentId 客户端的id
*@param password 客户端密码
*@return boolean 返回客户端是否为代理商
*/
public boolean isAgent(String agentId){
try{
sql="select agentId from agent where agentId=\""+agentId+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
String userType=null;
if(rs!=null && rs.last() && rs.getRow()>0){
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
return true;
}
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: isAgent() error:"+e.getMessage()+" sql:"+sql);
return false;
}
return false;
}
/**
*检查访问者的上次更新时间,确定是否离线,如果离线,发信息通知客户端离线
*调用者:msgManager.jap 由客户端每60秒读取信息时调用 a=10
*@param vid 客户端id
*@param maxSeconds 超时时间
*/
public void checkVisitorOnlineAndSendMsg(String vid,int maxSeconds){
try{
String domainIds=getUserDomainId(vid);
Calendar now= Calendar.getInstance();
now.setTimeInMillis(now.getTimeInMillis()-maxSeconds*1000);
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="select id from visitor where domainId in("+domainIds+") and lastTime<\""+nowStr+
"\" and state<>\"OFFLINE\"";
//Log.log(sql);
if(db==null) db=new msg.DbConn();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;ids!=null &&rs.next() && i<ids.length;i++)
ids[i]=rs.getString("id");
//Log.log(sql);
sql="update visitor set state=\"OFFLINE\" where domainId in("+domainIds+") and lastTime<\""+nowStr+
"\" and state<>\"OFFLINE\"";
//Log.log(sql);
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
db.executeUpdate();
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
MsgManager msgManager=new MsgManager();
for(int i=0;ids!=null && i<ids.length;i++)
msgManager.sendSayMeLogoffMsg(ids[i],"visitor");
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: checkVisitorOnlineAndSendMsg() error:"+e.getMessage()+" sql:"+sql);
}
}
/**
*删除信息表中非对话信息以及信息为空的信息
*调用者:
*/
public void deleteMessage(){
try{
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
sql="delete from message where type<>\"TALKMSG\" and (isRead=\"1\" or content=\"null\")";
if(db==null) db=new msg.DbConn();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:UserManager method: deleteMessage() error:"+e.getMessage()+" sql:"+sql);
}
////////////////////////////////////////////
}
/**
*扣除域名下的短信息信用点
*调用者:msgManager.jsp
*@param domainId 域名id
*@param minusCredit 要扣除的信用点数
*/
public void dealCredit(String domainId,int minusCredit){
try{
sql="update site set credit=credit-"+minusCredit+" where domainId ="+domainId;
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
db.executeUpdate();
Calendar now= Calendar.getInstance();
String month=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1);
sql="update msgstat set creditSpent=creditSpent+"+minusCredit+",msgCount=msgCount+1 where domainId="+domainId+" and month=\""+month+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
if(db.executeUpdate()==0){
sql="insert into msgstat values(\""+domainId+"\",\""+month+"\",\""+minusCredit+"\",1)";
if(db==null) db=new msg.DbConn();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:UserManager method: dealCredit() error:"+e.getMessage()+" sql:"+sql);
}
////////////////////////////////////////////
}
/**
*判断域名下是否还有短信息信用点
*@param domainId 域名id
*@return boolean 返回是否还有短信息信用点
*/
public boolean hasMoreCredit(String domainId){
try{
sql="select credit from site where domainId ="+domainId+" and credit>0";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.last() && rs.getRow()>0){
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
return true;
}
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: hasMoreCredit() error:"+e.getMessage()+" sql:"+sql);
return false;
}
////////////////////////////////////////////
return false;
}
/**
*判断域名下是否还有短信息信用点
*@param domainId 域名id
*@return boolean 返回是否还有短信息信用点
*/
public boolean hasMoreCredit(String domainId,int n){
try{
sql="select credit from site where domainId ="+domainId+" and credit>"+String.valueOf(n);
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.last() && rs.getRow()>0){
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
return true;
}
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: hasMoreCredit() error:"+e.getMessage()+" sql:"+sql);
return false;
}
////////////////////////////////////////////
return false;
}
/**
*动态调用javascript 文件
*调用者:webTalk.jsp webTalkWindow.jap client.jsp
*@param name javascript 文件所对应的名称
*@return String 返回文件内容
*/
public String getJS(String name){
String value=null;
try{
sql="select value from jsdata where name=\""+name+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next())
value=rs.getString("value");
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: getJS() error:"+e.getMessage()+" sql:"+sql);
return "";
}
return value;
}
/**
public String getFloatType(String url){
String floatType="blue";
try{
sql="select floattype from site where domain=\""+url+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next())
floatType=rs.getString("floattype");
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: getFloatType() error:"+e.getMessage()+" sql:"+sql);
return "";
}
return floatType;
}
public String getGuokeType(String url){
String guokeType="1";
try{
sql="select guoke from site where domain=\""+url+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next())
guokeType=rs.getString("guoke");
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: getGuokeType() error:"+e.getMessage()+" sql:"+sql);
return "";
}
return guokeType;
}
public String getGuokeAdvert(String url){
String adGuoke=null;
try{
sql="select adGuoke from site where domain=\""+url+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next())
adGuoke=rs.getString("adGuoke");
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: getGuokeAdvert() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return adGuoke;
}
public String getTalkAdvert(String url){
String adTalk=null;
try{
sql="select adTalk from site where domain=\""+url+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next())
adTalk=rs.getString("adTalk");
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: getTalkAdvert() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return adTalk;
}
**/
/**
*访问者进入对话窗前获取最空闲的客服人员id
*调用者:webTalkWindow.jsp
*@param url 网站域名
*@return String 返回最空闲的客服人员id
*/
public String getFreeKefuId(String url){
String id=null;
try{
/**
String domainId="";
sql="select domainid from site where domain=\""+url+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.next())
domainId=rs.getString("domainId");
**/
sql="select distinct id,state from user,site "+
"where site.domainIds=user.domainId and domain=\""+url+"\"";
if(db==null) db=new msg.DbConn();if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
String adminId=null;
while(rs!=null && rs.next()){
if(rs.getString("id").indexOf("admin@")==0)
adminId=rs.getString("id");
if(rs.getString("state").equals("ONLINE")){
id=rs.getString("id");
break;
}
}
if(id==null)
id=adminId;
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:UserManager method: getFreeKefuId() error:"+e.getMessage()+" sql:"+sql)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -