// Path: src/main/java/com/cherry/jeeves/domain/response/component/WechatHttpResponseBase.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public abstract class WechatHttpResponseBase {
//     @JsonProperty
//     private BaseResponse BaseResponse;
// 
//     public BaseResponse getBaseResponse() {
//         return BaseResponse;
//     }
// 
//     public void setBaseResponse(BaseResponse baseResponse) {
//         BaseResponse = baseResponse;
//     }
// }
// 
// Path: src/main/java/com/cherry/jeeves/domain/shared/Contact.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class Contact extends Member {
//     @JsonProperty
//     private int MemberCount;
//     @JsonProperty
//     private Set<ChatRoomMember> MemberList;
//     @JsonProperty
//     private int OwnerUin;
//     @JsonProperty
//     private long Statues;
//     @JsonProperty
//     private long AttrStatus;
//     @JsonProperty
//     private String Province;
//     @JsonProperty
//     private String City;
//     @JsonProperty
//     private String Alias;
//     @JsonProperty
//     private int UniFriend;
//     @JsonProperty
//     private String DisplayName;
//     @JsonProperty
//     private long ChatRoomId;
//     @JsonProperty
//     private String KeyWord;
//     @JsonProperty
//     private String EncryChatRoomId;
//     @JsonProperty
//     private int IsOwner;
// 
//     public long getStatues() {
//         return Statues;
//     }
// 
//     public void setStatues(long statues) {
//         Statues = statues;
//     }
// 
//     public long getAttrStatus() {
//         return AttrStatus;
//     }
// 
//     public void setAttrStatus(long attrStatus) {
//         AttrStatus = attrStatus;
//     }
// 
//     public String getProvince() {
//         return Province;
//     }
// 
//     public void setProvince(String province) {
//         Province = province;
//     }
// 
//     public String getCity() {
//         return City;
//     }
// 
//     public void setCity(String city) {
//         City = city;
//     }
// 
//     public String getAlias() {
//         return Alias;
//     }
// 
//     public void setAlias(String alias) {
//         Alias = alias;
//     }
// 
//     public int getUniFriend() {
//         return UniFriend;
//     }
// 
//     public void setUniFriend(int uniFriend) {
//         UniFriend = uniFriend;
//     }
// 
//     public String getDisplayName() {
//         return DisplayName;
//     }
// 
//     public void setDisplayName(String displayName) {
//         DisplayName = displayName;
//     }
// 
//     public long getChatRoomId() {
//         return ChatRoomId;
//     }
// 
//     public void setChatRoomId(long chatRoomId) {
//         ChatRoomId = chatRoomId;
//     }
// 
//     public String getKeyWord() {
//         return KeyWord;
//     }
// 
//     public void setKeyWord(String keyWord) {
//         KeyWord = keyWord;
//     }
// 
//     public String getEncryChatRoomId() {
//         return EncryChatRoomId;
//     }
// 
//     public void setEncryChatRoomId(String encryChatRoomId) {
//         EncryChatRoomId = encryChatRoomId;
//     }
// 
//     public int getIsOwner() {
//         return IsOwner;
//     }
// 
//     public void setIsOwner(int isOwner) {
//         IsOwner = isOwner;
//     }
// 
//     public int getMemberCount() {
//         return MemberCount;
//     }
// 
//     public void setMemberCount(int memberCount) {
//         MemberCount = memberCount;
//     }
// 
//     public Set<ChatRoomMember> getMemberList() {
//         return MemberList;
//     }
// 
//     public void setMemberList(Set<ChatRoomMember> memberList) {
//         MemberList = memberList;
//     }
// 
//     public int getOwnerUin() {
//         return OwnerUin;
//     }
// 
//     public void setOwnerUin(int ownerUin) {
//         OwnerUin = ownerUin;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         Contact contact = (Contact) o;
//         return this.getUserName().equals(contact.getUserName());
//     }
// 
//     @Override
//     public int hashCode() {
//         return this.getUserName().hashCode();
//     }
// }
// 
// Path: src/main/java/com/cherry/jeeves/exception/WechatException.java
// public class WechatException extends RuntimeException {
//     public WechatException() {
//     }
// 
//     public WechatException(String message) {
//         super(message);
//     }
// 
//     public WechatException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public WechatException(Throwable cause) {
//         super(cause);
//     }
// 
//     public WechatException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// }


import com.cherry.jeeves.domain.response.component.WechatHttpResponseBase;
import com.cherry.jeeves.domain.shared.Contact;
import com.cherry.jeeves.exception.WechatException;
import java.nio.charset.StandardCharsets;
package com.cherry.jeeves.utils;



public class WechatUtils {
    public static void checkBaseResponse(WechatHttpResponseBase response) {
        if (response.getBaseResponse().getRet() != 0) {
            throw new WechatException(response.getClass().getSimpleName() + " ret = " + response.getBaseResponse().getRet());
        }
    }

    public static String textDecode(String text) {
        if (text == null) {
            throw new IllegalArgumentException("text");
        }
        return new String(text.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
    }

    public static boolean isIndividual(Contact contact) {
        if (contact == null) {
            throw new IllegalArgumentException("contact");
        }
        return contact.getUserName().startsWith("@") && !contact.getUserName().startsWith("@@") && ((contact.getVerifyFlag() & 8) == 0);
    }

    public static boolean isChatRoom(Contact contact) {
        if (contact == null) {
            throw new IllegalArgumentException("contact");
        }
// Path: src/main/java/com/cherry/jeeves/domain/response/component/WechatHttpResponseBase.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public abstract class WechatHttpResponseBase {
//     @JsonProperty
//     private BaseResponse BaseResponse;
// 
//     public BaseResponse getBaseResponse() {
//         return BaseResponse;
//     }
// 
//     public void setBaseResponse(BaseResponse baseResponse) {
//         BaseResponse = baseResponse;
//     }
// }
// 
// Path: src/main/java/com/cherry/jeeves/domain/shared/Contact.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class Contact extends Member {
//     @JsonProperty
//     private int MemberCount;
//     @JsonProperty
//     private Set<ChatRoomMember> MemberList;
//     @JsonProperty
//     private int OwnerUin;
//     @JsonProperty
//     private long Statues;
//     @JsonProperty
//     private long AttrStatus;
//     @JsonProperty
//     private String Province;
//     @JsonProperty
//     private String City;
//     @JsonProperty
//     private String Alias;
//     @JsonProperty
//     private int UniFriend;
//     @JsonProperty
//     private String DisplayName;
//     @JsonProperty
//     private long ChatRoomId;
//     @JsonProperty
//     private String KeyWord;
//     @JsonProperty
//     private String EncryChatRoomId;
//     @JsonProperty
//     private int IsOwner;
// 
//     public long getStatues() {
//         return Statues;
//     }
// 
//     public void setStatues(long statues) {
//         Statues = statues;
//     }
// 
//     public long getAttrStatus() {
//         return AttrStatus;
//     }
// 
//     public void setAttrStatus(long attrStatus) {
//         AttrStatus = attrStatus;
//     }
// 
//     public String getProvince() {
//         return Province;
//     }
// 
//     public void setProvince(String province) {
//         Province = province;
//     }
// 
//     public String getCity() {
//         return City;
//     }
// 
//     public void setCity(String city) {
//         City = city;
//     }
// 
//     public String getAlias() {
//         return Alias;
//     }
// 
//     public void setAlias(String alias) {
//         Alias = alias;
//     }
// 
//     public int getUniFriend() {
//         return UniFriend;
//     }
// 
//     public void setUniFriend(int uniFriend) {
//         UniFriend = uniFriend;
//     }
// 
//     public String getDisplayName() {
//         return DisplayName;
//     }
// 
//     public void setDisplayName(String displayName) {
//         DisplayName = displayName;
//     }
// 
//     public long getChatRoomId() {
//         return ChatRoomId;
//     }
// 
//     public void setChatRoomId(long chatRoomId) {
//         ChatRoomId = chatRoomId;
//     }
// 
//     public String getKeyWord() {
//         return KeyWord;
//     }
// 
//     public void setKeyWord(String keyWord) {
//         KeyWord = keyWord;
//     }
// 
//     public String getEncryChatRoomId() {
//         return EncryChatRoomId;
//     }
// 
//     public void setEncryChatRoomId(String encryChatRoomId) {
//         EncryChatRoomId = encryChatRoomId;
//     }
// 
//     public int getIsOwner() {
//         return IsOwner;
//     }
// 
//     public void setIsOwner(int isOwner) {
//         IsOwner = isOwner;
//     }
// 
//     public int getMemberCount() {
//         return MemberCount;
//     }
// 
//     public void setMemberCount(int memberCount) {
//         MemberCount = memberCount;
//     }
// 
//     public Set<ChatRoomMember> getMemberList() {
//         return MemberList;
//     }
// 
//     public void setMemberList(Set<ChatRoomMember> memberList) {
//         MemberList = memberList;
//     }
// 
//     public int getOwnerUin() {
//         return OwnerUin;
//     }
// 
//     public void setOwnerUin(int ownerUin) {
//         OwnerUin = ownerUin;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         Contact contact = (Contact) o;
//         return this.getUserName().equals(contact.getUserName());
//     }
// 
//     @Override
//     public int hashCode() {
//         return this.getUserName().hashCode();
//     }
// }
// 
// Path: src/main/java/com/cherry/jeeves/exception/WechatException.java
// public class WechatException extends RuntimeException {
//     public WechatException() {
//     }
// 
//     public WechatException(String message) {
//         super(message);
//     }
// 
//     public WechatException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public WechatException(Throwable cause) {
//         super(cause);
//     }
// 
//     public WechatException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// }


// Path: src/main/java/com/cherry/jeeves/utils/WechatUtils.java
import com.cherry.jeeves.domain.response.component.WechatHttpResponseBase;
import com.cherry.jeeves.domain.shared.Contact;
import com.cherry.jeeves.exception.WechatException;
import java.nio.charset.StandardCharsets;

package com.cherry.jeeves.utils;



public class WechatUtils {
    public static void checkBaseResponse(WechatHttpResponseBase response) {
        if (response.getBaseResponse().getRet() != 0) {
            throw new WechatException(response.getClass().getSimpleName() + " ret = " + response.getBaseResponse().getRet());
        }
    }

    public static String textDecode(String text) {
        if (text == null) {
            throw new IllegalArgumentException("text");
        }
        return new String(text.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
    }

    public static boolean isIndividual(Contact contact) {
        if (contact == null) {
            throw new IllegalArgumentException("contact");
        }
        return contact.getUserName().startsWith("@") && !contact.getUserName().startsWith("@@") && ((contact.getVerifyFlag() & 8) == 0);
    }

    public static boolean isChatRoom(Contact contact) {
        if (contact == null) {
            throw new IllegalArgumentException("contact");
        }
        return contact.getUserName().startsWith("@@");