mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-28 23:55:04 +08:00
dashboard feature
This commit is contained in:
63
src/main/java/love/sola/netsupport/api/admin/DashBoard.java
Normal file
63
src/main/java/love/sola/netsupport/api/admin/DashBoard.java
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
package love.sola.netsupport.api.admin;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import love.sola.netsupport.sql.SQLCore;
|
||||||
|
import love.sola.netsupport.util.Checker;
|
||||||
|
import love.sola.netsupport.wechat.Command;
|
||||||
|
import love.sola.netsupport.wechat.WechatSession;
|
||||||
|
import me.chanjar.weixin.common.session.InternalSession;
|
||||||
|
import me.chanjar.weixin.common.session.WxSession;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.annotation.WebServlet;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ***********************************************
|
||||||
|
* Created by Sola on 2015/12/15.
|
||||||
|
* Don't modify this source without my agreement
|
||||||
|
* ***********************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
@WebServlet(name = "dashboard", urlPatterns = "/api/admin/dashboard", loadOnStartup = 41)
|
||||||
|
public class DashBoard extends HttpServlet {
|
||||||
|
|
||||||
|
private Gson gson = SQLCore.gson;
|
||||||
|
|
||||||
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
doGet(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
request.setCharacterEncoding("utf-8");
|
||||||
|
response.setCharacterEncoding("utf-8");
|
||||||
|
response.addHeader("Content-type", "text/plain;charset=utf-8");
|
||||||
|
PrintWriter out = response.getWriter();
|
||||||
|
print(request, out);
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void print(HttpServletRequest request, PrintWriter out) {
|
||||||
|
WxSession session = Checker.isAuthorized(request, Command.LOGIN);
|
||||||
|
if (session == null) {
|
||||||
|
out.println("Unauthorized");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (InternalSession s : WechatSession.list()) {
|
||||||
|
out.println("=====" + s.getIdInternal() + "=====");
|
||||||
|
WxSession ws = s.getSession();
|
||||||
|
Enumeration<String> e = ws.getAttributeNames();
|
||||||
|
while (e.hasMoreElements()) {
|
||||||
|
String key = e.nextElement();
|
||||||
|
out.println(key + ": " + ws.getAttribute(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package love.sola.netsupport.pojo;
|
package love.sola.netsupport.pojo;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.Expose;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
@@ -17,6 +19,7 @@ import javax.persistence.Table;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@ToString(exclude = "password")
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Entity
|
@Entity
|
||||||
@@ -33,9 +36,11 @@ public class Operator {
|
|||||||
@Column(name = "access", nullable = false, insertable = false, updatable = false)
|
@Column(name = "access", nullable = false, insertable = false, updatable = false)
|
||||||
private Integer access;
|
private Integer access;
|
||||||
@Column(name = "wechat", insertable = false, updatable = false)
|
@Column(name = "wechat", insertable = false, updatable = false)
|
||||||
|
@Expose(serialize = false)
|
||||||
private String wechat;
|
private String wechat;
|
||||||
private Integer block;
|
private Integer block;
|
||||||
private Integer week;
|
private Integer week;
|
||||||
|
@Expose(serialize = false)
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package love.sola.netsupport.pojo;
|
package love.sola.netsupport.pojo;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.Expose;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -34,6 +35,7 @@ public class User {
|
|||||||
private ISP isp;
|
private ISP isp;
|
||||||
@Column(name = "netaccount")
|
@Column(name = "netaccount")
|
||||||
private String netAccount;
|
private String netAccount;
|
||||||
|
@Expose(serialize = false)
|
||||||
@Column(name = "wechat")
|
@Column(name = "wechat")
|
||||||
private String wechatId;
|
private String wechatId;
|
||||||
private Integer block;
|
private Integer block;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package love.sola.netsupport.sql;
|
package love.sola.netsupport.sql;
|
||||||
|
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
|
import com.google.gson.annotations.Expose;
|
||||||
import love.sola.netsupport.enums.ISP;
|
import love.sola.netsupport.enums.ISP;
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.boot.MetadataSources;
|
import org.hibernate.boot.MetadataSources;
|
||||||
@@ -21,6 +22,30 @@ public class SQLCore {
|
|||||||
|
|
||||||
public static DataSource ds;
|
public static DataSource ds;
|
||||||
public static Gson gson = new GsonBuilder()
|
public static Gson gson = new GsonBuilder()
|
||||||
|
.addSerializationExclusionStrategy(new ExclusionStrategy() {
|
||||||
|
@Override
|
||||||
|
public boolean shouldSkipField(FieldAttributes fieldAttributes) {
|
||||||
|
final Expose expose = fieldAttributes.getAnnotation(Expose.class);
|
||||||
|
return expose != null && !expose.serialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldSkipClass(Class<?> aClass) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.addDeserializationExclusionStrategy(new ExclusionStrategy() {
|
||||||
|
@Override
|
||||||
|
public boolean shouldSkipField(FieldAttributes fieldAttributes) {
|
||||||
|
final Expose expose = fieldAttributes.getAnnotation(Expose.class);
|
||||||
|
return expose != null && !expose.deserialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldSkipClass(Class<?> aClass) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()))
|
.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()))
|
||||||
.registerTypeAdapter(Date.class, (JsonSerializer<Date>) (src, typeOfSrc, context) -> new JsonPrimitive(src.getTime()))
|
.registerTypeAdapter(Date.class, (JsonSerializer<Date>) (src, typeOfSrc, context) -> new JsonPrimitive(src.getTime()))
|
||||||
.registerTypeAdapter(ISP.class, (JsonDeserializer<ISP>) (json, typeOfT, context) -> ISP.fromId(json.getAsJsonPrimitive().getAsInt()))
|
.registerTypeAdapter(ISP.class, (JsonDeserializer<ISP>) (json, typeOfT, context) -> ISP.fromId(json.getAsJsonPrimitive().getAsInt()))
|
||||||
|
|||||||
Reference in New Issue
Block a user