diff --git a/src/main/java/love/sola/netsupport/config/Lang.java b/src/main/java/love/sola/netsupport/config/Lang.java index 6bd4d6b..f947ca0 100644 --- a/src/main/java/love/sola/netsupport/config/Lang.java +++ b/src/main/java/love/sola/netsupport/config/Lang.java @@ -22,9 +22,6 @@ public class Lang { //noinspection unchecked InputStream in = Lang.class.getClassLoader().getResourceAsStream("lang.yml"); messages = new Yaml().loadAs(in, Map.class); - for (Map.Entry entry : messages.entrySet()) { - System.out.println(entry.getKey() + ": " + entry.getValue()); - } } public static String lang(String key) { diff --git a/src/main/java/love/sola/netsupport/enums/Status.java b/src/main/java/love/sola/netsupport/enums/Status.java index 1d914c7..4132f4b 100644 --- a/src/main/java/love/sola/netsupport/enums/Status.java +++ b/src/main/java/love/sola/netsupport/enums/Status.java @@ -4,6 +4,8 @@ import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; +import static love.sola.netsupport.config.Lang.lang; + /** * *********************************************** * Created by Sola on 2015/12/6. @@ -13,6 +15,8 @@ import java.util.Map; 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 SOLVED = 9; public static final Map inverseMap = new HashMap<>(); @@ -30,4 +34,11 @@ public class Status { } } + public static String getLocalized(int status) { + if (inverseMap.containsKey(status)) { + return lang("STATUS_" + inverseMap.get(status)); + } + return null; + } + } diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index d71cdfe..382eb05 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -32,7 +32,7 @@ public class TableTicket extends SQLCore { return (Ticket) s.createCriteria(Ticket.class) .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME)) .add(Restrictions.eq(Ticket.PROPERTY_USER, u)) - .add(Restrictions.eq(Ticket.PROPERTY_STATUS, Status.UNCHECKED)) + .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) .setMaxResults(1) .uniqueResult(); } diff --git a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java index 5ad7842..51f3701 100644 --- a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java +++ b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java @@ -3,6 +3,7 @@ package love.sola.netsupport.wechat; import love.sola.netsupport.config.Settings; 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.matcher.CheckSpamMatcher; import love.sola.netsupport.wechat.matcher.RegisterMatcher; import me.chanjar.weixin.common.util.StringUtils; @@ -88,6 +89,12 @@ public class WxMpServlet extends HttpServlet { .rContent(Command.QUERY.regex) .handler(new QueryHandler()) .end(); + wxMpMessageRouter.rule() + .async(false) + .msgType("text") + .rContent(Command.SUBMIT.regex) + .handler(new SubmitHandler()) + .end(); } @Override 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 4cd36fd..7762c25 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/QueryHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/QueryHandler.java @@ -1,6 +1,7 @@ package love.sola.netsupport.wechat.handler; import love.sola.netsupport.api.Authorize; +import love.sola.netsupport.enums.Status; import love.sola.netsupport.pojo.Ticket; import love.sola.netsupport.pojo.User; import love.sola.netsupport.sql.TableTicket; @@ -43,15 +44,15 @@ public class QueryHandler implements WxMpMessageHandler { NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); StringBuilder sb = new StringBuilder() - .append("Ticket ID: ").append(t.getId()).append("\n") - .append("Desc: ").append(t.getDescription()).append("\n") - .append("Submit Time: ").append(dateFormat.format(t.getSubmitTime())).append("\n"); + .append(lang("Ticket_Info_Id")).append(t.getId()).append("\n") + .append(lang("Ticket_Info_Desc")).append(t.getDescription()).append("\n") + .append(lang("Ticket_Info_Submit_Time")).append(dateFormat.format(t.getSubmitTime())).append("\n"); if (t.getUpdateTime() != null) { - sb.append("Operator: ").append(t.getOperator().getId()).append("\n"); - sb.append("Remark: ").append(t.getRemark()).append("\n"); - sb.append("Latest Update: ").append(dateFormat.format(t.getUpdateTime())).append("\n"); + sb.append(lang("Ticket_Info_Operator")).append(t.getOperator().getId()).append("\n"); + sb.append(lang("Ticket_Info_Remark")).append(t.getRemark()).append("\n"); + sb.append(lang("Ticket_Info_Update_Time")).append(dateFormat.format(t.getUpdateTime())).append("\n"); } - sb.append("Ticket Status: ").append(t.getStatus()).append("\n"); + sb.append(lang("Ticket_Info_Status")).append(Status.getLocalized(t.getStatus())).append("\n"); sb.append(lang("More_Details")); item.setUrl(format("User_Query_Link", wxMessage.getFromUserName())); item.setTitle(lang("Query_Title")); 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 c785b67..b4aa5e7 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/SubmitHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/SubmitHandler.java @@ -17,6 +17,7 @@ import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder; import java.util.Map; +import static love.sola.netsupport.config.Lang.format; import static love.sola.netsupport.config.Lang.lang; /** @@ -37,9 +38,12 @@ public class SubmitHandler implements WxMpMessageHandler { } NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); - + item.setTitle(lang("Submit_Title")); + item.setDescription(lang("Submit_Desc")); + item.setUrl(format("User_Submit_Link", wxMessage.getFromUserName())); + out.addArticle(item); Authorize.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis()); - Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.QUERY); + Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.SUBMIT); return out.build(); } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 510f9f2..8305537 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -1,14 +1,47 @@ +#System Exception Access_Denied: 'Access denied.' -Already_Registered: "You've already registered. for profile modification, please type 'editprofile'." -Event_Subscribe: "Welcome to ZSC Network Support Department (ZSCNSD) Wechat Ticket System (WTS).\nIf you have any problem, Please contact loli@sola.love." Illegal_Request: "Access denied.\nYou are doing a illegal request, and our system has logged your behaviors.\nYou need to take this seriously, if you do this frequently, you may be banned from our system." -Invalid_Operation: 'Invalid operation.' -More_Details: 'For more details, please click >' -No_Ticket_Available: 'No tickets found.' -Query_Title: 'Your latest ticket details' -REGEX_QUERY: '^(?i)Query$' -REGEX_REGISTER: '^(?i)Reg(ister)?$' Unknown_Encrypt_Type: 'Unknown encrypt-type.' + +#Command Regex +REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$' +REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(zc)$' +REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$' + +#Event +Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题,请将投诉或建议邮件至loli@sola.love." +Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' +Message_Spam: '你的语速太快了,喝一杯82年的雪碧压压惊吧。' +#Register +Already_Registered: "您已进行过微信绑定。如果需要更改个人信息,请发送 '修改资料' 。" +#Query +Query_Title: '最近一次报修记录:' +More_Details: '查询更早的报修信息,请点击 >' +No_Ticket_Available: '您尚未提交过任何报修。' +Ticket_Info_Id: '报修单号: ' +Ticket_Info_Desc: '报修描述: ' +Ticket_Info_Submit_Time: '提交时间: ' +Ticket_Info_Operator: '操作员: ' +Ticket_Info_Remark: '维修描述: ' +Ticket_Info_Update_Time: '更新时间: ' +Ticket_Info_Status: '报修单状态: ' +#Submit +Already_Opening_Ticket: "您上次提交的报修单仍在处理中. 若想查询报修单状态,请发送 '查询' 。" +Submit_Title: '在网维工作人员上门解决您的问题之前...' +Submit_Desc: '在网维工作人员上门解决您的问题之前,您可以尝试以下方法来更有效地解决您的问题: + 重新插拔您电脑的网线以及墙上的端口。 + 尝试卸载掉您的wifi共享软件并重启电脑。 + 请您检查一下您的账号是否余额充足。 + 若您的电脑出现明显异常,请尝试使用他人的电脑能否正常登录,网维的工作成员主要负责网络的维护工作,可能无法解决您的个人电脑问题。 + + 若以上步骤对您没有帮助,请点此提交报修表单。' + +#URL +User_Register_Link: "您尚未进行微信绑定, 请点击这里进行微信绑定操作。" User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/query.php?wechatid={0}' -User_Register_Link: "You''ve not registered, please CLICK HERE to register." -Already_Opening_Ticket: "You are holding an opening ticket right now. please type 'query' for more information" \ No newline at end of file +User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/submit.php?wechatid={0}' + +#Localized +#Status +STATUS_UNCHECKED: '待处理' +STATUS_SOLVED: '已解决' \ No newline at end of file