首页>代码>SpringMVC+Spring+mybatis+mysql+jsp微信商城系统,有后台管理系统>/chihaodian/src/com/weixin/controller/ReplyController.java
package com.weixin.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
//import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;



import com.weixin.entity.ClickText;
import com.weixin.entity.Item;
import com.weixin.entity.RequestTextMessage;
import com.weixin.service.ClickTextService;
import com.weixin.util.ReplyMessage;
import com.weixin.util.SHA1;

@Controller
@RequestMapping("/")
public class ReplyController {
	private static final Logger log =Logger.getLogger(ReplyController.class);
	private String TOKEN = "yqkj";
	//Pattern pattern = Pattern.compile("[0-9]*"); 
	//private Map<String, Object> map = new HashMap<>();
	@Autowired
	private ClickTextService clickTextService;
	
	@RequestMapping(value = "reply.html")
	public void repaly(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		checkToken(request, response); //仅在认证微信开发者模式时调用一次即可
		try {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter pw = response.getWriter();
		String wxMsgXml =IOUtils.toString(request.getInputStream(), "utf-8");
		log.info("获取的数据信息>>>>>"+wxMsgXml);
		
		boolean eventType =wxMsgXml.contains("Event") ;// 如果包含,则是触发事件
		RequestTextMessage textMsg =null ;
		String returnXml = null;
		StringBuffer replyMsg = new StringBuffer();
		if(!eventType){ //信息交互事件
			textMsg = ReplyMessage.getRequestTextMessage(wxMsgXml);
			String receive = textMsg.getContent().trim();
			
			ClickText clickText = clickTextService.selectByPrimaryKey(receive);
			if (clickText.getType()==1) {
				replyMsg.append(clickText.getContent());
				returnXml = ReplyMessage.getReplyTextMessage(replyMsg.toString(), textMsg.getFromUserName(),
						textMsg.getToUserName());
			}else if(clickText.getType()==2){
				List<Item> articleList = new ArrayList<>();
				Item item = null ;
				if(clickText.getIntro().contains("-=")){//多条图文信息
					String[] title =  clickText.getTitle().split("-=");
					String[] intro =  clickText.getIntro().split("-=");
					String[] pic_url =  clickText.getPic_url().split("-=");
					String[] url =  clickText.getUrl().split("-=");
					for(int i =0 ; i < intro.length; i++){
						item = new Item();
						item.setTitle(title[i]); //标题
				        item.setDescription(intro[i]);//介绍
				        item.setPicUrl(pic_url[i]);	//图片链接
				        item.setUrl(url[i]);        //链接指向
				        articleList.add(item);
					}
				}else{ //单条图文信息
					item = new Item();
					item.setTitle(clickText.getTitle()); //标题
			        item.setDescription(clickText.getIntro());//介绍
			        item.setPicUrl(clickText.getPic_url());	//图片链接
			        item.setUrl(clickText.getUrl());        //链接指向
			        articleList.add(item);
				}
				returnXml = ReplyMessage.getReplyTuwenMessage(textMsg.getFromUserName(), textMsg.getToUserName(),articleList);
			}
		}else{
			textMsg = ReplyMessage.getRequestFocus(wxMsgXml);
			if(textMsg.getEvent().equals("subscribe")){ //关注事件
				ClickText clickText = clickTextService.selectByPrimaryKey("subscribe");
				System.out.println();
				replyMsg.append(clickText.getContent());
				log.info("关注回复->"+clickText.getContent());
				returnXml = 
						ReplyMessage.getReplyTextMessage(replyMsg.toString(), textMsg.getFromUserName(),
						textMsg.getToUserName());
			}
		}
		
		log.info("wxMsgXml>>>>>>>>>>>>>>"+wxMsgXml);
		log.info("returnXml>>>>>>>>>>>>>>"+returnXml);
		pw.println(returnXml);
		
		} 
		catch (Exception e) {
			log.info(e.getMessage());
		}
	}
	
	/**
	 * 微信token认证,使用时调用
	 * 
	 * @param request
	 * @param response
	 * @throws IOException
	 */
	
	public void checkToken(HttpServletRequest request, HttpServletResponse response) throws IOException {
		// 微信加密签名
		String signature = request.getParameter("signature");
		// 随机字符串
		String echostr = request.getParameter("echostr");
		// 时间戳
		String timestamp = request.getParameter("timestamp");
		// 随机数
		String nonce = request.getParameter("nonce");

		String[] str = { TOKEN, timestamp, nonce };
		Arrays.sort(str); // 字典序排序
		String bigStr = str[0] + str[1] + str[2];
		// SHA1加密
		String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();

		// 确认请求来至微信
		if (digest.equals(signature)) {
			response.getWriter().print(echostr);
		}
	}
}
最近下载更多
lilitu  LV6 2024年5月30日
wuying8208  LV15 2023年9月4日
lvllvl  LV4 2023年7月18日
tangyongheng08  LV6 2023年6月13日
lilonghui  LV3 2023年5月17日
泓鼎168  LV20 2023年5月10日
jimodeai  LV15 2023年4月4日
liangju666  LV6 2023年3月14日
liuhongbing123  LV5 2022年11月23日
PaymentCodeSystem  LV11 2022年6月9日
最近浏览更多
orang801  LV2 2月24日
超级大佬 1月2日
暂无贡献等级
mianju 2024年12月19日
暂无贡献等级
dsffssff  LV4 2024年12月15日
朱渊博 2024年12月11日
暂无贡献等级
飞翔的咸鱼i 2024年12月4日
暂无贡献等级
lqzixi  LV4 2024年11月6日
fff2003  LV9 2024年9月20日
颜菜菜  LV2 2024年9月6日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友