mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-28 23:55:04 +08:00
add cancel command
This commit is contained in:
@@ -5,7 +5,7 @@ import love.sola.netsupport.config.Settings;
|
|||||||
import love.sola.netsupport.pojo.User;
|
import love.sola.netsupport.pojo.User;
|
||||||
import love.sola.netsupport.sql.SQLCore;
|
import love.sola.netsupport.sql.SQLCore;
|
||||||
import love.sola.netsupport.sql.TableUser;
|
import love.sola.netsupport.sql.TableUser;
|
||||||
import love.sola.netsupport.util.JsonP;
|
import love.sola.netsupport.util.ParseUtil;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
@@ -42,7 +42,7 @@ public class Authorize extends HttpServlet {
|
|||||||
response.addHeader("Content-type", "text/json;charset=utf-8");
|
response.addHeader("Content-type", "text/json;charset=utf-8");
|
||||||
PrintWriter out = response.getWriter();
|
PrintWriter out = response.getWriter();
|
||||||
String json = gson.toJson(authorize(request));
|
String json = gson.toJson(authorize(request));
|
||||||
out.println(JsonP.parse(request, json));
|
out.println(ParseUtil.parseJsonP(request, json));
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.google.gson.Gson;
|
|||||||
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.SQLCore;
|
import love.sola.netsupport.sql.SQLCore;
|
||||||
import love.sola.netsupport.util.JsonP;
|
import love.sola.netsupport.util.ParseUtil;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
import org.hibernate.Criteria;
|
import org.hibernate.Criteria;
|
||||||
import org.hibernate.HibernateException;
|
import org.hibernate.HibernateException;
|
||||||
@@ -42,7 +42,7 @@ public class TicketQuery extends HttpServlet {
|
|||||||
response.addHeader("Content-type", "text/json;charset=utf-8");
|
response.addHeader("Content-type", "text/json;charset=utf-8");
|
||||||
PrintWriter out = response.getWriter();
|
PrintWriter out = response.getWriter();
|
||||||
String json = gson.toJson(query(request));
|
String json = gson.toJson(query(request));
|
||||||
out.println(JsonP.parse(request, json));
|
out.println(ParseUtil.parseJsonP(request, json));
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.google.gson.Gson;
|
|||||||
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.SQLCore;
|
import love.sola.netsupport.sql.SQLCore;
|
||||||
import love.sola.netsupport.util.JsonP;
|
import love.sola.netsupport.util.ParseUtil;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
import org.hibernate.HibernateException;
|
import org.hibernate.HibernateException;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
@@ -40,7 +40,7 @@ public class TicketSubmit extends HttpServlet {
|
|||||||
response.addHeader("Content-type", "text/json;charset=utf-8");
|
response.addHeader("Content-type", "text/json;charset=utf-8");
|
||||||
PrintWriter out = response.getWriter();
|
PrintWriter out = response.getWriter();
|
||||||
String json = gson.toJson(submit(request));
|
String json = gson.toJson(submit(request));
|
||||||
out.println(JsonP.parse(request, json));
|
out.println(ParseUtil.parseJsonP(request, json));
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import love.sola.netsupport.api.Response;
|
|||||||
import love.sola.netsupport.pojo.User;
|
import love.sola.netsupport.pojo.User;
|
||||||
import love.sola.netsupport.sql.SQLCore;
|
import love.sola.netsupport.sql.SQLCore;
|
||||||
import love.sola.netsupport.sql.TableUser;
|
import love.sola.netsupport.sql.TableUser;
|
||||||
import love.sola.netsupport.util.JsonP;
|
import love.sola.netsupport.util.ParseUtil;
|
||||||
|
|
||||||
import javax.servlet.ServletConfig;
|
import javax.servlet.ServletConfig;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
@@ -43,7 +43,7 @@ public class GetUser extends HttpServlet {
|
|||||||
response.addHeader("Content-type", "text/json;charset=utf-8");
|
response.addHeader("Content-type", "text/json;charset=utf-8");
|
||||||
PrintWriter out = response.getWriter();
|
PrintWriter out = response.getWriter();
|
||||||
String json = gson.toJson(query(request));
|
String json = gson.toJson(query(request));
|
||||||
out.println(JsonP.parse(request, json));
|
out.println(ParseUtil.parseJsonP(request, json));
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class TableTicket extends SQLCore {
|
|||||||
public static final String COLUMN_STATUS = "status";
|
public static final String COLUMN_STATUS = "status";
|
||||||
|
|
||||||
|
|
||||||
public static Ticket queryLastOpen(User u) {
|
public static Ticket queryLatestOpen(User u) {
|
||||||
try (Session s = SQLCore.sf.openSession()) {
|
try (Session s = SQLCore.sf.openSession()) {
|
||||||
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))
|
||||||
@@ -38,7 +38,7 @@ public class TableTicket extends SQLCore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Ticket queryLast(User u) {
|
public static Ticket queryLatest(User u) {
|
||||||
try (Session s = SQLCore.sf.openSession()) {
|
try (Session s = SQLCore.sf.openSession()) {
|
||||||
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))
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
package love.sola.netsupport.util;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ***********************************************
|
|
||||||
* Created by Sola on 2015/12/3.
|
|
||||||
* Don't modify this source without my agreement
|
|
||||||
* ***********************************************
|
|
||||||
*/
|
|
||||||
public class JsonP {
|
|
||||||
|
|
||||||
public static String parse(HttpServletRequest request, String json) {
|
|
||||||
String jsonp = request.getParameter("jsonp");
|
|
||||||
if (jsonp == null || jsonp.isEmpty())
|
|
||||||
return json;
|
|
||||||
else
|
|
||||||
return jsonp.replace("{0}", json);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
42
src/main/java/love/sola/netsupport/util/ParseUtil.java
Normal file
42
src/main/java/love/sola/netsupport/util/ParseUtil.java
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package love.sola.netsupport.util;
|
||||||
|
|
||||||
|
import love.sola.netsupport.enums.Status;
|
||||||
|
import love.sola.netsupport.pojo.Ticket;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
|
import static love.sola.netsupport.config.Lang.lang;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ***********************************************
|
||||||
|
* Created by Sola on 2015/12/11.
|
||||||
|
* Don't modify this source without my agreement
|
||||||
|
* ***********************************************
|
||||||
|
*/
|
||||||
|
public class ParseUtil {
|
||||||
|
|
||||||
|
public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm EEE");
|
||||||
|
|
||||||
|
public static String parseTicket(Ticket t) {
|
||||||
|
StringBuilder sb = new StringBuilder()
|
||||||
|
.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(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(lang("Ticket_Info_Status")).append(Status.getLocalized(t.getStatus()));
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String parseJsonP(HttpServletRequest request, String json) {
|
||||||
|
String jsonp = request.getParameter("jsonp");
|
||||||
|
if (jsonp == null || jsonp.isEmpty())
|
||||||
|
return json;
|
||||||
|
else
|
||||||
|
return jsonp.replace("{0}", json);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package love.sola.netsupport.wechat;
|
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.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.handler.SubmitHandler;
|
||||||
@@ -21,6 +22,7 @@ public enum Command {
|
|||||||
REGISTER(0, RegisterHandler.class),
|
REGISTER(0, RegisterHandler.class),
|
||||||
QUERY(1, QueryHandler.class),
|
QUERY(1, QueryHandler.class),
|
||||||
SUBMIT(2, SubmitHandler.class),
|
SUBMIT(2, SubmitHandler.class),
|
||||||
|
CANCEL(3, CancelHandler.class),
|
||||||
;
|
;
|
||||||
|
|
||||||
private static final Map<Integer, Command> ID_MAP = new HashMap<>();
|
private static final Map<Integer, Command> ID_MAP = new HashMap<>();
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package love.sola.netsupport.wechat.handler;
|
||||||
|
|
||||||
|
import love.sola.netsupport.enums.Status;
|
||||||
|
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.sql.TableUser;
|
||||||
|
import love.sola.netsupport.util.ParseUtil;
|
||||||
|
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.WxMpXmlOutNewsMessage;
|
||||||
|
import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
|
||||||
|
import org.hibernate.Session;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static love.sola.netsupport.config.Lang.lang;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ***********************************************
|
||||||
|
* Created by Sola on 2015/12/11.
|
||||||
|
* Don't modify this source without my agreement
|
||||||
|
* ***********************************************
|
||||||
|
*/
|
||||||
|
public class CancelHandler implements WxMpMessageHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
||||||
|
User u = TableUser.getUserByWechat(wxMessage.getFromUserName());
|
||||||
|
Ticket t = TableTicket.queryLatestOpen(u);
|
||||||
|
if (t == null) {
|
||||||
|
return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName())
|
||||||
|
.content(lang("No_Open_Ticket_Available")).build();
|
||||||
|
}
|
||||||
|
try (Session s = SQLCore.sf.openSession()) {
|
||||||
|
t.setUpdateTime(new Date());
|
||||||
|
t.setDescription(lang("User_Cancel_Remark"));
|
||||||
|
t.setStatus(Status.SOLVED);
|
||||||
|
s.beginTransaction();
|
||||||
|
s.update(t);
|
||||||
|
s.getTransaction().commit();
|
||||||
|
NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName());
|
||||||
|
WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item();
|
||||||
|
item.setTitle(lang("Cancel_Title"));
|
||||||
|
item.setDescription(ParseUtil.parseTicket(t));
|
||||||
|
out.addArticle(item);
|
||||||
|
return out.build();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName())
|
||||||
|
.content(lang("Cancel_Failed")).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
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;
|
||||||
import love.sola.netsupport.sql.TableUser;
|
import love.sola.netsupport.sql.TableUser;
|
||||||
|
import love.sola.netsupport.util.ParseUtil;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.common.session.WxSessionManager;
|
import me.chanjar.weixin.common.session.WxSessionManager;
|
||||||
@@ -16,7 +16,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
|
|||||||
import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage;
|
import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage;
|
||||||
import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
|
import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static love.sola.netsupport.config.Lang.format;
|
import static love.sola.netsupport.config.Lang.format;
|
||||||
@@ -30,12 +29,11 @@ import static love.sola.netsupport.config.Lang.lang;
|
|||||||
*/
|
*/
|
||||||
public class QueryHandler implements WxMpMessageHandler {
|
public class QueryHandler implements WxMpMessageHandler {
|
||||||
|
|
||||||
public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm EEE");
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
||||||
User u = TableUser.getUserByWechat(wxMessage.getFromUserName());
|
User u = TableUser.getUserByWechat(wxMessage.getFromUserName());
|
||||||
Ticket t = TableTicket.queryLast(u);
|
Ticket t = TableTicket.queryLatest(u);
|
||||||
if (t == null) {
|
if (t == null) {
|
||||||
return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName())
|
return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName())
|
||||||
.content(lang("No_Ticket_Available")).build();
|
.content(lang("No_Ticket_Available")).build();
|
||||||
@@ -43,20 +41,9 @@ 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()
|
|
||||||
.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(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(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"));
|
item.setTitle(lang("Query_Title"));
|
||||||
item.setDescription(sb.toString());
|
item.setDescription(ParseUtil.parseTicket(t) + "\n" + lang("More_Details"));
|
||||||
|
item.setUrl(format("User_Query_Link", wxMessage.getFromUserName()));
|
||||||
out.addArticle(item);
|
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.QUERY);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class SubmitHandler implements WxMpMessageHandler {
|
|||||||
@Override
|
@Override
|
||||||
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
||||||
User u = TableUser.getUserByWechat(wxMessage.getFromUserName());
|
User u = TableUser.getUserByWechat(wxMessage.getFromUserName());
|
||||||
Ticket t = TableTicket.queryLastOpen(u);
|
Ticket t = TableTicket.queryLatestOpen(u);
|
||||||
if (t != null) {
|
if (t != null) {
|
||||||
return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName())
|
return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName())
|
||||||
.content(lang("Already_Opening_Ticket")).build();
|
.content(lang("Already_Opening_Ticket")).build();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ Unknown_Encrypt_Type: 'Unknown encrypt-type.'
|
|||||||
REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$'
|
REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$'
|
||||||
REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(zc)$'
|
REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(zc)$'
|
||||||
REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$'
|
REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$'
|
||||||
|
REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(qx)$'
|
||||||
|
|
||||||
#Event
|
#Event
|
||||||
Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题,请将投诉或建议邮件至loli@sola.love."
|
Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题,请将投诉或建议邮件至loli@sola.love."
|
||||||
@@ -18,13 +19,6 @@ Already_Registered: "您已进行过微信绑定。如果需要更改个人信
|
|||||||
Query_Title: '最近一次报修记录:'
|
Query_Title: '最近一次报修记录:'
|
||||||
More_Details: '查询更早的报修信息,请点击 >'
|
More_Details: '查询更早的报修信息,请点击 >'
|
||||||
No_Ticket_Available: '您尚未提交过任何报修。'
|
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
|
#Submit
|
||||||
Already_Opening_Ticket: "您上次提交的报修单仍在处理中. 若需要查询报修单状态,请发送 '查询' 。"
|
Already_Opening_Ticket: "您上次提交的报修单仍在处理中. 若需要查询报修单状态,请发送 '查询' 。"
|
||||||
Submit_Title: '在网维工作人员上门解决您的问题之前...'
|
Submit_Title: '在网维工作人员上门解决您的问题之前...'
|
||||||
@@ -35,6 +29,11 @@ Submit_Desc: "在网维工作人员上门解决您的问题之前,您可以尝
|
|||||||
若您的电脑出现明显异常,请尝试使用他人的电脑能否正常登录,网维的工作成员主要负责网络的维护工作,可能无法解决您的个人电脑问题。\n
|
若您的电脑出现明显异常,请尝试使用他人的电脑能否正常登录,网维的工作成员主要负责网络的维护工作,可能无法解决您的个人电脑问题。\n
|
||||||
\n
|
\n
|
||||||
若以上步骤对您没有帮助,请点此提交报修表单。"
|
若以上步骤对您没有帮助,请点此提交报修表单。"
|
||||||
|
#Cancel
|
||||||
|
No_Open_Ticket_Available: '您当前没有未解决的报修表单。'
|
||||||
|
Cancel_Title: '报修已取消:'
|
||||||
|
User_Cancel_Remark: '用户手动取消报修。'
|
||||||
|
Cancel_Failed: '取消失败。'
|
||||||
|
|
||||||
#URL
|
#URL
|
||||||
User_Register_Link: "您尚未进行微信绑定, 请<a href=\"http://topaz.sinaapp.com/nm/v1/reg.php?wechatid={0}\">点击这里</a>进行微信绑定操作。"
|
User_Register_Link: "您尚未进行微信绑定, 请<a href=\"http://topaz.sinaapp.com/nm/v1/reg.php?wechatid={0}\">点击这里</a>进行微信绑定操作。"
|
||||||
@@ -45,4 +44,12 @@ Result_Page: 'http://topaz.sinaapp.com/nm/v1/result.html'
|
|||||||
#Localized
|
#Localized
|
||||||
#Status
|
#Status
|
||||||
STATUS_UNCHECKED: '待处理'
|
STATUS_UNCHECKED: '待处理'
|
||||||
STATUS_SOLVED: '已解决'
|
STATUS_SOLVED: '已解决'
|
||||||
|
#Ticket
|
||||||
|
Ticket_Info_Id: '报修单号: '
|
||||||
|
Ticket_Info_Desc: '报修描述: '
|
||||||
|
Ticket_Info_Submit_Time: '提交时间: '
|
||||||
|
Ticket_Info_Operator: '操作员: '
|
||||||
|
Ticket_Info_Remark: '维修描述: '
|
||||||
|
Ticket_Info_Update_Time: '更新时间: '
|
||||||
|
Ticket_Info_Status: '报修单状态: '
|
||||||
Reference in New Issue
Block a user