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

📄 dwzblistener.java

📁 采用JAVA开发
💻 JAVA
字号:
package com.gctech.sms.sp.dwzb;
import com.gctech.sms.sp.cms.core.*;
import com.gctech.sms.sp.cms.msg.*;
import com.gctech.sms.sp.cms.util.*;
import org.apache.log4j.Logger;
public class DWZBListener extends RecevierListener {
	static Logger logger = Logger.getLogger(DWZBListener.class);
	private PlatformAPI api = null;
	private SessionFactory sf = null;
	private Config cfg = Config.instance();
	public DWZBListener(PlatformAPI api, SessionFactory sf) {
		this.api = api;
		this.sf = sf;
	}

	public void onMessage(Message msg) {
		logger.info("onmessage: " + msg);
		if (msg.commandId == Message.DELIVER) {
			onDeliver((DeliverMessage) msg);
		} else if(msg.commandId == Message.SUBMIT_RES){
			
			SubmitResMessage sub = (SubmitResMessage) msg;
			System.out.println("================sequence id:"+sub.sequenceId);
			System.out.println("=====================msg id:"+sub.messageId);
			//do nothing
		}else{
		}

	}

	/**
	 * 处理该消息
	 * @param msg
	 */
	private void onDeliver(DeliverMessage msg) {
		DeliverMessage dm = (DeliverMessage) msg;
		if(dm.isReport == 1){
			System.out.println("this message is a report");
			return;
		}else{
			System.out.println("this message is not a report");
		}
		//    logger.info("deliver " + dm);
		String phone = dm.srcTermId;
		String dest = dm.destTermId;
		String content = dm.content;
		//    String serviceNo = Config.instance().getServiceNo();
		User user = new User(phone);
		SMSContent smsContent = new SMSContent(content);
		String key = smsContent.keyWord();
		//通用帮助指令
		if (key.equals("HELP")) {
			notify(
				"吉芙德提供“灵机e动”短信业务,服务代码:12334,客服11698801 网站 5igift.com.cn",
				phone,"BZKF");
			return;
		}

		if (key.equals("12334")) {
			notify(
				"欢迎咨询吉芙德的短信业务,回复业务编号订阅服务:1 趣占1+1 客服 11698801 网站 5igift.com.cn,更多咨询请回复menu",
				phone,"BZTJ");
			return;
		}

		if (key.equals("MENU")) {
			notify(
				"欢迎咨询吉芙德的短信业务,回复业务编号订阅服务:1 趣占1+1 客服 11698801 网站 5igift.com.cn",
				phone,"BZTJ");
			return;
		}
		//对0000的处理
		if ((key.equals("00000") || key.equals("0000"))
			&& !user.isSubscriber()) {
			notify("您未订制由吉芙德提供的任何业务,客服 11698801 网站 5igift.com.cn", phone);
			return;
		}
		if (key.equals("KJB")) {
			notify(
				"欢迎点播吉芙德的短信业务,回复业务编号订阅服务:1 趣占1+1 客服 11698801 网站 5igift.com.cn",
				phone,"QZDB");
			return;
		}

		//非订阅用户
		if (!user.isSubscriber()) {
			//可能是要注册用户,需要继续处理,如果属于语音短信的内容不处理直接返回
			if (key == null
				|| "YTDX".equals(key)
				|| "YFDX".equals(key)
				|| "YODX".equals(key))
				return; //
			//支持二次确认方式订阅
			else if (
				key.equals(KeyWords.SUB)
					|| key.equals(KeyWords.QRSUB)
					|| key.equals("1")) {
				logger.info("someone register:");
				String[] paras = smsContent.parameter();
				String err =
					"您输入的格式不正确:发送 QRZC+生日+性别 到10612334 订阅生日格式为:YYYYMMDD 性别输入男或者女。如1976年2月14出生的男士,则发送“QRZC 19760214 男” 到10612334";
				if (paras == null || paras.length < 2) {
					notify(err, phone);
					return;
				}
				if (paras[0].length() != 8) {
					notify(err, phone);
					return;
				}
				if (!paras[1].equals("男") && !paras[1].equals("女")) {
					notify(err, phone);
					return;
				}
				int result = user.sub(paras[0], paras[1]);
				if (result == 0) {
					notify(
						"您已成功订制了趣占1+1 服务!6元/月。用户名是您的手机号,密码是"
							+ user.getPassword()
							+ ",谢谢您的使用! 使用指令详见5igift.com.cn网站。回复QXZC 取消该服务,客服 11698801",
						phone);
					notify(
						"您感谢定制趣占1+1服务,发送JB 到10612334 看看自己的基本个性,更多指令见5igift.com.cn网站",
						phone);
					return;
				} else if (result == 1) {
					notify(
						"系统出现错误,或者输入的参数不正确,请咨询11698801 网站 5igift.com.cn",
						phone);
					return;
				} else {
					notify("您已经是订阅用户,如有疑问请咨询11698801 网站 5igift.com.cn", phone);
					return;
				}
			} else {
				notify(
					"您还未订阅吉芙德提供的趣占1+1服务,发送ZC订阅趣占1+1服务,客服 11698801 网站 5igift.com.cn",
					phone);
				return;
			}

		}
		//对0000的处理
		if (key.equals("0000")) {
			notify("回复QX+业务编号,取消所订购的服务:0 所有订制服务 1 趣占1+1", phone,"BZTD");
			return;
		}
		//如果是订阅用户,需要退定
		if (key.equals(KeyWords.UNSUB)
			|| key.equals("QX0")
			|| key.equals("QX1")
			|| key.equals("00000")) {
			int result = user.unSub();
			if (result == 0) {
				if (key.equals("QX0")) {
					notify(
						"您已成功取消吉芙德的所有订阅服务!欢迎您下次使用我们的的短信服务,感谢您的使用!客服 11698801",
						phone,"BZTD");
				} else if (key.equals("QX1")) {
					notify(
						"您已成功取消趣占1+1的订阅!欢迎您下次使用吉芙德的短信服务,感谢您的使用!客服 11698801",
						phone,"BZTD");
				} else if (key.equals("00000"))
					notify(
						"您已成功取消吉芙德的所有订阅服务!欢迎您下次使用我们的的短信服务,感谢您的使用!客服11698801",
						phone,"BZTD");
				else
					notify(
						"您已成功取消趣占1+1的订阅!欢迎您下次使用吉芙德的短信服务,感谢您的使用!客服 11698801",
						phone,"BZTD");
			} else {
				notify("系统出现错误,或者输入的参数不正确,请咨询11698801", phone);
			}
			return;
		}
		//点播业务
		//取得计费代码
		String serviceId = null;
		System.out.println("user.feeType():"+user.feeType());
		switch (user.feeType()) {
			case 0 :
				{
					serviceId = cfg.getFreeFeeServiceId();
					break;
				}
			case 1 :
				{
					serviceId = cfg.getCheapFeeServiceId();
					break;
				}
			case 2 :
				{
					serviceId = cfg.getExpensiveFeeServiceId();
					break;
				}
			default :
				{
					serviceId = cfg.getExpensiveFeeServiceId();
					break;
				}
		}

		Response response = ResponseFactory.create(key);

		if (response == null) {
			notify("趣占1+1提示: 没有提供该服务,请咨询11698801 或 网站 5igift.com.cn", phone);
			return;
		}
		response.setContent(smsContent);
		response.setUser(user);
		/*以下代码考虑了会话*/
		//use dest as session id,if session dose not exist,sf will create it
		Session session = sf.getSession(dest);
		RabitMessage rm = (RabitMessage) session.getValue(key);
		if (rm == null) {
			String reply = response.getResponse();
			logger.info("whole content:" + reply);
			if (reply.length() <= 58) {
				send(reply, "", phone, serviceId);
				return;
			}
			rm = new RabitMessage(reply, key);

			session.setValue(key, rm);
			String respContent = null;
			if (rm.hasRabbit()) {
				respContent = rm.nextRabbit();
			} else {
				respContent = "趣占1+1提示:相关信息已经点播完!";
				;
				session.setValue(key, null);
			}
			send(respContent, "", phone, serviceId);
			return;

		} else {
			String respContent = null;
			if (rm.hasRabbit()) {
				respContent = rm.nextRabbit();
			} else {
				respContent = "趣占1+1提示:相关信息已经点播完!";
				;
				session.setValue(key, null);
			}
			send(respContent, "", phone, serviceId);
			return;

		}

		/*以上代码考虑了会话*/

	}

	private void send(
		String respContent,
		String src,
		String dest,
		String serviceId) {
		SubmitMessage sm =
			new SubmitMessage(
				Config.instance().getSpId(),
				serviceId,
				respContent,
				dest,
				dest,
				src);
		try {
			if (logger.isDebugEnabled())
				logger.debug(
					"add response content "
						+ respContent
						+ " src:"
						+ src
						+ " dest:"
						+ dest);
			api.addMessage(sm);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	private void notify(String content, String dest) {
		this.send(content, "", dest, Config.instance().getFreeFeeServiceId());
	}
	private void notify(String content, String dest,String serviceid) {
		this.send(content, "", dest, serviceid);
	}
	public static void main(String[] args) {
		String str = "9600288123344";
		String serviceNo = "9600288";
		System.out.println(str.substring(serviceNo.length()));
	}

}

⌨️ 快捷键说明

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