mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-29 08:05:04 +08:00
90 lines
3.4 KiB
Java
90 lines
3.4 KiB
Java
package love.sola.netsupport.api;
|
|
|
|
import com.google.gson.Gson;
|
|
import love.sola.netsupport.enums.Attribute;
|
|
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.Criteria;
|
|
import org.hibernate.HibernateException;
|
|
import org.hibernate.Session;
|
|
import org.hibernate.criterion.Order;
|
|
import org.hibernate.criterion.Restrictions;
|
|
|
|
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/4.
|
|
* Don't modify this source without my agreement
|
|
* ***********************************************
|
|
*/
|
|
@WebServlet(name = "TicketQuery", urlPatterns = "/api/ticketquery", loadOnStartup = 24)
|
|
public class TicketQuery 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/json;charset=utf-8");
|
|
PrintWriter out = response.getWriter();
|
|
String json = gson.toJson(query(request));
|
|
out.println(ParseUtil.parseJsonP(request, json));
|
|
out.close();
|
|
}
|
|
|
|
private Response query(HttpServletRequest request) {
|
|
try (Session s = SQLCore.sf.openSession()) {
|
|
|
|
WxSession session = Checker.isAuthorized(request, Command.QUERY);
|
|
if (session == null) {
|
|
return new Response(Response.ResponseCode.UNAUTHORIZED);
|
|
}
|
|
User u = (User) session.getAttribute(Attribute.USER);
|
|
if (u == null) return new Response(Response.ResponseCode.UNAUTHORIZED);
|
|
|
|
Criteria c = s.createCriteria(Ticket.class);
|
|
int first = request.getParameter("offset") == null ? 0 : Integer.parseInt(request.getParameter("offset"));
|
|
int limit = request.getParameter("limit") == null ? 5 : Integer.parseInt(request.getParameter("limit"));
|
|
c.setFirstResult(first);
|
|
c.setMaxResults(limit);
|
|
c.addOrder(Order.desc(Ticket.PROPERTY_SUBMIT_TIME));
|
|
c.add(Restrictions.eq(Ticket.PROPERTY_USER, u));
|
|
if (request.getParameter("status") != null) {
|
|
c.add(Restrictions.eq(Ticket.PROPERTY_STATUS, Integer.parseInt(request.getParameter("status"))));
|
|
} else if (request.getParameter("statusl") != null && request.getParameter("statush") != null) {
|
|
c.add(Restrictions.between(Ticket.PROPERTY_STATUS,
|
|
Integer.parseInt(request.getParameter("statusl")),
|
|
Integer.parseInt(request.getParameter("statush"))
|
|
));
|
|
}
|
|
return new Response(Response.ResponseCode.OK, c.list());
|
|
} catch (NumberFormatException e) {
|
|
return new Response(Response.ResponseCode.ILLEGAL_PARAMETER);
|
|
} catch (HibernateException e) {
|
|
e.printStackTrace();
|
|
return new Response(Response.ResponseCode.DATABASE_ERROR, e);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new Response(Response.ResponseCode.INTERNAL_ERROR, e);
|
|
}
|
|
}
|
|
|
|
}
|