06d388301524954c5bcfab65e53d7c72f5351dbe.svn-base 7.2 KB
package yxy.timer.method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import yxy.timer.service.YxyReadService;
import yxy.timer.tool.DBUtil;
import yxy.timer.tool.UserAgentUtil;
import yxy.timer.tool.getArea;

/***
 * 
 * @author 谢勇
 * 获取远程退订信息
 */

public class GetUnTimer {
	private boolean isRun = false; //判断定时器是否在运行 默认false
	private Connection conn;
	private ResultSet rs;
	private PreparedStatement pst;
	
	/**获取远程退订信息*/
	public void getUnTimerMethod(){
		try {
			if(!isRun)
			{
				System.out.println("正在从远程获取退订信息...");
				isRun = true;//在运行
				conn = DBUtil.getConnection("clickdataSource");
				String sql = "select yxy_unsubscribe_id,yxy_unsubscribe_loginid,yxy_unsubscribe_domain," +
						"yxy_unsubscribe_mail_uid,yxy_unsubscribe_date,yxy_unsubscribe_body," +
						"yxy_unsubscribe_email,yxy_unsubscribe_ip,yxy_unsubscribe_agent " +
						"from yxy_unsubscribe_info where yxy_unsubscribe_issyn = 0 limit 200";
				pst = conn.prepareStatement(sql);
				rs  = pst.executeQuery();
				while(rs.next()){
					int yxy_unsubscribe_id = rs.getInt("yxy_unsubscribe_id");
					String yxy_unsubscribe_loginid = rs.getString("yxy_unsubscribe_loginid");
					String yxy_unsubscribe_domain = rs.getString("yxy_unsubscribe_domain");
					String yxy_unsubscribe_mail_uid = rs.getString("yxy_unsubscribe_mail_uid");
					String yxy_unsubscribe_date = rs.getString("yxy_unsubscribe_date");
					String yxy_unsubscribe_body = rs.getString("yxy_unsubscribe_body");
					String yxy_unsubscribe_email = rs.getString("yxy_unsubscribe_email");
					String yxy_unsubscribe_ip = rs.getString("yxy_unsubscribe_ip");
					String yxy_unsubscribe_agent = rs.getString("yxy_unsubscribe_agent");
					if(yxy_unsubscribe_mail_uid!=null&&yxy_unsubscribe_email!=null){
						if("sale100.com".equals(yxy_unsubscribe_domain)){//个人版的营销邮
							//查询本地库是否存在了
							String hql="select count(*) from YxyUnsubscribeInfo where unsubscribe_mail_uid='"+yxy_unsubscribe_mail_uid+"' and unsubscribe_email='"+yxy_unsubscribe_email+"'";
							int counts=yxyreadservice.findisRecode2(hql);
							if(counts==0){//未同步
								yxy.timer.sale.YxyMailNumCountInfo count = yxyreadservice.getYxyMailNumCount2(yxy_unsubscribe_mail_uid);
								if(count == null){//添加
									count = new yxy.timer.sale.YxyMailNumCountInfo();
									count.setId(0);
									count.setMail_uid(yxy_unsubscribe_mail_uid);
									count.setUnsub_person(1);
								}else{//编辑
									count.setUnsub_person(count.getUnsub_person()+1);
								}
								//获取ip所属地区
								String area = "未知";
								if(yxy_unsubscribe_ip!=null&&!"".equals(yxy_unsubscribe_ip)&&!"unknown".equals(yxy_unsubscribe_ip)){
									area = getArea.getArea(yxy_unsubscribe_ip);
								}
								yxy.timer.sale.YxyUnsubscribeInfo unsub = new yxy.timer.sale.YxyUnsubscribeInfo();
								unsub.setUnsubscribe_loginid(yxy_unsubscribe_loginid);
								unsub.setUnsubscribe_domain(yxy_unsubscribe_domain);
								unsub.setUnsubscribe_mail_uid(yxy_unsubscribe_mail_uid);
								unsub.setUnsubscribe_date(yxy_unsubscribe_date);
								unsub.setUnsubscribe_body(yxy_unsubscribe_body);
								unsub.setUnsubscribe_email(yxy_unsubscribe_email);
								unsub.setIp(yxy_unsubscribe_ip);
								unsub.setArea(area);
								unsub.setUser_agent(yxy_unsubscribe_agent);
								unsub.setUser_agent_info(UserAgentUtil.parseUserAgent(yxy_unsubscribe_agent));
								String yxy_unsubscribe_date2 = yxy_unsubscribe_date.split(" ")[0];
								int unsubscribe_year = Integer.parseInt(yxy_unsubscribe_date2.split("-")[0]);
								int unsubscribe_month = Integer.parseInt(yxy_unsubscribe_date2.split("-")[1]);
								int unsubscribe_day = Integer.parseInt(yxy_unsubscribe_date2.split("-")[2]);
								unsub.setUnsubscribe_year(unsubscribe_year);
								unsub.setUnsubscribe_month(unsubscribe_month);
								unsub.setUnsubscribe_day(unsubscribe_day);
								//添加退订信息
								yxyreadservice.insertUn2(unsub);
								//添加邮件对应的数量统计
								yxyreadservice.addEditYxyMailNumCount2(count);
							}
						}else{//自己的营销邮
							//查询本地库是否存在了
							String hql="select count(*) from YxyUnsubscribeInfo where unsubscribe_mail_uid='"+yxy_unsubscribe_mail_uid+"' and unsubscribe_email='"+yxy_unsubscribe_email+"'";
							int counts=yxyreadservice.findisRecode(hql);
							if(counts==0){//未同步
								yxy.timer.pojo.YxyMailNumCount count = yxyreadservice.getYxyMailNumCount(yxy_unsubscribe_mail_uid);
								if(count == null){//添加
									count = new yxy.timer.pojo.YxyMailNumCount();
									count.setId(0);
									count.setMail_uid(yxy_unsubscribe_mail_uid);
									count.setUnsub_person(1);
								}else{//编辑
									count.setUnsub_person(count.getUnsub_person()+1);
								}
								//获取ip所属地区
								String area = "未知";
								if(yxy_unsubscribe_ip!=null&&!"".equals(yxy_unsubscribe_ip)&&!"unknown".equals(yxy_unsubscribe_ip)){
									area = getArea.getArea(yxy_unsubscribe_ip);
								}
								yxy.timer.pojo.YxyUnsubscribeInfo unsub = new yxy.timer.pojo.YxyUnsubscribeInfo();
								unsub.setUnsubscribe_loginid(yxy_unsubscribe_loginid);
								unsub.setUnsubscribe_domain(yxy_unsubscribe_domain);
								unsub.setUnsubscribe_mail_uid(yxy_unsubscribe_mail_uid);
								unsub.setUnsubscribe_date(yxy_unsubscribe_date);
								unsub.setUnsubscribe_body(yxy_unsubscribe_body);
								unsub.setUnsubscribe_email(yxy_unsubscribe_email);
								unsub.setIp(yxy_unsubscribe_ip);
								unsub.setArea(area);
								unsub.setUser_agent(yxy_unsubscribe_agent);
								unsub.setUser_agent_info(UserAgentUtil.parseUserAgent(yxy_unsubscribe_agent));
								String yxy_unsubscribe_date2 = yxy_unsubscribe_date.split(" ")[0];
								int unsubscribe_year = Integer.parseInt(yxy_unsubscribe_date2.split("-")[0]);
								int unsubscribe_month = Integer.parseInt(yxy_unsubscribe_date2.split("-")[1]);
								int unsubscribe_day = Integer.parseInt(yxy_unsubscribe_date2.split("-")[2]);
								unsub.setUnsubscribe_year(unsubscribe_year);
								unsub.setUnsubscribe_month(unsubscribe_month);
								unsub.setUnsubscribe_day(unsubscribe_day);
								//添加退订信息
								yxyreadservice.insertUn(unsub);
								//添加邮件对应的数量统计
								yxyreadservice.addEditYxyMailNumCount(count);
							}
						}
					}
					//更新远程
					conn.setAutoCommit(false);
					String updatesql="update yxy_unsubscribe_info set yxy_unsubscribe_issyn=1 where yxy_unsubscribe_id="+yxy_unsubscribe_id;
					pst = conn.prepareStatement(updatesql);
					pst.executeUpdate();
					conn.commit();
					System.out.println("邮件退订量处理中...");
				}
			}
			System.out.println("正常结束从远程获取退订信息");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("异常从远处获取退订信息");
		}finally{
			DBUtil.close(rs, pst, conn);
			isRun = false;//更改状态为非执行
		}
		
	}
	private YxyReadService yxyreadservice;//点读service
	public YxyReadService getYxyreadservice() {
		return yxyreadservice;
	}
	public void setYxyreadservice(YxyReadService yxyreadservice) {
		this.yxyreadservice = yxyreadservice;
	}
}