From 66c04d42f17068236371eaf76a572953232b544a Mon Sep 17 00:00:00 2001 From: Sola Date: Fri, 18 Dec 2015 20:55:33 +0800 Subject: [PATCH 01/15] update modify parameter --- src/main/resources/lang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index cb999d2..2ffb60b 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -47,7 +47,7 @@ Internal_Error: '啊哦,登录失败了哦。' User_Register_Link: '您尚未进行微信绑定, 请点击这里进行微信绑定操作。' 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: 'http://topaz.sinaapp.com/nm/v1/modi.html?token={0}&name={1}&isp={2}&account={3}&block={4}&room={5}&phone={6,number,#}' +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 c973f0c63a09d9e114c059b163b7c0e27928c732 Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 19 Dec 2015 15:31:35 +0800 Subject: [PATCH 02/15] fix ticket track order --- .../java/love/sola/netsupport/config/Lang.java | 2 +- .../java/love/sola/netsupport/sql/SQLCore.java | 7 +++++++ .../love/sola/netsupport/sql/TableTicket.java | 7 +------ .../sola/netsupport/wechat/TestEncrypt.java | 18 ++++++++++++++++++ 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main/java/love/sola/netsupport/config/Lang.java b/src/main/java/love/sola/netsupport/config/Lang.java index f947ca0..eeb5721 100644 --- a/src/main/java/love/sola/netsupport/config/Lang.java +++ b/src/main/java/love/sola/netsupport/config/Lang.java @@ -19,8 +19,8 @@ public class Lang { public static Map format_cache = new HashMap<>(32); static { - //noinspection unchecked InputStream in = Lang.class.getClassLoader().getResourceAsStream("lang.yml"); + //noinspection unchecked messages = new Yaml().loadAs(in, Map.class); } diff --git a/src/main/java/love/sola/netsupport/sql/SQLCore.java b/src/main/java/love/sola/netsupport/sql/SQLCore.java index ca16c82..3d1b711 100644 --- a/src/main/java/love/sola/netsupport/sql/SQLCore.java +++ b/src/main/java/love/sola/netsupport/sql/SQLCore.java @@ -7,9 +7,12 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import love.sola.netsupport.enums.ISP; import org.hibernate.Hibernate; +import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.envers.AuditReader; +import org.hibernate.envers.AuditReaderFactory; import org.hibernate.proxy.HibernateProxy; import org.hibernate.service.ServiceRegistry; @@ -76,6 +79,10 @@ public class SQLCore { } } + public static AuditReader getAuditReader(Session session) { + return AuditReaderFactory.get(session); + } + public static class HibernateProxyTypeAdapter extends TypeAdapter { public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory() { diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index cff8b33..075f24c 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -8,7 +8,6 @@ import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.hibernate.envers.AuditReader; -import org.hibernate.envers.AuditReaderFactory; import org.hibernate.envers.query.AuditEntity; import java.util.List; @@ -79,15 +78,11 @@ public class TableTicket extends SQLCore { AuditReader reader = getAuditReader(s); return reader.createQuery() .forRevisionsOfEntity(Ticket.class, false, true) - .addOrder(AuditEntity.revisionNumber().desc()) + .addOrder(AuditEntity.revisionNumber().asc()) .add(AuditEntity.id().eq(tid)) .getResultList() ; } } - protected static AuditReader getAuditReader(Session session) { - return AuditReaderFactory.get(session); - } - } diff --git a/src/test/java/love/sola/netsupport/wechat/TestEncrypt.java b/src/test/java/love/sola/netsupport/wechat/TestEncrypt.java index 5350044..3b7f04e 100644 --- a/src/test/java/love/sola/netsupport/wechat/TestEncrypt.java +++ b/src/test/java/love/sola/netsupport/wechat/TestEncrypt.java @@ -1,9 +1,15 @@ package love.sola.netsupport.wechat; import love.sola.netsupport.util.RSAUtil; +import org.apache.commons.codec.binary.Base64; import org.junit.Test; import org.mindrot.jbcrypt.BCrypt; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.X509EncodedKeySpec; + /** * *********************************************** * Created by Sola on 2015/12/6. @@ -24,4 +30,16 @@ public class TestEncrypt { assert "Encrypt".equals(RSAUtil.decrypt(RSAUtil.encrypt("Encrypt"))); } +// @Test + public void testRSASpecKey() throws NoSuchAlgorithmException, InvalidKeySpecException { + System.out.println("RSAUtil.privateKey_s = " + RSAUtil.privateKey_s); + System.out.println("RSAUtil.publicKey_s = " + RSAUtil.publicKey_s); +// String pkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCA0qyARvHSCIUQ6YM6K+e/QgiZ+dc/MpVz5DIFwQab5iiifruQiaoA74ilHOOiq5i0ToR1VxNhCUZcAy2saHNifoYKTauMOUSV6IoP4X5jp691PlI9yxNx328mSlPNM9+7BgOzrUP1pR71d+T4LDn0o4J6Ad82vVIe7yWszzF4qQIDAQAB"; + String pkey = RSAUtil.publicKey_s; + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decodeBase64(pkey)); + RSAUtil.publicKey = keyFactory.generatePublic(keySpec); + System.out.println("RSAUtil.encrypt(\"233\") = " + RSAUtil.encrypt("233")); + } + } From 95278ccbb953ba29cca94882ebfb2e5d8df5cbcd Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 19 Dec 2015 18:41:05 +0800 Subject: [PATCH 03/15] ticketlog --- .../sola/netsupport/api/admin/TicketLog.java | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/main/java/love/sola/netsupport/api/admin/TicketLog.java diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java b/src/main/java/love/sola/netsupport/api/admin/TicketLog.java new file mode 100644 index 0000000..5bce54f --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/admin/TicketLog.java @@ -0,0 +1,98 @@ +package love.sola.netsupport.api.admin; + +import com.google.gson.Gson; +import love.sola.netsupport.api.Response; +import love.sola.netsupport.pojo.Ticket; +import love.sola.netsupport.sql.SQLCore; +import love.sola.netsupport.sql.TableTicket; +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.apache.commons.lang3.time.DateUtils; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.envers.AuditReader; +import org.hibernate.envers.query.AuditEntity; + +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; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * *********************************************** + * Created by Sola on 2015/12/18. + * Don't modify this source without my agreement + * *********************************************** + */ +@WebServlet(name = "TicketLog", urlPatterns = "/api/admin/ticketlog", loadOnStartup = 35) +public class TicketLog extends HttpServlet { + + public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + 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", "application/json;charset=utf-8"); + PrintWriter out = response.getWriter(); + String json = gson.toJson(query(request)); + out.println(ParseUtil.parseJsonP(request, json)); + out.close(); + } + + private Response query(HttpServletRequest request) { + WxSession session = Checker.isAuthorized(request, Command.LOGIN); + if (session == null) { + return new Response(Response.ResponseCode.UNAUTHORIZED); + } + int first; + int limit; + Date start; + Date end; + try { + first = request.getParameter("first") == null ? 0 : Integer.parseInt(request.getParameter("first")); + limit = request.getParameter("limit") == null ? 20 : Integer.parseInt(request.getParameter("limit")); + start = request.getParameter("start") == null ? getToday() : dateFormat.parse(request.getParameter("start")); + end = request.getParameter("start") == null ? getToday() : dateFormat.parse(request.getParameter("start")); + end = DateUtils.addDays(end, 1); + } catch (ParseException | NumberFormatException e) { + return new Response(Response.ResponseCode.ILLEGAL_PARAMETER); + } + try (Session s = SQLCore.sf.openSession()) { + AuditReader reader = TableTicket.getAuditReader(s); + Object obj = reader.createQuery() + .forRevisionsOfEntity(Ticket.class, false, true) + .addOrder(AuditEntity.revisionNumber().asc()) + .add(AuditEntity.revisionProperty("timestamp").between(start, end)) + .setFirstResult(first) + .setMaxResults(limit) + .getResultList(); + return new Response(Response.ResponseCode.OK, obj); + } 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()); + } + } + + private static Date getToday() { + return DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH); + } + +} From 3c4b9bd80aa9dfe08961156e4838aba16a0e9a5e Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 19 Dec 2015 18:58:39 +0800 Subject: [PATCH 04/15] fix java.util.Date cannot be cast to java.lang.Long --- src/main/java/love/sola/netsupport/api/admin/TicketLog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java b/src/main/java/love/sola/netsupport/api/admin/TicketLog.java index 5bce54f..b0da285 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java +++ b/src/main/java/love/sola/netsupport/api/admin/TicketLog.java @@ -77,7 +77,7 @@ public class TicketLog extends HttpServlet { Object obj = reader.createQuery() .forRevisionsOfEntity(Ticket.class, false, true) .addOrder(AuditEntity.revisionNumber().asc()) - .add(AuditEntity.revisionProperty("timestamp").between(start, end)) + .add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime())) .setFirstResult(first) .setMaxResults(limit) .getResultList(); From 5d4a420a7be663e30101ab0dbf42c0bc02cd28b1 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 20 Dec 2015 11:56:20 +0800 Subject: [PATCH 05/15] fix end date incorrect --- src/main/java/love/sola/netsupport/api/admin/TicketLog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java b/src/main/java/love/sola/netsupport/api/admin/TicketLog.java index b0da285..01abb2a 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java +++ b/src/main/java/love/sola/netsupport/api/admin/TicketLog.java @@ -67,7 +67,7 @@ public class TicketLog extends HttpServlet { first = request.getParameter("first") == null ? 0 : Integer.parseInt(request.getParameter("first")); limit = request.getParameter("limit") == null ? 20 : Integer.parseInt(request.getParameter("limit")); start = request.getParameter("start") == null ? getToday() : dateFormat.parse(request.getParameter("start")); - end = request.getParameter("start") == null ? getToday() : dateFormat.parse(request.getParameter("start")); + end = request.getParameter("end") == null ? getToday() : dateFormat.parse(request.getParameter("end")); end = DateUtils.addDays(end, 1); } catch (ParseException | NumberFormatException e) { return new Response(Response.ResponseCode.ILLEGAL_PARAMETER); From 37691b71c17f75524a222263886dcc032e9fb6b6 Mon Sep 17 00:00:00 2001 From: Sola Date: Mon, 21 Dec 2015 02:30:57 +0800 Subject: [PATCH 06/15] add setpass --- .../api/admin/root/SetPassword.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java diff --git a/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java b/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java new file mode 100644 index 0000000..283d5da --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java @@ -0,0 +1,79 @@ +package love.sola.netsupport.api.admin.root; + +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.util.Crypto; +import love.sola.netsupport.wechat.Command; +import me.chanjar.weixin.common.session.WxSession; +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/20. + * Don't modify this source without my agreement + * *********************************************** + */ +@WebServlet(name = "SetPassword",urlPatterns = "/api/admin/setpass",loadOnStartup = 43) +public class SetPassword extends HttpServlet{ + + 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", "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; + } + + String id = request.getParameter("id"); + String pass = request.getParameter("pass"); + if (pass == null || pass.length() < 8) { + out.println("Invalid pass"); + return; + } + try (Session s = SQLCore.sf.openSession()) { + s.beginTransaction(); + op = s.get(Operator.class, Integer.parseInt(id)); + if (op == null) { + out.println("Invalid user"); + return; + } + op.setPassword(Crypto.hash(pass)); + s.update(op); + s.getTransaction().commit(); + out.println("Operation success"); + } catch (NumberFormatException e) { + out.println("Invalid id"); + return; + } + } + +} From 0e149116508d506ba61a4fd333fce6243f48d290 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 01:24:11 +0800 Subject: [PATCH 07/15] add check token api --- .../netsupport/api/admin/CheckSession.java | 67 +++++++++++++++++++ .../love/sola/netsupport/sql/SQLCore.java | 3 + .../love/sola/netsupport/wechat/Command.java | 4 +- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 src/main/java/love/sola/netsupport/api/admin/CheckSession.java diff --git a/src/main/java/love/sola/netsupport/api/admin/CheckSession.java b/src/main/java/love/sola/netsupport/api/admin/CheckSession.java new file mode 100644 index 0000000..20b98fd --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/admin/CheckSession.java @@ -0,0 +1,67 @@ +package love.sola.netsupport.api.admin; + +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; +import love.sola.netsupport.wechat.WechatSession; +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; +import java.util.HashMap; +import java.util.Map; + +/** + * *********************************************** + * Created by Sola on 2015/12/21. + * Don't modify this source without my agreement + * *********************************************** + */ +@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 43) +public class CheckSession 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(check(request)); + out.println(ParseUtil.parseJsonP(request, json)); + out.close(); + } + + private Response check(HttpServletRequest request) { + String t = request.getParameter("token"); + if (t == null || t.isEmpty()) return new Response(Response.ResponseCode.UNAUTHORIZED); + WxSession s = WechatSession.get(t, false); + if (s == null) return new Response(Response.ResponseCode.UNAUTHORIZED); + String more = request.getParameter("more"); + Map result = new HashMap<>(); + result.put(Attribute.AUTHORIZED, s.getAttribute(Attribute.AUTHORIZED)); + if (more != null){ + switch (more) { + case "1": + result.put(Attribute.USER, s.getAttribute(Attribute.USER)); + result.put(Attribute.OPERATOR, s.getAttribute(Attribute.OPERATOR)); + break; + } + } + return new Response(Response.ResponseCode.OK, result); + } + + + +} diff --git a/src/main/java/love/sola/netsupport/sql/SQLCore.java b/src/main/java/love/sola/netsupport/sql/SQLCore.java index 3d1b711..75b2d2c 100644 --- a/src/main/java/love/sola/netsupport/sql/SQLCore.java +++ b/src/main/java/love/sola/netsupport/sql/SQLCore.java @@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import love.sola.netsupport.enums.ISP; +import love.sola.netsupport.wechat.Command; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -59,6 +60,8 @@ public class SQLCore { .registerTypeAdapter(Date.class, (JsonSerializer) (src, typeOfSrc, context) -> new JsonPrimitive(src.getTime())) .registerTypeAdapter(ISP.class, (JsonDeserializer) (json, typeOfT, context) -> ISP.fromId(json.getAsJsonPrimitive().getAsInt())) .registerTypeAdapter(ISP.class, (JsonSerializer) (src, typeOfSrc, context) -> new JsonPrimitive(src.id)) + .registerTypeAdapter(Command.class, (JsonDeserializer) (json, typeOfT, context) -> Command.fromId(json.getAsJsonPrimitive().getAsInt())) + .registerTypeAdapter(Command.class, (JsonSerializer) (src, typeOfSrc, context) -> new JsonPrimitive(src.id)) .registerTypeAdapterFactory(HibernateProxyTypeAdapter.FACTORY) .create(); public static SessionFactory sf; diff --git a/src/main/java/love/sola/netsupport/wechat/Command.java b/src/main/java/love/sola/netsupport/wechat/Command.java index 2953f34..d3ff4a9 100644 --- a/src/main/java/love/sola/netsupport/wechat/Command.java +++ b/src/main/java/love/sola/netsupport/wechat/Command.java @@ -34,13 +34,11 @@ public enum Command { } } - public final String name; public final String regex; public final Class handler; public final int id; Command(int id, Class handler) { - this.name = lang("CMD_" + name()); this.id = id; this.regex = lang("REGEX_" + name()); this.handler = handler; @@ -52,7 +50,7 @@ public enum Command { @Override public String toString() { - return name; + return name(); } } From bad7bdbe45472fad79d0f813c4f1dfaf41094b90 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 16:25:02 +0800 Subject: [PATCH 08/15] fix issue that date isn't updated --- src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java b/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java index 8bcdee3..c2494f0 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java +++ b/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java @@ -20,6 +20,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.util.Date; /** * *********************************************** @@ -64,6 +65,7 @@ public class TicketUpdate extends HttpServlet { t.setOperator(op); t.setRemark(remark); t.setStatus(Integer.parseInt(status)); + t.setUpdateTime(new Date()); s.beginTransaction(); s.update(t); s.getTransaction().commit(); From 29cbd4ae865e7e94e876772c465d769c2b36dee4 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 16:53:22 +0800 Subject: [PATCH 09/15] pre-release --- src/main/java/love/sola/netsupport/wechat/WxMpServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java index d1257af..5320d26 100644 --- a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java +++ b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java @@ -24,7 +24,7 @@ import static love.sola.netsupport.config.Lang.lang; * Don't modify this source without my agreement * *********************************************** */ -@WebServlet(name = "WxMpServlet", urlPatterns = "/wechattest", loadOnStartup = 99) +@WebServlet(name = "WxMpServlet", urlPatterns = "/wechat", loadOnStartup = 99) public class WxMpServlet extends HttpServlet { public static WxMpServlet instance; From a7393ea7725285f1904988c52230d300c94be397 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 17:12:01 +0800 Subject: [PATCH 10/15] update lang --- .../netsupport/wechat/handler/ProfileHandler.java | 11 +++-------- src/main/resources/lang.yml | 12 ++++++------ 2 files changed, 9 insertions(+), 14 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 bc39149..c1b775a 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/ProfileHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/ProfileHandler.java @@ -12,13 +12,11 @@ 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.WxMpXmlOutNewsMessage; -import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder; +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; /** * *********************************************** @@ -36,11 +34,8 @@ public class ProfileHandler implements WxMpMessageHandler { session.setAttribute(Attribute.AUTHORIZED, Command.PROFILE); session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); session.setAttribute(Attribute.USER, u); - NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); - WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); - item.setTitle(lang("Modify_Title")); - item.setUrl(format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone())); - out.addArticle(item); + 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())); return out.build(); } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 2ffb60b..ff55701 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -12,14 +12,14 @@ REGEX_LOGIN: '^(?i)Authme$' REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(xgzl)$' #Event -Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题,请将投诉或建议邮件至loli@sola.love.\n\n请发送'绑定'进行微信绑定" +Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n若您尚未进行过微信绑定,请发送'绑定'(bd)进行微信绑定" Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' Message_Spam: '你的打字速度太快了,喝一杯82年的Java压压惊吧。' #Register -Already_Registered: "您已进行过微信绑定。如果需要更改个人信息,请发送 '修改资料' 。" +Already_Registered: "您已进行过微信绑定。如果需要更改个人信息,请发送 '修改资料'(xgzl) 。" #Query Query_Title: '最近一次报修记录:' -More_Details: '查询更早的报修信息,请点击 >' +More_Details: '>>> 查询更早的报修信息,请点击 <<<' No_Ticket_Available: '您尚未提交过任何报修。' #Submit Already_Opening_Ticket: "您上次提交的报修单仍在处理中. 若需要查询报修单状态,请发送 '查询' 。" @@ -37,17 +37,17 @@ Cancel_Title: '报修已取消:' User_Cancel_Remark: '用户手动取消报修。' Cancel_Failed: '取消失败。' #Modify -Modify_Title: '点此修改资料 >' +Modify_Title: '' #Login Not_Operator: '嘟嘟嘟……' No_Login: 'Permission Denied.' Internal_Error: '啊哦,登录失败了哦。' #URL -User_Register_Link: '您尚未进行微信绑定, 请点击这里进行微信绑定操作。' +User_Register_Link: '您尚未进行微信绑定。\n> 点击这里进行微信绑定操作 <' 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: 'http://topaz.sinaapp.com/nm/v1/modi.html?token={0}&name={1}&isp={2}&username={3}&block={4}&room={5}&phone={6,number,#}' +User_Profile_Link: '> 点此修改资料 <' 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 f883c7dbf8a4885e4cb60611540c4f5950bf8930 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 17:26:37 +0800 Subject: [PATCH 11/15] fix aes key --- src/main/java/love/sola/netsupport/wechat/WxMpServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java index 5320d26..6ae5b31 100644 --- a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java +++ b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java @@ -45,7 +45,7 @@ public class WxMpServlet extends HttpServlet { config.setAppId(Settings.I.Wechat_AppId); config.setSecret(Settings.I.Wechat_Secret); config.setToken(Settings.I.Wechat_Token); - config.setAesKey(Settings.I.Wechat_Token); + config.setAesKey(Settings.I.Wechat_AesKey); wxMpService = new WxMpServiceImpl(); wxMpService.setWxMpConfigStorage(config); From a6cee3a0a65831ed2aa8f1adf446ddfdf27c43e4 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 17:56:35 +0800 Subject: [PATCH 12/15] fix escape issue --- src/main/resources/lang.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index ff55701..99fd9bd 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -44,7 +44,7 @@ No_Login: 'Permission Denied.' Internal_Error: '啊哦,登录失败了哦。' #URL -User_Register_Link: '您尚未进行微信绑定。\n> 点击这里进行微信绑定操作 <' +User_Register_Link: "您尚未进行微信绑定。\n> 点击这里进行微信绑定操作 <" 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: '> 点此修改资料 <' From 8f8e9cd62027e8df6c6abdf826953d86a50aa4e3 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 22 Dec 2015 18:14:16 +0800 Subject: [PATCH 13/15] update lang --- src/main/resources/lang.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 99fd9bd..6bde10c 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -12,7 +12,7 @@ REGEX_LOGIN: '^(?i)Authme$' REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(xgzl)$' #Event -Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n若您尚未进行过微信绑定,请发送'绑定'(bd)进行微信绑定" +Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n\n若您尚未进行过微信绑定,请发送'绑定'(bd)进行微信绑定" Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' Message_Spam: '你的打字速度太快了,喝一杯82年的Java压压惊吧。' #Register @@ -44,7 +44,7 @@ No_Login: 'Permission Denied.' Internal_Error: '啊哦,登录失败了哦。' #URL -User_Register_Link: "您尚未进行微信绑定。\n> 点击这里进行微信绑定操作 <" +User_Register_Link: "您尚未进行微信绑定。\n>点击这里进行微信绑定操作<" 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: '> 点此修改资料 <' From 813a4a2b371bf509b70de4f745c11e1e4b863a42 Mon Sep 17 00:00:00 2001 From: Sola Date: Wed, 23 Dec 2015 02:21:16 +0800 Subject: [PATCH 14/15] update lang --- src/main/resources/lang.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 6bde10c..4d2578d 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -6,10 +6,10 @@ Unknown_Encrypt_Type: 'Unknown encrypt-type.' #Command Regex REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$' REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(绑定)|(zc)|(bd)$' -REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$' +REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(保修)|(bx)$' REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(撤销)|(qx)|(cx)$' REGEX_LOGIN: '^(?i)Authme$' -REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(xgzl)$' +REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(修改信息)|(xgzl)|(xgxx)$' #Event Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n\n若您尚未进行过微信绑定,请发送'绑定'(bd)进行微信绑定" @@ -58,7 +58,7 @@ STATUS_UNCHECKED: '待处理' STATUS_SOLVED: '已解决' #Ticket Ticket_Info_Id: '报修单号: ' -Ticket_Info_Desc: '报修描述: ' +Ticket_Info_Desc: '' Ticket_Info_Submit_Time: '提交时间: ' Ticket_Info_Operator: '操作员: ' Ticket_Info_Remark: '维修描述: ' From d1956bae82abe492b6040156e91c343caabd2fdf Mon Sep 17 00:00:00 2001 From: Sola Date: Wed, 23 Dec 2015 02:21:41 +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 471daa5..c782f94 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ WechatTicketSystem love.sola.netsupport WechatTicketSystem - 1.1-SNAPSHOT + 1.2-SNAPSHOT war