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

📄 mmsqueue.java

📁 彩信发送源代码,实现mm7接口
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	 */
	private int isVisible;

	public void setIsVisible(int isVisible) {
		this.isVisible = isVisible;
	}

	public int getIsVisible() {
		return isVisible;
	}

	/**
	 * varchar2(10) default 'auto' --彩信的类别,设置MM的类别(例如,广告、
	 * 信息服务和计费),可选,具体有:Auto、Personal、Advertisement、Informational
	 */
	private String messageClass;

	public void setMessageClass(String messageClass) {
		this.messageClass = messageClass;
	}

	public String getMessageClass() {
		return this.messageClass;
	}

	/**
	 * 
	 * @param corpid
	 *            企业代码
	 * @param spnumber
	 *            接入号码
	 * @param servicecode
	 *            业务代码
	 */
	public MMSQueue(String corpid, String spnumber, String servicecode) {
		this.corpID = corpid;
		this.spNumber = spnumber;
		this.serviceCode = servicecode;

		this.sendType = 1;
		this.reportFlag = 1;
		this.readReply = 1;
		this.priority = 2;// 较高的优先级
		this.messageClass = "auto";

	}

	/**
	 * 此方法默认为接受状态报告,接收读后回复报告,发送方式为to,计费号码为接受方号码。其他mms接口的可选字段都为默认值。同时,插入mmsendlog表
	 * 
	 * @param con
	 * @param queueid
	 * @param vasfrom
	 *            http方式的话,填sp下发时候的计费号码,业务代码为免费的话,也可以是企业代码.soap方式的话为发送方地址,即senderaddress字段,填写SP的服务代码(接入号),即VASID,或者填写让用户回复SP的长号码,长号码构成:SP的服务代码+业务代码+操作码
	 * @param vasto
	 *            接收方号码
	 * @param mmdir
	 *            彩信文件的存放目录,每个彩信存放一个目录,系统根据此目录,找到此目录下的所有文件,组合成彩信的内容。如果contentType为1的话,则此dir下必须有smil文件
	 * @param subject
	 *            主题
	 * @throws SQLException
	 */
	public void insert(Connection con, long queueid, String vasfrom, String vasto, String mmdir, String subject)
			throws SQLException {
		PreparedStatement stmt = null;
		PreparedStatement logstmt = null;

		String sql = "insert into mmsqueue(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?)";
		String logsql = "insert into mmsendlog(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?)";
		try {
			con.setAutoCommit(false);
			stmt = con.prepareStatement(sql);
			logstmt = con.prepareStatement(logsql);
			stmt.setLong(1, queueid);
			stmt.setString(2, corpID);
			stmt.setString(3, spNumber);
			stmt.setString(4, serviceCode);
			stmt.setString(5, vasfrom);
			stmt.setString(6, vasto);
			stmt.setInt(7, 1); // 表示由接受方扣费
			stmt.setString(8, subject);
			stmt.setString(9, mmdir);
			stmt.executeUpdate();
			stmt.close();

			logstmt.setLong(1, queueid);
			logstmt.setString(2, corpID);
			logstmt.setString(3, spNumber);
			logstmt.setString(4, serviceCode);
			logstmt.setString(5, vasfrom);
			logstmt.setString(6, vasto);
			logstmt.setInt(7, 1); // 表示由接受方扣费
			logstmt.setString(8, subject);
			logstmt.setString(9, mmdir);
			logstmt.executeUpdate();

			logstmt.close();
			con.commit();
		}
		catch (SQLException e) {
			con.rollback();
			System.out.println(e);

		}
		finally {
			con.setAutoCommit(true);
			if (stmt != null)
				stmt.close();
			if (logstmt != null)
				logstmt.close();
		}
	}

	/**
	 * 此方法默认为接受状态报告,接收读后回复报告,发送方式为to,计费号码为第三方号码。其他mms接口的可选字段都为默认值
	 * 
	 * @param con
	 * @param queueid
	 * @param vasfrom
	 *            http方式的话,填sp下发时候的计费号码,业务代码为免费的话,也可以是企业代码.soap方式的话为发送方地址,即senderaddress字段,填写SP的服务代码(接入号),即VASID,或者填写让用户回复SP的长号码,长号码构成:SP的服务代码+业务代码+操作码
	 * @param vasto
	 *            接收方号码
	 * @param mmdir
	 *            彩信文件的存放目录,每个彩信存放一个目录,系统根据此目录,找到此目录下的所有文件,组合成彩信的内容。如果contentType为1的话,则此dir下必须有smil文件
	 * @param subject
	 *            主题
	 * @throws SQLException
	 */
	public void insert(Connection con, long queueid, String vasfrom, String vasto, String feemobile, String mmdir,
			String subject) throws SQLException {
		PreparedStatement stmt = null;
		PreparedStatement logstmt = null;
		String sql = "insert into mmsqueue(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobile,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?,?)";
		String logsql = "insert into mmsendlog(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,feemobile,feemobiletype,subject,mmdir)values (?,?,?,?,?,?,?,?,?,?)";

		try {
			con.setAutoCommit(false);

			stmt = con.prepareStatement(sql);
			logstmt = con.prepareStatement(logsql);
			stmt.setLong(1, queueid);
			stmt.setString(2, corpID);
			stmt.setString(3, spNumber);
			stmt.setString(4, serviceCode);
			stmt.setString(5, vasfrom);
			stmt.setString(6, vasto);
			stmt.setString(7, feemobile);
			stmt.setInt(8, 4); // 表示由feemobile来扣费
			stmt.setString(9, subject);
			stmt.setString(10, mmdir);
			stmt.executeUpdate();
			stmt.close();

			logstmt.setLong(1, queueid);
			logstmt.setString(2, corpID);
			logstmt.setString(3, spNumber);
			logstmt.setString(4, serviceCode);
			logstmt.setString(5, vasfrom);
			logstmt.setString(6, vasto);
			logstmt.setString(7, feemobile);
			logstmt.setInt(8, 4); // 表示由feemobile来扣费
			logstmt.setString(9, subject);
			logstmt.setString(10, mmdir);
			logstmt.executeUpdate();
			logstmt.close();

			con.commit();
		}
		catch (SQLException e) {
			con.rollback();
			System.out.println(e);
		}
		finally {
			con.setAutoCommit(true);
			if (stmt != null)
				stmt.close();
			if (logstmt != null)
				logstmt.close();
		}
	}

	/**
	 * 
	 * @param con
	 * @param MMSQueues
	 * @param commitCount
	 * @throws SQLException
	 */
	public static void insert(Connection con, List MMSQueues, int commitCount) throws SQLException {
		MMSQueue[] queues = (MMSQueue[]) MMSQueues.toArray();
		insert(con, queues, commitCount);
	}

	/**
	 * 批量新增,建议批量新增的个数一次性最多为50个.太多了反而可能导致性能的下降 在执行此的时候,应将con的自动commit设为false;
	 * 
	 * @param con
	 * @param queues
	 * @param commit
	 *            满足多少条插入一次,建议在40--50之间
	 * @throws SQLException
	 */
	public static void insert(Connection con, MMSQueue[] queues, int commitCount) throws SQLException {
		PreparedStatement stmt = null;
		PreparedStatement logstmt = null;
		String sql = "insert into mmsqueue "
				+ "(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,sendtype,reportFlag,readreply,feemobile,feemobiletype,subject,mmdir,contenttype,priority,feevalue,ReplyChargingSize,ReplyCharging,expiretime,deliverytime,EarliestDeliveryTime,replydeadline,AllowAdaptations,isVisible,messageclass) "
				+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		String logsql = "insert into mmsendlog "
				+ "(queueid,corpID,spNumber,servicecode,vasFrom,vasTO,sendtype,reportFlag,readreply,feemobile,feemobiletype,subject,mmdir,contenttype,priority,feevalue,ReplyChargingSize,ReplyCharging,expiretime,deliverytime,EarliestDeliveryTime,replydeadline,AllowAdaptations,isVisible,messageclass) "
				+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

		try {
			con.setAutoCommit(false);
			stmt = con.prepareStatement(sql);
			logstmt = con.prepareStatement(logsql);
			for (int i = 1; i <= queues.length; i++) {
				MMSQueue queue = queues[i - 1];

				stmt.setLong(1, queue.getQueueID());
				stmt.setString(2, queue.getCorpID());
				stmt.setString(3, queue.getSpNumber());
				stmt.setString(4, queue.getServiceCode());
				stmt.setString(5, queue.getVasFrom());
				stmt.setString(6, queue.getVasTO());
				stmt.setInt(7, queue.getSendType());
				stmt.setInt(8, queue.getReportFlag());
				stmt.setInt(9, queue.getReadReply());
				stmt.setString(10, queue.getFeeMobile());
				if (queue.getFeeMobile() != null)
					stmt.setInt(11, 4);
				else
					stmt.setInt(11, queue.getFeeMobileType());
				stmt.setString(12, queue.getSubject());
				stmt.setString(13, queue.getMMDir());
				stmt.setInt(14, queue.getContentType());
				stmt.setInt(15, queue.getPriority());
				stmt.setString(16, queue.getFeeValue());
				stmt.setLong(17, queue.getReplyChargingSize());
				stmt.setInt(18, queue.getReplyCharging());
				stmt.setTimestamp(19, queue.getExpireTime());
				stmt.setTimestamp(20, queue.getDeliveryTime());
				stmt.setTimestamp(21, queue.getEarliestDeliveryTime());
				stmt.setTimestamp(22, queue.getReplyDeadLine());
				stmt.setInt(23, queue.getAllowAdaptations());
				stmt.setInt(24, queue.getIsVisible());
				stmt.setString(25, queue.getMessageClass());
				stmt.addBatch();

				logstmt.setLong(1, queue.getQueueID());
				logstmt.setString(2, queue.getCorpID());
				logstmt.setString(3, queue.getSpNumber());
				logstmt.setString(4, queue.getServiceCode());
				logstmt.setString(5, queue.getVasFrom());
				logstmt.setString(6, queue.getVasTO());
				logstmt.setInt(7, queue.getSendType());
				logstmt.setInt(8, queue.getReportFlag());
				logstmt.setInt(9, queue.getReadReply());
				logstmt.setString(10, queue.getFeeMobile());
				// 如果收费号码不为空的话,则计费号码类型设置为4
				if (queue.getFeeMobile() != null)
					logstmt.setInt(11, 4);
				else
					// 否则的话,设置为
					logstmt.setInt(11, queue.getFeeMobileType());
				logstmt.setString(12, queue.getSubject());
				logstmt.setString(13, queue.getMMDir());
				logstmt.setInt(14, queue.getContentType());
				logstmt.setInt(15, queue.getPriority());
				logstmt.setString(16, queue.getFeeValue());
				logstmt.setLong(17, queue.getReplyChargingSize());
				logstmt.setInt(18, queue.getReplyCharging());
				logstmt.setTimestamp(19, queue.getExpireTime());
				logstmt.setTimestamp(20, queue.getDeliveryTime());
				logstmt.setTimestamp(21, queue.getEarliestDeliveryTime());
				logstmt.setTimestamp(22, queue.getReplyDeadLine());
				logstmt.setInt(23, queue.getAllowAdaptations());
				logstmt.setInt(24, queue.getIsVisible());
				logstmt.setString(25, queue.getMessageClass());
				logstmt.addBatch();

				if (i % commitCount == 0) {
					// System.out.println(i);
					stmt.executeBatch();
					stmt.clearBatch();
					logstmt.executeBatch();
					logstmt.clearBatch();
				}
			}
			stmt.executeBatch();
			logstmt.executeBatch();

			con.commit();
		}
		catch (SQLException e) {
			con.rollback();
			System.out.println(e.toString());
			throw e;
		}

		finally {
			if (stmt != null)
				stmt.close();
			if (logstmt != null)
				logstmt.close();
		}

	}

	public static void main(String args[]) throws Exception {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.3:1521:ora9", "sxit", "sxit");
		if (args.length < 1) {
			System.out.println("请输入彩信目录:");
			return;
		}
		System.out.println("彩信目录:"+args[0]);

		// MMSQueue[] queues = new MMSQueue[300];
		// for (int i = 0; i < queues.length; i++) {
		MMSQueue queue = new MMSQueue("823009", "07155", "07155");
		// queue.setQueueID(1000000 + i);
		// queue.setFeeMobile("13608300000");
		// queue.setVasFrom("07155");
		// queue.setVasTO("13608300000");
		// queue.setMMDir("/20060210");
		// queues[i] = queue;
		//
		// }
		// long now = System.currentTimeMillis();
		// MMSQueue.insert(conn, queues, 50);
		// System.out.println(System.currentTimeMillis() - now);
		queue.insert(conn, System.currentTimeMillis() / 1000, "0715507155", "13883190608", "13608300000", args[0],
				"");
		System.out.println("-------插入成功");
		// queue.insert(conn, 7322, "0715507155", "13883190608", "13608300000",
		// "/20060128", "从数据库取彩信发送");

		//
		// queue.insert(conn,2,"0715507155","13983241005","/usr/local","dddddddddddddddd");
	}
}

⌨️ 快捷键说明

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