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

📄 wappushtranslator.java

📁 DbService数据库接口,测试规范?菘饨涌?测试规范数据库接口,测试规范
💻 JAVA
字号:
package com.rainbow.mas.plugin.dbplugin.translator;

import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.rainbow.mas.SessionFactory;
import com.rainbow.mas.plugin.dbplugin.util.SendHeadInfo;
import com.rainbow.mas.plugin.dbplugin.util.SeqNumber;
import com.rainbow.mas.plugin.dbplugin.util.Utility;
import com.rainbow.mas.plugin.dbplugin.util.WPushUtil;
import com.rainbow.mas.web.dto.MmsOutbox;
import com.rainbow.mas.web.dto.MsgRoute;
import com.rainbow.mas.web.dto.SmsDeliver;
import com.rainbow.mas.web.dto.SmsDeliverHistory;
import com.rainbow.mas.web.dto.SmsIdMapping;
import com.rainbow.mas.web.dto.SmsInbox;
import com.rainbow.mas.web.dto.SmsOutbox;
import com.rainbow.mas.web.dto.SmsSent;
import com.rainbow.mas.web.dto.SmsSubmit;
import com.rainbow.mas.web.dto.SmsSubmitHistory;
import com.rainbow.mas.web.dto.WapPushOutbox;
import com.rainbow.mas.web.dto.WapPushSent;

public class WapPushTranslator implements Translator {
	static Logger logger = LogManager.getLogger(WapPushTranslator.class);
	private static SeqNumber seqNumber = SeqNumber.getInstance();

	public void clean(Date cleanTime) {
		if (cleanTime == null)
			return;
		Session s = SessionFactory.currentSession();
		Transaction tx = s.beginTransaction();
		try {
			tx = s.beginTransaction();

			int ret = s.createSQLQuery(
					"delete from wappush_sent " + "where senttime<'"
							+ datefmt.format(cleanTime) + "'").executeUpdate();
			logger.info("Clean " + ret + "wappush_sent data item!");

			tx.commit();
		} catch (Exception e) {
			if (tx != null) {
				e.printStackTrace();
				tx.rollback();
			}
		} finally {
			s.close();
		}
	}


	public void inbound(int max)
	{
		int mx = max;
		if (mx <= 0)
		{
			mx = 1000;
		}
		Session s = SessionFactory.currentSession();
		Transaction tx = s.beginTransaction();
		try
		{
			tx = s.beginTransaction();
			List list = s.createQuery("from WapPushOutbox").setMaxResults(mx)
					.list();
			for (int i = 0; i < list.size(); i++)
			{
				WapPushOutbox out = (WapPushOutbox) list.get(i);
				// IN 参数
				String apID = out.getApplicationid();
				String extendCode = out.getExtcode();
				// 是否返回状态报告
				Integer registeredDelivery = out.getReqdeliveryreport();
				//生成PUSH发送内容!!!!!!!!!!!!!!!!!!!!!!!!!!
				String BinaryContent = WPushUtil.formatPushMessage(out.getTargeturl(), out.getSubject());

				List l = s.createQuery(
						"from MsgRoute r " + "where r.applicationId='"
								+ out.getApplicationid() + "'").list();
				if (l.size() > 1)
				{
					logger.info("Duplicate activated Message Route!"
							+ "(applicationID:" + out.getApplicationid()
							+ " extcode:" + out.getExtcode() + ")");
					continue;
				}
				else if (l.size() == 0)
				{
					logger.info("No suited Message Route!" + "(applicationID:"
							+ out.getApplicationid() + " extcode:"
							+ out.getExtcode() + ")");
					continue;
				}

				// 从DB中得到BizConfig/////////////////////

				// 这二项是由是我自己来的 封闭成一个函数 Utility.getSendHeadInfo();
				// IN:ApID,extendCode
				// OUT:服务代码,业务代码 ,BizConfig
				SendHeadInfo sendHeadInfo = Utility.getSendHeadInfo(apID,
						extendCode);
				// 输出标号 代表一组消息
				String requestIdentifier = seqNumber.genRequestIdentifier();
				// ///////////////////////

				String destAddr = out.getDestaddr();
				if (destAddr == null)
					continue;
				String[] addrs = destAddr.split(";");
				// 最多不超过50给接受者
				for (int j = 0; j < addrs.length && j < 50; j++)
				{
					// /////////new//////////////
					SmsSubmit ss = new SmsSubmit();
					// 系统保证唯一序号 要填,由IT系统自己定义
					ss.setSmsid(Integer.parseInt(out.getSiwappushid()));//*********
					ss.setBiz(sendHeadInfo.getBizConfig());
					// ///////////
					ss.setLoadtime(new Date());
					ss.setServicecode(sendHeadInfo.getBuinessCode());
					ss.setCaller(sendHeadInfo.getServerCode());
					ss.setCalled(addrs[j]);
					ss.setCharge(addrs[j]);
					ss.setFeevalue(0); // 填0 免费
					// *****************
					ss.setMsgformat(4);
					ss.setMsgcontent(BinaryContent);
					// *****************

					ss.setSendtime(new Date());
					ss.setStatus(0);// 状态 填0
					ss.setFailsendtimes(0);// 失败已重发次数 填0
					// 一定要设置 此值不能为空
					ss.setSentresult(0); // 状态 填0
					ss.setServercode(sendHeadInfo.getServerCode()); // 服务代码

					s.save(ss);
					s.flush();
					// /////////////////////////////////////////////
					// 查出ID值 添加到 sms_mapping 表
					s.refresh(ss);
					int smsTaskID = ss.getSmsTaskId();
					SmsIdMapping sim = new SmsIdMapping();
					sim.setSmsTaskId(smsTaskID);
					sim.setSismsid(requestIdentifier); // 一组消息标识
					sim.setApplicationid(apID);
					sim.setExtcode(extendCode);
					sim.setProcessStatus(0);// 状态 没处理
					s.save(sim);
					s.flush();
					// ////////////////

				}

				s.delete(out);
			}
			tx.commit();
		}
		catch (Exception e)
		{
			if (tx != null)
			{
				logger.error("Throw Exception!", e);
				tx.rollback();
			}
		}
		finally
		{
			s.close();
		}
	}

	public void outbound(Date checkTime) 
	{

		if (checkTime == null)
			return;
		Session s = SessionFactory.currentSession();
		Transaction tx = s.beginTransaction();
		try
		{
			tx = s.beginTransaction();


			// 处理已发送短信

			List list = s.createQuery(
					"from SmsSubmitHistory where msgformat = 4 and sendtime>'"
							+ datefmt.format(checkTime) + "'").list();
			
			for (int i = 0; i < list.size(); i++)
			{

				
				SmsSubmitHistory submit = (SmsSubmitHistory) list.get(i);
				List l = s.createQuery(
						"from SmsIdMapping m where m.smsTaskId="
								+ submit.getSmsTaskId()).list();
				if (l.size() != 1)
				{
					logger.info("No matchedMessage Mapping!");
					continue;
				}
				SmsIdMapping mapping = (SmsIdMapping) l.get(0);
				if (mapping == null)
				{
					continue;
				}
				
				WapPushSent sent = new WapPushSent();
				sent.setApplicationid(mapping.getApplicationid());
				sent.setMaswappushid(submit.getSmsTaskId().toString());//****MAS产生的ID
				sent.setGwwappushid(submit.getMsgId());  //网关返回的
				sent.setSiwappushid(submit.getSmsid().toString());  //******从WAPPUSH_OUTBOX 表带来
				sent.setDestaddr(submit.getCalled());
				sent.setExtcode(mapping.getExtcode());
				sent.setRequesttime(submit.getLoadtime());
				sent.setSentresult(submit.getSentresult());
				sent.setSenttime(submit.getSendtime());
				sent.setWappushstatus(submit.getStatus().toString());
				sent.setStatustime(submit.getResultTime());
				s.save(sent);
				//暂时先删掉吧  是分开测试的!!!!!!!!!!!!!!
				s.delete(submit);
			}
			tx.commit();
		}
		catch (Exception e)
		{
			if (tx != null)
			{
				e.printStackTrace();
				tx.rollback();
			}
		}
		finally
		{
			s.close();
		}
			
	}
	/**
	 * 根据 String destAddrr 得到APID  
	 * 查表MsgRoute
	 */
	private String getApIdByDestAddrr(String destAddr)
	{
		String ApID = null;
		
		
		Session session = null;
		StringBuffer sbHql = new StringBuffer();
		
		
		try 
		{
			session = SessionFactory.currentSession();

			sbHql.append("from MsgRoute where '");
			sbHql.append(destAddr);
			sbHql.append("' like concat(newServiceCode,'%') or '");
			sbHql.append(destAddr);
			sbHql.append("' like concat(oldServiceCode,'%')");
			

			Iterator<MsgRoute> it = session.createQuery(sbHql.toString()).iterate();
			if(it.hasNext())
			{
				ApID = it.next().getApplicationId(); 
			}
		}
        catch (Exception e) 
        { 
        	logger.error(e.getMessage(),e);
        } 
 		
		return ApID;
	}

}

⌨️ 快捷键说明

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