mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-29 16:14:16 +08:00
async message ready
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user