mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-28 15:45:04 +08:00
@@ -17,23 +17,24 @@
|
||||
|
||||
package love.sola.netsupport.api.stuff;
|
||||
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.envers.AuditReader;
|
||||
import org.hibernate.envers.query.AuditEntity;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import love.sola.netsupport.api.API;
|
||||
import love.sola.netsupport.enums.Access;
|
||||
import love.sola.netsupport.pojo.Ticket;
|
||||
import love.sola.netsupport.pojo.User;
|
||||
import love.sola.netsupport.session.WxSession;
|
||||
import love.sola.netsupport.sql.SQLCore;
|
||||
import love.sola.netsupport.sql.TableTicket;
|
||||
import love.sola.netsupport.wechat.Command;
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.envers.AuditReader;
|
||||
import org.hibernate.envers.query.AuditEntity;
|
||||
import org.hibernate.proxy.HibernateProxy;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Sola {@literal <dev@sola.love>}
|
||||
@@ -48,6 +49,7 @@ public class TicketLog extends API {
|
||||
authorize = Command.LOGIN;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
protected Object process(HttpServletRequest req, WxSession session) throws Exception {
|
||||
int first;
|
||||
@@ -61,13 +63,14 @@ public class TicketLog extends API {
|
||||
end = DateUtils.addDays(end, 1);
|
||||
try (Session s = SQLCore.sf.openSession()) {
|
||||
AuditReader reader = TableTicket.getAuditReader(s);
|
||||
return reader.createQuery()
|
||||
.forRevisionsOfEntity(Ticket.class, false, true)
|
||||
.addOrder(AuditEntity.revisionNumber().desc())
|
||||
.add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime()))
|
||||
.setFirstResult(first)
|
||||
.setMaxResults(limit)
|
||||
.getResultList();
|
||||
List<Object[]> resultList = reader.createQuery()
|
||||
.forRevisionsOfEntity(Ticket.class, false, true)
|
||||
.addOrder(AuditEntity.revisionNumber().desc())
|
||||
.add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime()))
|
||||
.setFirstResult(first)
|
||||
.setMaxResults(limit)
|
||||
.getResultList();
|
||||
return TableTicket.initializeTickets(resultList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
package love.sola.netsupport.api.stuff;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import love.sola.netsupport.api.API;
|
||||
import love.sola.netsupport.api.Error;
|
||||
import love.sola.netsupport.enums.Access;
|
||||
@@ -26,6 +24,9 @@ import love.sola.netsupport.session.WxSession;
|
||||
import love.sola.netsupport.sql.TableTicket;
|
||||
import love.sola.netsupport.wechat.Command;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Sola {@literal <dev@sola.love>}
|
||||
*/
|
||||
@@ -43,7 +44,8 @@ public class TicketTrack extends API {
|
||||
if (tid == null) {
|
||||
return Error.PARAMETER_REQUIRED;
|
||||
}
|
||||
return TableTicket.track(Integer.parseInt(tid));
|
||||
List<Object[]> results = TableTicket.track(Integer.parseInt(tid));
|
||||
return TableTicket.initializeTickets(results);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
package love.sola.netsupport.sql;
|
||||
|
||||
import love.sola.netsupport.pojo.Operator;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Order;
|
||||
import org.hibernate.criterion.Projections;
|
||||
@@ -29,6 +30,7 @@ import java.util.List;
|
||||
import love.sola.netsupport.enums.Status;
|
||||
import love.sola.netsupport.pojo.Ticket;
|
||||
import love.sola.netsupport.pojo.User;
|
||||
import org.hibernate.proxy.HibernateProxy;
|
||||
|
||||
/**
|
||||
* @author Sola {@literal <dev@sola.love>}
|
||||
@@ -114,4 +116,26 @@ public class TableTicket extends SQLCore {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* this is a hacky method to initialize all related entities of ticket
|
||||
*/
|
||||
public static List<Object[]> initializeTickets(List<Object[]> resultList) {
|
||||
for (Object[] result : resultList) {
|
||||
Ticket value = ((Ticket) result[0]);
|
||||
HibernateProxy proxiedUser = (HibernateProxy) value.getUser();
|
||||
if (proxiedUser != null) {
|
||||
User unproxiedUser = ((User) proxiedUser.getHibernateLazyInitializer()
|
||||
.getImplementation());
|
||||
value.setUser(unproxiedUser);
|
||||
}
|
||||
HibernateProxy proxiedOperator = (HibernateProxy) value.getOperator();
|
||||
if (proxiedOperator != null) {
|
||||
Operator unproxiedOperator = ((Operator) proxiedOperator.getHibernateLazyInitializer()
|
||||
.getImplementation());
|
||||
value.setOperator(unproxiedOperator);
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user