接收微信的推送

package com.wuage.wechat.service;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Calendar;

import org.jdom.JDOMException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.alibaba.cb.api.common.utils.common.lang.StringUtils;
import com.wuage.wechat.common.WechatUtil;
import com.wuage.wechat.common.redis.RedisOpreate;
import com.wuage.wechat.entity.ReceiveXmlEntity;

/**
 * 类WechatProccess.java的实现描述:TODO 类实现描述
 * 
 * @author wangpeng 2016年9月12日 下午5:33:38
 */
@Component
public class WechatProcess {

    private Logger       logger = LoggerFactory.getLogger(WechatProcess.class);

    @Autowired
    private EventProcess eventProcess;

    @Autowired
    private RedisOpreate redisOpreate;

    public String process(String xml) {
        ReceiveXmlEntity rx = null;
        try {
            if (StringUtils.isNotBlank(xml)) {
                rx = JdomXmlProcess.parseXml(xml);
            }
        } catch (JDOMException e) {
            logger.error("dom parsing exception:{}", xml);
        } catch (IOException e) {
            logger.error("io exception:{}", xml);
        }
        if (rx != null) {
            if ("text".equals(rx.getMsgType())) {
                String value = redisOpreate.getKeywordReply(WechatUtil.REDIS_KEYWORD, rx.getContent());
                if (StringUtils.isBlank(value)) {
                    rx.setContent(WechatUtil.FIXED_REPLY_MESSAGE);
                } else {
                    rx.setContent(value);
                }
                String message = replyMsg(rx);
                return message;
            } else if ("event".equals(rx.getMsgType())) {
                try {
                    logger.info("开始执行方法:" + rx.getEvent().toLowerCase());
                    Method m = eventProcess.getClass().getMethod(rx.getEvent().toLowerCase(), ReceiveXmlEntity.class);
                    m.invoke(eventProcess, rx);
                } catch (NoSuchMethodException e) {
                    logger.error("no such method exception method name is :{}", rx.getEvent().toLowerCase());
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
            }
        }
        return "success";
    }

    private String replyMsg(ReceiveXmlEntity rx) {
        StringBuilder xml = new StringBuilder();
        xml.append("
   
   
    
    ");
        xml.append("
    
    
    
    ");
        xml.append("
    
    
    
    ");
        xml.append("
    
    
     
     " + Calendar.getInstance().getTimeInMillis() / 1000 + "
    
    ");
        xml.append("
    
    
    
    ");
        xml.append("
    
    
    
    ");
        xml.append("
   
   ");
        return xml.toString();
    }

}

CSDN是中国最大的技术社区平台之一,提供各种IT技术文章和资源。为了方便用户获取最新资讯和文章推送,CSDN定制了微信推送功能。 CSDN的微信推送服务主要通过微信公众号实现。用户可以在微信中关注CSDN的公众号,并在设置中开启推送功能。经过用户许可,CSDN可以向用户的微信账号发送最新的技术文章、IT资讯、热点话题等内容。用户可以根据自身的兴趣和需求,在设置中进行个性化定制,选择自己感兴趣的技术领域进行推送。 CSDN定制微信推送的好处是用户可以在微信平台上随时随地接收到最新的技术文章和学习资源。用户不需要再登录CSDN网站或使用其他应用程序来获取信息,只需打开微信即可阅读。此外,用户还可以选择接收特定的推送类型,例如只接收关于编程语言、人工智能或大数据等方面的文章。这样,用户就可以更方便地获取自己感兴趣的内容,提高学习效率。 对于CSDN来说,微信推送是一个重要的功能,可以帮助他们吸引更多的用户和社区成员。通过为用户提供便捷的推送服务,CSDN能够增加用户活跃度和粘性,提高用户体验和满意度。同时,用户的点击量和阅读量也能为CSDN带来更多的广告收入和商业机会。 总之,CSDN定制微信推送是一项非常有用的功能,可以让用户方便地获取最新的技术文章和学习资源。对于CSDN来说,这是一种增加用户粘性和活跃度的有效手段,同时也能为他们带来更多的商业机会和收益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值