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

📄 messagemonitor.java

📁 淘客在线客服管理系统(TaokeOCS V3.2)
💻 JAVA
字号:
package msg;
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
import   java.sql.*;  
import msg.*;
public class MessageMonitor implements Runnable{
	
	private static long monitorInterval = 5 * 60 * 1000;

  	FileWriter  logFW=null;
    PrintWriter logPW=null;
	private boolean threadsOn=false;
 	private String fileName="messageMonitor.properties"; 
	String   logFileName ="";
	File logFile=null;
	boolean viewPageDeleted=false;
	boolean messageDeleted=false;
	boolean resetSiteCredited=false;
	
  	public MessageMonitor(){	
	   if(threadsOn==false){	
	   			init();	   		 
	   			Thread th=new Thread(this);
  				th.start();
				threadsOn=true;
 	   }		 
	}
  	public void run(){
      	while (threadsOn){  				  
			try{		
				deleteMessage();
				deleteWebstat();
				resetSiteCredit();
  				Thread.sleep(monitorInterval); // 
			}catch (InterruptedException e1) {}   
			catch (Exception e) {
				try{log("Error:"+e.getMessage());}catch(Exception ee){}
			} 
		 	
		}
  	}
	//每天3点删除短信息表中的30天前的数据
	private void deleteMessage(){
		String sql="";
		DbConn db=null;
		try{
			 
			Calendar now= Calendar.getInstance();
			if(now.get(Calendar.HOUR_OF_DAY) != 3 && messageDeleted==true)
				messageDeleted=false;	
			if(now.get(Calendar.HOUR_OF_DAY) != 3 || messageDeleted==true)
				return;		
			now.setTimeInMillis(now.getTimeInMillis()-(31l * 24l * 60l * 60l * 1000l)); //后退31天
			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));
			db = new DbConn();
			sql="delete from message where ( type<>\'TALKMSG\' and type<>\'GKMSG\' and isRead<>\'0\') or sendTime<\'"+nowStr+"\'";
 			if(db.getConnection()==null || db.isClosed())			 
					db.setConnection(); 
			db.setSqlQuery(sql);
			int rows=db.executeUpdate();
			if(db.getConnection()!=null && !db.isClosed())
				db.closeConnection();
			messageDeleted=true;	
			if(rows>0)
			log("从表message删除记录"+rows+"条");
		}catch(Exception e){
			try{
				if(db!=null && db.getConnection()!=null && !db.isClosed())
					db.closeConnection();			
			}catch(Exception e1){}
			log("class:MessageMonitor method:deleteMessage() error:"+e.getMessage()+" sql:"+sql);	
		}	
	
	}
	//每天3点删除统计表中的30天前的数据
	private void deleteWebstat(){
		String sql="";
		DbConn db=null;
		try{
			 
			Calendar now= Calendar.getInstance();
			if(now.get(Calendar.HOUR_OF_DAY) != 3 && viewPageDeleted==true)
				viewPageDeleted=false;	
			if(now.get(Calendar.HOUR_OF_DAY) != 3 || viewPageDeleted==true)
				return;			
			now.setTimeInMillis(now.getTimeInMillis()-(31l * 24l * 60l * 60l * 1000l)); //后退31天
			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));
			db = new DbConn();
			sql="delete from pageview where time<\'"+nowStr+"\'";
 			if(db.getConnection()==null || db.isClosed())			 
					db.setConnection(); 
			db.setSqlQuery(sql);
			int rows=db.executeUpdate();
			if(db.getConnection()!=null && !db.isClosed())
				db.closeConnection();
			viewPageDeleted=true;	
			if(rows>0)
			log("从表pageView删除统计记录"+rows+"条");
		}catch(Exception e){
			try{
				if(db!=null && db.getConnection()!=null && !db.isClosed())
					db.closeConnection();			
			}catch(Exception e1){}
			log("class:MessageMonitor method:deleteWebstat() error:"+e.getMessage()+" sql:"+sql);	
		}	
	
	}
	//每月1日3点初始化注册站点(不包括添加站点)的月短信息信用点 
	private void resetSiteCredit(){
		String sql="";
		DbConn db=null;
		try{
			
			Calendar now= Calendar.getInstance();
			if( (now.get(Calendar.DAY_OF_MONTH)!=1 || now.get(Calendar.HOUR_OF_DAY) != 3 )
			     && resetSiteCredited==true)
				viewPageDeleted=false;	
			if(now.get(Calendar.DAY_OF_MONTH)!=1 || now.get(Calendar.HOUR_OF_DAY) != 3 || resetSiteCredited==true)
				return;			
			
			db = new DbConn();
			sql="update site set credit=\'100\' where parentId=\'0\' and payLevel=\'0\'";
 			if(db.getConnection()==null || db.isClosed())			 
					db.setConnection(); 
			db.setSqlQuery(sql);
			int rows=db.executeUpdate();
			if(db.getConnection()!=null && !db.isClosed())
				db.closeConnection();
			resetSiteCredited=true;	
			if(rows>0)
			log("在表site中初始化本月短信息信用点的网站共"+rows+"个");
		}catch(Exception e){
			try{
				if(db!=null && db.getConnection()!=null && !db.isClosed())
					db.closeConnection();			
			}catch(Exception e1){}
			log("class:MessageMonitor method:resetSiteCredit() error:"+e.getMessage()+" sql:"+sql);	
		}	
	}
	/**   
	  *   读取属性完成初始化   
	  */   
	  private   void   init()   {   
			  InputStream   is   =   getClass().getResourceAsStream(fileName);   
			  Properties   props   =   new   Properties();   
			  try   {   
					  props.load(is);   
			  }   
			  catch   (Exception   e)   {   
					  System.err.println("不能读取属性文件.   "   +"请确保siteMonitor.properties在CLASSPATH指定的路径中");   
					  return;   
			  }   
 			  //logFileName   =   props.getProperty("logfile")+"messageMonitor.txt";   
			  String path=(((this.getClass()).getResource("")).getPath()).toString();		   
		  	  //path 形如:/D:/100imserver/Tomcat5.5/webapps/ROOT/WEB-INF/classes/msg/		 			 
		  	  path=path.substring(0,path.indexOf("WEB-INF")); 
			  logFileName=path+"logs/"+props.getProperty("logfile");                    
			 
 	  }   
	/**   
	  *   将文本信息写入日志文件   
	  */   
	  private   void   log(String   s)   {   
			 // log.println(new    java.util.Date()   +   ":   "   +   msg);   
		try{
 		   //如果文件大于5M,就把原log文件名+1,然后另立文件
		   File logFile=new File(logFileName);
		   if(logFile!=null && logFile.exists() && logFile.length() > 5*1024*1024 ) {  //如果文件大于5M
			  String filePre=logFileName.substring(0,logFileName.indexOf("."));
			  File f1;
			  for(int i=1;i>0;i++){
				f1=new File(filePre+String.valueOf(i)+".txt");
				if(f1.exists())
					continue;
				else{
				   logFile.renameTo(new File(filePre+String.valueOf(i)+".txt")); 
				   logFile=new File(logFileName);
				   logFW = new FileWriter(logFileName,true); //false 覆盖原有文件
				   logPW = new PrintWriter(logFW); 	
 				   break;
				}
			  }
		   }
		   if(logPW == null){
		   		logFile=new File(logFileName);
			 	logFW = new FileWriter(logFileName,true); //false 覆盖原有文件
				logPW = new PrintWriter(logFW); 				  
		   }
		   logPW.print(new java.util.Date()+" "+s);
		   logPW.print("\r\n"); 
		   logPW.flush();
		}catch(Exception e){System.out.println("writeLog:"+e);}
	  }   

	  /**   
	  *   将文本信息与异常写入日志文件   
	  */   
	  private   void   log(Throwable   e,   String   msg)   {   
			  //log.println(new   java.util.Date()   +   ":   "   +   msg);   
			  //e.printStackTrace(log);   
	  }   
 
}

⌨️ 快捷键说明

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