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.
		
		
		
		
			
				
					
					
						
							223 lines
						
					
					
						
							7.2 KiB
						
					
					
				
			
		
		
	
	
							223 lines
						
					
					
						
							7.2 KiB
						
					
					
				| 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;
 | |
|     }
 | |
| }
 | |
| 
 |