diff --git a/src/main/java/love/sola/netsupport/api/Authorize.java b/src/main/java/love/sola/netsupport/api/Authorize.java index e4ebf66..e5ea65c 100644 --- a/src/main/java/love/sola/netsupport/api/Authorize.java +++ b/src/main/java/love/sola/netsupport/api/Authorize.java @@ -77,7 +77,7 @@ public class Authorize extends HttpServlet { break; case QUERY: case SUBMIT: - User u = TableUser.getUserByWechat(wechat); + User u = TableUser.getByWechat(wechat); if (u == null) return new Response(Response.ResponseCode.AUTHORIZE_FAILED); httpSession.setAttribute("user", u); break; diff --git a/src/main/java/love/sola/netsupport/api/Register.java b/src/main/java/love/sola/netsupport/api/Register.java index 0339972..f694142 100644 --- a/src/main/java/love/sola/netsupport/api/Register.java +++ b/src/main/java/love/sola/netsupport/api/Register.java @@ -78,7 +78,7 @@ public class Register extends HttpServlet { if (block == -1) return "Invalid_Block"; if (room == -1) return "Invalid_Room"; if (phone == -1) return "Invalid_Phone_Number"; - User user = TableUser.getUserById(sid); + User user = TableUser.getById(sid); if (user == null) return "Invalid_Student_Id"; if (!user.getName().equals(name)) return "Invalid_Name"; if (user.getWechatId() != null) return "User_Already_Registered"; @@ -88,7 +88,7 @@ public class Register extends HttpServlet { user.setRoom(room); user.setPhone(phone); user.setWechatId(wechat); - TableUser.updateUser(user); + TableUser.update(user); return "Register_Success"; } diff --git a/src/main/java/love/sola/netsupport/api/TicketSubmit.java b/src/main/java/love/sola/netsupport/api/TicketSubmit.java index 4983d9a..9db5eca 100644 --- a/src/main/java/love/sola/netsupport/api/TicketSubmit.java +++ b/src/main/java/love/sola/netsupport/api/TicketSubmit.java @@ -4,13 +4,12 @@ import com.google.gson.Gson; import love.sola.netsupport.pojo.Ticket; import love.sola.netsupport.pojo.User; 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 org.hibernate.HibernateException; import org.hibernate.Session; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Restrictions; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -61,14 +60,10 @@ public class TicketSubmit extends HttpServlet { User u = (User) httpSession.getAttribute("user"); if (u == null) return new Response(Response.ResponseCode.UNAUTHORIZED); - long n = (long) s.createCriteria(Ticket.class) - .add(Restrictions.eq(Ticket.PROPERTY_USER, u)) - .add(Restrictions.eq(Ticket.PROPERTY_STATUS, 0)) - .setProjection(Projections.rowCount()) - .uniqueResult(); - if (n > 0) { + if (TableTicket.hasOpen(u)) { return new Response(Response.ResponseCode.ALREADY_SUBMITTED); } + Ticket t = new Ticket(); t.setUser(u); t.setDescription(desc); diff --git a/src/main/java/love/sola/netsupport/api/admin/GetUser.java b/src/main/java/love/sola/netsupport/api/admin/GetUser.java index aff368b..2cf0076 100644 --- a/src/main/java/love/sola/netsupport/api/admin/GetUser.java +++ b/src/main/java/love/sola/netsupport/api/admin/GetUser.java @@ -55,7 +55,7 @@ public class GetUser extends HttpServlet { } if (id != null) { try { - User u = TableUser.getUserById(Long.parseLong(id)); + User u = TableUser.getById(Long.parseLong(id)); if (u == null) return new Response(Response.ResponseCode.USER_NOT_FOUND); else @@ -64,7 +64,7 @@ public class GetUser extends HttpServlet { return new Response(Response.ResponseCode.ILLEGAL_PARAMETER); } } else { - User u = TableUser.getUserByName(name); + User u = TableUser.getByName(name); if (u == null) return new Response(Response.ResponseCode.USER_NOT_FOUND); else diff --git a/src/main/java/love/sola/netsupport/enums/ISP.java b/src/main/java/love/sola/netsupport/enums/ISP.java index 5293988..1517dcd 100644 --- a/src/main/java/love/sola/netsupport/enums/ISP.java +++ b/src/main/java/love/sola/netsupport/enums/ISP.java @@ -1,7 +1,5 @@ package love.sola.netsupport.enums; -import com.google.gson.annotations.SerializedName; - import java.util.HashMap; import java.util.Map; @@ -15,11 +13,8 @@ import static love.sola.netsupport.config.Lang.lang; */ public enum ISP { - @SerializedName("1") TELECOM(1, "^1[3|4|5|7|8][0-9]{9}$"), - @SerializedName("2") UNICOM(2, "ZSZJLAN[0-9]{10}@16900\\.gd"), - @SerializedName("3") CHINAMOBILE(3, "^1[3|4|5|7|8][0-9]{9}@139\\.gd$"),; private static final Map NAME_MAP = new HashMap<>(); diff --git a/src/main/java/love/sola/netsupport/pojo/Operator.java b/src/main/java/love/sola/netsupport/pojo/Operator.java index 9a8eed2..a1483af 100644 --- a/src/main/java/love/sola/netsupport/pojo/Operator.java +++ b/src/main/java/love/sola/netsupport/pojo/Operator.java @@ -23,6 +23,8 @@ import javax.persistence.Table; @Table(name = "operators") public class Operator { + public static final String PROPERTY_WECHAT = "wechat"; + @Id @Column(name = "id", nullable = false, insertable = false, updatable = false) private Integer id; diff --git a/src/main/java/love/sola/netsupport/sql/TableOperator.java b/src/main/java/love/sola/netsupport/sql/TableOperator.java new file mode 100644 index 0000000..b6490d3 --- /dev/null +++ b/src/main/java/love/sola/netsupport/sql/TableOperator.java @@ -0,0 +1,26 @@ +package love.sola.netsupport.sql; + +import love.sola.netsupport.pojo.Operator; +import org.hibernate.Session; +import org.hibernate.criterion.Projections; +import org.hibernate.criterion.Restrictions; + +/** + * *********************************************** + * Created by Sola on 2015/12/12. + * Don't modify this source without my agreement + * *********************************************** + */ +public class TableOperator extends SQLCore { + + public static boolean has(String wechat) { + try (Session s = SQLCore.sf.openSession()) { + return (long) s.createCriteria(Operator.class) + .add(Restrictions.eq(Operator.PROPERTY_WECHAT, wechat)) + .setProjection(Projections.rowCount()) + .uniqueResult() > 0; + } + } + + +} diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index 029c116..b684126 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -5,6 +5,7 @@ import love.sola.netsupport.pojo.Ticket; import love.sola.netsupport.pojo.User; import org.hibernate.Session; import org.hibernate.criterion.Order; +import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import java.util.List; @@ -27,7 +28,7 @@ public class TableTicket extends SQLCore { public static final String COLUMN_STATUS = "status"; - public static Ticket queryLatestOpen(User u) { + public static Ticket latestOpen(User u) { try (Session s = SQLCore.sf.openSession()) { return (Ticket) s.createCriteria(Ticket.class) .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) @@ -38,7 +39,7 @@ public class TableTicket extends SQLCore { } } - public static Ticket queryLatest(User u) { + public static Ticket latest(User u) { try (Session s = SQLCore.sf.openSession()) { return (Ticket) s.createCriteria(Ticket.class) .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) @@ -48,8 +49,18 @@ public class TableTicket extends SQLCore { } } + public static boolean hasOpen(User u) { + try (Session s = SQLCore.sf.openSession()) { + return (long) s.createCriteria(Ticket.class) + .add(Restrictions.eq(Ticket.PROPERTY_USER, u)) + .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) + .setProjection(Projections.rowCount()) + .uniqueResult() > 0; + } + } + @SuppressWarnings("unchecked") - public static List queryUnsolvedByBlock(int b) { + public static List unsolvedByBlock(int b) { try (Session s = SQLCore.sf.openSession()) { return s.createCriteria(Ticket.class) .createCriteria(Ticket.PROPERTY_USER) diff --git a/src/main/java/love/sola/netsupport/sql/TableUser.java b/src/main/java/love/sola/netsupport/sql/TableUser.java index 2786e6a..bcba550 100644 --- a/src/main/java/love/sola/netsupport/sql/TableUser.java +++ b/src/main/java/love/sola/netsupport/sql/TableUser.java @@ -22,26 +22,26 @@ public class TableUser extends SQLCore { public static final String COLUMN_ROOM = "room"; public static final String COLUMN_PHONE = "phone"; - public static User getUserById(long id) { + public static User getById(long id) { try (Session s = sf.openSession()) { return s.get(User.class, id); } } - public static User getUserByWechat(String wechat) { + 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 getUserByName(String name) { + 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 int updateUser(User user) { + public static int update(User user) { try (Session s = sf.openSession()) { s.beginTransaction(); s.update(user); diff --git a/src/main/java/love/sola/netsupport/wechat/Command.java b/src/main/java/love/sola/netsupport/wechat/Command.java index c123b17..fa0e026 100644 --- a/src/main/java/love/sola/netsupport/wechat/Command.java +++ b/src/main/java/love/sola/netsupport/wechat/Command.java @@ -1,9 +1,6 @@ package love.sola.netsupport.wechat; -import love.sola.netsupport.wechat.handler.CancelHandler; -import love.sola.netsupport.wechat.handler.QueryHandler; -import love.sola.netsupport.wechat.handler.RegisterHandler; -import love.sola.netsupport.wechat.handler.SubmitHandler; +import love.sola.netsupport.wechat.handler.*; import me.chanjar.weixin.mp.api.WxMpMessageHandler; import java.util.HashMap; @@ -23,6 +20,7 @@ public enum Command { QUERY(1, QueryHandler.class), SUBMIT(2, SubmitHandler.class), CANCEL(3, CancelHandler.class), + LOGIN(10, LoginHandler.class), ; private static final Map ID_MAP = new HashMap<>(); diff --git a/src/main/java/love/sola/netsupport/wechat/handler/CancelHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/CancelHandler.java index 496c164..3d45f90 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/CancelHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/CancelHandler.java @@ -32,8 +32,8 @@ public class CancelHandler implements WxMpMessageHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { - User u = TableUser.getUserByWechat(wxMessage.getFromUserName()); - Ticket t = TableTicket.queryLatestOpen(u); + User u = TableUser.getByWechat(wxMessage.getFromUserName()); + Ticket t = TableTicket.latestOpen(u); if (t == null) { return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) .content(lang("No_Open_Ticket_Available")).build(); diff --git a/src/main/java/love/sola/netsupport/wechat/handler/LoginHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/LoginHandler.java new file mode 100644 index 0000000..cd48f4d --- /dev/null +++ b/src/main/java/love/sola/netsupport/wechat/handler/LoginHandler.java @@ -0,0 +1,35 @@ +package love.sola.netsupport.wechat.handler; + +import love.sola.netsupport.sql.TableOperator; +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.util.Map; + +import static love.sola.netsupport.config.Lang.format; +import static love.sola.netsupport.config.Lang.lang; + +/** + * *********************************************** + * Created by Sola on 2015/12/12. + * Don't modify this source without my agreement + * *********************************************** + */ +public class LoginHandler 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()); + if (!TableOperator.has(wxMessage.getFromUserName())) { + return out.content(lang("Not_Operator")).build(); + } else { + return out.content(format("Operator_Login_Link", wxMessage.getFromUserName())).build(); + } + } + +} diff --git a/src/main/java/love/sola/netsupport/wechat/handler/QueryHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/QueryHandler.java index a5569b8..fbd95c6 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/QueryHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/QueryHandler.java @@ -32,8 +32,8 @@ public class QueryHandler implements WxMpMessageHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { - User u = TableUser.getUserByWechat(wxMessage.getFromUserName()); - Ticket t = TableTicket.queryLatest(u); + User u = TableUser.getByWechat(wxMessage.getFromUserName()); + Ticket t = TableTicket.latest(u); if (t == null) { return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) .content(lang("No_Ticket_Available")).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 ed2a3f6..0a6c996 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/RegisterHandler.java @@ -30,7 +30,7 @@ public class RegisterHandler implements WxMpMessageHandler { throws WxErrorException { TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); String fromUser = wxMessage.getFromUserName(); - User u = TableUser.getUserByWechat(fromUser); + User u = TableUser.getByWechat(fromUser); if (u != null) { out.content(lang("Already_Registered")); } else { diff --git a/src/main/java/love/sola/netsupport/wechat/handler/SubmitHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/SubmitHandler.java index 3feca30..8d5798d 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/SubmitHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/SubmitHandler.java @@ -1,7 +1,6 @@ package love.sola.netsupport.wechat.handler; import love.sola.netsupport.api.Authorize; -import love.sola.netsupport.pojo.Ticket; import love.sola.netsupport.pojo.User; import love.sola.netsupport.sql.TableTicket; import love.sola.netsupport.sql.TableUser; @@ -30,9 +29,8 @@ public class SubmitHandler implements WxMpMessageHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { - User u = TableUser.getUserByWechat(wxMessage.getFromUserName()); - Ticket t = TableTicket.queryLatestOpen(u); - if (t != null) { + User u = TableUser.getByWechat(wxMessage.getFromUserName()); + if (TableTicket.hasOpen(u)) { return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) .content(lang("Already_Opening_Ticket")).build(); } @@ -40,7 +38,7 @@ public class SubmitHandler implements WxMpMessageHandler { WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); item.setTitle(lang("Submit_Title")); item.setDescription(lang("Submit_Desc")); - item.setUrl(format("User_Submit_Link", wxMessage.getFromUserName())); + item.setUrl(format("User_Submit_Link", wxMessage.getFromUserName(), u.getName(), u.getIsp(), u.getRoom(), u.getBlock(), u.getPhone())); out.addArticle(item); Authorize.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis()); Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.SUBMIT); diff --git a/src/main/java/love/sola/netsupport/wechat/handler/__INVALID__RegisterHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/__INVALID__RegisterHandler.java deleted file mode 100644 index 2447d39..0000000 --- a/src/main/java/love/sola/netsupport/wechat/handler/__INVALID__RegisterHandler.java +++ /dev/null @@ -1,146 +0,0 @@ -package love.sola.netsupport.wechat.handler; - -import love.sola.netsupport.enums.ISP; -import love.sola.netsupport.pojo.User; -import love.sola.netsupport.sql.TableUser; -import love.sola.netsupport.wechat.Command; -import love.sola.netsupport.wechat.matcher.CommandMatcher; -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.util.HashMap; -import java.util.Map; - -/** - * *********************************************** - * Created by Sola on 2015/11/4. - * Don't modify this source without my agreement - * *********************************************** - */ -public class __INVALID__RegisterHandler implements WxMpMessageHandler { - - public static final String STUDENT_ID_REGEX = "^(2010|2012|2013|2014|2015)[0-9]{9}"; - - Map confirmed = new HashMap<>(); - Map steps = new HashMap<>(); - - @Override - - public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) - throws WxErrorException { - TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); - handle(wxMessage.getContent(), wxMessage.getFromUserName(), out); - return out.build(); - } - - private void handle(String in, String userName, TextBuilder out) { - if (in.equalsIgnoreCase("q")) { - CommandMatcher.inCmdUsers.remove(userName); - confirmed.remove(userName); - steps.remove(userName); - out.content("Operation canceled."); - return; - } - if (!steps.containsKey(userName)) { - out.content("Welcome, please type your student identification number."); - CommandMatcher.inCmdUsers.put(userName, Command.REGISTER); - steps.put(userName, RegisterStep.STUDENT_ID); - return; - } - RegisterStep step = steps.get(userName); - if (step == RegisterStep.STUDENT_ID) { - Long sid = checkStudentId(in); - User user; - if (sid == null || (user = TableUser.getUserById(sid)) == null) { - out.content("Invalid student identification number. Type 'q' to cancel this operation."); - return; - } - out.content("Please type your real name to validate."); - confirmed.put(userName, user); - steps.put(userName, RegisterStep.NAME); - return; - } - User user = confirmed.get(userName); - if (step == RegisterStep.NAME) { - if (in.trim().equals(user.getName())) { - out.content("Confirmed success.\n" + - "Please enter your ISP.\n" + - "1-Telecom 2-Unicom 3-ChinaMobile"); - steps.put(userName, RegisterStep.ISP); - } else { - out.content("Validate failed.\n" + - "If you have any issue, please contact administrator.\n" + - "Type 'q' to cancel this operation."); - } - return; - } - if (step == RegisterStep.ISP) { - ISP type = checkISP(in); - if (type == null) { - out.content("Invalid ISP. Please retype your ISP."); - } else { - user.setIsp(type); - out.content("Success.\n" + - "Please enter your net account."); - steps.put(userName, RegisterStep.NET_ACCOUNT); - } - return; - } - if (step == RegisterStep.NET_ACCOUNT) { - String account = checkNetAccount(in); - if (account == null) { - out.content("Invalid account. Please retype your net account."); - } else { - user.setNetAccount(account); - steps.put(userName, step = RegisterStep.COMPLETE); - } - } - if (step == RegisterStep.COMPLETE) { - user.setWechatId(userName); - TableUser.updateUser(user); - CommandMatcher.inCmdUsers.remove(userName); - confirmed.remove(userName); - steps.remove(userName); - out.content("Congratulations!\n" + - "You has successful registered!\n" + - "Please enjoy our service."); - } - } - - private Long checkStudentId(String studentId) { - if (studentId.matches(STUDENT_ID_REGEX)) { - try { - return Long.parseLong(studentId); - } catch (NumberFormatException ignored) { - } - } - return null; - } - - private ISP checkISP(String isp) { - try { - return ISP.fromId(Integer.parseInt(isp)); - } catch (NumberFormatException ignored) { - } - return null; - } - - private String checkNetAccount(String account) { - return account; - } - - enum RegisterStep { - STUDENT_ID, - NAME, - ISP, - NET_ACCOUNT, - COMPLETE, - ; - } - -} diff --git a/src/main/java/love/sola/netsupport/wechat/matcher/RegisterMatcher.java b/src/main/java/love/sola/netsupport/wechat/matcher/RegisterMatcher.java index 014446b..6895fbe 100644 --- a/src/main/java/love/sola/netsupport/wechat/matcher/RegisterMatcher.java +++ b/src/main/java/love/sola/netsupport/wechat/matcher/RegisterMatcher.java @@ -24,7 +24,7 @@ public class RegisterMatcher implements WxMpMessageMatcher { if (registered.contains(fromUser)) { return false; } else { - User u = TableUser.getUserByWechat(fromUser); + User u = TableUser.getByWechat(fromUser); if (u != null) registered.add(u.getWechatId()); return u == null; } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index c15b941..5a27ec9 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -8,11 +8,12 @@ REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$' REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(zc)$' REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$' REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(qx)$' +REGEX_LOGIN: '^(?i)Authme$' #Event Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题,请将投诉或建议邮件至loli@sola.love." Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' -Message_Spam: '你的语速太快了,喝一杯82年的雪碧压压惊吧。' +Message_Spam: '你的打字速度太快了,喝一杯82年的Java压压惊吧。' #Register Already_Registered: "您已进行过微信绑定。如果需要更改个人信息,请发送 '修改资料' 。" #Query @@ -34,12 +35,15 @@ No_Open_Ticket_Available: '您当前没有未解决的报修表单。' Cancel_Title: '报修已取消:' User_Cancel_Remark: '用户手动取消报修。' Cancel_Failed: '取消失败。' +#Login +Not_Operator: '嘟嘟嘟……' #URL User_Register_Link: "您尚未进行微信绑定, 请点击这里进行微信绑定操作。" User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/query.php?wechatid={0}' -User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/submit.php?wechatid={0}' +User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/rrepair.html?wechatid={0}&name={1}&isp={2}&room={3}&block={4}&phone={5}' Result_Page: 'http://topaz.sinaapp.com/nm/v1/result.html' +Operator_Login_Link: 'CLICK HERE' #Localized #Status diff --git a/src/test/java/love/sola/netsupport/wechat/TestMessageFormat.java b/src/test/java/love/sola/netsupport/wechat/TestMessageFormat.java index 0b8f0ec..4544182 100644 --- a/src/test/java/love/sola/netsupport/wechat/TestMessageFormat.java +++ b/src/test/java/love/sola/netsupport/wechat/TestMessageFormat.java @@ -2,6 +2,7 @@ package love.sola.netsupport.wechat; import com.google.gson.*; import love.sola.netsupport.config.Lang; +import love.sola.netsupport.enums.ISP; import org.junit.Test; import java.util.Date; @@ -24,9 +25,13 @@ public class TestMessageFormat { Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong())) .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)) .create(); Date date = new Date(); assert gson.fromJson(gson.toJson(date), Date.class).compareTo(date) == 0; + assert gson.fromJson(gson.toJson(ISP.TELECOM), ISP.class) == ISP.TELECOM; + assert gson.toJson(ISP.TELECOM).equals("1"); } }