From 402dc2985e3a76a54b7ef6433a4916fde4ebeaa0 Mon Sep 17 00:00:00 2001 From: Sola Date: Sun, 22 May 2016 16:28:15 +0800 Subject: [PATCH] add toolscheck api --- .../java/love/sola/netsupport/api/API.java | 19 ++++ .../love/sola/netsupport/api/APIRouter.java | 5 + .../sola/netsupport/api/stuff/TicketLog.java | 5 - .../sola/netsupport/api/stuff/ToolsCheck.java | 104 ++++++++++++++++++ .../love/sola/netsupport/pojo/ToolsCheck.java | 12 +- src/main/resources/hibernate.cfg.xml | 1 + 6 files changed, 137 insertions(+), 9 deletions(-) create mode 100644 src/main/java/love/sola/netsupport/api/stuff/ToolsCheck.java diff --git a/src/main/java/love/sola/netsupport/api/API.java b/src/main/java/love/sola/netsupport/api/API.java index b8d524c..91acea3 100644 --- a/src/main/java/love/sola/netsupport/api/API.java +++ b/src/main/java/love/sola/netsupport/api/API.java @@ -20,8 +20,11 @@ package love.sola.netsupport.api; import love.sola.netsupport.enums.Access; import love.sola.netsupport.session.WxSession; import love.sola.netsupport.wechat.Command; +import org.apache.commons.lang3.time.DateUtils; import javax.servlet.http.HttpServletRequest; +import java.util.Calendar; +import java.util.Date; /** * @author Sola {@literal } @@ -43,4 +46,20 @@ public abstract class API { '}'; } + public static String getParameterWithDefault(String obj, String def) { + return obj == null ? def : obj; + } + + public static Date getParameterAsDate(String obj, Date def) { + return obj == null ? def : new Date(Long.valueOf(obj)); + } + + public static Date getToday() { + return DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH); + } + + public static Date getDay(Date date) { + return DateUtils.truncate(date, Calendar.DAY_OF_MONTH); + } + } diff --git a/src/main/java/love/sola/netsupport/api/APIRouter.java b/src/main/java/love/sola/netsupport/api/APIRouter.java index e9eb696..a74b4e7 100644 --- a/src/main/java/love/sola/netsupport/api/APIRouter.java +++ b/src/main/java/love/sola/netsupport/api/APIRouter.java @@ -131,6 +131,11 @@ public class APIRouter extends HttpServlet { } } + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + doGet(req, resp); + } + private static WxSession getSession(HttpServletRequest req) { String t = req.getParameter("token"); if (t == null || t.isEmpty()) return null; diff --git a/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java b/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java index 07dbd24..fe8b3db 100644 --- a/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java +++ b/src/main/java/love/sola/netsupport/api/stuff/TicketLog.java @@ -31,7 +31,6 @@ import org.hibernate.envers.query.AuditEntity; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.Date; /** @@ -70,8 +69,4 @@ public class TicketLog extends API { } } - private static Date getToday() { - return DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH); - } - } diff --git a/src/main/java/love/sola/netsupport/api/stuff/ToolsCheck.java b/src/main/java/love/sola/netsupport/api/stuff/ToolsCheck.java new file mode 100644 index 0000000..bc28376 --- /dev/null +++ b/src/main/java/love/sola/netsupport/api/stuff/ToolsCheck.java @@ -0,0 +1,104 @@ +/* + * This file is part of WechatTicketSystem. + * + * WechatTicketSystem is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * WechatTicketSystem is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with WechatTicketSystem. If not, see . + */ + +package love.sola.netsupport.api.stuff; + +import love.sola.netsupport.api.API; +import love.sola.netsupport.api.Error; +import love.sola.netsupport.enums.Access; +import love.sola.netsupport.enums.Attribute; +import love.sola.netsupport.pojo.Operator; +import love.sola.netsupport.session.WxSession; +import love.sola.netsupport.sql.SQLCore; +import love.sola.netsupport.wechat.Command; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.criterion.Restrictions; +import org.hibernate.type.IntegerType; +import org.hibernate.type.Type; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; + +/** + * @author Sola + */ +public class ToolsCheck extends API { + + public ToolsCheck() { + url = "/admin/toolscheck"; + access = Access.MEMBER; + authorize = Command.LOGIN; + } + + @Override + protected Object process(HttpServletRequest req, WxSession session) throws Exception { + if (req.getMethod().equals("GET")) { + return query(req, session); + } else if (req.getMethod().equals("POST")) { + return submit(req, session); + } + return null; + } + + private Object submit(HttpServletRequest req, WxSession session) { + Operator op = session.getAttribute(Attribute.OPERATOR); + int status = Integer.valueOf(getParameterWithDefault(req.getParameter("status"), "0")); + String remark = req.getParameter("remark"); + if (status != 0 && StringUtils.isBlank(remark)) { + return Error.PARAMETER_REQUIRED; + } + try (Session s = SQLCore.sf.openSession()) { + s.beginTransaction(); + s.save(new love.sola.netsupport.pojo.ToolsCheck( + null, + op, + op.getBlock(), + new Date(), + status, + remark + ) + ); + s.getTransaction().commit(); + return Error.OK; + } + } + + private Object query(HttpServletRequest req, WxSession session) { + int status = Integer.valueOf(getParameterWithDefault(req.getParameter("status"), "0")); + Date after = getParameterAsDate(req.getParameter("after"), getToday()); + Date before = getParameterAsDate(req.getParameter("before"), getToday()); + before = DateUtils.addDays(before, 1); + int block = Integer.valueOf(getParameterWithDefault(req.getParameter("block"), "0")); + try (Session s = SQLCore.sf.openSession()) { + Criteria query = s.createCriteria(love.sola.netsupport.pojo.ToolsCheck.class); + query.add( + Restrictions.sqlRestriction( + "{alias}.status & ? = ?", + new Object[]{status, status}, + new Type[]{IntegerType.INSTANCE, IntegerType.INSTANCE} + ) + ); + query.add(Restrictions.between("checkTime", after, before)); + if (block != 0) query.add(Restrictions.eq("block", block)); + return query.list(); + } + } + +} diff --git a/src/main/java/love/sola/netsupport/pojo/ToolsCheck.java b/src/main/java/love/sola/netsupport/pojo/ToolsCheck.java index 8b55d87..aa1ffe4 100644 --- a/src/main/java/love/sola/netsupport/pojo/ToolsCheck.java +++ b/src/main/java/love/sola/netsupport/pojo/ToolsCheck.java @@ -3,6 +3,7 @@ package love.sola.netsupport.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; import javax.persistence.*; @@ -17,7 +18,7 @@ import java.util.Date; @Entity @Table(name = "toolschk", indexes = { @Index(columnList = "block,chktime,status"), - @Index(columnList = "block,chktime") + @Index(columnList = "chktime,status") }) @DynamicInsert public class ToolsCheck { @@ -26,11 +27,14 @@ public class ToolsCheck { @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @ManyToOne(optional = false) - @JoinColumn(name = "opsid") - private User operator; + @JoinColumn(name = "opsid", nullable = false) + private Operator operator; + @Column(nullable = false) private Integer block; - @Column(name = "chktime") + @Column(name = "chktime", nullable = false) private Date checkTime = new Date(); + @ColumnDefault("0") private Integer status = 0; + private String remark; } diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml index de389c1..8952ade 100644 --- a/src/main/resources/hibernate.cfg.xml +++ b/src/main/resources/hibernate.cfg.xml @@ -40,6 +40,7 @@ +