async message ready

This commit is contained in:
Sola
2015-12-31 01:32:31 +08:00
parent 83ef97609d
commit 461bdf2c27
2 changed files with 51 additions and 17 deletions

View File

@@ -10,7 +10,10 @@ import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.util.Checker; import love.sola.netsupport.util.Checker;
import love.sola.netsupport.util.ParseUtil; import love.sola.netsupport.util.ParseUtil;
import love.sola.netsupport.wechat.Command; import love.sola.netsupport.wechat.Command;
import love.sola.netsupport.wechat.WxMpServlet;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.session.WxSession; import me.chanjar.weixin.common.session.WxSession;
import me.chanjar.weixin.mp.bean.WxMpCustomMessage;
import org.hibernate.exception.ConstraintViolationException; import org.hibernate.exception.ConstraintViolationException;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@@ -20,6 +23,10 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import static love.sola.netsupport.util.Checker.*; import static love.sola.netsupport.util.Checker.*;
@@ -101,6 +108,8 @@ public class Register extends HttpServlet {
String dupKey = e.getConstraintName(); String dupKey = e.getConstraintName();
return "Duplicated_" + dupKey.toUpperCase(); // PHONE ACCOUNT WECHAT return "Duplicated_" + dupKey.toUpperCase(); // PHONE ACCOUNT WECHAT
} }
// FIXME: 2015/12/30 Temporary converter
converter(user);
return "Register_Success"; return "Register_Success";
} }
@@ -110,4 +119,29 @@ public class Register extends HttpServlet {
return; return;
} }
private void converter(User u) {
try (Connection conn = SQLCore.ds.getConnection()) {
PreparedStatement ps = conn.prepareStatement("SELECT wechat FROM `convert` WHERE id=?");
ps.setLong(1, u.getId());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
String old = rs.getString(1);
ps = conn.prepareStatement("UPDATE `convert` SET wechat=? WHERE wechat=?");
ps.setString(1, u.getWechatId());
ps.setString(2, old);
if (ps.executeUpdate() == 1) {
WxMpServlet.instance.wxMpService.customMessageSend(WxMpCustomMessage.TEXT().toUser(u.getWechatId()).content("数据转换成功").build());
return;
}
}
} catch (SQLException | WxErrorException e) {
e.printStackTrace();
}
try {
WxMpServlet.instance.wxMpService.customMessageSend(WxMpCustomMessage.TEXT().toUser(u.getWechatId()).content("数据转换失败").build());
} catch (WxErrorException e) {
e.printStackTrace();
}
}
} }

View File

@@ -30,7 +30,7 @@ public class WxMpServlet extends HttpServlet {
public static WxMpServlet instance; public static WxMpServlet instance;
protected WxMpInMemoryConfigStorage config; protected WxMpInMemoryConfigStorage config;
protected WxMpService wxMpService; public WxMpService wxMpService;
protected WxMpMessageRouter wxMpMessageRouter; protected WxMpMessageRouter wxMpMessageRouter;
protected CheckSpamMatcher checkSpamMatcher; protected CheckSpamMatcher checkSpamMatcher;
@@ -58,7 +58,7 @@ public class WxMpServlet extends HttpServlet {
.msgType("event") .msgType("event")
.event("subscribe") .event("subscribe")
.handler(new SubscribeHandler()) .handler(new SubscribeHandler())
.end(); .next();
wxMpMessageRouter.rule() wxMpMessageRouter.rule()
.async(false) .async(false)
.msgType("text") .msgType("text")
@@ -70,8 +70,7 @@ public class WxMpServlet extends HttpServlet {
.content(lang("Message_Spam")).build()) .content(lang("Message_Spam")).build())
.end(); .end();
wxMpMessageRouter.rule() wxMpMessageRouter.rule()
.async(false) .async(true)
.msgType("text")
.matcher(new RegisterMatcher()) .matcher(new RegisterMatcher())
.handler(new RegisterHandler()) .handler(new RegisterHandler())
.end(); .end();
@@ -86,6 +85,7 @@ public class WxMpServlet extends HttpServlet {
for (Command c : Command.values()) { for (Command c : Command.values()) {
WxMpMessageHandler handler = c.handler.newInstance(); WxMpMessageHandler handler = c.handler.newInstance();
router.rule().async(false).msgType("text").rContent(c.regex).handler(handler).end(); router.rule().async(false).msgType("text").rContent(c.regex).handler(handler).end();
router.rule().async(false).msgType("event").event("CLICK").eventKey(c.name()).handler(handler).end();
} }
} }
@@ -115,19 +115,19 @@ public class WxMpServlet extends HttpServlet {
String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type"); String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type");
if ("raw".equals(encryptType)) { // if ("raw".equals(encryptType)) {
WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream()); // WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage); // WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
if (outMessage == null) { // if (outMessage == null) {
outMessage = WxMpXmlOutMessage.TEXT() // outMessage = WxMpXmlOutMessage.TEXT()
.fromUser(inMessage.getToUserName()) // .fromUser(inMessage.getToUserName())
.toUser(inMessage.getFromUserName()) // .toUser(inMessage.getFromUserName())
.content(lang("Invalid_Operation")) // .content(lang("Invalid_Operation"))
.build(); // .build();
} // }
response.getWriter().write(outMessage.toXml()); // response.getWriter().write(outMessage.toXml());
return; // return;
} // }
if ("aes".equals(encryptType)) { if ("aes".equals(encryptType)) {
String msgSignature = request.getParameter("msg_signature"); String msgSignature = request.getParameter("msg_signature");