mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-29 08:05:04 +08:00
@@ -17,23 +17,24 @@
|
|||||||
|
|
||||||
package love.sola.netsupport.api.stuff;
|
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.api.API;
|
||||||
import love.sola.netsupport.enums.Access;
|
import love.sola.netsupport.enums.Access;
|
||||||
import love.sola.netsupport.pojo.Ticket;
|
import love.sola.netsupport.pojo.Ticket;
|
||||||
|
import love.sola.netsupport.pojo.User;
|
||||||
import love.sola.netsupport.session.WxSession;
|
import love.sola.netsupport.session.WxSession;
|
||||||
import love.sola.netsupport.sql.SQLCore;
|
import love.sola.netsupport.sql.SQLCore;
|
||||||
import love.sola.netsupport.sql.TableTicket;
|
import love.sola.netsupport.sql.TableTicket;
|
||||||
import love.sola.netsupport.wechat.Command;
|
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>}
|
* @author Sola {@literal <dev@sola.love>}
|
||||||
@@ -48,6 +49,7 @@ public class TicketLog extends API {
|
|||||||
authorize = Command.LOGIN;
|
authorize = Command.LOGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
protected Object process(HttpServletRequest req, WxSession session) throws Exception {
|
protected Object process(HttpServletRequest req, WxSession session) throws Exception {
|
||||||
int first;
|
int first;
|
||||||
@@ -61,13 +63,14 @@ public class TicketLog extends API {
|
|||||||
end = DateUtils.addDays(end, 1);
|
end = DateUtils.addDays(end, 1);
|
||||||
try (Session s = SQLCore.sf.openSession()) {
|
try (Session s = SQLCore.sf.openSession()) {
|
||||||
AuditReader reader = TableTicket.getAuditReader(s);
|
AuditReader reader = TableTicket.getAuditReader(s);
|
||||||
return reader.createQuery()
|
List<Object[]> resultList = reader.createQuery()
|
||||||
.forRevisionsOfEntity(Ticket.class, false, true)
|
.forRevisionsOfEntity(Ticket.class, false, true)
|
||||||
.addOrder(AuditEntity.revisionNumber().desc())
|
.addOrder(AuditEntity.revisionNumber().desc())
|
||||||
.add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime()))
|
.add(AuditEntity.revisionProperty("timestamp").between(start.getTime(), end.getTime()))
|
||||||
.setFirstResult(first)
|
.setFirstResult(first)
|
||||||
.setMaxResults(limit)
|
.setMaxResults(limit)
|
||||||
.getResultList();
|
.getResultList();
|
||||||
|
return TableTicket.initializeTickets(resultList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,6 @@
|
|||||||
|
|
||||||
package love.sola.netsupport.api.stuff;
|
package love.sola.netsupport.api.stuff;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
import love.sola.netsupport.api.API;
|
import love.sola.netsupport.api.API;
|
||||||
import love.sola.netsupport.api.Error;
|
import love.sola.netsupport.api.Error;
|
||||||
import love.sola.netsupport.enums.Access;
|
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.sql.TableTicket;
|
||||||
import love.sola.netsupport.wechat.Command;
|
import love.sola.netsupport.wechat.Command;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sola {@literal <dev@sola.love>}
|
* @author Sola {@literal <dev@sola.love>}
|
||||||
*/
|
*/
|
||||||
@@ -43,7 +44,8 @@ public class TicketTrack extends API {
|
|||||||
if (tid == null) {
|
if (tid == null) {
|
||||||
return Error.PARAMETER_REQUIRED;
|
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;
|
package love.sola.netsupport.sql;
|
||||||
|
|
||||||
|
import love.sola.netsupport.pojo.Operator;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.criterion.Order;
|
import org.hibernate.criterion.Order;
|
||||||
import org.hibernate.criterion.Projections;
|
import org.hibernate.criterion.Projections;
|
||||||
@@ -29,6 +30,7 @@ import java.util.List;
|
|||||||
import love.sola.netsupport.enums.Status;
|
import love.sola.netsupport.enums.Status;
|
||||||
import love.sola.netsupport.pojo.Ticket;
|
import love.sola.netsupport.pojo.Ticket;
|
||||||
import love.sola.netsupport.pojo.User;
|
import love.sola.netsupport.pojo.User;
|
||||||
|
import org.hibernate.proxy.HibernateProxy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sola {@literal <dev@sola.love>}
|
* @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