From 23f98e1951c382cbe9b8d7dd34834075b49049e3 Mon Sep 17 00:00:00 2001 From: Sola Date: Wed, 23 Dec 2015 02:25:32 +0800 Subject: [PATCH 01/15] ticket push --- .../love/sola/netsupport/api/Response.java | 4 +- .../sola/netsupport/api/TicketSubmit.java | 4 + .../netsupport/api/admin/root/TicketPush.java | 93 +++++++++++++++++++ .../love/sola/netsupport/config/Settings.java | 4 +- .../love/sola/netsupport/enums/Access.java | 8 ++ .../java/love/sola/netsupport/pojo/User.java | 6 ++ .../love/sola/netsupport/sql/SQLCore.java | 1 + .../love/sola/netsupport/sql/TableUser.java | 8 ++ 8 files changed, 123 insertions(+), 5 deletions(-) create mode 100644 src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java diff --git a/src/main/java/love/sola/netsupport/api/Response.java b/src/main/java/love/sola/netsupport/api/Response.java index 7210f70..cfe6d45 100644 --- a/src/main/java/love/sola/netsupport/api/Response.java +++ b/src/main/java/love/sola/netsupport/api/Response.java @@ -36,14 +36,12 @@ public class Response { PARAMETER_REQUIRED(-1), ILLEGAL_PARAMETER(-2), REQUEST_FAILED(-3), - AUTHORIZE_FAILED(-9), + LENGTH_LIMIT_EXCEEDED(-4), USER_NOT_FOUND(-11), TICKET_NOT_FOUND(-12), OPERATOR_NOT_FOUND(-13), UNAUTHORIZED(-20), - REQUEST_EXPIRED(-21), WRONG_PASSWORD(-22), - INCORRECT_WECHAT(-23), PERMISSION_DENIED(-24), INTERNAL_ERROR(-90), DATABASE_ERROR(-91), diff --git a/src/main/java/love/sola/netsupport/api/TicketSubmit.java b/src/main/java/love/sola/netsupport/api/TicketSubmit.java index fbc5889..1d8e615 100644 --- a/src/main/java/love/sola/netsupport/api/TicketSubmit.java +++ b/src/main/java/love/sola/netsupport/api/TicketSubmit.java @@ -1,6 +1,7 @@ package love.sola.netsupport.api; import com.google.gson.Gson; +import love.sola.netsupport.config.Settings; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.pojo.Ticket; import love.sola.netsupport.pojo.User; @@ -51,6 +52,9 @@ public class TicketSubmit extends HttpServlet { if (desc == null || desc.isEmpty()) { return new Response(Response.ResponseCode.PARAMETER_REQUIRED); } + if (desc.length() > Settings.MAX_DESC_LENGTH) { + return new Response(Response.ResponseCode.LENGTH_LIMIT_EXCEEDED); + } try (Session s = SQLCore.sf.openSession()) { diff --git a/src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java b/src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java new file mode 100644 index 0000000..f9ff44f --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java @@ -0,0 +1,93 @@ +package love.sola.netsupport.api.admin.root; + +import com.google.gson.Gson; +import love.sola.netsupport.api.Response; +import love.sola.netsupport.config.Settings; +import love.sola.netsupport.enums.Access; +import love.sola.netsupport.enums.Attribute; +import love.sola.netsupport.enums.Status; +import love.sola.netsupport.pojo.Operator; +import love.sola.netsupport.pojo.Ticket; +import love.sola.netsupport.pojo.User; +import love.sola.netsupport.sql.SQLCore; +import love.sola.netsupport.util.Checker; +import love.sola.netsupport.util.ParseUtil; +import love.sola.netsupport.wechat.Command; +import me.chanjar.weixin.common.session.WxSession; +import org.hibernate.HibernateException; +import org.hibernate.Session; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * *********************************************** + * Created by Sola on 2015/12/22. + * Don't modify this source without my agreement + * *********************************************** + */ +@WebServlet(name = "TicketPush",urlPatterns = "/api/admin/ticketpush",loadOnStartup = 44) +public class TicketPush extends HttpServlet{ + + private Gson gson = SQLCore.gson; + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doGet(request, response); + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + response.addHeader("Content-type", "application/json;charset=utf-8"); + PrintWriter out = response.getWriter(); + String json = gson.toJson(push(request)); + out.println(ParseUtil.parseJsonP(request, json)); + out.close(); + } + + private Response push(HttpServletRequest request) { + String uid = request.getParameter("uid"); + String desc = request.getParameter("desc"); + if (Checker.hasNull(uid, desc)) { + return new Response(Response.ResponseCode.PARAMETER_REQUIRED); + } + if (desc.length() > Settings.MAX_DESC_LENGTH) { + return new Response(Response.ResponseCode.LENGTH_LIMIT_EXCEEDED); + } + + WxSession session = Checker.isAuthorized(request, Command.LOGIN); + if (session == null) { + return new Response(Response.ResponseCode.UNAUTHORIZED); + } + Operator op = (Operator) session.getAttribute(Attribute.OPERATOR); + if (op.getAccess() > Access.LEADER) { + return new Response(Response.ResponseCode.PERMISSION_DENIED); + } + + try (Session s = SQLCore.sf.openSession()) { + s.beginTransaction(); + User u = s.get(User.class, Long.parseLong(uid)); + if (u == null) { + return new Response(Response.ResponseCode.USER_NOT_FOUND); + } + Ticket t = new Ticket(null, u, desc, null, "Pushed By Admin", null, op, Status.UNCHECKED); + s.save(t); + s.getTransaction().commit(); + return new Response(Response.ResponseCode.OK, t); + } catch (NumberFormatException e) { + return new Response(Response.ResponseCode.ILLEGAL_PARAMETER); + } catch (HibernateException e) { + e.printStackTrace(); + return new Response(Response.ResponseCode.DATABASE_ERROR, e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + return new Response(Response.ResponseCode.INTERNAL_ERROR, e.getMessage()); + } + } + +} diff --git a/src/main/java/love/sola/netsupport/config/Settings.java b/src/main/java/love/sola/netsupport/config/Settings.java index b4f3953..9c57687 100644 --- a/src/main/java/love/sola/netsupport/config/Settings.java +++ b/src/main/java/love/sola/netsupport/config/Settings.java @@ -12,6 +12,8 @@ import love.sola.netsupport.sql.TableConfig; @ToString public class Settings { + public static final int MAX_DESC_LENGTH = 255; + public static Settings I; static { @@ -29,8 +31,6 @@ public class Settings { public int Check_Spam_Cache_Expire_Time; public int Check_Spam_Interval; - public int User_Caching_Time; - public int User_Session_Max_Inactive; //No arg constructor for Yaml.loadAs diff --git a/src/main/java/love/sola/netsupport/enums/Access.java b/src/main/java/love/sola/netsupport/enums/Access.java index 896beaf..e2f07ad 100644 --- a/src/main/java/love/sola/netsupport/enums/Access.java +++ b/src/main/java/love/sola/netsupport/enums/Access.java @@ -15,6 +15,14 @@ import static love.sola.netsupport.config.Lang.lang; public class Access { public static final int ROOT = 0; + public static final int MANAGER = 1; + public static final int CO_MANAGER = 2; + public static final int LEADER = 3; + public static final int CO_LEADER = 4; + public static final int ELITE = 5; + public static final int ELDER = 6; + public static final int MEMBER = 7; + public static final int PRE_MEMBER = 8; public static final int NOLOGIN = 9; public static final Map inverseMap = new HashMap<>(); diff --git a/src/main/java/love/sola/netsupport/pojo/User.java b/src/main/java/love/sola/netsupport/pojo/User.java index ba9b700..bfb38c1 100644 --- a/src/main/java/love/sola/netsupport/pojo/User.java +++ b/src/main/java/love/sola/netsupport/pojo/User.java @@ -42,4 +42,10 @@ public class User { private Integer room; private Long phone; + + //System Accounts + public static User OFFICIAL_CHINA_UNICOM_XH; + public static User OFFICIAL_CHINA_MOBILE_XH; + public static User OFFICIAL_CHINA_MOBILE_FX; + } diff --git a/src/main/java/love/sola/netsupport/sql/SQLCore.java b/src/main/java/love/sola/netsupport/sql/SQLCore.java index 75b2d2c..0277111 100644 --- a/src/main/java/love/sola/netsupport/sql/SQLCore.java +++ b/src/main/java/love/sola/netsupport/sql/SQLCore.java @@ -76,6 +76,7 @@ public class SQLCore { sr = new StandardServiceRegistryBuilder().configure().build(); sf = new MetadataSources(sr).buildMetadata().buildSessionFactory(); + TableUser.init(); TableOperator.init(); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/love/sola/netsupport/sql/TableUser.java b/src/main/java/love/sola/netsupport/sql/TableUser.java index bcba550..6966144 100644 --- a/src/main/java/love/sola/netsupport/sql/TableUser.java +++ b/src/main/java/love/sola/netsupport/sql/TableUser.java @@ -50,4 +50,12 @@ public class TableUser extends SQLCore { } } + protected static void init() { + try (Session s = SQLCore.sf.openSession()) { + User.OFFICIAL_CHINA_UNICOM_XH = s.get(User.class, 100104L); + User.OFFICIAL_CHINA_MOBILE_XH = s.get(User.class, 100864L); + User.OFFICIAL_CHINA_MOBILE_FX = s.get(User.class, 100865L); + } + } + } From 940bcaad8ca341d137226cb2a7af215ee555d613 Mon Sep 17 00:00:00 2001 From: Sola Date: Wed, 23 Dec 2015 02:26:29 +0800 Subject: [PATCH 02/15] update pom --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c782f94..3711537 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ WechatTicketSystem love.sola.netsupport WechatTicketSystem - 1.2-SNAPSHOT + 1.3-SNAPSHOT war From df0034f2ea68e6d8c708b8db7874bd15531abf7f Mon Sep 17 00:00:00 2001 From: Sola Date: Wed, 23 Dec 2015 17:23:54 +0800 Subject: [PATCH 03/15] refactors --- .../love/sola/netsupport/api/{admin => }/CheckSession.java | 5 ++--- .../netsupport/api/{admin/root => manager}/TicketPush.java | 4 ++-- .../love/sola/netsupport/api/{admin => }/root/DashBoard.java | 4 ++-- .../love/sola/netsupport/api/{admin => }/root/GetUser.java | 4 ++-- .../sola/netsupport/api/{admin => }/root/SetPassword.java | 4 ++-- .../love/sola/netsupport/api/{admin => stuff}/Login.java | 2 +- .../love/sola/netsupport/api/{admin => stuff}/TicketLog.java | 2 +- .../sola/netsupport/api/{admin => stuff}/TicketLookup.java | 2 +- .../sola/netsupport/api/{admin => stuff}/TicketTrack.java | 2 +- .../sola/netsupport/api/{admin => stuff}/TicketUpdate.java | 2 +- 10 files changed, 15 insertions(+), 16 deletions(-) rename src/main/java/love/sola/netsupport/api/{admin => }/CheckSession.java (95%) rename src/main/java/love/sola/netsupport/api/{admin/root => manager}/TicketPush.java (97%) rename src/main/java/love/sola/netsupport/api/{admin => }/root/DashBoard.java (96%) rename src/main/java/love/sola/netsupport/api/{admin => }/root/GetUser.java (97%) rename src/main/java/love/sola/netsupport/api/{admin => }/root/SetPassword.java (97%) rename src/main/java/love/sola/netsupport/api/{admin => stuff}/Login.java (98%) rename src/main/java/love/sola/netsupport/api/{admin => stuff}/TicketLog.java (98%) rename src/main/java/love/sola/netsupport/api/{admin => stuff}/TicketLookup.java (98%) rename src/main/java/love/sola/netsupport/api/{admin => stuff}/TicketTrack.java (98%) rename src/main/java/love/sola/netsupport/api/{admin => stuff}/TicketUpdate.java (98%) diff --git a/src/main/java/love/sola/netsupport/api/admin/CheckSession.java b/src/main/java/love/sola/netsupport/api/CheckSession.java similarity index 95% rename from src/main/java/love/sola/netsupport/api/admin/CheckSession.java rename to src/main/java/love/sola/netsupport/api/CheckSession.java index 20b98fd..fd4c233 100644 --- a/src/main/java/love/sola/netsupport/api/admin/CheckSession.java +++ b/src/main/java/love/sola/netsupport/api/CheckSession.java @@ -1,7 +1,6 @@ -package love.sola.netsupport.api.admin; +package love.sola.netsupport.api; import com.google.gson.Gson; -import love.sola.netsupport.api.Response; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.sql.SQLCore; import love.sola.netsupport.util.ParseUtil; @@ -24,7 +23,7 @@ import java.util.Map; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 43) +@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 20) public class CheckSession extends HttpServlet { private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java b/src/main/java/love/sola/netsupport/api/manager/TicketPush.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java rename to src/main/java/love/sola/netsupport/api/manager/TicketPush.java index f9ff44f..f1a4477 100644 --- a/src/main/java/love/sola/netsupport/api/admin/root/TicketPush.java +++ b/src/main/java/love/sola/netsupport/api/manager/TicketPush.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin.root; +package love.sola.netsupport.api.manager; import com.google.gson.Gson; import love.sola.netsupport.api.Response; @@ -31,7 +31,7 @@ import java.io.PrintWriter; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "TicketPush",urlPatterns = "/api/admin/ticketpush",loadOnStartup = 44) +@WebServlet(name = "TicketPush",urlPatterns = "/api/admin/ticketpush",loadOnStartup = 41) public class TicketPush extends HttpServlet{ private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/admin/root/DashBoard.java b/src/main/java/love/sola/netsupport/api/root/DashBoard.java similarity index 96% rename from src/main/java/love/sola/netsupport/api/admin/root/DashBoard.java rename to src/main/java/love/sola/netsupport/api/root/DashBoard.java index e1ed099..e9b72de 100644 --- a/src/main/java/love/sola/netsupport/api/admin/root/DashBoard.java +++ b/src/main/java/love/sola/netsupport/api/root/DashBoard.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin.root; +package love.sola.netsupport.api.root; import com.google.gson.Gson; import love.sola.netsupport.enums.Access; @@ -27,7 +27,7 @@ import java.util.Enumeration; * *********************************************** */ -@WebServlet(name = "Dashboard", urlPatterns = "/api/admin/dashboard", loadOnStartup = 41) +@WebServlet(name = "Dashboard", urlPatterns = "/api/admin/dashboard", loadOnStartup = 51) public class DashBoard extends HttpServlet { private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/admin/root/GetUser.java b/src/main/java/love/sola/netsupport/api/root/GetUser.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/admin/root/GetUser.java rename to src/main/java/love/sola/netsupport/api/root/GetUser.java index 11b01ba..c1868c9 100644 --- a/src/main/java/love/sola/netsupport/api/admin/root/GetUser.java +++ b/src/main/java/love/sola/netsupport/api/root/GetUser.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin.root; +package love.sola.netsupport.api.root; import com.google.gson.Gson; import love.sola.netsupport.api.Response; @@ -28,7 +28,7 @@ import java.io.PrintWriter; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "GetUser",urlPatterns = "/api/admin/getuser",loadOnStartup = 42) +@WebServlet(name = "GetUser",urlPatterns = "/api/admin/getuser",loadOnStartup = 52) public class GetUser extends HttpServlet { private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java b/src/main/java/love/sola/netsupport/api/root/SetPassword.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java rename to src/main/java/love/sola/netsupport/api/root/SetPassword.java index 283d5da..1684b7c 100644 --- a/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java +++ b/src/main/java/love/sola/netsupport/api/root/SetPassword.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin.root; +package love.sola.netsupport.api.root; import love.sola.netsupport.enums.Access; import love.sola.netsupport.enums.Attribute; @@ -24,7 +24,7 @@ import java.io.PrintWriter; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "SetPassword",urlPatterns = "/api/admin/setpass",loadOnStartup = 43) +@WebServlet(name = "SetPassword",urlPatterns = "/api/admin/setpass",loadOnStartup = 53) public class SetPassword extends HttpServlet{ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { diff --git a/src/main/java/love/sola/netsupport/api/admin/Login.java b/src/main/java/love/sola/netsupport/api/stuff/Login.java similarity index 98% rename from src/main/java/love/sola/netsupport/api/admin/Login.java rename to src/main/java/love/sola/netsupport/api/stuff/Login.java index 1722228..2f9b7fe 100644 --- a/src/main/java/love/sola/netsupport/api/admin/Login.java +++ b/src/main/java/love/sola/netsupport/api/stuff/Login.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin; +package love.sola.netsupport.api.stuff; import com.google.gson.Gson; import love.sola.netsupport.api.Response; diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java b/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java similarity index 98% rename from src/main/java/love/sola/netsupport/api/admin/TicketLog.java rename to src/main/java/love/sola/netsupport/api/stuff/TicketLog.java index 01abb2a..8cac701 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java +++ b/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin; +package love.sola.netsupport.api.stuff; import com.google.gson.Gson; import love.sola.netsupport.api.Response; diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java b/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java similarity index 98% rename from src/main/java/love/sola/netsupport/api/admin/TicketLookup.java rename to src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java index 75e45d3..7465df1 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java +++ b/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin; +package love.sola.netsupport.api.stuff; import com.google.gson.Gson; import love.sola.netsupport.api.Response; diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketTrack.java b/src/main/java/love/sola/netsupport/api/stuff/TicketTrack.java similarity index 98% rename from src/main/java/love/sola/netsupport/api/admin/TicketTrack.java rename to src/main/java/love/sola/netsupport/api/stuff/TicketTrack.java index 2b66838..959200b 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketTrack.java +++ b/src/main/java/love/sola/netsupport/api/stuff/TicketTrack.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin; +package love.sola.netsupport.api.stuff; import com.google.gson.Gson; import love.sola.netsupport.api.Response; diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java b/src/main/java/love/sola/netsupport/api/stuff/TicketUpdate.java similarity index 98% rename from src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java rename to src/main/java/love/sola/netsupport/api/stuff/TicketUpdate.java index c2494f0..e530ad3 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java +++ b/src/main/java/love/sola/netsupport/api/stuff/TicketUpdate.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.admin; +package love.sola.netsupport.api.stuff; import com.google.gson.Gson; import love.sola.netsupport.api.Response; From a506a7742f4604a2665db7d304db2fdb12572d51 Mon Sep 17 00:00:00 2001 From: Sola Date: Wed, 23 Dec 2015 18:33:20 +0800 Subject: [PATCH 04/15] better langs --- .../netsupport/wechat/handler/ProfileHandler.java | 2 +- .../netsupport/wechat/handler/RegisterHandler.java | 12 +++++++----- src/main/resources/lang.yml | 9 +++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/love/sola/netsupport/wechat/handler/ProfileHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/ProfileHandler.java index c1b775a..67a2b9f 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/ProfileHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/ProfileHandler.java @@ -35,7 +35,7 @@ public class ProfileHandler implements WxMpMessageHandler { session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); session.setAttribute(Attribute.USER, u); TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); - out.content(format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone())); + out.content(format("Profile_Modify", format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone()))); return out.build(); } diff --git a/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java index b54d8db..c416748 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java @@ -17,7 +17,6 @@ import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder; import java.util.Map; import static love.sola.netsupport.config.Lang.format; -import static love.sola.netsupport.config.Lang.lang; /** * *********************************************** @@ -33,14 +32,17 @@ public class RegisterHandler implements WxMpMessageHandler { TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); String fromUser = wxMessage.getFromUserName(); User u = TableUser.getByWechat(fromUser); + String id = WechatSession.genId(); + WxSession session = WechatSession.get(id, true); if (u != null) { - out.content(lang("Already_Registered")); + session.setAttribute(Attribute.AUTHORIZED, Command.PROFILE); + session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); + session.setAttribute(Attribute.USER, u); + out.content(format("Already_Registered", format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone()))); } else { - String id = WechatSession.genId(); - WxSession session = WechatSession.get(id, true); session.setAttribute(Attribute.AUTHORIZED, Command.REGISTER); session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); - out.content(format("User_Register_Link", id)); + out.content(format("User_Register", format("User_Register_Link", id))); } return out.build(); } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 4d2578d..4c79f07 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -16,7 +16,8 @@ Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微 Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' Message_Spam: '你的打字速度太快了,喝一杯82年的Java压压惊吧。' #Register -Already_Registered: "您已进行过微信绑定。如果需要更改个人信息,请发送 '修改资料'(xgzl) 。" +User_Register: "您尚未进行微信绑定。\n>点击这里进行微信绑定操作<" +Already_Registered: '您已进行过微信绑定。若是需要更改个人信息,请 >点击此处<。' #Query Query_Title: '最近一次报修记录:' More_Details: '>>> 查询更早的报修信息,请点击 <<<' @@ -37,17 +38,17 @@ Cancel_Title: '报修已取消:' User_Cancel_Remark: '用户手动取消报修。' Cancel_Failed: '取消失败。' #Modify -Modify_Title: '' +Profile_Modify: '> 点此修改资料 <' #Login Not_Operator: '嘟嘟嘟……' No_Login: 'Permission Denied.' Internal_Error: '啊哦,登录失败了哦。' #URL -User_Register_Link: "您尚未进行微信绑定。\n>点击这里进行微信绑定操作<" +User_Register_Link: 'http://topaz.sinaapp.com/nm/v1/reg.html?token={0}' User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/list.html?token={0}' User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/rrepair.html?token={0}&name={1}&isp={2}&room={3}&block={4}&phone={5,number,#}' -User_Profile_Link: '> 点此修改资料 <' +User_Profile_Link: 'http://topaz.sinaapp.com/nm/v1/modi.html?token={0}&name={1}&isp={2}&username={3}&block={4}&room={5}&phone={6,number,#}' Result_Page: 'http://topaz.sinaapp.com/nm/v1/result.html' Operator_Home_Page: 'CLICK HERE' Operator_Login_Page: 'http://topaz.sinaapp.com/nm/v1/man/login.html?pkey={0}' From 3e0c907655c7dea88b3b8724aa762bbad300b67f Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 26 Dec 2015 00:39:15 +0800 Subject: [PATCH 05/15] improve - subscribe event pop up register links automatically --- .../sola/netsupport/api/root/GetUser.java | 2 +- .../love/sola/netsupport/config/Settings.java | 1 + .../love/sola/netsupport/sql/TableTicket.java | 10 ++++ .../love/sola/netsupport/sql/TableUser.java | 42 +++++++++++++--- .../sola/netsupport/wechat/WxMpServlet.java | 7 +-- .../wechat/handler/RegisterHandler.java | 4 +- .../wechat/handler/SubscribeHandler.java | 48 +++++++++++++++++++ .../wechat/matcher/CheckSpamMatcher.java | 1 - src/main/resources/lang.yml | 5 +- 9 files changed, 102 insertions(+), 18 deletions(-) create mode 100644 src/main/java/love/sola/netsupport/wechat/handler/SubscribeHandler.java diff --git a/src/main/java/love/sola/netsupport/api/root/GetUser.java b/src/main/java/love/sola/netsupport/api/root/GetUser.java index c1868c9..524bee0 100644 --- a/src/main/java/love/sola/netsupport/api/root/GetUser.java +++ b/src/main/java/love/sola/netsupport/api/root/GetUser.java @@ -59,7 +59,7 @@ public class GetUser extends HttpServlet { return new Response(Response.ResponseCode.UNAUTHORIZED); } Operator op = (Operator) session.getAttribute(Attribute.OPERATOR); - if (op.getAccess() != Access.ROOT) { + if (op.getAccess() > Access.LEADER) { return new Response(Response.ResponseCode.PERMISSION_DENIED); } diff --git a/src/main/java/love/sola/netsupport/config/Settings.java b/src/main/java/love/sola/netsupport/config/Settings.java index 9c57687..caca077 100644 --- a/src/main/java/love/sola/netsupport/config/Settings.java +++ b/src/main/java/love/sola/netsupport/config/Settings.java @@ -32,6 +32,7 @@ public class Settings { public int Check_Spam_Interval; public int User_Session_Max_Inactive; + public int User_Wechat_Cache_Expire_Time; //No arg constructor for Yaml.loadAs public Settings() { I = this; } diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index 075f24c..428f700 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -72,6 +72,16 @@ public class TableTicket extends SQLCore { } } + @SuppressWarnings("unchecked") + public static List unsolved() { + try (Session s = SQLCore.sf.openSession()) { + return s.createCriteria(Ticket.class) + .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) + .createCriteria(Ticket.PROPERTY_USER) + .list(); + } + } + @SuppressWarnings("unchecked") public static List track(int tid) { try (Session s = SQLCore.sf.openSession()) { diff --git a/src/main/java/love/sola/netsupport/sql/TableUser.java b/src/main/java/love/sola/netsupport/sql/TableUser.java index 6966144..da02813 100644 --- a/src/main/java/love/sola/netsupport/sql/TableUser.java +++ b/src/main/java/love/sola/netsupport/sql/TableUser.java @@ -1,9 +1,16 @@ package love.sola.netsupport.sql; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import love.sola.netsupport.config.Settings; import love.sola.netsupport.pojo.User; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; + /** * *********************************************** * Created by Sola on 2015/11/10. @@ -28,19 +35,21 @@ public class TableUser extends SQLCore { } } - - public static User getByWechat(String wechat) { - try (Session s = sf.openSession()) { - return (User) s.createCriteria(User.class).add(Restrictions.eq(User.PROPERTY_WECHAT, wechat)).uniqueResult(); - } - } - public static User getByName(String name) { try (Session s = sf.openSession()) { return (User) s.createCriteria(User.class).add(Restrictions.eq(User.PROPERTY_NAME, name)).uniqueResult(); } } + public static User getByWechat(String wechat) { + try { + return cache.get(wechat); + } catch (ExecutionException e) { + e.printStackTrace(); + return null; + } + } + public static int update(User user) { try (Session s = sf.openSession()) { s.beginTransaction(); @@ -58,4 +67,23 @@ public class TableUser extends SQLCore { } } + private static LoadingCache cache = CacheBuilder.newBuilder() + .concurrencyLevel(4) + .maximumSize(4096) + .expireAfterWrite(Settings.I.User_Wechat_Cache_Expire_Time, TimeUnit.SECONDS) + .build(new ValueLoader()); + + private static class ValueLoader extends CacheLoader { + @Override + public User load(String key) throws Exception { + return TableUser.getByWechat0(key); + } + } + + private static User getByWechat0(String wechat) { + try (Session s = sf.openSession()) { + return (User) s.createCriteria(User.class).add(Restrictions.eq(User.PROPERTY_WECHAT, wechat)).uniqueResult(); + } + } + } diff --git a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java index 6ae5b31..2d96f70 100644 --- a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java +++ b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java @@ -2,6 +2,7 @@ package love.sola.netsupport.wechat; import love.sola.netsupport.config.Settings; import love.sola.netsupport.wechat.handler.RegisterHandler; +import love.sola.netsupport.wechat.handler.SubscribeHandler; import love.sola.netsupport.wechat.matcher.CheckSpamMatcher; import love.sola.netsupport.wechat.matcher.RegisterMatcher; import me.chanjar.weixin.common.util.StringUtils; @@ -56,11 +57,7 @@ public class WxMpServlet extends HttpServlet { .async(false) .msgType("event") .event("subscribe") - .handler((wxMessage, context, wxMpService1, sessionManager) - -> WxMpXmlOutMessage.TEXT() - .fromUser(wxMessage.getToUserName()) - .toUser(wxMessage.getFromUserName()) - .content(lang("Event_Subscribe")).build()) + .handler(new SubscribeHandler()) .end(); wxMpMessageRouter.rule() .async(false) diff --git a/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java index c416748..e65e6da 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java @@ -36,12 +36,12 @@ public class RegisterHandler implements WxMpMessageHandler { WxSession session = WechatSession.get(id, true); if (u != null) { session.setAttribute(Attribute.AUTHORIZED, Command.PROFILE); - session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); + session.setAttribute(Attribute.WECHAT, fromUser); session.setAttribute(Attribute.USER, u); out.content(format("Already_Registered", format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone()))); } else { session.setAttribute(Attribute.AUTHORIZED, Command.REGISTER); - session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); + session.setAttribute(Attribute.WECHAT, fromUser); out.content(format("User_Register", format("User_Register_Link", id))); } return out.build(); diff --git a/src/main/java/love/sola/netsupport/wechat/handler/SubscribeHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/SubscribeHandler.java new file mode 100644 index 0000000..1c50439 --- /dev/null +++ b/src/main/java/love/sola/netsupport/wechat/handler/SubscribeHandler.java @@ -0,0 +1,48 @@ +package love.sola.netsupport.wechat.handler; + +import love.sola.netsupport.enums.Attribute; +import love.sola.netsupport.pojo.User; +import love.sola.netsupport.sql.TableUser; +import love.sola.netsupport.wechat.Command; +import love.sola.netsupport.wechat.WechatSession; +import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.common.session.WxSession; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpMessageHandler; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder; + +import java.util.Map; + +import static love.sola.netsupport.config.Lang.format; + +/** + * *********************************************** + * Created by Sola on 2015/12/25. + * Don't modify this source without my agreement + * *********************************************** + */ +public class SubscribeHandler implements WxMpMessageHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { + TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); + String fromUser = wxMessage.getFromUserName(); + User u = TableUser.getByWechat(fromUser); + String id = WechatSession.genId(); + WxSession session = WechatSession.get(id, true); + if (u != null) { + session.setAttribute(Attribute.AUTHORIZED, Command.PROFILE); + session.setAttribute(Attribute.WECHAT, fromUser); + session.setAttribute(Attribute.USER, u); + out.content(format("Event_Subscribe", format("Already_Registered", format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone())))); + } else { + session.setAttribute(Attribute.AUTHORIZED, Command.REGISTER); + session.setAttribute(Attribute.WECHAT, fromUser); + out.content(format("Event_Subscribe", format("User_Register", format("User_Register_Link", id)))); + } + return out.build(); + } +} diff --git a/src/main/java/love/sola/netsupport/wechat/matcher/CheckSpamMatcher.java b/src/main/java/love/sola/netsupport/wechat/matcher/CheckSpamMatcher.java index 00363c3..98f5bad 100644 --- a/src/main/java/love/sola/netsupport/wechat/matcher/CheckSpamMatcher.java +++ b/src/main/java/love/sola/netsupport/wechat/matcher/CheckSpamMatcher.java @@ -26,7 +26,6 @@ public class CheckSpamMatcher implements WxMpMessageMatcher { private LoadingCache cache = CacheBuilder.newBuilder() .concurrencyLevel(4) - .weakKeys() .maximumSize(4096) .expireAfterWrite(Settings.I.Check_Spam_Cache_Expire_Time, TimeUnit.SECONDS) .build(new ValueLoader()); diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 4c79f07..c96ccf8 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -11,10 +11,11 @@ REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(撤销)|(qx)|(cx)$' REGEX_LOGIN: '^(?i)Authme$' REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(修改信息)|(xgzl)|(xgxx)$' -#Event -Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n\n若您尚未进行过微信绑定,请发送'绑定'(bd)进行微信绑定" +#Misc Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' Message_Spam: '你的打字速度太快了,喝一杯82年的Java压压惊吧。' +#Subscribe +Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n\n{0}" #Register User_Register: "您尚未进行微信绑定。\n>点击这里进行微信绑定操作<" Already_Registered: '您已进行过微信绑定。若是需要更改个人信息,请 >点击此处<。' From 1ce14b7d1a8447b67225426ae95f8e4b748e6ed0 Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 26 Dec 2015 15:04:44 +0800 Subject: [PATCH 06/15] member sign --- .../sola/netsupport/wechat/WxMpServlet.java | 2 + .../wechat/handler/SignHandler.java | 67 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java diff --git a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java index 2d96f70..b9507a0 100644 --- a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java +++ b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java @@ -2,6 +2,7 @@ package love.sola.netsupport.wechat; import love.sola.netsupport.config.Settings; import love.sola.netsupport.wechat.handler.RegisterHandler; +import love.sola.netsupport.wechat.handler.SignHandler; import love.sola.netsupport.wechat.handler.SubscribeHandler; import love.sola.netsupport.wechat.matcher.CheckSpamMatcher; import love.sola.netsupport.wechat.matcher.RegisterMatcher; @@ -80,6 +81,7 @@ public class WxMpServlet extends HttpServlet { } catch (IllegalAccessException | InstantiationException e) { throw new ServletException(e); } + wxMpMessageRouter.rule().async(false).msgType("text").rContent("(?i)^Auth \\d{4}").handler(new SignHandler()).end(); } public static void registerCommands(WxMpMessageRouter router) throws IllegalAccessException, InstantiationException { diff --git a/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java new file mode 100644 index 0000000..54a1da8 --- /dev/null +++ b/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java @@ -0,0 +1,67 @@ +package love.sola.netsupport.wechat.handler; + +import love.sola.netsupport.sql.SQLCore; +import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpMessageHandler; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * *********************************************** + * Created by Sola on 2015/12/26. + * Don't modify this source without my agreement + * *********************************************** + */ +public class SignHandler implements WxMpMessageHandler { + + public static Pattern pat = Pattern.compile("(?i)^Auth (\\d{4})"); + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { + String msg = wxMessage.getContent(); + TextBuilder out = WxMpXmlOutMessage.TEXT().toUser(wxMessage.getFromUserName()).fromUser(wxMessage.getToUserName()); + Matcher mat = pat.matcher(msg); + if (mat.find()) { + int id = Integer.parseInt(mat.group(1)); + try (Connection conn = SQLCore.ds.getConnection()) { + PreparedStatement ps = conn.prepareStatement("SELECT wechat FROM auth WHERE id=?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + if (rs.getString("wechat") != null) { + out.content("该ID已登记过。"); + } else { + ps = conn.prepareStatement("UPDATE auth SET wechat=? WHERE id=?"); + ps.setString(1, wxMessage.getFromUserName()); + ps.setInt(2, id); + if (ps.executeUpdate() == 1) { + out.content("登记成功。"); + } else { + out.content("登记失败,请联系管理员。"); + } + } + } else { + out.content("无效ID。"); + } + } catch (SQLException e) { + e.printStackTrace(); + out.content("系统异常,请联系管理员。"); + } + } else { + out.content("无效ID。"); + } + return out.build(); + } + +} From 1e3a0754a40a37731f82fbe67ff5ed36aa802022 Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 26 Dec 2015 15:30:36 +0800 Subject: [PATCH 07/15] fixed issue 'returned null for key' --- src/main/java/love/sola/netsupport/sql/TableUser.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/love/sola/netsupport/sql/TableUser.java b/src/main/java/love/sola/netsupport/sql/TableUser.java index da02813..f370052 100644 --- a/src/main/java/love/sola/netsupport/sql/TableUser.java +++ b/src/main/java/love/sola/netsupport/sql/TableUser.java @@ -43,7 +43,8 @@ public class TableUser extends SQLCore { public static User getByWechat(String wechat) { try { - return cache.get(wechat); + User u = cache.get(wechat); + return u == NULL_USER ? null : u; } catch (ExecutionException e) { e.printStackTrace(); return null; @@ -55,6 +56,7 @@ public class TableUser extends SQLCore { s.beginTransaction(); s.update(user); s.getTransaction().commit(); + cache.put(user.getWechatId(), user); return 1; } } @@ -76,10 +78,13 @@ public class TableUser extends SQLCore { private static class ValueLoader extends CacheLoader { @Override public User load(String key) throws Exception { - return TableUser.getByWechat0(key); + User u = TableUser.getByWechat0(key); + return u == null ? NULL_USER : u; } } + private static final User NULL_USER = new User(); + private static User getByWechat0(String wechat) { try (Session s = sf.openSession()) { return (User) s.createCriteria(User.class).add(Restrictions.eq(User.PROPERTY_WECHAT, wechat)).uniqueResult(); From ccdffd01d716d710377c54bb7231801e07b87dde Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 26 Dec 2015 15:55:47 +0800 Subject: [PATCH 08/15] add duplicated check for member sign --- .../wechat/handler/SignHandler.java | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java index 54a1da8..a11a94b 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java @@ -32,27 +32,30 @@ public class SignHandler implements WxMpMessageHandler { String msg = wxMessage.getContent(); TextBuilder out = WxMpXmlOutMessage.TEXT().toUser(wxMessage.getFromUserName()).fromUser(wxMessage.getToUserName()); Matcher mat = pat.matcher(msg); + + root: if (mat.find()) { int id = Integer.parseInt(mat.group(1)); try (Connection conn = SQLCore.ds.getConnection()) { - PreparedStatement ps = conn.prepareStatement("SELECT wechat FROM auth WHERE id=?"); - ps.setInt(1, id); - ResultSet rs = ps.executeQuery(); - if (rs.next()) { - if (rs.getString("wechat") != null) { + switch (checkID(conn, id)) { + case -1: + out.content("无效ID。"); + break root; + case -2: out.content("该ID已登记过。"); - } else { - ps = conn.prepareStatement("UPDATE auth SET wechat=? WHERE id=?"); - ps.setString(1, wxMessage.getFromUserName()); - ps.setInt(2, id); - if (ps.executeUpdate() == 1) { - out.content("登记成功。"); - } else { - out.content("登记失败,请联系管理员。"); - } - } + break root; + } + if (checkDuplicated(conn, wxMessage.getFromUserName())) { + out.content("你的微信已经登记过。"); + break root; + } + PreparedStatement ps = conn.prepareStatement("UPDATE auth SET wechat=? WHERE id=?"); + ps.setString(1, wxMessage.getFromUserName()); + ps.setInt(2, id); + if (ps.executeUpdate() == 1) { + out.content("登记成功。"); } else { - out.content("无效ID。"); + out.content("登记失败,请联系管理员。"); } } catch (SQLException e) { e.printStackTrace(); @@ -64,4 +67,22 @@ public class SignHandler implements WxMpMessageHandler { return out.build(); } + private static int checkID(Connection conn, int id) throws SQLException { + PreparedStatement ps = conn.prepareStatement("SELECT wechat FROM auth WHERE id=?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + return rs.getString("wechat") != null ? -2 : 0; + } else { + return -1; + } + } + + private static boolean checkDuplicated(Connection conn, String wechat) throws SQLException { + PreparedStatement ps = conn.prepareStatement("SELECT wechat FROM auth WHERE wechat=?"); + ps.setString(1, wechat); + ResultSet rs = ps.executeQuery(); + return rs.next(); + } + } From 6483a39b63e1addb49e59f2be1a9740a7dee58e9 Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 26 Dec 2015 17:17:37 +0800 Subject: [PATCH 09/15] fix BM_11 421 room doesn't exists --- .../java/love/sola/netsupport/enums/Block.java | 2 +- src/main/resources/lang.yml | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/love/sola/netsupport/enums/Block.java b/src/main/java/love/sola/netsupport/enums/Block.java index c14d370..d3e1fc9 100644 --- a/src/main/java/love/sola/netsupport/enums/Block.java +++ b/src/main/java/love/sola/netsupport/enums/Block.java @@ -68,7 +68,7 @@ public class Block { AVAILABLE[BM_8] = new int[]{100, 221, 321, 421, 521, 621, 721}; AVAILABLE[BM_9] = new int[]{100, 221, 321, 421, 521, 621}; AVAILABLE[BM_10] = new int[]{111, 239, 339, 439, 558, 658, 758, 858}; - AVAILABLE[BM_11] = new int[]{100, 220, 320, 420, 520, 620, 720, 820}; + AVAILABLE[BM_11] = new int[]{100, 213, 321, 421, 521, 621, 721, 821}; AVAILABLE[DM_12] = new int[]{119, 221, 321, 421, 521, 621, 720}; AVAILABLE[DM_13] = new int[]{120, 222, 322, 422, 522, 622, 722}; AVAILABLE[DM_14] = new int[]{100, 230, 330, 430, 530, 630, 730}; diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index c96ccf8..158dea9 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -26,13 +26,14 @@ No_Ticket_Available: '您尚未提交过任何报修。' #Submit Already_Opening_Ticket: "您上次提交的报修单仍在处理中. 若需要查询报修单状态,请发送 '查询' 。" Submit_Title: '在网维工作人员上门解决您的问题之前...' -Submit_Desc: "在网维工作人员上门解决您的问题之前,您可以尝试以下方法来更有效地解决您的问题:\n - 重新插拔您电脑的网线以及墙上的端口。\n - 尝试卸载掉您的wifi共享软件并重启电脑。\n - 请您检查一下您的账号是否余额充足。\n - 若您的电脑出现明显异常,请尝试使用他人的电脑能否正常登录,网维的工作成员主要负责网络的维护工作,可能无法解决您的个人电脑问题。\n - \n - 若以上步骤对您没有帮助,请点此提交报修表单。" +Submit_Desc: | + 在网维工作人员上门解决您的问题之前,您可以尝试以下方法来更有效地解决您的问题: + - 重新插拔您电脑的网线以及墙上的端口。 + - 尝试卸载掉您的wifi共享软件并重启电脑。 + - 请您检查一下您的账号是否余额充足。 + - 若您的电脑出现明显异常,请尝试使用他人的电脑能否正常登录,网维的工作成员主要负责网络的维护工作,可能无法解决您的个人电脑问题。 + + 若以上步骤对您没有帮助,请点此提交报修表单。 #Cancel No_Open_Ticket_Available: '您当前没有未解决的报修表单。' Cancel_Title: '报修已取消:' From 9c2856e35813abec515a78b7eaab898aa1f52656 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 27 Dec 2015 00:55:07 +0800 Subject: [PATCH 10/15] add function to query all unsolved --- src/main/java/love/sola/netsupport/sql/TableTicket.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index 428f700..5e6f1c0 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -63,8 +63,10 @@ public class TableTicket extends SQLCore { @SuppressWarnings("unchecked") public static List unsolvedByBlock(int b) { + if (b == 0) return unsolved(); try (Session s = SQLCore.sf.openSession()) { return s.createCriteria(Ticket.class) + .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) .createCriteria(Ticket.PROPERTY_USER) .add(Restrictions.between(User.PROPERTY_BLOCK, b * 10, (b + 1) * 10 - 1)) @@ -76,6 +78,8 @@ public class TableTicket extends SQLCore { public static List unsolved() { try (Session s = SQLCore.sf.openSession()) { return s.createCriteria(Ticket.class) + .addOrder(Order.asc(Ticket.PROPERTY_USER + "." + User.PROPERTY_BLOCK)) + .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) .createCriteria(Ticket.PROPERTY_USER) .list(); From 633a3b184a0b0136dac8cf533066ff398c7c03b2 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 27 Dec 2015 01:01:33 +0800 Subject: [PATCH 11/15] fix 'could not resolve property' --- src/main/java/love/sola/netsupport/sql/TableTicket.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index 5e6f1c0..5fa1088 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -78,7 +78,8 @@ public class TableTicket extends SQLCore { public static List unsolved() { try (Session s = SQLCore.sf.openSession()) { return s.createCriteria(Ticket.class) - .addOrder(Order.asc(Ticket.PROPERTY_USER + "." + User.PROPERTY_BLOCK)) + .createAlias(Ticket.PROPERTY_USER, "u") + .addOrder(Order.asc("u." + User.PROPERTY_BLOCK)) .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) .createCriteria(Ticket.PROPERTY_USER) From 710fa28ada0df7b26a27ed410f1fc24d4b294ee6 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 27 Dec 2015 01:06:19 +0800 Subject: [PATCH 12/15] fix 'duplicate association path' --- src/main/java/love/sola/netsupport/sql/TableTicket.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index 5fa1088..12eb39b 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -82,7 +82,6 @@ public class TableTicket extends SQLCore { .addOrder(Order.asc("u." + User.PROPERTY_BLOCK)) .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) - .createCriteria(Ticket.PROPERTY_USER) .list(); } } From cc3c9d30be1a506b10bb21bf59d7cdb6df9d8987 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 27 Dec 2015 11:21:10 +0800 Subject: [PATCH 13/15] Flush cache & some refactors --- .../sola/netsupport/api/CheckSession.java | 2 +- .../netsupport/api/{stuff => }/Login.java | 5 +- .../api/{root => manager}/GetUser.java | 4 +- .../netsupport/api/manager/TicketPush.java | 2 +- .../sola/netsupport/api/root/DashBoard.java | 11 ++-- .../sola/netsupport/api/root/FlushCache.java | 59 +++++++++++++++++++ .../sola/netsupport/api/root/SetPassword.java | 3 +- .../api/{ => user}/ProfileModify.java | 3 +- .../netsupport/api/{ => user}/Register.java | 3 +- .../api/{ => user}/TicketQuery.java | 3 +- .../api/{ => user}/TicketSubmit.java | 3 +- .../love/sola/netsupport/enums/Status.java | 2 + .../love/sola/netsupport/sql/TableUser.java | 4 ++ 13 files changed, 85 insertions(+), 19 deletions(-) rename src/main/java/love/sola/netsupport/api/{stuff => }/Login.java (97%) rename src/main/java/love/sola/netsupport/api/{root => manager}/GetUser.java (97%) create mode 100644 src/main/java/love/sola/netsupport/api/root/FlushCache.java rename src/main/java/love/sola/netsupport/api/{ => user}/ProfileModify.java (97%) rename src/main/java/love/sola/netsupport/api/{ => user}/Register.java (98%) rename src/main/java/love/sola/netsupport/api/{ => user}/TicketQuery.java (97%) rename src/main/java/love/sola/netsupport/api/{ => user}/TicketSubmit.java (97%) diff --git a/src/main/java/love/sola/netsupport/api/CheckSession.java b/src/main/java/love/sola/netsupport/api/CheckSession.java index fd4c233..97871f0 100644 --- a/src/main/java/love/sola/netsupport/api/CheckSession.java +++ b/src/main/java/love/sola/netsupport/api/CheckSession.java @@ -23,7 +23,7 @@ import java.util.Map; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 20) +@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 11) public class CheckSession extends HttpServlet { private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/stuff/Login.java b/src/main/java/love/sola/netsupport/api/Login.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/stuff/Login.java rename to src/main/java/love/sola/netsupport/api/Login.java index 2f9b7fe..8faae6f 100644 --- a/src/main/java/love/sola/netsupport/api/stuff/Login.java +++ b/src/main/java/love/sola/netsupport/api/Login.java @@ -1,7 +1,6 @@ -package love.sola.netsupport.api.stuff; +package love.sola.netsupport.api; import com.google.gson.Gson; -import love.sola.netsupport.api.Response; import love.sola.netsupport.enums.Access; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.pojo.Operator; @@ -31,7 +30,7 @@ import java.io.PrintWriter; * *********************************************** */ -@WebServlet(name = "Login", urlPatterns = "/api/admin/login", loadOnStartup = 31) +@WebServlet(name = "Login", urlPatterns = "/api/admin/login", loadOnStartup = 12) public class Login extends HttpServlet { private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/root/GetUser.java b/src/main/java/love/sola/netsupport/api/manager/GetUser.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/root/GetUser.java rename to src/main/java/love/sola/netsupport/api/manager/GetUser.java index 524bee0..4ee7ac1 100644 --- a/src/main/java/love/sola/netsupport/api/root/GetUser.java +++ b/src/main/java/love/sola/netsupport/api/manager/GetUser.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.api.root; +package love.sola.netsupport.api.manager; import com.google.gson.Gson; import love.sola.netsupport.api.Response; @@ -28,7 +28,7 @@ import java.io.PrintWriter; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "GetUser",urlPatterns = "/api/admin/getuser",loadOnStartup = 52) +@WebServlet(name = "GetUser",urlPatterns = "/api/admin/getuser",loadOnStartup = 41) public class GetUser extends HttpServlet { private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/manager/TicketPush.java b/src/main/java/love/sola/netsupport/api/manager/TicketPush.java index f1a4477..6c10175 100644 --- a/src/main/java/love/sola/netsupport/api/manager/TicketPush.java +++ b/src/main/java/love/sola/netsupport/api/manager/TicketPush.java @@ -31,7 +31,7 @@ import java.io.PrintWriter; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "TicketPush",urlPatterns = "/api/admin/ticketpush",loadOnStartup = 41) +@WebServlet(name = "TicketPush",urlPatterns = "/api/admin/ticketpush",loadOnStartup = 42) public class TicketPush extends HttpServlet{ private Gson gson = SQLCore.gson; diff --git a/src/main/java/love/sola/netsupport/api/root/DashBoard.java b/src/main/java/love/sola/netsupport/api/root/DashBoard.java index e9b72de..230ac45 100644 --- a/src/main/java/love/sola/netsupport/api/root/DashBoard.java +++ b/src/main/java/love/sola/netsupport/api/root/DashBoard.java @@ -1,10 +1,8 @@ package love.sola.netsupport.api.root; -import com.google.gson.Gson; import love.sola.netsupport.enums.Access; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.pojo.Operator; -import love.sola.netsupport.sql.SQLCore; import love.sola.netsupport.util.Checker; import love.sola.netsupport.wechat.Command; import love.sola.netsupport.wechat.WechatSession; @@ -27,25 +25,24 @@ import java.util.Enumeration; * *********************************************** */ -@WebServlet(name = "Dashboard", urlPatterns = "/api/admin/dashboard", loadOnStartup = 51) +@WebServlet(name = "Dashboard", urlPatterns = "/api/root/dashboard", loadOnStartup = 51) public class DashBoard extends HttpServlet { - private Gson gson = SQLCore.gson; - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } + @SuppressWarnings("Duplicates") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.addHeader("Content-type", "text/plain;charset=utf-8"); PrintWriter out = response.getWriter(); - print(request, out); + process(request, out); out.close(); } - private void print(HttpServletRequest request, PrintWriter out) { + private void process(HttpServletRequest request, PrintWriter out) { WxSession session = Checker.isAuthorized(request, Command.LOGIN); if (session == null) { out.println("Unauthorized"); diff --git a/src/main/java/love/sola/netsupport/api/root/FlushCache.java b/src/main/java/love/sola/netsupport/api/root/FlushCache.java new file mode 100644 index 0000000..13b97c5 --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/root/FlushCache.java @@ -0,0 +1,59 @@ +package love.sola.netsupport.api.root; + +import love.sola.netsupport.enums.Access; +import love.sola.netsupport.enums.Attribute; +import love.sola.netsupport.pojo.Operator; +import love.sola.netsupport.sql.TableUser; +import love.sola.netsupport.util.Checker; +import love.sola.netsupport.wechat.Command; +import me.chanjar.weixin.common.session.WxSession; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * *********************************************** + * Created by Sola on 2015/12/15. + * Don't modify this source without my agreement + * *********************************************** + */ + +@WebServlet(name = "FlushCache", urlPatterns = "/api/root/flushcache", loadOnStartup = 52) +public class FlushCache extends HttpServlet { + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doGet(request, response); + } + + @SuppressWarnings("Duplicates") + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + response.addHeader("Content-type", "text/plain;charset=utf-8"); + PrintWriter out = response.getWriter(); + process(request, out); + out.close(); + } + + private void process(HttpServletRequest request, PrintWriter out) { + WxSession session = Checker.isAuthorized(request, Command.LOGIN); + if (session == null) { + out.println("Unauthorized"); + return; + } + + Operator op = (Operator) session.getAttribute(Attribute.OPERATOR); + if (op.getAccess() != Access.ROOT) { + out.println("Unauthorized"); + return; + } + TableUser.flushCache(); + out.println("Flushed wechat cache"); + } + +} diff --git a/src/main/java/love/sola/netsupport/api/root/SetPassword.java b/src/main/java/love/sola/netsupport/api/root/SetPassword.java index 1684b7c..74f1771 100644 --- a/src/main/java/love/sola/netsupport/api/root/SetPassword.java +++ b/src/main/java/love/sola/netsupport/api/root/SetPassword.java @@ -24,13 +24,14 @@ import java.io.PrintWriter; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "SetPassword",urlPatterns = "/api/admin/setpass",loadOnStartup = 53) +@WebServlet(name = "SetPassword",urlPatterns = "/api/root/setpass",loadOnStartup = 53) public class SetPassword extends HttpServlet{ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } + @SuppressWarnings("Duplicates") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); diff --git a/src/main/java/love/sola/netsupport/api/ProfileModify.java b/src/main/java/love/sola/netsupport/api/user/ProfileModify.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/ProfileModify.java rename to src/main/java/love/sola/netsupport/api/user/ProfileModify.java index 083b082..d51766d 100644 --- a/src/main/java/love/sola/netsupport/api/ProfileModify.java +++ b/src/main/java/love/sola/netsupport/api/user/ProfileModify.java @@ -1,6 +1,7 @@ -package love.sola.netsupport.api; +package love.sola.netsupport.api.user; import com.google.gson.Gson; +import love.sola.netsupport.api.Response; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.enums.ISP; import love.sola.netsupport.pojo.User; diff --git a/src/main/java/love/sola/netsupport/api/Register.java b/src/main/java/love/sola/netsupport/api/user/Register.java similarity index 98% rename from src/main/java/love/sola/netsupport/api/Register.java rename to src/main/java/love/sola/netsupport/api/user/Register.java index a8a5da5..42db0b0 100644 --- a/src/main/java/love/sola/netsupport/api/Register.java +++ b/src/main/java/love/sola/netsupport/api/user/Register.java @@ -1,6 +1,7 @@ -package love.sola.netsupport.api; +package love.sola.netsupport.api.user; import com.google.gson.Gson; +import love.sola.netsupport.api.Response; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.enums.ISP; import love.sola.netsupport.pojo.User; diff --git a/src/main/java/love/sola/netsupport/api/TicketQuery.java b/src/main/java/love/sola/netsupport/api/user/TicketQuery.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/TicketQuery.java rename to src/main/java/love/sola/netsupport/api/user/TicketQuery.java index 27fcea7..c5d6685 100644 --- a/src/main/java/love/sola/netsupport/api/TicketQuery.java +++ b/src/main/java/love/sola/netsupport/api/user/TicketQuery.java @@ -1,6 +1,7 @@ -package love.sola.netsupport.api; +package love.sola.netsupport.api.user; import com.google.gson.Gson; +import love.sola.netsupport.api.Response; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.pojo.Ticket; import love.sola.netsupport.pojo.User; diff --git a/src/main/java/love/sola/netsupport/api/TicketSubmit.java b/src/main/java/love/sola/netsupport/api/user/TicketSubmit.java similarity index 97% rename from src/main/java/love/sola/netsupport/api/TicketSubmit.java rename to src/main/java/love/sola/netsupport/api/user/TicketSubmit.java index 1d8e615..6229fab 100644 --- a/src/main/java/love/sola/netsupport/api/TicketSubmit.java +++ b/src/main/java/love/sola/netsupport/api/user/TicketSubmit.java @@ -1,6 +1,7 @@ -package love.sola.netsupport.api; +package love.sola.netsupport.api.user; import com.google.gson.Gson; +import love.sola.netsupport.api.Response; import love.sola.netsupport.config.Settings; import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.pojo.Ticket; diff --git a/src/main/java/love/sola/netsupport/enums/Status.java b/src/main/java/love/sola/netsupport/enums/Status.java index 4132f4b..4083633 100644 --- a/src/main/java/love/sola/netsupport/enums/Status.java +++ b/src/main/java/love/sola/netsupport/enums/Status.java @@ -17,6 +17,8 @@ public class Status { public static final int UNCHECKED = 0; public static final int ARRANGED = 1; public static final int PUTOFF = 2; + public static final int REPORTED = 4; + public static final int ISP_HANDLED = 7; public static final int SOLVED = 9; public static final Map inverseMap = new HashMap<>(); diff --git a/src/main/java/love/sola/netsupport/sql/TableUser.java b/src/main/java/love/sola/netsupport/sql/TableUser.java index f370052..a3a4c44 100644 --- a/src/main/java/love/sola/netsupport/sql/TableUser.java +++ b/src/main/java/love/sola/netsupport/sql/TableUser.java @@ -85,6 +85,10 @@ public class TableUser extends SQLCore { private static final User NULL_USER = new User(); + public static void flushCache() { + cache.invalidateAll(); + } + private static User getByWechat0(String wechat) { try (Session s = sf.openSession()) { return (User) s.createCriteria(User.class).add(Restrictions.eq(User.PROPERTY_WECHAT, wechat)).uniqueResult(); From caf83b3e70d0ba6cbeb5f9d529f6e93a90a651f3 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 27 Dec 2015 14:37:37 +0800 Subject: [PATCH 14/15] change block 60,61 to 34,35 --- src/main/java/love/sola/netsupport/enums/Block.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/love/sola/netsupport/enums/Block.java b/src/main/java/love/sola/netsupport/enums/Block.java index d3e1fc9..a881d8b 100644 --- a/src/main/java/love/sola/netsupport/enums/Block.java +++ b/src/main/java/love/sola/netsupport/enums/Block.java @@ -25,6 +25,8 @@ public class Block { public static final int DM_13 = 31; public static final int DM_14 = 32; public static final int DM_15 = 33; + public static final int DM_20 = 34; + public static final int DM_21 = 35; public static final int XH_A = 40; public static final int XH_B = 41; public static final int XH_C = 42; @@ -35,8 +37,6 @@ public class Block { public static final int FX_4 = 53; public static final int FX_5 = 54; public static final int FX_6 = 55; - public static final int DM_20 = 60; - public static final int DM_21 = 61; public static final Map inverseMap = new HashMap<>(); From 78beb09ca62d7a72115c11f48cade62d7d83c3cb Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 27 Dec 2015 14:40:09 +0800 Subject: [PATCH 15/15] update pom --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3711537..1999353 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ WechatTicketSystem love.sola.netsupport WechatTicketSystem - 1.3-SNAPSHOT + 1.3 war