mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-29 08:05:04 +08:00
add toolscheck api
This commit is contained in:
@@ -20,8 +20,11 @@ package love.sola.netsupport.api;
|
|||||||
import love.sola.netsupport.enums.Access;
|
import love.sola.netsupport.enums.Access;
|
||||||
import love.sola.netsupport.session.WxSession;
|
import love.sola.netsupport.session.WxSession;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sola {@literal <dev@sola.love>}
|
* @author Sola {@literal <dev@sola.love>}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
private static WxSession getSession(HttpServletRequest req) {
|
||||||
String t = req.getParameter("token");
|
String t = req.getParameter("token");
|
||||||
if (t == null || t.isEmpty()) return null;
|
if (t == null || t.isEmpty()) return null;
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import org.hibernate.envers.query.AuditEntity;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
104
src/main/java/love/sola/netsupport/api/stuff/ToolsCheck.java
Normal file
104
src/main/java/love/sola/netsupport/api/stuff/ToolsCheck.java
Normal file
@@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package love.sola.netsupport.pojo;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.hibernate.annotations.ColumnDefault;
|
||||||
import org.hibernate.annotations.DynamicInsert;
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
@@ -17,7 +18,7 @@ import java.util.Date;
|
|||||||
@Entity
|
@Entity
|
||||||
@Table(name = "toolschk", indexes = {
|
@Table(name = "toolschk", indexes = {
|
||||||
@Index(columnList = "block,chktime,status"),
|
@Index(columnList = "block,chktime,status"),
|
||||||
@Index(columnList = "block,chktime")
|
@Index(columnList = "chktime,status")
|
||||||
})
|
})
|
||||||
@DynamicInsert
|
@DynamicInsert
|
||||||
public class ToolsCheck {
|
public class ToolsCheck {
|
||||||
@@ -26,11 +27,14 @@ public class ToolsCheck {
|
|||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Integer id;
|
private Integer id;
|
||||||
@ManyToOne(optional = false)
|
@ManyToOne(optional = false)
|
||||||
@JoinColumn(name = "opsid")
|
@JoinColumn(name = "opsid", nullable = false)
|
||||||
private User operator;
|
private Operator operator;
|
||||||
|
@Column(nullable = false)
|
||||||
private Integer block;
|
private Integer block;
|
||||||
@Column(name = "chktime")
|
@Column(name = "chktime", nullable = false)
|
||||||
private Date checkTime = new Date();
|
private Date checkTime = new Date();
|
||||||
|
@ColumnDefault("0")
|
||||||
private Integer status = 0;
|
private Integer status = 0;
|
||||||
|
private String remark;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
<mapping class="love.sola.netsupport.pojo.User"/>
|
<mapping class="love.sola.netsupport.pojo.User"/>
|
||||||
<mapping class="love.sola.netsupport.pojo.Ticket"/>
|
<mapping class="love.sola.netsupport.pojo.Ticket"/>
|
||||||
<mapping class="love.sola.netsupport.pojo.Operator"/>
|
<mapping class="love.sola.netsupport.pojo.Operator"/>
|
||||||
|
<mapping class="love.sola.netsupport.pojo.ToolsCheck"/>
|
||||||
|
|
||||||
</session-factory>
|
</session-factory>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user