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;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |