mirror of
				https://github.com/ZSCNetSupportDept/WechatTicketSystem.git
				synced 2025-11-01 02:46:19 +08:00 
			
		
		
		
	add cancel command
This commit is contained in:
		| @@ -1,5 +1,6 @@ | ||||
| package love.sola.netsupport.wechat; | ||||
|  | ||||
| import love.sola.netsupport.wechat.handler.CancelHandler; | ||||
| import love.sola.netsupport.wechat.handler.QueryHandler; | ||||
| import love.sola.netsupport.wechat.handler.RegisterHandler; | ||||
| import love.sola.netsupport.wechat.handler.SubmitHandler; | ||||
| @@ -21,6 +22,7 @@ public enum Command { | ||||
| 	REGISTER(0, RegisterHandler.class), | ||||
| 	QUERY(1, QueryHandler.class), | ||||
| 	SUBMIT(2, SubmitHandler.class), | ||||
| 	CANCEL(3, CancelHandler.class), | ||||
| 	; | ||||
|  | ||||
| 	private static final Map<Integer, Command> ID_MAP = new HashMap<>(); | ||||
|   | ||||
| @@ -0,0 +1,61 @@ | ||||
| package love.sola.netsupport.wechat.handler; | ||||
|  | ||||
| import love.sola.netsupport.enums.Status; | ||||
| import love.sola.netsupport.pojo.Ticket; | ||||
| import love.sola.netsupport.pojo.User; | ||||
| import love.sola.netsupport.sql.SQLCore; | ||||
| import love.sola.netsupport.sql.TableTicket; | ||||
| import love.sola.netsupport.sql.TableUser; | ||||
| import love.sola.netsupport.util.ParseUtil; | ||||
| import me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.common.session.WxSessionManager; | ||||
| import me.chanjar.weixin.mp.api.WxMpMessageHandler; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | ||||
| import me.chanjar.weixin.mp.bean.WxMpXmlMessage; | ||||
| import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage; | ||||
| import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage; | ||||
| import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder; | ||||
| import org.hibernate.Session; | ||||
|  | ||||
| import java.util.Date; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static love.sola.netsupport.config.Lang.lang; | ||||
|  | ||||
| /** | ||||
|  * *********************************************** | ||||
|  * Created by Sola on 2015/12/11. | ||||
|  * Don't modify this source without my agreement | ||||
|  * *********************************************** | ||||
|  */ | ||||
| public class CancelHandler implements WxMpMessageHandler { | ||||
|  | ||||
| 	@Override | ||||
| 	public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { | ||||
| 		User u = TableUser.getUserByWechat(wxMessage.getFromUserName()); | ||||
| 		Ticket t = TableTicket.queryLatestOpen(u); | ||||
| 		if (t == null) { | ||||
| 			return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) | ||||
| 					.content(lang("No_Open_Ticket_Available")).build(); | ||||
| 		} | ||||
| 		try (Session s = SQLCore.sf.openSession()) { | ||||
| 			t.setUpdateTime(new Date()); | ||||
| 			t.setDescription(lang("User_Cancel_Remark")); | ||||
| 			t.setStatus(Status.SOLVED); | ||||
| 			s.beginTransaction(); | ||||
| 			s.update(t); | ||||
| 			s.getTransaction().commit(); | ||||
| 			NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); | ||||
| 			WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); | ||||
| 			item.setTitle(lang("Cancel_Title")); | ||||
| 			item.setDescription(ParseUtil.parseTicket(t)); | ||||
| 			out.addArticle(item); | ||||
| 			return out.build(); | ||||
| 		} catch (Exception e) { | ||||
| 			e.printStackTrace(); | ||||
| 			return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) | ||||
| 					.content(lang("Cancel_Failed")).build(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -1,11 +1,11 @@ | ||||
| package love.sola.netsupport.wechat.handler; | ||||
|  | ||||
| import love.sola.netsupport.api.Authorize; | ||||
| import love.sola.netsupport.enums.Status; | ||||
| 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 me.chanjar.weixin.common.exception.WxErrorException; | ||||
| import me.chanjar.weixin.common.session.WxSessionManager; | ||||
| @@ -16,7 +16,6 @@ import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage; | ||||
| import me.chanjar.weixin.mp.bean.WxMpXmlOutNewsMessage; | ||||
| import me.chanjar.weixin.mp.bean.outxmlbuilder.NewsBuilder; | ||||
|  | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static love.sola.netsupport.config.Lang.format; | ||||
| @@ -30,12 +29,11 @@ import static love.sola.netsupport.config.Lang.lang; | ||||
|  */ | ||||
| public class QueryHandler implements WxMpMessageHandler { | ||||
|  | ||||
| 	public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm EEE"); | ||||
|  | ||||
| 	@Override | ||||
| 	public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { | ||||
| 		User u = TableUser.getUserByWechat(wxMessage.getFromUserName()); | ||||
| 		Ticket t = TableTicket.queryLast(u); | ||||
| 		Ticket t = TableTicket.queryLatest(u); | ||||
| 		if (t == null) { | ||||
| 			return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) | ||||
| 					.content(lang("No_Ticket_Available")).build(); | ||||
| @@ -43,20 +41,9 @@ public class QueryHandler implements WxMpMessageHandler { | ||||
|  | ||||
| 		NewsBuilder out = WxMpXmlOutMessage.NEWS().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()); | ||||
| 		WxMpXmlOutNewsMessage.Item item = new WxMpXmlOutNewsMessage.Item(); | ||||
| 		StringBuilder sb = new StringBuilder() | ||||
| 				.append(lang("Ticket_Info_Id")).append(t.getId()).append("\n") | ||||
| 				.append(lang("Ticket_Info_Desc")).append(t.getDescription()).append("\n") | ||||
| 				.append(lang("Ticket_Info_Submit_Time")).append(dateFormat.format(t.getSubmitTime())).append("\n"); | ||||
| 		if (t.getUpdateTime() != null) { | ||||
| 			sb.append(lang("Ticket_Info_Operator")).append(t.getOperator().getId()).append("\n"); | ||||
| 			sb.append(lang("Ticket_Info_Remark")).append(t.getRemark()).append("\n"); | ||||
| 			sb.append(lang("Ticket_Info_Update_Time")).append(dateFormat.format(t.getUpdateTime())).append("\n"); | ||||
| 		} | ||||
| 		sb.append(lang("Ticket_Info_Status")).append(Status.getLocalized(t.getStatus())).append("\n"); | ||||
| 		sb.append(lang("More_Details")); | ||||
| 		item.setUrl(format("User_Query_Link", wxMessage.getFromUserName())); | ||||
| 		item.setTitle(lang("Query_Title")); | ||||
| 		item.setDescription(sb.toString()); | ||||
| 		item.setDescription(ParseUtil.parseTicket(t) + "\n" + lang("More_Details")); | ||||
| 		item.setUrl(format("User_Query_Link", wxMessage.getFromUserName())); | ||||
| 		out.addArticle(item); | ||||
| 		Authorize.fetchedTime.put(wxMessage.getFromUserName(), System.currentTimeMillis()); | ||||
| 		Authorize.fetchedCommand.put(wxMessage.getFromUserName(), Command.QUERY); | ||||
|   | ||||
| @@ -31,7 +31,7 @@ public class SubmitHandler implements WxMpMessageHandler { | ||||
| 	@Override | ||||
| 	public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException { | ||||
| 		User u = TableUser.getUserByWechat(wxMessage.getFromUserName()); | ||||
| 		Ticket t = TableTicket.queryLastOpen(u); | ||||
| 		Ticket t = TableTicket.queryLatestOpen(u); | ||||
| 		if (t != null) { | ||||
| 			return WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()) | ||||
| 					.content(lang("Already_Opening_Ticket")).build(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sola
					Sola