微信在输入框内输入用户名和密码

package cn.com.shdmt.service;

import cn.com.shdmt.entity.ConcernedCustomerEntity;
import cn.com.shdmt.entity.CustomerEntity;
import cn.com.shdmt.entity.WeXinEventEntity;
import cn.com.shdmt.entity.WelMsgEntity;
import cn.com.shdmt.framework.util.MessageUtil;
import cn.com.shdmt.framework.wexinmessage.Article;
import cn.com.shdmt.framework.wexinmessage.NewsMessage;
import cn.com.shdmt.framework.wexinmessage.TextMessage;
import cn.com.shdmt.repository.ConcernedCustomerDao;
import cn.com.shdmt.repository.CustomDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.sql.Timestamp;
import java.util.*;

/**
 * Created by yaoyao on 2015/3/13.
 */
@Component
@Transactional
public class WeXinCoreService {

    @Autowired
    private ConcernedCustomerDao concernedCustomerDao;

    @Autowired
    private AccessTokenService accessTokenService;
    @Autowired
    private CustomDao customDao;

    @Autowired
    private WeXinEventService weXinEventService;

    @Autowired
    private CodeService codeService;

    @Autowired
    private SmsService smsService;
    @Autowired
    private WelMsgService welMsgService;

    @Value("#{appProperties[‘upload.config.fileURLPrefix‘]}")
    private String fileURLPrefix;

    public String processRequest(String msg) {
        String respMessage = null;
        try {
            // 默认返回的文本消息内容
            String respContent = "请求处理异常,请稍候尝试!";

            // xml请求解析
            Map<String, String> requestMap = MessageUtil.parseXml(msg);

            System.out.println("Event==" + requestMap.get("Event"));

            // 发送方帐号(open_id)
            String open_id = requestMap.get("FromUserName");
            // 公众帐号
            String toUserName = requestMap.get("ToUserName");
            // 消息类型
            String msgType = requestMap.get("MsgType");

            // 回复文本消息
            TextMessage textMessage = new TextMessage();
            textMessage.setToUserName(open_id);
            textMessage.setFromUserName(toUserName);
            textMessage.setCreateTime(new Date().getTime());
            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
            textMessage.setFuncFlag(0);

            // 文本消息
            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
                String content = requestMap.get("Content");
                //是否为绑定号码
                WeXinEventEntity weXinEventEntity = weXinEventService.getAllWeXinEvent(open_id);
                if (weXinEventEntity != null) {
                    if (!StringUtils.isBlank(content)) {
                        //获取 微信用户
                        List<ConcernedCustomerEntity> concernedCustomerEntities = concernedCustomerDao.findByOpenidAndType(open_id, 1);
                        //根据用户名密码查询
                        if (StringUtils.isEmpty(weXinEventEntity.getValue())) {
                            if (concernedCustomerEntities.size() > 0) {
                                //保存他要绑定的登录名称
                                weXinEventEntity.setValue(content);
                                weXinEventService.save(weXinEventEntity);
                                respContent = "请输入你要绑定的用户名的密码";
                            }
                        } else {
                            //他是在绑定数据  已完成第一步  根据这个openid 查询出用户名 并得到密码
                            List<CustomerEntity> customerEntities = customDao.findByCustomerCodeAndPassword(weXinEventEntity.getValue(), content);
                            if (customerEntities.size() > 0 && concernedCustomerEntities.size() > 0) {
                                CustomerEntity customer = customerEntities.get(0);
                                customer.setConcernedCustomer(concernedCustomerEntities.get(0));
                                respContent = "绑定成功";
                            } else {
                                respContent = "绑定失败,用户名和密码不匹配";
                            }
                        }
                    }
                } else {
                    respContent = "你发送的消息是" + content;
                }
                textMessage.setContent(respContent);
                respMessage = MessageUtil.textMessageToXml(textMessage);
            }
            // 图片消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
                //如果绑定了 则上传该工单
                List<ConcernedCustomerEntity> concernedCustomerEntities = concernedCustomerDao.findByOpenidAndType(open_id, 1);
                if (concernedCustomerEntities.size() > 0) {
                    ConcernedCustomerEntity concernedCustomerEntity = concernedCustomerEntities.get(0);
                    List<CustomerEntity> customerEntities = customDao.findByConcernedCustomer(concernedCustomerEntity);
                    if (customerEntities.size() > 0) {
                        respContent = "您已经绑定微信";

                    } else {
                        //把状态放入一个表中    1 并且过期时间设定  哪个用户

                        WeXinEventEntity weXinEventEntity = weXinEventService.getAllWeXinEvent(open_id);
                        WeXinEventEntity weXinEventEntity1 = weXinEventService.findByOpenid(open_id);
                        if (weXinEventEntity == null) {
                            if (weXinEventEntity1 != null) {
                                weXinEventService.dl(weXinEventEntity1);
                            }
                            weXinEventEntity = new WeXinEventEntity();
                        }
                        weXinEventEntity.setEvent("binding");//事件类型为moble
                        weXinEventEntity.setIswait(Boolean.TRUE);//在等待
                        weXinEventEntity.setOpenid(open_id);
                        Calendar calendar1 = Calendar.getInstance();
                        calendar1.add(Calendar.MINUTE, +10);//当前时间+10分钟 是过期时间
                        weXinEventEntity.setOut_time(new Timestamp(calendar1.getTimeInMillis()));
                        weXinEventService.save(weXinEventEntity);
                        respContent = "请输入你要绑定的登录名称";
                    }
                }
                textMessage.setContent(respContent);
                respMessage = MessageUtil.textMessageToXml(textMessage);
            }
            // 地理位置消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
                respContent = "您发送的是地理位置消息!";
            }
            // 链接消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
                respContent = "您发送的是链接消息!";
            }
            // 音频消息
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
                respContent = "您发送的是音频消息!";
            }
            // 事件推送
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
                // 事件类型
                String eventType = requestMap.get("Event");
                // 自定义菜单点击事件

                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
                    attention(open_id);
                    NewsMessage newsMessage = buildmessage(open_id, toUserName,0);
                    // 将图文消息对象转换成xml字符串
                    respMessage = MessageUtil.newsMessageToXml(newsMessage);
                } else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
                    // 取消关注,用户接受不到我们发送的消息了,可以在这里记录用户取消关注的日志信息
                    canelAttention(open_id);

                } else if (eventType.equalsIgnoreCase(MessageUtil.EVENT_TYPE_CLICK)) {
                    // 事件KEY值,与创建自定义菜单时指定的KEY值对应
                    String eventKey = requestMap.get("EventKey");
                    if (eventKey.equals("CONTACT_US")) {
                        NewsMessage newsMessage = buildmessage(open_id, toUserName,1);
                        // 将图文消息对象转换成xml字符串
                        respMessage = MessageUtil.newsMessageToXml(newsMessage);
                    }

                }
                /*else if (eventType.equalsIgnoreCase("VIEW")) {
                    // 事件KEY值,与创建自定义菜单时指定的KEY值对应
                    String eventKey = requestMap.get("EventKey");
                    String e = "EventKey=https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx186f9fb0382ee5c5&redirect_uri=http://yaoyao66123.eicp.net/customCenter/ordersearch&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
                    if (eventKey.equals(e)) {
                        textMessage.setContent(respContent);
                        respMessage = MessageUtil.textMessageToXml(textMessage);
                    }

                }*/
            }
        } catch (Exception e) {
            e.printStackTrace();
            respMessage = "有异常了。。。";
        }
        return respMessage;
    }

    private void attention(String open_id) {
        List<ConcernedCustomerEntity> list = concernedCustomerDao.findByOpenid(open_id);
        if (list.size() > 0) {
            //之前关注过
            ConcernedCustomerEntity concernedCustomerEntity = list.get(0);
            concernedCustomerEntity.setCancelledtime(null);
            concernedCustomerEntity.setIsconcerned(Boolean.TRUE);
        }
    }

    private NewsMessage buildmessage(String open_id, String toUserName, Integer type) {

        // 创建图文消息
        NewsMessage newsMessage = new NewsMessage();
        newsMessage.setToUserName(open_id);
        newsMessage.setFromUserName(toUserName);
        newsMessage.setCreateTime(new Date().getTime());
        newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
        newsMessage.setFuncFlag(0);

        List<WelMsgEntity> welMsgEntities = welMsgService.findAll(type);
        List<WelMsgEntity> needlist = new ArrayList<WelMsgEntity>();
        if (welMsgEntities.size() > 0) {
            for (WelMsgEntity welMsgEntity : welMsgEntities) {
                if (needlist.size() < 8) {
                    needlist.add(welMsgEntity);
                }
            }
        }
        List<Article> articleList = new ArrayList<Article>();
        for (WelMsgEntity welMsgEntity : needlist) {
            Article article = new Article();
            article.setTitle(welMsgEntity.getTitle());
            article.setDescription(welMsgEntity.getDescription());
            article.setPicUrl(fileURLPrefix + welMsgEntity.getPicurl());
            article.setUrl(welMsgEntity.getUrl());
            articleList.add(article);
        }
        // 设置图文消息个数
        newsMessage.setArticleCount(articleList.size());
        // 设置图文消息包含的图文集合
        newsMessage.setArticles(articleList);

        return newsMessage;
    }

    private void canelAttention(String open_id) {

        List<ConcernedCustomerEntity> list = concernedCustomerDao.findByOpenid(open_id);
        if (list.size() > 0) {
            ConcernedCustomerEntity concernedCustomerEntity = list.get(0);
            concernedCustomerEntity.setCancelledtime(new Timestamp(System.currentTimeMillis()));
            concernedCustomerEntity.setIsconcerned(Boolean.FALSE);
            concernedCustomerDao.save(concernedCustomerEntity);
        }
    }

}
时间: 2024-10-09 08:44:55

微信在输入框内输入用户名和密码的相关文章

火狐打开公司内网不需要输入用户名和密码的方法

我们知道,在用 IE 打开公司内网时,会自动使用 Windows 的用户名和密码登录.而若是用火狐浏览器的话,则每次都要输入一遍用户名和密码,尽管有"记住密码"的功能,但是每次都要点下"确认"也是比较麻烦. 经过一番探索研究,发现只需要更改火狐的两处设置,即可自动登录了.如下: 在地址栏输入 about:config,可以搜索 ntlm 定位,然后修改两处: network.automatic-ntlm-auth.allow-non-fqdn: true netwo

git bash中避免在push时反复输入用户名和密码

我用的是windows系统,这几天学着使用git时发现每次使用git push时每次都要输入一遍用户名和密码,感觉特烦,特意上网查了下,找到了简化方法.虽然不是原创,但至少算是加了点自己的心得和经验吧,毕竟中间也硌了半天. 首先进入你用户名目录,windows一般是在C:\users\Administrator,此时需要新建一个名为.git-credentials的文件,windows本身不允许直接创建以"."开头的文件/文件夹,需要借助于其他工具,由于后面还是要用git来配置信息,这

JS实现在输入框内输入@时,邮箱账号自动补全

<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"/> <title>邮箱自动补全</title> <style type="text/css"> .wrap{width:200px;margin:0 auto;} h1{font-size:36px;text-align:center;lin

设置Git不需要每次push都输入用户名和密码

正如苹果的设计理念中的一条--当你频繁地进行某项操作的时候,做这件事情就会变成一种机械的运动.删除邮件时出现的警告框是如此,git push时每次都需要输入用户名和密码也是如此.那么就可以通过如下的操作来避免每次都需要输入用户名和密码了(以windows为例). 第一步:生成RSA KEY 在用户文件夹下点右键运行Git Bush,运行如下命令: ssh-agent bash 然后通过以下命令生成RSA密钥: ssh-keygen -t rsa -C [email protected] 这样在<

Git Push 不用再次输入用户名和密码方法

前言 在大家使用github的过程中,一定会碰到这样一种情况,就是每次要push 和pull时总是要输入github的账号和密码,这样不仅浪费了大量的时间且降低了工作效率.在此背景下,本文在网上找了两种方法来避免这种状况,这些成果也是先人提出来的,在此只是做个总结. 1.方法一 1.1 创建文件存储GIT用户名和密码 在%HOME%目录中,一般为C:\users\Administrator,也可以是你自己创建的系统用户名目录,反正都在C:\users\中.文件名为.git-credentials

TortoiseGit 连接oschina不用每次输入用户名和密码的方法

每次git clone 和push 都要输入用户名和密码.虽然安全,但在本机上每次都输有些麻烦,如何记住用户名和密码呢? 在网上看了各种方法,太杂,很多可能环境不一样,一直行不通.最后找到一种有效的方法,很简单.记录下来! 当你配置好git后,在C:\Documents and Settings\Administrator\ 目录下有一个  .gitconfig 的文件,里面会有你先前配好的name 和email,只需在下面加一行 [plain] view plaincopy [credenti

TortoiseGit 连接Git服务器不用每次输入用户名和密码的方法

每次git push 都要输入用户名和密码. 虽然安全,但在自己电脑上每次都输有些麻烦,如何记住用户名和密码呢? 试了很多方法,找到这个最简单,亲测可行. 当你配置好git后,在C盘C:\Users\administrator下的 .gitconfig 的文件(如果找不到,直接搜索),里面会有你先前配好的name 和email,只需在下面加增加credential: [user] name = xxxxxx email = [email protected] [credential] helpe

windows 7 打开sharepoint 2007上的office文档需要输入用户名和密码

在windows 7 的机器上直接打开sharepoint网站正常,但是打开sharepoint 2007上的office文档需要输入用户名和密码. 已加入域.域中xp系统正常. 问题主要是windows 7和vista系统本身导致的 按微软kb的方法修改注册表: After you apply this hotfix, you have to create a registry entry. To do this, follow these steps: Click Start, type r

运行报表时提示输入用户名和密码

在AX2012运行报表是总是提示用户输入用户名和密码: 尝试输入登陆名和密码,点击查看报表,出现如下错误: 因为AX2012的报表使用的针对AX2012客制化的SSRS,而要求输入登录名和密码是SSRS报表的数据源设置导致的.在SSRS管理站点下,找到该报表,查看数据源设置. 可以看到这里设置成了要求用户输入用户名和密码的方式,将其改成Windows integrated security就可以了. 如果所有的报表都要求输入登录名和密码,几千个报表一个个改起来也不现实.报表的数据源设置都在Rep