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