diff --git a/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java b/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java index 3e20850..f5bf5c3 100644 --- a/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java +++ b/src/main/java/love/sola/netsupport/api/admin/TicketLookup.java @@ -1,7 +1,26 @@ package love.sola.netsupport.api.admin; +import com.google.gson.Gson; +import love.sola.netsupport.api.Response; +import love.sola.netsupport.enums.Attribute; +import love.sola.netsupport.pojo.Operator; +import love.sola.netsupport.pojo.Ticket; +import love.sola.netsupport.sql.SQLCore; +import love.sola.netsupport.sql.TableTicket; +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 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; +import java.util.List; /** * *********************************************** @@ -12,7 +31,46 @@ import javax.servlet.http.HttpServlet; @WebServlet(name = "TicketLookup", urlPatterns = "/api/admin/ticketlookup", loadOnStartup = 24) public class TicketLookup 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(lookup(request)); + out.println(ParseUtil.parseJsonP(request, json)); + out.close(); + } + + private Response lookup(HttpServletRequest request) { + WxSession session = Checker.isAuthorized(request, Command.LOGIN); + if (session == null) { + return new Response(Response.ResponseCode.UNAUTHORIZED); + } + try { + Operator op = (Operator) session.getAttribute(Attribute.OPERATOR); + int block; + if (request.getParameter("block") != null) { + block = Integer.parseInt(request.getParameter("block")); + } else { + block = op.getBlock(); + } + List list = TableTicket.unsolvedByBlock(block); + return new Response(Response.ResponseCode.OK, list); + } 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/sql/TableTicket.java b/src/main/java/love/sola/netsupport/sql/TableTicket.java index b684126..05b1054 100644 --- a/src/main/java/love/sola/netsupport/sql/TableTicket.java +++ b/src/main/java/love/sola/netsupport/sql/TableTicket.java @@ -63,6 +63,7 @@ public class TableTicket extends SQLCore { public static List unsolvedByBlock(int b) { try (Session s = SQLCore.sf.openSession()) { return s.createCriteria(Ticket.class) + .add(Restrictions.ne(Ticket.PROPERTY_STATUS, Status.SOLVED)) .createCriteria(Ticket.PROPERTY_USER) .add(Restrictions.between(User.PROPERTY_BLOCK, b * 10, (b + 1) * 10 - 1)) .list();