diff --git a/pom.xml b/pom.xml
index c782f94..1999353 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
WechatTicketSystem
love.sola.netsupport
WechatTicketSystem
- 1.2-SNAPSHOT
+ 1.3
war
diff --git a/src/main/java/love/sola/netsupport/api/admin/CheckSession.java b/src/main/java/love/sola/netsupport/api/CheckSession.java
similarity index 95%
rename from src/main/java/love/sola/netsupport/api/admin/CheckSession.java
rename to src/main/java/love/sola/netsupport/api/CheckSession.java
index 20b98fd..97871f0 100644
--- a/src/main/java/love/sola/netsupport/api/admin/CheckSession.java
+++ b/src/main/java/love/sola/netsupport/api/CheckSession.java
@@ -1,7 +1,6 @@
-package love.sola.netsupport.api.admin;
+package love.sola.netsupport.api;
import com.google.gson.Gson;
-import love.sola.netsupport.api.Response;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.util.ParseUtil;
@@ -24,7 +23,7 @@ import java.util.Map;
* Don't modify this source without my agreement
* ***********************************************
*/
-@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 43)
+@WebServlet(name = "CheckSession", urlPatterns = "/api/checksession", loadOnStartup = 11)
public class CheckSession extends HttpServlet {
private Gson gson = SQLCore.gson;
diff --git a/src/main/java/love/sola/netsupport/api/admin/Login.java b/src/main/java/love/sola/netsupport/api/Login.java
similarity index 97%
rename from src/main/java/love/sola/netsupport/api/admin/Login.java
rename to src/main/java/love/sola/netsupport/api/Login.java
index 1722228..8faae6f 100644
--- a/src/main/java/love/sola/netsupport/api/admin/Login.java
+++ b/src/main/java/love/sola/netsupport/api/Login.java
@@ -1,7 +1,6 @@
-package love.sola.netsupport.api.admin;
+package love.sola.netsupport.api;
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;
@@ -31,7 +30,7 @@ import java.io.PrintWriter;
* ***********************************************
*/
-@WebServlet(name = "Login", urlPatterns = "/api/admin/login", loadOnStartup = 31)
+@WebServlet(name = "Login", urlPatterns = "/api/admin/login", loadOnStartup = 12)
public class Login extends HttpServlet {
private Gson gson = SQLCore.gson;
diff --git a/src/main/java/love/sola/netsupport/api/Response.java b/src/main/java/love/sola/netsupport/api/Response.java
index 7210f70..cfe6d45 100644
--- a/src/main/java/love/sola/netsupport/api/Response.java
+++ b/src/main/java/love/sola/netsupport/api/Response.java
@@ -36,14 +36,12 @@ public class Response {
PARAMETER_REQUIRED(-1),
ILLEGAL_PARAMETER(-2),
REQUEST_FAILED(-3),
- AUTHORIZE_FAILED(-9),
+ LENGTH_LIMIT_EXCEEDED(-4),
USER_NOT_FOUND(-11),
TICKET_NOT_FOUND(-12),
OPERATOR_NOT_FOUND(-13),
UNAUTHORIZED(-20),
- REQUEST_EXPIRED(-21),
WRONG_PASSWORD(-22),
- INCORRECT_WECHAT(-23),
PERMISSION_DENIED(-24),
INTERNAL_ERROR(-90),
DATABASE_ERROR(-91),
diff --git a/src/main/java/love/sola/netsupport/api/admin/root/GetUser.java b/src/main/java/love/sola/netsupport/api/manager/GetUser.java
similarity index 96%
rename from src/main/java/love/sola/netsupport/api/admin/root/GetUser.java
rename to src/main/java/love/sola/netsupport/api/manager/GetUser.java
index 11b01ba..4ee7ac1 100644
--- a/src/main/java/love/sola/netsupport/api/admin/root/GetUser.java
+++ b/src/main/java/love/sola/netsupport/api/manager/GetUser.java
@@ -1,4 +1,4 @@
-package love.sola.netsupport.api.admin.root;
+package love.sola.netsupport.api.manager;
import com.google.gson.Gson;
import love.sola.netsupport.api.Response;
@@ -28,7 +28,7 @@ import java.io.PrintWriter;
* Don't modify this source without my agreement
* ***********************************************
*/
-@WebServlet(name = "GetUser",urlPatterns = "/api/admin/getuser",loadOnStartup = 42)
+@WebServlet(name = "GetUser",urlPatterns = "/api/admin/getuser",loadOnStartup = 41)
public class GetUser extends HttpServlet {
private Gson gson = SQLCore.gson;
@@ -59,7 +59,7 @@ public class GetUser extends HttpServlet {
return new Response(Response.ResponseCode.UNAUTHORIZED);
}
Operator op = (Operator) session.getAttribute(Attribute.OPERATOR);
- if (op.getAccess() != Access.ROOT) {
+ if (op.getAccess() > Access.LEADER) {
return new Response(Response.ResponseCode.PERMISSION_DENIED);
}
diff --git a/src/main/java/love/sola/netsupport/api/manager/TicketPush.java b/src/main/java/love/sola/netsupport/api/manager/TicketPush.java
new file mode 100644
index 0000000..6c10175
--- /dev/null
+++ b/src/main/java/love/sola/netsupport/api/manager/TicketPush.java
@@ -0,0 +1,93 @@
+package love.sola.netsupport.api.manager;
+
+import com.google.gson.Gson;
+import love.sola.netsupport.api.Response;
+import love.sola.netsupport.config.Settings;
+import love.sola.netsupport.enums.Access;
+import love.sola.netsupport.enums.Attribute;
+import love.sola.netsupport.enums.Status;
+import love.sola.netsupport.pojo.Operator;
+import love.sola.netsupport.pojo.Ticket;
+import love.sola.netsupport.pojo.User;
+import love.sola.netsupport.sql.SQLCore;
+import love.sola.netsupport.util.Checker;
+import love.sola.netsupport.util.ParseUtil;
+import love.sola.netsupport.wechat.Command;
+import me.chanjar.weixin.common.session.WxSession;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * ***********************************************
+ * Created by Sola on 2015/12/22.
+ * Don't modify this source without my agreement
+ * ***********************************************
+ */
+@WebServlet(name = "TicketPush",urlPatterns = "/api/admin/ticketpush",loadOnStartup = 42)
+public class TicketPush extends HttpServlet{
+
+ private Gson gson = SQLCore.gson;
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ doGet(request, response);
+ }
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ response.addHeader("Content-type", "application/json;charset=utf-8");
+ PrintWriter out = response.getWriter();
+ String json = gson.toJson(push(request));
+ out.println(ParseUtil.parseJsonP(request, json));
+ out.close();
+ }
+
+ private Response push(HttpServletRequest request) {
+ String uid = request.getParameter("uid");
+ String desc = request.getParameter("desc");
+ if (Checker.hasNull(uid, desc)) {
+ return new Response(Response.ResponseCode.PARAMETER_REQUIRED);
+ }
+ if (desc.length() > Settings.MAX_DESC_LENGTH) {
+ return new Response(Response.ResponseCode.LENGTH_LIMIT_EXCEEDED);
+ }
+
+ WxSession session = Checker.isAuthorized(request, Command.LOGIN);
+ if (session == null) {
+ return new Response(Response.ResponseCode.UNAUTHORIZED);
+ }
+ Operator op = (Operator) session.getAttribute(Attribute.OPERATOR);
+ if (op.getAccess() > Access.LEADER) {
+ return new Response(Response.ResponseCode.PERMISSION_DENIED);
+ }
+
+ try (Session s = SQLCore.sf.openSession()) {
+ s.beginTransaction();
+ User u = s.get(User.class, Long.parseLong(uid));
+ if (u == null) {
+ return new Response(Response.ResponseCode.USER_NOT_FOUND);
+ }
+ Ticket t = new Ticket(null, u, desc, null, "Pushed By Admin", null, op, Status.UNCHECKED);
+ s.save(t);
+ s.getTransaction().commit();
+ return new Response(Response.ResponseCode.OK, t);
+ } catch (NumberFormatException e) {
+ return new Response(Response.ResponseCode.ILLEGAL_PARAMETER);
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ return new Response(Response.ResponseCode.DATABASE_ERROR, e.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new Response(Response.ResponseCode.INTERNAL_ERROR, e.getMessage());
+ }
+ }
+
+}
diff --git a/src/main/java/love/sola/netsupport/api/admin/root/DashBoard.java b/src/main/java/love/sola/netsupport/api/root/DashBoard.java
similarity index 85%
rename from src/main/java/love/sola/netsupport/api/admin/root/DashBoard.java
rename to src/main/java/love/sola/netsupport/api/root/DashBoard.java
index e1ed099..230ac45 100644
--- a/src/main/java/love/sola/netsupport/api/admin/root/DashBoard.java
+++ b/src/main/java/love/sola/netsupport/api/root/DashBoard.java
@@ -1,10 +1,8 @@
-package love.sola.netsupport.api.admin.root;
+package love.sola.netsupport.api.root;
-import com.google.gson.Gson;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Operator;
-import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.util.Checker;
import love.sola.netsupport.wechat.Command;
import love.sola.netsupport.wechat.WechatSession;
@@ -27,25 +25,24 @@ import java.util.Enumeration;
* ***********************************************
*/
-@WebServlet(name = "Dashboard", urlPatterns = "/api/admin/dashboard", loadOnStartup = 41)
+@WebServlet(name = "Dashboard", urlPatterns = "/api/root/dashboard", loadOnStartup = 51)
public class DashBoard extends HttpServlet {
- private Gson gson = SQLCore.gson;
-
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
+ @SuppressWarnings("Duplicates")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.addHeader("Content-type", "text/plain;charset=utf-8");
PrintWriter out = response.getWriter();
- print(request, out);
+ process(request, out);
out.close();
}
- private void print(HttpServletRequest request, PrintWriter out) {
+ private void process(HttpServletRequest request, PrintWriter out) {
WxSession session = Checker.isAuthorized(request, Command.LOGIN);
if (session == null) {
out.println("Unauthorized");
diff --git a/src/main/java/love/sola/netsupport/api/root/FlushCache.java b/src/main/java/love/sola/netsupport/api/root/FlushCache.java
new file mode 100644
index 0000000..13b97c5
--- /dev/null
+++ b/src/main/java/love/sola/netsupport/api/root/FlushCache.java
@@ -0,0 +1,59 @@
+package love.sola.netsupport.api.root;
+
+import love.sola.netsupport.enums.Access;
+import love.sola.netsupport.enums.Attribute;
+import love.sola.netsupport.pojo.Operator;
+import love.sola.netsupport.sql.TableUser;
+import love.sola.netsupport.util.Checker;
+import love.sola.netsupport.wechat.Command;
+import me.chanjar.weixin.common.session.WxSession;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * ***********************************************
+ * Created by Sola on 2015/12/15.
+ * Don't modify this source without my agreement
+ * ***********************************************
+ */
+
+@WebServlet(name = "FlushCache", urlPatterns = "/api/root/flushcache", loadOnStartup = 52)
+public class FlushCache extends HttpServlet {
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ doGet(request, response);
+ }
+
+ @SuppressWarnings("Duplicates")
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ response.addHeader("Content-type", "text/plain;charset=utf-8");
+ PrintWriter out = response.getWriter();
+ process(request, out);
+ out.close();
+ }
+
+ private void process(HttpServletRequest request, PrintWriter out) {
+ WxSession session = Checker.isAuthorized(request, Command.LOGIN);
+ if (session == null) {
+ out.println("Unauthorized");
+ return;
+ }
+
+ Operator op = (Operator) session.getAttribute(Attribute.OPERATOR);
+ if (op.getAccess() != Access.ROOT) {
+ out.println("Unauthorized");
+ return;
+ }
+ TableUser.flushCache();
+ out.println("Flushed wechat cache");
+ }
+
+}
diff --git a/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java b/src/main/java/love/sola/netsupport/api/root/SetPassword.java
similarity index 93%
rename from src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java
rename to src/main/java/love/sola/netsupport/api/root/SetPassword.java
index 283d5da..74f1771 100644
--- a/src/main/java/love/sola/netsupport/api/admin/root/SetPassword.java
+++ b/src/main/java/love/sola/netsupport/api/root/SetPassword.java
@@ -1,4 +1,4 @@
-package love.sola.netsupport.api.admin.root;
+package love.sola.netsupport.api.root;
import love.sola.netsupport.enums.Access;
import love.sola.netsupport.enums.Attribute;
@@ -24,13 +24,14 @@ import java.io.PrintWriter;
* Don't modify this source without my agreement
* ***********************************************
*/
-@WebServlet(name = "SetPassword",urlPatterns = "/api/admin/setpass",loadOnStartup = 43)
+@WebServlet(name = "SetPassword",urlPatterns = "/api/root/setpass",loadOnStartup = 53)
public class SetPassword extends HttpServlet{
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
+ @SuppressWarnings("Duplicates")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java b/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java
similarity index 98%
rename from src/main/java/love/sola/netsupport/api/admin/TicketLog.java
rename to src/main/java/love/sola/netsupport/api/stuff/TicketLog.java
index 01abb2a..8cac701 100644
--- a/src/main/java/love/sola/netsupport/api/admin/TicketLog.java
+++ b/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java
@@ -1,4 +1,4 @@
-package love.sola.netsupport.api.admin;
+package love.sola.netsupport.api.stuff;
import com.google.gson.Gson;
import love.sola.netsupport.api.Response;
diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java b/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java
similarity index 98%
rename from src/main/java/love/sola/netsupport/api/admin/TicketLookup.java
rename to src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java
index 75e45d3..7465df1 100644
--- a/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java
+++ b/src/main/java/love/sola/netsupport/api/stuff/TicketLookup.java
@@ -1,4 +1,4 @@
-package love.sola.netsupport.api.admin;
+package love.sola.netsupport.api.stuff;
import com.google.gson.Gson;
import love.sola.netsupport.api.Response;
diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketTrack.java b/src/main/java/love/sola/netsupport/api/stuff/TicketTrack.java
similarity index 98%
rename from src/main/java/love/sola/netsupport/api/admin/TicketTrack.java
rename to src/main/java/love/sola/netsupport/api/stuff/TicketTrack.java
index 2b66838..959200b 100644
--- a/src/main/java/love/sola/netsupport/api/admin/TicketTrack.java
+++ b/src/main/java/love/sola/netsupport/api/stuff/TicketTrack.java
@@ -1,4 +1,4 @@
-package love.sola.netsupport.api.admin;
+package love.sola.netsupport.api.stuff;
import com.google.gson.Gson;
import love.sola.netsupport.api.Response;
diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java b/src/main/java/love/sola/netsupport/api/stuff/TicketUpdate.java
similarity index 98%
rename from src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java
rename to src/main/java/love/sola/netsupport/api/stuff/TicketUpdate.java
index c2494f0..e530ad3 100644
--- a/src/main/java/love/sola/netsupport/api/admin/TicketUpdate.java
+++ b/src/main/java/love/sola/netsupport/api/stuff/TicketUpdate.java
@@ -1,4 +1,4 @@
-package love.sola.netsupport.api.admin;
+package love.sola.netsupport.api.stuff;
import com.google.gson.Gson;
import love.sola.netsupport.api.Response;
diff --git a/src/main/java/love/sola/netsupport/api/ProfileModify.java b/src/main/java/love/sola/netsupport/api/user/ProfileModify.java
similarity index 97%
rename from src/main/java/love/sola/netsupport/api/ProfileModify.java
rename to src/main/java/love/sola/netsupport/api/user/ProfileModify.java
index 083b082..d51766d 100644
--- a/src/main/java/love/sola/netsupport/api/ProfileModify.java
+++ b/src/main/java/love/sola/netsupport/api/user/ProfileModify.java
@@ -1,6 +1,7 @@
-package love.sola.netsupport.api;
+package love.sola.netsupport.api.user;
import com.google.gson.Gson;
+import love.sola.netsupport.api.Response;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.enums.ISP;
import love.sola.netsupport.pojo.User;
diff --git a/src/main/java/love/sola/netsupport/api/Register.java b/src/main/java/love/sola/netsupport/api/user/Register.java
similarity index 98%
rename from src/main/java/love/sola/netsupport/api/Register.java
rename to src/main/java/love/sola/netsupport/api/user/Register.java
index a8a5da5..42db0b0 100644
--- a/src/main/java/love/sola/netsupport/api/Register.java
+++ b/src/main/java/love/sola/netsupport/api/user/Register.java
@@ -1,6 +1,7 @@
-package love.sola.netsupport.api;
+package love.sola.netsupport.api.user;
import com.google.gson.Gson;
+import love.sola.netsupport.api.Response;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.enums.ISP;
import love.sola.netsupport.pojo.User;
diff --git a/src/main/java/love/sola/netsupport/api/TicketQuery.java b/src/main/java/love/sola/netsupport/api/user/TicketQuery.java
similarity index 97%
rename from src/main/java/love/sola/netsupport/api/TicketQuery.java
rename to src/main/java/love/sola/netsupport/api/user/TicketQuery.java
index 27fcea7..c5d6685 100644
--- a/src/main/java/love/sola/netsupport/api/TicketQuery.java
+++ b/src/main/java/love/sola/netsupport/api/user/TicketQuery.java
@@ -1,6 +1,7 @@
-package love.sola.netsupport.api;
+package love.sola.netsupport.api.user;
import com.google.gson.Gson;
+import love.sola.netsupport.api.Response;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Ticket;
import love.sola.netsupport.pojo.User;
diff --git a/src/main/java/love/sola/netsupport/api/TicketSubmit.java b/src/main/java/love/sola/netsupport/api/user/TicketSubmit.java
similarity index 92%
rename from src/main/java/love/sola/netsupport/api/TicketSubmit.java
rename to src/main/java/love/sola/netsupport/api/user/TicketSubmit.java
index fbc5889..6229fab 100644
--- a/src/main/java/love/sola/netsupport/api/TicketSubmit.java
+++ b/src/main/java/love/sola/netsupport/api/user/TicketSubmit.java
@@ -1,6 +1,8 @@
-package love.sola.netsupport.api;
+package love.sola.netsupport.api.user;
import com.google.gson.Gson;
+import love.sola.netsupport.api.Response;
+import love.sola.netsupport.config.Settings;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.Ticket;
import love.sola.netsupport.pojo.User;
@@ -51,6 +53,9 @@ public class TicketSubmit extends HttpServlet {
if (desc == null || desc.isEmpty()) {
return new Response(Response.ResponseCode.PARAMETER_REQUIRED);
}
+ if (desc.length() > Settings.MAX_DESC_LENGTH) {
+ return new Response(Response.ResponseCode.LENGTH_LIMIT_EXCEEDED);
+ }
try (Session s = SQLCore.sf.openSession()) {
diff --git a/src/main/java/love/sola/netsupport/config/Settings.java b/src/main/java/love/sola/netsupport/config/Settings.java
index b4f3953..caca077 100644
--- a/src/main/java/love/sola/netsupport/config/Settings.java
+++ b/src/main/java/love/sola/netsupport/config/Settings.java
@@ -12,6 +12,8 @@ import love.sola.netsupport.sql.TableConfig;
@ToString
public class Settings {
+ public static final int MAX_DESC_LENGTH = 255;
+
public static Settings I;
static {
@@ -29,9 +31,8 @@ public class Settings {
public int Check_Spam_Cache_Expire_Time;
public int Check_Spam_Interval;
- public int User_Caching_Time;
-
public int User_Session_Max_Inactive;
+ public int User_Wechat_Cache_Expire_Time;
//No arg constructor for Yaml.loadAs
public Settings() { I = this; }
diff --git a/src/main/java/love/sola/netsupport/enums/Access.java b/src/main/java/love/sola/netsupport/enums/Access.java
index 896beaf..e2f07ad 100644
--- a/src/main/java/love/sola/netsupport/enums/Access.java
+++ b/src/main/java/love/sola/netsupport/enums/Access.java
@@ -15,6 +15,14 @@ import static love.sola.netsupport.config.Lang.lang;
public class Access {
public static final int ROOT = 0;
+ public static final int MANAGER = 1;
+ public static final int CO_MANAGER = 2;
+ public static final int LEADER = 3;
+ public static final int CO_LEADER = 4;
+ public static final int ELITE = 5;
+ public static final int ELDER = 6;
+ public static final int MEMBER = 7;
+ public static final int PRE_MEMBER = 8;
public static final int NOLOGIN = 9;
public static final Map inverseMap = new HashMap<>();
diff --git a/src/main/java/love/sola/netsupport/enums/Block.java b/src/main/java/love/sola/netsupport/enums/Block.java
index c14d370..a881d8b 100644
--- a/src/main/java/love/sola/netsupport/enums/Block.java
+++ b/src/main/java/love/sola/netsupport/enums/Block.java
@@ -25,6 +25,8 @@ public class Block {
public static final int DM_13 = 31;
public static final int DM_14 = 32;
public static final int DM_15 = 33;
+ public static final int DM_20 = 34;
+ public static final int DM_21 = 35;
public static final int XH_A = 40;
public static final int XH_B = 41;
public static final int XH_C = 42;
@@ -35,8 +37,6 @@ public class Block {
public static final int FX_4 = 53;
public static final int FX_5 = 54;
public static final int FX_6 = 55;
- public static final int DM_20 = 60;
- public static final int DM_21 = 61;
public static final Map inverseMap = new HashMap<>();
@@ -68,7 +68,7 @@ public class Block {
AVAILABLE[BM_8] = new int[]{100, 221, 321, 421, 521, 621, 721};
AVAILABLE[BM_9] = new int[]{100, 221, 321, 421, 521, 621};
AVAILABLE[BM_10] = new int[]{111, 239, 339, 439, 558, 658, 758, 858};
- AVAILABLE[BM_11] = new int[]{100, 220, 320, 420, 520, 620, 720, 820};
+ AVAILABLE[BM_11] = new int[]{100, 213, 321, 421, 521, 621, 721, 821};
AVAILABLE[DM_12] = new int[]{119, 221, 321, 421, 521, 621, 720};
AVAILABLE[DM_13] = new int[]{120, 222, 322, 422, 522, 622, 722};
AVAILABLE[DM_14] = new int[]{100, 230, 330, 430, 530, 630, 730};
diff --git a/src/main/java/love/sola/netsupport/enums/Status.java b/src/main/java/love/sola/netsupport/enums/Status.java
index 4132f4b..4083633 100644
--- a/src/main/java/love/sola/netsupport/enums/Status.java
+++ b/src/main/java/love/sola/netsupport/enums/Status.java
@@ -17,6 +17,8 @@ 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 REPORTED = 4;
+ public static final int ISP_HANDLED = 7;
public static final int SOLVED = 9;
public static final Map inverseMap = new HashMap<>();
diff --git a/src/main/java/love/sola/netsupport/pojo/User.java b/src/main/java/love/sola/netsupport/pojo/User.java
index ba9b700..bfb38c1 100644
--- a/src/main/java/love/sola/netsupport/pojo/User.java
+++ b/src/main/java/love/sola/netsupport/pojo/User.java
@@ -42,4 +42,10 @@ public class User {
private Integer room;
private Long phone;
+
+ //System Accounts
+ public static User OFFICIAL_CHINA_UNICOM_XH;
+ public static User OFFICIAL_CHINA_MOBILE_XH;
+ public static User OFFICIAL_CHINA_MOBILE_FX;
+
}
diff --git a/src/main/java/love/sola/netsupport/sql/SQLCore.java b/src/main/java/love/sola/netsupport/sql/SQLCore.java
index 75b2d2c..0277111 100644
--- a/src/main/java/love/sola/netsupport/sql/SQLCore.java
+++ b/src/main/java/love/sola/netsupport/sql/SQLCore.java
@@ -76,6 +76,7 @@ public class SQLCore {
sr = new StandardServiceRegistryBuilder().configure().build();
sf = new MetadataSources(sr).buildMetadata().buildSessionFactory();
+ TableUser.init();
TableOperator.init();
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/love/sola/netsupport/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java
index 075f24c..12eb39b 100644
--- a/src/main/java/love/sola/netsupport/sql/TableTicket.java
+++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java
@@ -63,8 +63,10 @@ public class TableTicket extends SQLCore {
@SuppressWarnings("unchecked")
public static List unsolvedByBlock(int b) {
+ if (b == 0) return unsolved();
try (Session s = SQLCore.sf.openSession()) {
return s.createCriteria(Ticket.class)
+ .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME))
.add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED))
.createCriteria(Ticket.PROPERTY_USER)
.add(Restrictions.between(User.PROPERTY_BLOCK, b * 10, (b + 1) * 10 - 1))
@@ -72,6 +74,18 @@ public class TableTicket extends SQLCore {
}
}
+ @SuppressWarnings("unchecked")
+ public static List unsolved() {
+ try (Session s = SQLCore.sf.openSession()) {
+ return s.createCriteria(Ticket.class)
+ .createAlias(Ticket.PROPERTY_USER, "u")
+ .addOrder(Order.asc("u." + User.PROPERTY_BLOCK))
+ .addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME))
+ .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED))
+ .list();
+ }
+ }
+
@SuppressWarnings("unchecked")
public static List