mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
synced 2025-10-29 08:05:04 +08:00
configuration via sql (not finished yet)
This commit is contained in:
@@ -3,7 +3,7 @@ package love.sola.netsupport.api;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import love.sola.netsupport.enums.ResponseCode;
|
import love.sola.netsupport.enums.ResponseCode;
|
||||||
import love.sola.netsupport.pojo.User;
|
import love.sola.netsupport.pojo.User;
|
||||||
import love.sola.netsupport.sql.SQLQuery;
|
import love.sola.netsupport.sql.TableUser;
|
||||||
|
|
||||||
import javax.servlet.ServletConfig;
|
import javax.servlet.ServletConfig;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
@@ -46,7 +46,7 @@ public class GetUser extends HttpServlet {
|
|||||||
out.println(gson.toJson(new Response(ResponseCode.PARAMETER_REQUIRED)));
|
out.println(gson.toJson(new Response(ResponseCode.PARAMETER_REQUIRED)));
|
||||||
} else if (id != null) {
|
} else if (id != null) {
|
||||||
try {
|
try {
|
||||||
User u = SQLQuery.getUserById(Integer.parseInt(id));
|
User u = TableUser.getUserById(Integer.parseInt(id));
|
||||||
if (u == null)
|
if (u == null)
|
||||||
out.println(gson.toJson(new Response(ResponseCode.USER_NOT_FOUND)));
|
out.println(gson.toJson(new Response(ResponseCode.USER_NOT_FOUND)));
|
||||||
else
|
else
|
||||||
@@ -55,7 +55,7 @@ public class GetUser extends HttpServlet {
|
|||||||
out.println(gson.toJson(new Response(ResponseCode.ILLEGAL_PARAMETER)));
|
out.println(gson.toJson(new Response(ResponseCode.ILLEGAL_PARAMETER)));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
User u = SQLQuery.getUserByName(name);
|
User u = TableUser.getUserByName(name);
|
||||||
if (u == null)
|
if (u == null)
|
||||||
out.println(gson.toJson(new Response(ResponseCode.USER_NOT_FOUND)));
|
out.println(gson.toJson(new Response(ResponseCode.USER_NOT_FOUND)));
|
||||||
else
|
else
|
||||||
|
|||||||
32
src/love/sola/netsupport/sql/SQLCore.java
Normal file
32
src/love/sola/netsupport/sql/SQLCore.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package love.sola.netsupport.sql;
|
||||||
|
|
||||||
|
import javax.naming.InitialContext;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ***********************************************
|
||||||
|
* Created by Sola on 2014/8/20.
|
||||||
|
* Don't modify this source without my agreement
|
||||||
|
* ***********************************************
|
||||||
|
*/
|
||||||
|
public class SQLCore {
|
||||||
|
|
||||||
|
public static DataSource ds;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
InitialContext ic = new InitialContext();
|
||||||
|
ds = (DataSource) ic.lookup("java:comp/env/jdbc/netsupport");
|
||||||
|
ds.setLoginTimeout(3);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void free(Connection conn) {
|
||||||
|
if (conn != null) try { conn.close(); } catch (SQLException e) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
14
src/love/sola/netsupport/sql/TableConfig.java
Normal file
14
src/love/sola/netsupport/sql/TableConfig.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package love.sola.netsupport.sql;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ***********************************************
|
||||||
|
* Created by Sola on 2015/11/10.
|
||||||
|
* Don't modify this source without my agreement
|
||||||
|
* ***********************************************
|
||||||
|
*/
|
||||||
|
public class TableConfig {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
package love.sola.netsupport.sql;
|
package love.sola.netsupport.sql;
|
||||||
|
|
||||||
import love.sola.netsupport.pojo.User;
|
|
||||||
import love.sola.netsupport.enums.ISPType;
|
import love.sola.netsupport.enums.ISPType;
|
||||||
|
import love.sola.netsupport.pojo.User;
|
||||||
|
|
||||||
import javax.naming.InitialContext;
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -12,11 +10,11 @@ import java.sql.SQLException;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* ***********************************************
|
* ***********************************************
|
||||||
* Created by Sola on 2014/8/20.
|
* Created by Sola on 2015/11/10.
|
||||||
* Don't modify this source without my agreement
|
* Don't modify this source without my agreement
|
||||||
* ***********************************************
|
* ***********************************************
|
||||||
*/
|
*/
|
||||||
public class SQLQuery {
|
public class TableUser extends SQLCore {
|
||||||
|
|
||||||
public static final String COLUMN_ID = "id";
|
public static final String COLUMN_ID = "id";
|
||||||
public static final String COLUMN_NAME = "name";
|
public static final String COLUMN_NAME = "name";
|
||||||
@@ -25,22 +23,6 @@ public class SQLQuery {
|
|||||||
public static final String COLUMN_ISP = "isp";
|
public static final String COLUMN_ISP = "isp";
|
||||||
public static final String COLUMN_WECHAT = "wechat";
|
public static final String COLUMN_WECHAT = "wechat";
|
||||||
|
|
||||||
public static DataSource ds;
|
|
||||||
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
InitialContext ic = new InitialContext();
|
|
||||||
ds = (DataSource) ic.lookup("java:comp/env/jdbc/netsupport");
|
|
||||||
ds.setLoginTimeout(3);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void free(Connection conn) {
|
|
||||||
if (conn != null) try { conn.close(); } catch (SQLException e) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static User getUserByName(String name) {
|
public static User getUserByName(String name) {
|
||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
@@ -57,9 +39,7 @@ public class SQLQuery {
|
|||||||
rs.getString(COLUMN_WECHAT));
|
rs.getString(COLUMN_WECHAT));
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
} finally {
|
} finally { free(conn); }
|
||||||
free(conn);
|
|
||||||
}
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,9 +59,7 @@ public class SQLQuery {
|
|||||||
rs.getString(COLUMN_WECHAT));
|
rs.getString(COLUMN_WECHAT));
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
} finally {
|
} finally { free(conn); }
|
||||||
free(conn);
|
|
||||||
}
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package love.sola.netsupport.wechat;
|
package love.sola.netsupport.wechat;
|
||||||
|
|
||||||
import love.sola.netsupport.wechat.handler.RegisterHandler;
|
|
||||||
import me.chanjar.weixin.common.util.StringUtils;
|
import me.chanjar.weixin.common.util.StringUtils;
|
||||||
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
|
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
|
||||||
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
|
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
|
||||||
@@ -47,7 +46,6 @@ public class WxMpServlet extends HttpServlet {
|
|||||||
wxMpService = new WxMpServiceImpl();
|
wxMpService = new WxMpServiceImpl();
|
||||||
wxMpService.setWxMpConfigStorage(config);
|
wxMpService.setWxMpConfigStorage(config);
|
||||||
wxMpMessageRouter = new WxMpMessageRouter(wxMpService);
|
wxMpMessageRouter = new WxMpMessageRouter(wxMpService);
|
||||||
wxMpMessageRouter.rule().async(false).rContent("^").handler(new RegisterHandler()).end();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package love.sola.netsupport.wechat.handler;
|
|||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.common.session.WxSessionManager;
|
import me.chanjar.weixin.common.session.WxSessionManager;
|
||||||
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
|
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
|
||||||
|
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
|
||||||
import me.chanjar.weixin.mp.api.WxMpService;
|
import me.chanjar.weixin.mp.api.WxMpService;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
|
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
|
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
|
||||||
@@ -17,6 +18,11 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class RegisterHandler implements WxMpMessageHandler {
|
public class RegisterHandler implements WxMpMessageHandler {
|
||||||
|
|
||||||
|
|
||||||
|
public RegisterHandler(WxMpMessageRouter router) {
|
||||||
|
router.rule().async(false).rContent("^").handler(this).end();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager)
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager)
|
||||||
throws WxErrorException {
|
throws WxErrorException {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package love.sola.netsupport.wechat.intercepter;
|
package love.sola.netsupport.wechat.intercepter;
|
||||||
|
|
||||||
import com.google.common.cache.Cache;
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
import com.google.common.cache.CacheLoader;
|
||||||
|
import com.google.common.cache.LoadingCache;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.common.session.WxSessionManager;
|
import me.chanjar.weixin.common.session.WxSessionManager;
|
||||||
import me.chanjar.weixin.mp.api.WxMpMessageInterceptor;
|
import me.chanjar.weixin.mp.api.WxMpMessageInterceptor;
|
||||||
@@ -17,18 +18,27 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* Don't modify this source without my agreement
|
* Don't modify this source without my agreement
|
||||||
* ***********************************************
|
* ***********************************************
|
||||||
*/
|
*/
|
||||||
public class CheckSpamIntercepter implements WxMpMessageInterceptor {
|
public class CheckSpamInterceptor implements WxMpMessageInterceptor {
|
||||||
|
|
||||||
private static Cache<String, Long> cache = CacheBuilder.newBuilder()
|
private static class ValueLoader extends CacheLoader<String, Long> {
|
||||||
|
@Override
|
||||||
|
public Long load(String key) throws Exception {
|
||||||
|
return System.currentTimeMillis(); //TODO: CONFIGURATION
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static LoadingCache<String, Long> cache = CacheBuilder.newBuilder()
|
||||||
.concurrencyLevel(4)
|
.concurrencyLevel(4)
|
||||||
.weakKeys()
|
.weakKeys()
|
||||||
.maximumSize(10000)
|
.maximumSize(4096)
|
||||||
.expireAfterWrite(10, TimeUnit.MINUTES)
|
.expireAfterWrite(5, TimeUnit.SECONDS)
|
||||||
.build();
|
.build(new ValueLoader());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean intercept(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
public boolean intercept(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
||||||
|
if (cache.getIfPresent(wxMessage.getFromUserName()) != null) {
|
||||||
|
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user