From b28364f160da6d24ad49cc683c9bbe79e8b1aab5 Mon Sep 17 00:00:00 2001 From: Sola Date: Mon, 28 Dec 2015 01:16:58 +0800 Subject: [PATCH] add operator info --- .../netsupport/api/stuff/TicketLookup.java | 4 ++ .../love/sola/netsupport/wechat/Command.java | 3 ++ .../sola/netsupport/wechat/WxMpServlet.java | 2 - .../handler/{ => admin}/LoginHandler.java | 2 +- .../handler/admin/OperatorInfoHandler.java | 46 +++++++++++++++++++ .../handler/{ => admin}/SignHandler.java | 2 +- src/main/resources/lang.yml | 10 ++++ 7 files changed, 65 insertions(+), 4 deletions(-) rename src/main/java/love/sola/netsupport/wechat/handler/{ => admin}/LoginHandler.java (97%) create mode 100644 src/main/java/love/sola/netsupport/wechat/handler/admin/OperatorInfoHandler.java rename src/main/java/love/sola/netsupport/wechat/handler/{ => admin}/SignHandler.java (98%) diff --git a/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java b/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java index 7465df1..5c39694 100644 --- a/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java +++ b/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java @@ -2,6 +2,7 @@ package love.sola.netsupport.api.stuff; 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; import love.sola.netsupport.pojo.Ticket; @@ -60,6 +61,9 @@ public class TicketLookup extends HttpServlet { } else { block = op.getBlock(); } + if (block == 0 && op.getAccess() > Access.LEADER) { + return new Response(Response.ResponseCode.PERMISSION_DENIED); + } List list = TableTicket.unsolvedByBlock(block); return new Response(Response.ResponseCode.OK, list); } catch (NumberFormatException e) { diff --git a/src/main/java/love/sola/netsupport/wechat/Command.java b/src/main/java/love/sola/netsupport/wechat/Command.java index d3ff4a9..6787759 100644 --- a/src/main/java/love/sola/netsupport/wechat/Command.java +++ b/src/main/java/love/sola/netsupport/wechat/Command.java @@ -1,6 +1,8 @@ package love.sola.netsupport.wechat; import love.sola.netsupport.wechat.handler.*; +import love.sola.netsupport.wechat.handler.admin.LoginHandler; +import love.sola.netsupport.wechat.handler.admin.OperatorInfoHandler; import me.chanjar.weixin.mp.api.WxMpMessageHandler; import java.util.HashMap; @@ -22,6 +24,7 @@ public enum Command { CANCEL(3, CancelHandler.class), PROFILE(4, ProfileHandler.class), LOGIN(10, LoginHandler.class), + OPERATOR_INFO(11, OperatorInfoHandler.class), ; private static final Map ID_MAP = new HashMap<>(); diff --git a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java index b9507a0..2d96f70 100644 --- a/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java +++ b/src/main/java/love/sola/netsupport/wechat/WxMpServlet.java @@ -2,7 +2,6 @@ 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; @@ -81,7 +80,6 @@ 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/LoginHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/admin/LoginHandler.java similarity index 97% rename from src/main/java/love/sola/netsupport/wechat/handler/LoginHandler.java rename to src/main/java/love/sola/netsupport/wechat/handler/admin/LoginHandler.java index c82507e..667981c 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/LoginHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/admin/LoginHandler.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.wechat.handler; +package love.sola.netsupport.wechat.handler.admin; import love.sola.netsupport.enums.Access; import love.sola.netsupport.enums.Attribute; diff --git a/src/main/java/love/sola/netsupport/wechat/handler/admin/OperatorInfoHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/admin/OperatorInfoHandler.java new file mode 100644 index 0000000..a713e59 --- /dev/null +++ b/src/main/java/love/sola/netsupport/wechat/handler/admin/OperatorInfoHandler.java @@ -0,0 +1,46 @@ +package love.sola.netsupport.wechat.handler.admin; + +import love.sola.netsupport.enums.Access; +import love.sola.netsupport.pojo.Operator; +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/28. + * Don't modify this source without my agreement + * *********************************************** + */ +public class OperatorInfoHandler 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()); + try { + Operator op = TableOperator.get(wxMessage.getFromUserName()); + if (op == null) + out.content(lang("Not_Operator")); + else if (op.getAccess() == Access.NOLOGIN) { + out.content(lang("No_Login")); + } else { + out.content(format("Operator_Info", op.getId(), op.getName(), op.getAccess(), op.getBlock(), op.getWeek())); + } + } catch (Exception e) { + e.printStackTrace(); + out.content(lang("Login_Error")); + } + return out.build(); + } + +} diff --git a/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java b/src/main/java/love/sola/netsupport/wechat/handler/admin/SignHandler.java similarity index 98% rename from src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java rename to src/main/java/love/sola/netsupport/wechat/handler/admin/SignHandler.java index a11a94b..47e8a8e 100644 --- a/src/main/java/love/sola/netsupport/wechat/handler/SignHandler.java +++ b/src/main/java/love/sola/netsupport/wechat/handler/admin/SignHandler.java @@ -1,4 +1,4 @@ -package love.sola.netsupport.wechat.handler; +package love.sola.netsupport.wechat.handler.admin; import love.sola.netsupport.sql.SQLCore; import me.chanjar.weixin.common.exception.WxErrorException; diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 158dea9..7f5961a 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -10,6 +10,7 @@ REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(保修)|(bx)$' REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(撤销)|(qx)|(cx)$' REGEX_LOGIN: '^(?i)Authme$' REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(修改信息)|(xgzl)|(xgxx)$' +REGEX_OPERATOR_INFO: '^(?i)(OpInfo)|(网维资料)|(wwzl)$' #Misc Invalid_Operation: 'Whoops,报修姬找不到你想要的东西啦 (╯‵□′)╯︵┻━┻。' @@ -45,7 +46,16 @@ Profile_Modify: '> 点此修改资料 <' Not_Operator: '嘟嘟嘟……' No_Login: 'Permission Denied.' Internal_Error: '啊哦,登录失败了哦。' +#Operator_Info +Operator_Info: | + 网维成员资料: + 网维ID: {0,number,#} + 姓名: {1} + 岗位: {2,choice,0#Administrator >ω<|3#值班组长|6#正式成员|7#实习成员} + 值班片区: {3,choice,0#全图 >ω<|1#岐头片区|2#北门片区|3#东门片区|4#香灰片区|5#凤翔片区} + 值班日: {4,choice,0#2月30日 >ω<|1#周一|2#周二|3#周三|4#周四|5#周五|6#周六|7#周日} + 若以上信息有误,请及时联系@15-排污-沙子森。 #URL 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}'