mirror of
				https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
				synced 2025-11-01 02:46:19 +08:00 
			
		
		
		
	token session
This commit is contained in:
		
							
								
								
									
										35
									
								
								src/main/java/love/sola/netsupport/wechat/WechatSession.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/main/java/love/sola/netsupport/wechat/WechatSession.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| package love.sola.netsupport.wechat; | ||||
|  | ||||
| import love.sola.netsupport.config.Settings; | ||||
| import me.chanjar.weixin.common.session.StandardSessionManager; | ||||
| import me.chanjar.weixin.common.session.WxSession; | ||||
|  | ||||
| import java.util.UUID; | ||||
|  | ||||
| /** | ||||
|  * *********************************************** | ||||
|  * Created by Sola on 2015/12/14. | ||||
|  * Don't modify this source without my agreement | ||||
|  * *********************************************** | ||||
|  */ | ||||
| public class WechatSession { | ||||
|  | ||||
| 	private static StandardSessionManager manager; | ||||
|  | ||||
| 	static{ | ||||
| 		manager = new StandardSessionManager(); | ||||
| 		manager.setMaxInactiveInterval(Settings.I.User_Session_Max_Inactive); | ||||
| 	} | ||||
|  | ||||
| 	public static WxSession get(String id, boolean create) { | ||||
| 		return manager.getSession(id, create); | ||||
| 	} | ||||
|  | ||||
| 	public static WxSession get(String id) { | ||||
| 		return manager.getSession(id); | ||||
| 	} | ||||
|  | ||||
| 	public static String genId() { | ||||
| 		return UUID.randomUUID().toString(); | ||||
| 	} | ||||
| } | ||||
| @@ -25,6 +25,28 @@ public class LoginHandler implements WxMpMessageHandler { | ||||
|  | ||||
| 	@Override | ||||
| 	public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { | ||||
| //		try (Session s = SQLCore.sf.openSession()) { | ||||
| //			if (operator == null || operator.getAccess() == Access.NOLOGIN) | ||||
| //				return new Response(Response.ResponseCode.OPERATOR_NOT_FOUND); | ||||
| //			if (!wechat.equals(operator.getWechat())) | ||||
| //				return new Response(Response.ResponseCode.INCORRECT_WECHAT); | ||||
| //			if (!Crypto.check(password,operator.getPassword())) | ||||
| //				return new Response(Response.ResponseCode.WRONG_PASSWORD); | ||||
| // | ||||
| //			return new Response(Response.ResponseCode.OK, operator); | ||||
| //		} catch (NumberFormatException e) { | ||||
| //			return new Response(Response.ResponseCode.ILLEGAL_PARAMETER); | ||||
| //		} catch (HibernateException e) { | ||||
| //			e.printStackTrace(); | ||||
| //			return new Response(Response.ResponseCode.DATABASE_ERROR, e); | ||||
| //		} catch (Exception e) { | ||||
| //			e.printStackTrace(); | ||||
| //			return new Response(Response.ResponseCode.INTERNAL_ERROR, e); | ||||
| //		} | ||||
|  | ||||
| //		if (operator == null || operator.getAccess() == Access.NOLOGIN) | ||||
| //			return new Response(Response.ResponseCode.OPERATOR_NOT_FOUND); | ||||
|  | ||||
| 		TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); | ||||
| 		if (!TableOperator.has(wxMessage.getFromUserName())) { | ||||
| 			return out.content(lang("Not_Operator")).build(); | ||||
|   | ||||
| @@ -1,13 +1,15 @@ | ||||
| package love.sola.netsupport.wechat.handler; | ||||
|  | ||||
| import love.sola.netsupport.api.Authorize; | ||||
| import love.sola.netsupport.enums.Attribute; | ||||
| import love.sola.netsupport.pojo.Ticket; | ||||
| import love.sola.netsupport.pojo.User; | ||||
| import love.sola.netsupport.sql.TableTicket; | ||||
| import love.sola.netsupport.sql.TableUser; | ||||
| import love.sola.netsupport.util.ParseUtil; | ||||
| import love.sola.netsupport.wechat.Command; | ||||
| import love.sola.netsupport.wechat.WechatSession; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.common.session.WxSession; | ||||
| import me.chanjar.weixin.common.session.WxSessionManager; | ||||
| import me.chanjar.weixin.mp.api.WxMpMessageHandler; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | ||||
| @@ -38,15 +40,18 @@ public class QueryHandler implements WxMpMessageHandler { | ||||
| 			return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) | ||||
| 					.content(lang("No_Ticket_Available")).build(); | ||||
| 		} | ||||
| 		String id = WechatSession.genId(); | ||||
| 		WxSession session = WechatSession.get(id, true); | ||||
| 		session.setAttribute(Attribute.AUTHORIZED, Command.QUERY); | ||||
| 		session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); | ||||
| 		session.setAttribute(Attribute.USER, u); | ||||
|  | ||||
| 		NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); | ||||
| 		WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); | ||||
| 		item.setTitle(lang("Query_Title")); | ||||
| 		item.setDescription(ParseUtil.parseTicket(t) + "\n" + lang("More_Details")); | ||||
| 		item.setUrl(format("User_Query_Link", wxMessage.getFromUserName())); | ||||
| 		item.setUrl(format("User_Query_Link", id)); | ||||
| 		out.addArticle(item); | ||||
| 		Authorize.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis()); | ||||
| 		Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.QUERY); | ||||
| 		return out.build(); | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| package love.sola.netsupport.wechat.handler; | ||||
|  | ||||
| import love.sola.netsupport.api.Authorize; | ||||
| import love.sola.netsupport.enums.Attribute; | ||||
| import love.sola.netsupport.pojo.User; | ||||
| import love.sola.netsupport.sql.TableUser; | ||||
| import love.sola.netsupport.wechat.Command; | ||||
| import love.sola.netsupport.wechat.WechatSession; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.common.session.WxSession; | ||||
| import me.chanjar.weixin.common.session.WxSessionManager; | ||||
| import me.chanjar.weixin.mp.api.WxMpMessageHandler; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | ||||
| @@ -34,9 +36,11 @@ public class RegisterHandler implements WxMpMessageHandler { | ||||
| 		if (u != null) { | ||||
| 			out.content(lang("Already_Registered")); | ||||
| 		} else { | ||||
| 			out.content(format("User_Register_Link", wxMessage.getFromUserName())); | ||||
| 			Authorize.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis()); | ||||
| 			Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.REGISTER); | ||||
| 			String id = WechatSession.genId(); | ||||
| 			WxSession session = WechatSession.get(id, true); | ||||
| 			session.setAttribute(Attribute.AUTHORIZED, Command.REGISTER); | ||||
| 			session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); | ||||
| 			out.content(format("User_Register_Link", id)); | ||||
| 		} | ||||
| 		return out.build(); | ||||
| 	} | ||||
|   | ||||
| @@ -1,11 +1,13 @@ | ||||
| package love.sola.netsupport.wechat.handler; | ||||
|  | ||||
| import love.sola.netsupport.api.Authorize; | ||||
| import love.sola.netsupport.enums.Attribute; | ||||
| import love.sola.netsupport.pojo.User; | ||||
| import love.sola.netsupport.sql.TableTicket; | ||||
| import love.sola.netsupport.sql.TableUser; | ||||
| import love.sola.netsupport.wechat.Command; | ||||
| import love.sola.netsupport.wechat.WechatSession; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.common.session.WxSession; | ||||
| import me.chanjar.weixin.common.session.WxSessionManager; | ||||
| import me.chanjar.weixin.mp.api.WxMpMessageHandler; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | ||||
| @@ -34,14 +36,18 @@ public class SubmitHandler implements WxMpMessageHandler { | ||||
| 			return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) | ||||
| 					.content(lang("Already_Opening_Ticket")).build(); | ||||
| 		} | ||||
| 		String id = WechatSession.genId(); | ||||
| 		WxSession session = WechatSession.get(id, true); | ||||
| 		session.setAttribute(Attribute.AUTHORIZED, Command.QUERY); | ||||
| 		session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName()); | ||||
| 		session.setAttribute(Attribute.USER, u); | ||||
|  | ||||
| 		NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); | ||||
| 		WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); | ||||
| 		item.setTitle(lang("Submit_Title")); | ||||
| 		item.setDescription(lang("Submit_Desc")); | ||||
| 		item.setUrl(format("User_Submit_Link", wxMessage.getFromUserName(), u.getName(), u.getIsp().id, u.getRoom(), u.getBlock(), u.getPhone())); | ||||
| 		item.setUrl(format("User_Submit_Link", id, u.getName(), u.getIsp().id, u.getRoom(), u.getBlock(), u.getPhone())); | ||||
| 		out.addArticle(item); | ||||
| 		Authorize.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis()); | ||||
| 		Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.SUBMIT); | ||||
| 		return out.build(); | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sola
					Sola