|
@@ -0,0 +1,523 @@
|
|
|
+package com.iamberry.rst.service.wechat;
|
|
|
+
|
|
|
+import com.iamberry.app.tool.log.RatFWLogger;
|
|
|
+import com.iamberry.rst.faces.wechat.*;
|
|
|
+import com.iamberry.wechat.core.entity.member.Member;
|
|
|
+import com.iamberry.wechat.core.entity.wx.*;
|
|
|
+import com.iamberry.wechat.tools.*;
|
|
|
+import net.sf.json.JSONObject;
|
|
|
+import org.apache.commons.lang3.StringEscapeUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+
|
|
|
+ * description : wechat handler的核心服务类
|
|
|
+ * @author 何秀刚
|
|
|
+ * create date:2016年3月10日
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class WeChatServiceImpl implements WeChatService {
|
|
|
+ @Autowired
|
|
|
+ private KeyWordService keyWordService;
|
|
|
+ @Autowired
|
|
|
+ private RatFWLogger inLongLogger;
|
|
|
+ @Autowired
|
|
|
+ private ImageTextInfoService imageTextInfoService;
|
|
|
+ @Autowired
|
|
|
+ private MenuKeySetService menuKeySetService;
|
|
|
+ @Autowired
|
|
|
+ private ImageTextMoreService imageTextMoreService;
|
|
|
+ @Autowired
|
|
|
+ private HomeService homeService;
|
|
|
+
|
|
|
+
|
|
|
+ * 处理微信发来的请求
|
|
|
+ * @param FromUserName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String processRequest(String FromUserName, String ToUserName, String MsgType, String CreateTime, String Content, String Event, String Ticket, String EventKey) {
|
|
|
+
|
|
|
+ Map<String, String> requestMap = new HashMap<String, String>();
|
|
|
+ requestMap.put("FromUserName", FromUserName);
|
|
|
+ requestMap.put("ToUserName", ToUserName);
|
|
|
+ requestMap.put("MsgType", MsgType);
|
|
|
+ requestMap.put("CreateTime", CreateTime);
|
|
|
+ requestMap.put("Content", Content);
|
|
|
+ requestMap.put("Event", Event);
|
|
|
+ requestMap.put("Ticket", Ticket);
|
|
|
+ requestMap.put("EventKey", EventKey);
|
|
|
+
|
|
|
+ String respMessage = null;
|
|
|
+ String fromUserName = null;
|
|
|
+ String toUserName = null;
|
|
|
+ long createTime = 0L;
|
|
|
+ String msgType = null;
|
|
|
+ try {
|
|
|
+
|
|
|
+ String respContent = "";
|
|
|
+
|
|
|
+ fromUserName = requestMap.get("FromUserName");
|
|
|
+ toUserName = requestMap.get("ToUserName");
|
|
|
+ msgType = requestMap.get("MsgType");
|
|
|
+ createTime = new Date().getTime();
|
|
|
+
|
|
|
+
|
|
|
+ TextMessage textMessage = new TextMessage();
|
|
|
+ textMessage.setCreateTime(createTime);
|
|
|
+ textMessage.setToUserName(fromUserName);
|
|
|
+ textMessage.setFromUserName(toUserName);
|
|
|
+ textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
|
|
|
+
|
|
|
+
|
|
|
+ String intxml = "<xml>"+
|
|
|
+ "<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>" +
|
|
|
+ "<FromUserName><![CDATA[" + toUserName + "]]></FromUserName>" +
|
|
|
+ "<CreateTime>" + createTime + "</CreateTime>" +
|
|
|
+ "<MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>";
|
|
|
+
|
|
|
+ * 各种消息处理
|
|
|
+ */
|
|
|
+ if(msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)){
|
|
|
+ String content = requestMap.get("Content").trim();
|
|
|
+ if(!(content != null && !"".equals(content))) {
|
|
|
+ respContent = ResultInfo.messageIsNullResponseText;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(QQFace.isQqFace(content)){
|
|
|
+ String xml = "<xml>"+
|
|
|
+ "<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>" +
|
|
|
+ "<FromUserName><![CDATA[" + toUserName + "]]></FromUserName>" +
|
|
|
+ "<CreateTime>" + createTime + "</CreateTime>" +
|
|
|
+ "<MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>";
|
|
|
+ return xml;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (content.startsWith(NameUtils.getConfig("PLACE_CODE_PREFIX"))) {
|
|
|
+ content = StringUtils.trim(content);
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ Status status = messageHandler(content, requestMap, fromUserName, toUserName, createTime+"");
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return respContent = status.getCountext();
|
|
|
+ } else {
|
|
|
+ respContent = status.getCountext();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if(msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)){
|
|
|
+
|
|
|
+ return intxml;
|
|
|
+ } else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
|
|
|
+
|
|
|
+ return intxml;
|
|
|
+ } else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
|
|
|
+ return intxml;
|
|
|
+ } else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
|
|
|
+ return intxml;
|
|
|
+ } else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
|
|
|
+
|
|
|
+ String eventType = requestMap.get("Event");
|
|
|
+ String eventKey = requestMap.get("EventKey");
|
|
|
+ if(eventType.equals("SCAN")){
|
|
|
+
|
|
|
+ if (eventKey.indexOf(ResultInfo.barCodePrefix) != -1) {
|
|
|
+ Status status = scannQrcodeGiveGift(requestMap, fromUserName);
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return status.getCountext();
|
|
|
+ }
|
|
|
+ respContent = status.getCountext();
|
|
|
+ } else {
|
|
|
+
|
|
|
+ int flag = subUserScannQrcodeEvent(requestMap, fromUserName);
|
|
|
+ if (flag == 1) {
|
|
|
+
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return status.getCountext();
|
|
|
+ }
|
|
|
+ respContent = status.getCountext();*/
|
|
|
+ respContent = ResultInfo.subDefaultResponseText;
|
|
|
+ } else if (flag == 0) {
|
|
|
+ respContent = ResultInfo.subDefaultResponseText;
|
|
|
+ } else if (flag == 4) {
|
|
|
+ respContent = "欢迎您关注美国watero!您已享受购买水机终身优惠价3280元(普通会员销售价3680元),并且购买即赠三年滤芯套装,快来购买吧!<a href=\"http://w.iamberry.com/watero/wechat/wxCart/goProductList\">点击购买</a>";
|
|
|
+ } else {
|
|
|
+ respContent = "欢迎您关注美国watero,恭喜您成为金牌会员。自己购买或者推荐朋友购买水机均将享受3280元优惠价,并免费赠送3年滤芯哦!点击菜单“分销中心-代理分销”可进入您的专属分销管理中心。";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
|
|
|
+
|
|
|
+ if(requestMap.get("Ticket") != null){
|
|
|
+
|
|
|
+ if (eventKey.indexOf(ResultInfo.barCodePrefix) != -1) {
|
|
|
+ Status status = scannQrcodeSubGiveGift(requestMap, fromUserName);
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return status.getCountext();
|
|
|
+ }
|
|
|
+ respContent = status.getCountext();
|
|
|
+ } else {
|
|
|
+
|
|
|
+ Status status = scannQRcodeSub(requestMap, fromUserName);
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return status.getCountext();
|
|
|
+ }
|
|
|
+ respContent = status.getCountext();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+ Status status = queryWechatSub(fromUserName, requestMap);
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return status.getCountext();
|
|
|
+ }
|
|
|
+ respContent = status.getCountext();
|
|
|
+ }
|
|
|
+ } else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
|
|
|
+
|
|
|
+
|
|
|
+ unSubScribe(fromUserName);
|
|
|
+ respContent = "Success";
|
|
|
+ } else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK) || eventType.equals("VIEW")) {
|
|
|
+
|
|
|
+ Status status = clickWechatMenuEnent(requestMap);
|
|
|
+ if (status.isFlag()) {
|
|
|
+ return status.getCountext();
|
|
|
+ }
|
|
|
+ respContent = status.getCountext();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ textMessage.setContent(respContent);
|
|
|
+ respMessage = MessageUtil.textMessageToXml(textMessage);
|
|
|
+ } catch (Exception e) {
|
|
|
+ inLongLogger.debug(this, e.getMessage());
|
|
|
+ TextMessage textMessage = new TextMessage();
|
|
|
+ textMessage.setCreateTime(createTime);
|
|
|
+ textMessage.setToUserName(fromUserName);
|
|
|
+ textMessage.setFromUserName(toUserName);
|
|
|
+ textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
|
|
|
+ textMessage.setContent(ResultInfo.tryCatchDefaultResponseText);
|
|
|
+ respMessage = MessageUtil.textMessageToXml(textMessage);
|
|
|
+ }
|
|
|
+ return respMessage;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 扫码进入赠送礼品信息页面(已关注)
|
|
|
+ * @param requestMap
|
|
|
+ */
|
|
|
+ public Status scannQrcodeGiveGift(Map<String, String> requestMap, String fromUserName) {
|
|
|
+ Status status = new Status();
|
|
|
+ String senceid = requestMap.get("EventKey");
|
|
|
+ senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");
|
|
|
+ String str = bindingMachine(senceid, fromUserName);
|
|
|
+ status.setCountext(str);
|
|
|
+ status.setFlag(false);
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 扫码进入赠送礼品信息页面(未关注)
|
|
|
+ * @param requestMap
|
|
|
+ * @param fromUserName
|
|
|
+ */
|
|
|
+ public Status scannQrcodeSubGiveGift(Map<String, String> requestMap, String fromUserName) {
|
|
|
+
|
|
|
+ Status status = new Status();
|
|
|
+ Member member = refreshUserInfo(fromUserName);
|
|
|
+ String senceid = requestMap.get("EventKey");
|
|
|
+ senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");
|
|
|
+ String str = bindingMachine(senceid.trim(), fromUserName);
|
|
|
+ status.setCountext(str);
|
|
|
+ status.setFlag(false);
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 上海wateroPF扫码绑定机器关系
|
|
|
+ * @param senceid
|
|
|
+ * @param fromUserName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String bindingMachine(String senceid, String fromUserName) {
|
|
|
+ StringBuilder str = new StringBuilder();
|
|
|
+ String url = NameUtils.getConfig("rst_base_url") + senceid;
|
|
|
+ Map<String,String> params = new HashMap<String,String>();
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ try {
|
|
|
+
|
|
|
+ String resultJson = HttpClient431Util.doGet(params,url,null,null,null);
|
|
|
+ resultJson = StringEscapeUtils.unescapeJava(resultJson);
|
|
|
+ inLongLogger.info("==========================获取机器信息成功,返回值为:" + resultJson + "=========================");
|
|
|
+ JSONObject jsonObject = JSONObject.fromObject(resultJson);
|
|
|
+ if (jsonObject.getInt("resultCode") != 200) {
|
|
|
+ str.append("尊敬的美国WaterO用户您好。\n" +
|
|
|
+ "经检测,您的机器为正品,可放心使用。\n" +
|
|
|
+ "如有疑问,请联系官方客服 4008006692.");
|
|
|
+ return str.toString();
|
|
|
+ }
|
|
|
+ JSONObject jsonMessage = jsonObject.getJSONObject("message");
|
|
|
+ if (jsonMessage.getInt("isBeing") == 2) {
|
|
|
+ str.append("尊敬的美国WaterO用户您好。\n" +
|
|
|
+ "经检测,您的机器为正品,可放心使用。\n" +
|
|
|
+ "如有疑问,请联系官方客服 4008006692.");
|
|
|
+ return str.toString();
|
|
|
+ }
|
|
|
+ str.append("您的<");
|
|
|
+ str.append(jsonMessage.getString("productType"));
|
|
|
+ str.append(">为正品,生产日期为:");
|
|
|
+ str.append(format.format(new Date(jsonMessage.getLong("producedTime"))));
|
|
|
+ str.append("。请放心使用。");
|
|
|
+ return str.toString();
|
|
|
+ } catch (Exception e) {
|
|
|
+ inLongLogger.info("==========================获取机器信息失败,机器条形码为:" + senceid + "=========================");
|
|
|
+ str.append("尊敬的美国WaterO用户您好。\n" +
|
|
|
+ "经检测,您的机器为正品,可放心使用。\n" +
|
|
|
+ "如有疑问,请联系官方客服 4008006692.");
|
|
|
+ return str.toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * 已关注用户扫描二维码事件
|
|
|
+ * @param requestMap
|
|
|
+ * @param fromUserName
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public int subUserScannQrcodeEvent(Map<String, String> requestMap, String fromUserName) throws Exception {
|
|
|
+ String senceid = requestMap.get("EventKey");
|
|
|
+ Member member = refreshUserInfo(fromUserName);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ inLongLogger.info("为用户-->" + fromUserName + ",生成二维码:" + qr.getQroceUrl());*/
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 未关注用户扫描二维码关注
|
|
|
+ * @param requestMap
|
|
|
+ * @param fromUserName
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public Status scannQRcodeSub(Map<String, String> requestMap, String fromUserName) throws Exception {
|
|
|
+
|
|
|
+ String senceid = requestMap.get("EventKey");
|
|
|
+
|
|
|
+ Member member = refreshUserInfo(fromUserName);
|
|
|
+
|
|
|
+ boolean isNew = false;
|
|
|
+
|
|
|
+ if (member.getUserIsFlag() != null && member.getUserIsFlag().intValue() == 1) {
|
|
|
+ isNew = true;
|
|
|
+ }
|
|
|
+ int isMessage = 1;
|
|
|
+ Status status = new Status();
|
|
|
+ if (isMessage == 1) {
|
|
|
+
|
|
|
+ status.setFlag(false);
|
|
|
+ status.setCountext(ResultInfo.subDefaultResponseText);
|
|
|
+ }else if(isMessage == 0){
|
|
|
+
|
|
|
+ * 故 判断A初始从未关注,而关系已经绑定,则推送优惠券 */
|
|
|
+
|
|
|
+ status = getCouponImgText(requestMap);
|
|
|
+ }else{
|
|
|
+ status.setFlag(false);
|
|
|
+ status.setCountext(ResultInfo.subDefaultResponseText);
|
|
|
+ }*/
|
|
|
+ status.setFlag(false);
|
|
|
+ status.setCountext(ResultInfo.subDefaultResponseText);
|
|
|
+ } else if (isMessage == 4) {
|
|
|
+ status.setFlag(false);
|
|
|
+ status.setCountext("欢迎您关注美国watero!您已享受购买水机终身优惠价3280元(普通会员销售价3680元),并且购买即赠三年滤芯套装,快来购买吧!<a href=\"http://w.iamberry.com/watero/wechat/wxCart/goProductList\">点击购买</a>");
|
|
|
+ } else{
|
|
|
+ status.setFlag(false);
|
|
|
+ status.setCountext("欢迎您关注美国watero,恭喜您成为金牌会员。自己购买或者推荐朋友购买水机均将享受3280元优惠价,并免费赠送3年滤芯哦!点击菜单“分销中心-代理分销”可进入您的专属分销管理中心。");
|
|
|
+ }
|
|
|
+
|
|
|
+ inLongLogger.info("为用户-->" + fromUserName + ",生成二维码:" + qr.getQroceUrl());*/
|
|
|
+
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 用户自己搜索微信公众号关注
|
|
|
+ * @param fromUserName
|
|
|
+ * @param requestMap
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public Status queryWechatSub(String fromUserName, Map<String, String> requestMap) throws Exception {
|
|
|
+
|
|
|
+ refreshUserInfo(fromUserName);
|
|
|
+
|
|
|
+
|
|
|
+ if(qr != null ){
|
|
|
+ inLongLogger.info("为用户-->" + fromUserName + ",生成二维结果成功!");
|
|
|
+ }*/
|
|
|
+
|
|
|
+ Status status = new Status();
|
|
|
+ String respContent = ResultInfo.subDefaultResponseText;
|
|
|
+ status.setCountext(respContent);
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 更新微信用户信息
|
|
|
+ * 2016年11月17日
|
|
|
+ */
|
|
|
+ private Member refreshUserInfo(String openId){
|
|
|
+ JSONObject jsonObject = WeixinUtil.getUserInfo(openId);
|
|
|
+ String sex = jsonObject.getString("sex");
|
|
|
+ String city = jsonObject.getString("city");
|
|
|
+ String country = jsonObject.getString("country");
|
|
|
+ String province = jsonObject.getString("province");
|
|
|
+ String nickname = jsonObject.getString("nickname");
|
|
|
+ String headimgurl = jsonObject.getString("headimgurl");
|
|
|
+ try {
|
|
|
+ nickname = URLEncoder.encode(jsonObject.getString("nickname"), "UTF-8");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ nickname = "";
|
|
|
+ inLongLogger.error(this, e.getMessage());
|
|
|
+ }
|
|
|
+ Member member = homeService.selectMemberInfoByOpenId(openId);
|
|
|
+
|
|
|
+ if (member != null && member.getUserId() != null) {
|
|
|
+ member.setUserOpenid(openId);
|
|
|
+ member.setUserNickname(nickname);
|
|
|
+ member.setUserSex(Integer.parseInt(sex));
|
|
|
+ member.setUserAddr(country+"-"+province+"-"+city);
|
|
|
+ member.setUserHead(headimgurl);
|
|
|
+
|
|
|
+ member.setUserIsBought(member.getUserStatus() == null ? 1 : member.getUserStatus());
|
|
|
+ member.setUserStatus(2);
|
|
|
+ homeService.updateWechatMemberInfoByByOpenid(member);
|
|
|
+ } else {
|
|
|
+ member = new Member();
|
|
|
+ member.setUserNickname(nickname);
|
|
|
+ member.setUserSex(Integer.parseInt(sex));
|
|
|
+ member.setUserAddr(country+"-"+province+"-"+city);
|
|
|
+ member.setUserHead(headimgurl);
|
|
|
+ member.setUserStatus(2);
|
|
|
+ member.setUserOpenid(openId);
|
|
|
+ member.setUserIsBought(1);
|
|
|
+ member.setUserIsFlag(1);
|
|
|
+ homeService.insertMemberInfo(member);
|
|
|
+ }
|
|
|
+ return member;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 用户取消关注时的事件
|
|
|
+ * @param fromUserName
|
|
|
+ */
|
|
|
+ public void unSubScribe(String fromUserName) {
|
|
|
+ try {
|
|
|
+
|
|
|
+ homeService.updateMemberStatusByOpenId(fromUserName);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ inLongLogger.error(this, e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 自定义菜单点击事件
|
|
|
+ * @param requestMap
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public Status clickWechatMenuEnent(Map<String, String> requestMap) throws Exception {
|
|
|
+ Status status = new Status();
|
|
|
+
|
|
|
+ String eventKey = requestMap.get("EventKey").trim();
|
|
|
+
|
|
|
+ MenuKeySet menuKeySet = menuKeySetService.selectByPubNoAndKeyWord(NameUtils.getConfig("pubNo"), eventKey);
|
|
|
+ String respContent = ResultInfo.subDefaultResponseText;
|
|
|
+ if(menuKeySet != null){
|
|
|
+ if("1".equals(menuKeySet.getReType())){
|
|
|
+ respContent = menuKeySet.getRefText();
|
|
|
+ }else if("2".equals(menuKeySet.getReType())){
|
|
|
+ List<ImageTextMore> imagetextMoreList = null;
|
|
|
+ ImageTextInfo imageTextInfo = imageTextInfoService.findImageTextInfoById(Long.parseLong(menuKeySet.getRefImageTextId()));
|
|
|
+ if(imageTextInfo != null) {
|
|
|
+
|
|
|
+ if("2".equals(imageTextInfo.getImageTextType())){
|
|
|
+ imagetextMoreList = imageTextMoreService.findImageTextmore(imageTextInfo.getImageTextNo());
|
|
|
+ }
|
|
|
+ status.setFlag(true);
|
|
|
+ respContent = MessageManager.getImageTextInfo(requestMap, imageTextInfo, imagetextMoreList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ status.setCountext(respContent);
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 消息处理
|
|
|
+ * @param content
|
|
|
+ * @param requestMap
|
|
|
+ * @param fromUserName
|
|
|
+ * @param toUserName
|
|
|
+ * @param createTime
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Status messageHandler(String content, Map<String, String> requestMap, String fromUserName, String toUserName, String createTime) {
|
|
|
+ Status status = new Status();
|
|
|
+ status.setCountext(ResultInfo.messageDefaultResponseText);
|
|
|
+ status.setFlag(true);
|
|
|
+ KeyWord keyword = keyWordService.getByKeyWord(content);
|
|
|
+ if(keyword != null) {
|
|
|
+ if("1".equals(keyword.getReType())) {
|
|
|
+ status.setCountext(keyword.getRefText());
|
|
|
+ status.setFlag(false);
|
|
|
+ } else if("2".equals(keyword.getReType())){
|
|
|
+ List<ImageTextMore> imagetextMoreList = null;
|
|
|
+ ImageTextInfo imageTextInfo = imageTextInfoService.findImageTextInfoById(keyword.getRefImageTextId());
|
|
|
+ if(imageTextInfo != null) {
|
|
|
+ if("2".equals(imageTextInfo.getImageTextType())){
|
|
|
+ imagetextMoreList = imageTextMoreService.findImageTextmore(imageTextInfo.getImageTextNo());
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ String s = MessageManager.getImageTextInfo(requestMap, imageTextInfo, imagetextMoreList);
|
|
|
+ status.setCountext(s);
|
|
|
+ status.setFlag(true);
|
|
|
+ return status;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ String xml = "<xml>"+
|
|
|
+ "<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>" +
|
|
|
+ "<FromUserName><![CDATA[" + toUserName + "]]></FromUserName>" +
|
|
|
+ "<CreateTime>" + createTime + "</CreateTime>" +
|
|
|
+ "<MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>";
|
|
|
+ status.setCountext(xml);
|
|
|
+ status.setFlag(true);
|
|
|
+ }
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|