You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					224 lines
				
				7.2 KiB
			
		
		
			
		
	
	
					224 lines
				
				7.2 KiB
			| 
											3 years ago
										 | package com.ynxbd.wx.wxfactory.menu.bean.xml;
 | ||
|  | 
 | ||
|  | 
 | ||
|  | import com.qq.weixin.mp.aes.WXBizMsgCrypt;
 | ||
|  | import com.thoughtworks.xstream.annotations.XStreamAlias;
 | ||
|  | import com.thoughtworks.xstream.annotations.XStreamConverter;
 | ||
|  | 
 | ||
|  | import java.io.IOException;
 | ||
|  | import java.io.InputStream;
 | ||
|  | import java.nio.charset.StandardCharsets;
 | ||
|  | import java.util.ArrayList;
 | ||
|  | import java.util.List;
 | ||
|  | 
 | ||
|  | import com.ynxbd.wx.config.WeChatConfig;
 | ||
|  | import lombok.Getter;
 | ||
|  | import lombok.NoArgsConstructor;
 | ||
|  | import lombok.Setter;
 | ||
|  | import lombok.ToString;
 | ||
|  | import org.apache.commons.io.IOUtils;
 | ||
|  | 
 | ||
|  | @Setter
 | ||
|  | @Getter
 | ||
|  | @NoArgsConstructor
 | ||
|  | @ToString
 | ||
|  | @XStreamAlias("xml")
 | ||
|  | public class WxXmlMessage {
 | ||
|  |     @XStreamAlias("ToUserName")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String toUserName;
 | ||
|  |     @XStreamAlias("FromUserName")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String fromUserName;
 | ||
|  |     @XStreamAlias("CreateTime")
 | ||
|  |     private Long createTime;
 | ||
|  |     @XStreamAlias("MsgType")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String msgType;
 | ||
|  |     @XStreamAlias("Content")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String content;
 | ||
|  |     @XStreamAlias("MsgId")
 | ||
|  |     private Long msgId;
 | ||
|  |     @XStreamAlias("PicUrl")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String picUrl;
 | ||
|  |     @XStreamAlias("MediaId")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String mediaId;
 | ||
|  |     @XStreamAlias("Format")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String format;
 | ||
|  |     @XStreamAlias("ThumbMediaId")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String thumbMediaId;
 | ||
|  |     @XStreamAlias("Location_X")
 | ||
|  |     private Double locationX;
 | ||
|  |     @XStreamAlias("Location_Y")
 | ||
|  |     private Double locationY;
 | ||
|  |     @XStreamAlias("Scale")
 | ||
|  |     private Double scale;
 | ||
|  |     @XStreamAlias("Label")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String label;
 | ||
|  |     @XStreamAlias("Title")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String title;
 | ||
|  |     @XStreamAlias("Description")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String description;
 | ||
|  |     @XStreamAlias("Url")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String url;
 | ||
|  |     @XStreamAlias("Event")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String event;
 | ||
|  |     @XStreamAlias("EventKey")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String eventKey;
 | ||
|  |     @XStreamAlias("Ticket")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String ticket;
 | ||
|  |     @XStreamAlias("Latitude")
 | ||
|  |     private Double latitude;
 | ||
|  |     @XStreamAlias("Longitude")
 | ||
|  |     private Double longitude;
 | ||
|  |     @XStreamAlias("Precision")
 | ||
|  |     private Double precision;
 | ||
|  |     @XStreamAlias("Recognition")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String recognition;
 | ||
|  |     @XStreamAlias("ExpiredTime")
 | ||
|  |     private String expiredTime;
 | ||
|  |     @XStreamAlias("FailTime")
 | ||
|  |     private String failTime;
 | ||
|  |     @XStreamAlias("FailReason")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String failReason;
 | ||
|  |     @XStreamAlias("TransInfo")
 | ||
|  |     private WxKf kf;
 | ||
|  |     @XStreamAlias("KfAccount")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String kfAccount;
 | ||
|  |     @XStreamAlias("FromKfAccount")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String fromKfAccount;
 | ||
|  |     @XStreamAlias("ToKfAccount")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String toKfAccount;
 | ||
|  |     @XStreamAlias("Status")
 | ||
|  |     @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |     private String status;
 | ||
|  |     @XStreamAlias("TotalCount")
 | ||
|  |     private Integer totalCount;
 | ||
|  |     @XStreamAlias("FilterCount")
 | ||
|  |     private Integer filterCount;
 | ||
|  |     @XStreamAlias("SentCount")
 | ||
|  |     private Integer sentCount;
 | ||
|  |     @XStreamAlias("ErrorCount")
 | ||
|  |     private Integer errorCount;
 | ||
|  |     @XStreamAlias("ScanCodeInfo")
 | ||
|  |     private ScanCodeInfo scanCodeInfo = new ScanCodeInfo();
 | ||
|  |     @XStreamAlias("SendPicsInfo")
 | ||
|  |     private SendPicsInfo sendPicsInfo = new SendPicsInfo();
 | ||
|  |     @XStreamAlias("SendLocationInfo")
 | ||
|  |     private SendLocationInfo sendLocationInfo = new SendLocationInfo();
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     protected static WxXmlMessage fromXml(String xml) {
 | ||
|  |         return XStreamTransformer.fromXml(WxXmlMessage.class, xml);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     protected static WxXmlMessage fromXml(InputStream is) {
 | ||
|  |         return XStreamTransformer.fromXml(WxXmlMessage.class, is);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public static WxXmlMessage decryptMsg(String encryptedXml, String timestamp, String nonce, String msgSignature) throws Exception {
 | ||
|  |         WXBizMsgCrypt pc = new WXBizMsgCrypt(WeChatConfig.TOKEN, WeChatConfig.AES_KEY, WeChatConfig.APP_ID);
 | ||
|  |         String plainText = pc.decryptMsg(msgSignature, timestamp, nonce, encryptedXml);
 | ||
|  |         return fromXml(plainText);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public static WxXmlMessage decryptMsg(InputStream is, String timestamp, String nonce, String msgSignature) throws Exception {
 | ||
|  |         try {
 | ||
|  |             return decryptMsg(IOUtils.toString(is, StandardCharsets.UTF_8), timestamp, nonce, msgSignature);
 | ||
|  |         } catch (IOException var6) {
 | ||
|  |             throw new RuntimeException(var6);
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     @Setter
 | ||
|  |     @Getter
 | ||
|  |     @NoArgsConstructor
 | ||
|  |     @ToString
 | ||
|  |     @XStreamAlias("SendLocationInfo")
 | ||
|  |     public static class SendLocationInfo {
 | ||
|  |         @XStreamAlias("Location_X")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String locationX;
 | ||
|  |         @XStreamAlias("Location_Y")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String locationY;
 | ||
|  |         @XStreamAlias("Scale")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String scale;
 | ||
|  |         @XStreamAlias("Label")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String label;
 | ||
|  |         @XStreamAlias("Poiname")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String poiname;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Setter
 | ||
|  |     @Getter
 | ||
|  |     @NoArgsConstructor
 | ||
|  |     @ToString
 | ||
|  |     @XStreamAlias("SendPicsInfo")
 | ||
|  |     public static class SendPicsInfo {
 | ||
|  |         @XStreamAlias("Count")
 | ||
|  |         private Long count;
 | ||
|  |         @XStreamAlias("PicList")
 | ||
|  |         protected final List<Item> picList = new ArrayList<>();
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         @Setter
 | ||
|  |         @Getter
 | ||
|  |         @NoArgsConstructor
 | ||
|  |         @ToString
 | ||
|  |         @XStreamAlias("item")
 | ||
|  |         public static class Item {
 | ||
|  |             @XStreamAlias("PicMd5Sum")
 | ||
|  |             @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |             private String PicMd5Sum;
 | ||
|  | 
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Setter
 | ||
|  |     @Getter
 | ||
|  |     @NoArgsConstructor
 | ||
|  |     @ToString
 | ||
|  |     @XStreamAlias("ScanCodeInfo")
 | ||
|  |     public static class ScanCodeInfo {
 | ||
|  |         @XStreamAlias("ScanType")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String scanType;
 | ||
|  |         @XStreamAlias("ScanResult")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String scanResult;
 | ||
|  | 
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Setter
 | ||
|  |     @Getter
 | ||
|  |     @NoArgsConstructor
 | ||
|  |     @ToString
 | ||
|  |     public static class WxKf {
 | ||
|  |         @XStreamAlias("KfAccount")
 | ||
|  |         @XStreamConverter(XStreamCDataConverter.class)
 | ||
|  |         private String kfAccount;
 | ||
|  |     }
 | ||
|  | }
 |