dashboard feature

This commit is contained in:
Sola
2015-12-15 15:46:37 +08:00
parent 13fb43f8d3
commit 17628ce1e1
4 changed files with 95 additions and 0 deletions

View 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));
}
}
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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()))