mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-28 23:55:04 +08:00
add submit command
This commit is contained in:
@@ -22,9 +22,6 @@ public class Lang {
|
|||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
InputStream in = Lang.class.getClassLoader().getResourceAsStream("lang.yml");
|
InputStream in = Lang.class.getClassLoader().getResourceAsStream("lang.yml");
|
||||||
messages = new Yaml().loadAs(in, Map.class);
|
messages = new Yaml().loadAs(in, Map.class);
|
||||||
for (Map.Entry<String, String> entry : messages.entrySet()) {
|
|
||||||
System.out.println(entry.getKey() + ": " + entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String lang(String key) {
|
public static String lang(String key) {
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import java.lang.reflect.Field;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static love.sola.netsupport.config.Lang.lang;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ***********************************************
|
* ***********************************************
|
||||||
* Created by Sola on 2015/12/6.
|
* Created by Sola on 2015/12/6.
|
||||||
@@ -13,6 +15,8 @@ import java.util.Map;
|
|||||||
public class Status {
|
public class Status {
|
||||||
|
|
||||||
public static final int UNCHECKED = 0;
|
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 int SOLVED = 9;
|
||||||
|
|
||||||
public static final Map<Integer, String> inverseMap = new HashMap<>();
|
public static final Map<Integer, String> 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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class TableTicket extends SQLCore {
|
|||||||
return (Ticket) s.createCriteria(Ticket.class)
|
return (Ticket) s.createCriteria(Ticket.class)
|
||||||
.addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME))
|
.addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME))
|
||||||
.add(Restrictions.eq(Ticket.PROPERTY_USER, u))
|
.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)
|
.setMaxResults(1)
|
||||||
.uniqueResult();
|
.uniqueResult();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package love.sola.netsupport.wechat;
|
|||||||
import love.sola.netsupport.config.Settings;
|
import love.sola.netsupport.config.Settings;
|
||||||
import love.sola.netsupport.wechat.handler.QueryHandler;
|
import love.sola.netsupport.wechat.handler.QueryHandler;
|
||||||
import love.sola.netsupport.wechat.handler.RegisterHandler;
|
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.CheckSpamMatcher;
|
||||||
import love.sola.netsupport.wechat.matcher.RegisterMatcher;
|
import love.sola.netsupport.wechat.matcher.RegisterMatcher;
|
||||||
import me.chanjar.weixin.common.util.StringUtils;
|
import me.chanjar.weixin.common.util.StringUtils;
|
||||||
@@ -88,6 +89,12 @@ public class WxMpServlet extends HttpServlet {
|
|||||||
.rContent(Command.QUERY.regex)
|
.rContent(Command.QUERY.regex)
|
||||||
.handler(new QueryHandler())
|
.handler(new QueryHandler())
|
||||||
.end();
|
.end();
|
||||||
|
wxMpMessageRouter.rule()
|
||||||
|
.async(false)
|
||||||
|
.msgType("text")
|
||||||
|
.rContent(Command.SUBMIT.regex)
|
||||||
|
.handler(new SubmitHandler())
|
||||||
|
.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package love.sola.netsupport.wechat.handler;
|
package love.sola.netsupport.wechat.handler;
|
||||||
|
|
||||||
import love.sola.netsupport.api.Authorize;
|
import love.sola.netsupport.api.Authorize;
|
||||||
|
import love.sola.netsupport.enums.Status;
|
||||||
import love.sola.netsupport.pojo.Ticket;
|
import love.sola.netsupport.pojo.Ticket;
|
||||||
import love.sola.netsupport.pojo.User;
|
import love.sola.netsupport.pojo.User;
|
||||||
import love.sola.netsupport.sql.TableTicket;
|
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());
|
NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName());
|
||||||
WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item();
|
WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item();
|
||||||
StringBuilder sb = new StringBuilder()
|
StringBuilder sb = new StringBuilder()
|
||||||
.append("Ticket ID: ").append(t.getId()).append("\n")
|
.append(lang("Ticket_Info_Id")).append(t.getId()).append("\n")
|
||||||
.append("Desc: ").append(t.getDescription()).append("\n")
|
.append(lang("Ticket_Info_Desc")).append(t.getDescription()).append("\n")
|
||||||
.append("Submit Time: ").append(dateFormat.format(t.getSubmitTime())).append("\n");
|
.append(lang("Ticket_Info_Submit_Time")).append(dateFormat.format(t.getSubmitTime())).append("\n");
|
||||||
if (t.getUpdateTime() != null) {
|
if (t.getUpdateTime() != null) {
|
||||||
sb.append("Operator: ").append(t.getOperator().getId()).append("\n");
|
sb.append(lang("Ticket_Info_Operator")).append(t.getOperator().getId()).append("\n");
|
||||||
sb.append("Remark: ").append(t.getRemark()).append("\n");
|
sb.append(lang("Ticket_Info_Remark")).append(t.getRemark()).append("\n");
|
||||||
sb.append("Latest Update: ").append(dateFormat.format(t.getUpdateTime())).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"));
|
sb.append(lang("More_Details"));
|
||||||
item.setUrl(format("User_Query_Link", wxMessage.getFromUserName()));
|
item.setUrl(format("User_Query_Link", wxMessage.getFromUserName()));
|
||||||
item.setTitle(lang("Query_Title"));
|
item.setTitle(lang("Query_Title"));
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static love.sola.netsupport.config.Lang.format;
|
||||||
import static love.sola.netsupport.config.Lang.lang;
|
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());
|
NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName());
|
||||||
WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item();
|
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.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis());
|
||||||
Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.QUERY);
|
Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.SUBMIT);
|
||||||
return out.build();
|
return out.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,47 @@
|
|||||||
|
#System Exception
|
||||||
Access_Denied: 'Access denied.'
|
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."
|
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.'
|
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: "您尚未进行微信绑定, 请<a href=\"http://topaz.sinaapp.com/nm/v1/reg.php?wechatid={0}\">点击这里</a>进行微信绑定操作。"
|
||||||
User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/query.php?wechatid={0}'
|
User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/query.php?wechatid={0}'
|
||||||
User_Register_Link: "You''ve not registered, please <a href=\"http://topaz.sinaapp.com/nm/v1/reg.php?wechatid={0}\">CLICK HERE</a> to register."
|
User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/submit.php?wechatid={0}'
|
||||||
Already_Opening_Ticket: "You are holding an opening ticket right now. please type 'query' for more information"
|
|
||||||
|
#Localized
|
||||||
|
#Status
|
||||||
|
STATUS_UNCHECKED: '待处理'
|
||||||
|
STATUS_SOLVED: '已解决'
|
||||||
Reference in New Issue
Block a user