mirror of
				https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
				synced 2025-10-31 02:16:18 +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.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 <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) { | ||||
| 		String t = req.getParameter("token"); | ||||
| 		if (t == null || t.isEmpty()) return null; | ||||
|   | ||||
| @@ -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); | ||||
| 	} | ||||
|  | ||||
| } | ||||
|   | ||||
							
								
								
									
										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.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; | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sola
					Sola