init project

This commit is contained in:
limqhz
2020-10-20 21:39:58 +08:00
parent 6bbdfcf60f
commit f7b0d48c28
23 changed files with 1708 additions and 0 deletions

52
web/pom.xml Normal file
View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>forever</artifactId>
<groupId>com.love.qn</groupId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>web</artifactId>
<version>${version}</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.love.qn</groupId>
<artifactId>common</artifactId>
</dependency>
<dependency>
<groupId>com.love.qn</groupId>
<artifactId>dal</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.4</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.9.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,29 @@
package com.qn.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Controller
public class HomeController {
/**
* 表白
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public void enter(HttpServletResponse response) throws IOException {
StringBuilder sb = new StringBuilder();
sb.append("<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><head></head>");
sb.append("<body><h1>欢迎光临QN恋爱中!</h1>");
sb.append("<p>此网站没有网页,只为【惊喜女友的微信小程序】提供必要的后台支持,该网页为备案号专用网页。</p>");
// 设置备案号
sb.append("<a href = 'https://beian.miit.gov.cn'>浙ICP备2020031991号</a>");
sb.append("</body></html>");
response.setStatus(200);
response.setCharacterEncoding("UTF-8");
response.getWriter().write(sb.toString());
response.flushBuffer();
}
}

View File

@@ -0,0 +1,33 @@
package com.qn.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Controller
public class TestController {
/**
* 表白
*/
@RequestMapping(value = "/to/{name}", method = RequestMethod.GET)
public void enter(@PathVariable("name") String name, HttpServletResponse response) throws IOException {
StringBuilder sb = new StringBuilder();
sb.append("<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><head></head>");
sb.append("<body><h1>");
if (name==null || "".equals(name)){
name = "王娜";
}
sb.append(name);
sb.append(",I love you!!!</h1></body></html>");
response.setStatus(200);
response.setCharacterEncoding("UTF-8");
response.getWriter().write(sb.toString());
response.flushBuffer();
}
}

View File

@@ -0,0 +1,75 @@
package com.qn.controller;
import com.qn.controller.utils.MessageUtils;
import com.qn.utils.SignUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@Controller
public class WXTokenController {
private Logger logger = LoggerFactory.getLogger("WXTokenController");
/**
* 微信TokenCheck
*/
@RequestMapping(value = "/wx", method = RequestMethod.GET)
public void wxTokenCheck(HttpServletRequest request, HttpServletResponse response) throws IOException {
if (!StringUtils.isEmpty(request.getParameter("signature"))) {
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
logger.info("signature[{}], timestamp[{}], nonce[{}], echostr[{}]", signature, timestamp, nonce, echostr);
if (SignUtils.checkSignature(signature, timestamp, nonce)) {
logger.info("数据源为微信后台将echostr[{}]返回!", echostr);
response.getOutputStream().println(echostr);
response.flushBuffer();
}
}else {
logger.info("不是微信请求,不操作");
}
}
/**
* 微信TokenCheck
*/
@RequestMapping(value = "/wx", method = RequestMethod.POST)
public void wxMessage(HttpServletRequest request, HttpServletResponse response) throws IOException {
Map<String,String> map = MessageUtils.xmlToMap(request);
StringBuilder sb = new StringBuilder();
map.forEach((x,y) ->
sb.append(x + "===" + y + ";"));
logger.info("此次微信请求的消息内容为:" + sb.toString());
String toUserName = map.get("ToUserName");
String fromUserName = map.get("FromUserName");
String msgType = map.get("MsgType");
String content = map.get("Content");
String message = null;
// HTTPUtils.doPost()
if ("text".equals(msgType)){
//回复文本信息触发的消息
message = MessageUtils.initText(toUserName,fromUserName,"text",fromUserName + "您好!" + content);
}else if ("text".equals(msgType)){
//关注时触发的消息
String event = map.get("Event");
if ("subscribe".equals(event)){
message = MessageUtils.initText(toUserName,fromUserName,"text","Welcome lmq love nn");
}
}
logger.info("返回微信的数据为" + message);
response.setContentType("text/xml;charset=utf-8");
response.getWriter().write(message);
response.flushBuffer();
}
}

View File

@@ -0,0 +1,69 @@
package com.qn.controller.utils;
import com.thoughtworks.xstream.XStream;
import model.wx.TextMessage;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MessageUtils {
/**
* xml转Map
* @param request
* @return
*/
public static Map<String,String> xmlToMap(HttpServletRequest request) {
Map<String,String> map = new HashMap<>();
SAXReader reader = new SAXReader();
ServletInputStream in = null;
try{
in = request.getInputStream();
Document doc = reader.read(in);
Element root = doc.getRootElement();
List<Element> list = root.elements();
for (Element e: list){
map.put(e.getName(),e.getText());
}
in.close();
}catch (Exception e){
}
return map;
}
/**
* 文本对象转换成xml
* @param message
* @return
*/
public static String textMessageToXml(Object message){
XStream xStream = new XStream();
xStream.alias("xml",message.getClass());
return xStream.toXML(message);
}
/**
* 初始化文本信息
* @param toUserName
* @param fromUserName
* @param msgType
* @param content
* @return
*/
public static String initText(String toUserName,String fromUserName,String msgType,String content){
TextMessage textMessage = new TextMessage();
textMessage.setFromUserName(toUserName);
textMessage.setToUserName(fromUserName);
textMessage.setMsgType(msgType);
textMessage.setCreateTime(new Date().getTime());
textMessage.setContent(content);
return MessageUtils.textMessageToXml(textMessage);
}
}