清理企业号api

This commit is contained in:
Daniel Qian 2014-10-21 18:33:35 +08:00
parent 258f35a192
commit 471b4a7a51
50 changed files with 108 additions and 854 deletions

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.enterprise.util.xml;
package me.chanjar.weixin.common;
import javax.xml.bind.annotation.adapters.XmlAdapter;

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.enterprise.util.fs;
package me.chanjar.weixin.common;
import java.io.File;
import java.io.FileOutputStream;

View File

@ -6,7 +6,7 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
package me.chanjar.weixin.common;
import com.google.gson.JsonElement;

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.enterprise.util.xml;
package me.chanjar.weixin.common;
import javax.xml.bind.annotation.adapters.XmlAdapter;

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.enterprise.util.xml;
package me.chanjar.weixin.common;
import java.io.IOException;
import java.io.InputStream;

View File

@ -17,7 +17,7 @@ public class WxConsts {
public static final String XML_MSG_LOCATION = "location";
public static final String XML_MSG_LINK = "link";
public static final String XML_MSG_EVENT = "event";
///////////////////////
// 客服消息的消息类型
///////////////////////

View File

@ -6,7 +6,7 @@ import java.io.InputStream;
import java.util.List;
import me.chanjar.weixin.enterprise.bean.*;
import me.chanjar.weixin.enterprise.bean.WxCpDepartment;
import me.chanjar.weixin.enterprise.bean.WxCpDepart;
import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.enterprise.bean.result.WxUser;
import me.chanjar.weixin.enterprise.exception.WxErrorException;
@ -131,7 +131,7 @@ public interface WxCpService {
* @param name 分组名字30个字符以内
* @throws WxErrorException
*/
public WxCpDepartment departmentCreate(String name) throws WxErrorException;
public WxCpDepart departmentCreate(String name) throws WxErrorException;
/**
* <pre>
@ -141,7 +141,7 @@ public interface WxCpService {
* @return
* @throws WxErrorException
*/
public List<WxCpDepartment> departmentGet() throws WxErrorException;
public List<WxCpDepart> departmentGet() throws WxErrorException;
/**
* <pre>
@ -153,7 +153,7 @@ public interface WxCpService {
* @param group 要更新的groupgroup的id,name必须设置
* @throws WxErrorException
*/
public void departmentUpdate(WxCpDepartment group) throws WxErrorException;
public void departmentUpdate(WxCpDepart group) throws WxErrorException;
/**
* <pre>
@ -163,7 +163,7 @@ public interface WxCpService {
* @param department
* @throws WxErrorException
*/
public void departmentDelete(WxCpDepartment department) throws WxErrorException;
public void departmentDelete(WxCpDepart department) throws WxErrorException;
public void userCreate(WxUser user) throws WxErrorException;

View File

@ -11,6 +11,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import me.chanjar.weixin.enterprise.bean.*;
import me.chanjar.weixin.enterprise.util.http.SimpleGetRequestExecutor;
import me.chanjar.weixin.enterprise.util.crypto.SHA1;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
@ -19,17 +20,16 @@ import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import me.chanjar.weixin.enterprise.bean.WxCpDepartment;
import me.chanjar.weixin.enterprise.bean.WxCpDepart;
import me.chanjar.weixin.enterprise.bean.result.WxError;
import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.enterprise.bean.result.WxUser;
import me.chanjar.weixin.enterprise.exception.WxErrorException;
import me.chanjar.weixin.enterprise.util.fs.FileUtils;
import me.chanjar.weixin.common.FileUtils;
import me.chanjar.weixin.enterprise.util.http.MediaDownloadRequestExecutor;
import me.chanjar.weixin.enterprise.util.http.MediaUploadRequestExecutor;
import me.chanjar.weixin.enterprise.util.http.RequestExecutor;
import me.chanjar.weixin.enterprise.util.http.SimplePostRequestExecutor;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@ -142,7 +142,7 @@ public class WxCpServiceImpl implements WxCpService {
}
public WxCpDepartment departmentCreate(String name) throws WxErrorException {
public WxCpDepart departmentCreate(String name) throws WxErrorException {
// TODO
String url = "https://api.weixin.qq.com/cgi-bin/groups/create";
JsonObject json = new JsonObject();
@ -154,16 +154,16 @@ public class WxCpServiceImpl implements WxCpService {
new SimplePostRequestExecutor(),
url,
json.toString());
return WxCpDepartment.fromJson(responseContent);
return WxCpDepart.fromJson(responseContent);
}
public void departmentUpdate(WxCpDepartment group) throws WxErrorException {
public void departmentUpdate(WxCpDepart group) throws WxErrorException {
// TODO
String url = "https://api.weixin.qq.com/cgi-bin/groups/update";
execute(new SimplePostRequestExecutor(), url, group.toJson());
}
public List<WxCpDepartment> departmentGet() throws WxErrorException {
public List<WxCpDepart> departmentGet() throws WxErrorException {
// TODO
String url = "https://api.weixin.qq.com/cgi-bin/groups/get";
String responseContent = execute(new SimpleGetRequestExecutor(), url, null);
@ -172,12 +172,12 @@ public class WxCpServiceImpl implements WxCpService {
* 查询时返回的是 { groups : [ { id : ..., name : ..., count : ... }, ... ] }
*/
JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent)));
return WxGsonBuilder.INSTANCE.create()
.fromJson(tmpJsonElement.getAsJsonObject().get("groups"), new TypeToken<List<WxCpDepartment>>() {
return WxCpGsonBuilder.INSTANCE.create()
.fromJson(tmpJsonElement.getAsJsonObject().get("groups"), new TypeToken<List<WxCpDepart>>() {
}.getType());
}
public void departmentDelete(WxCpDepartment department) throws WxErrorException {
public void departmentDelete(WxCpDepart department) throws WxErrorException {
// TODO
}

View File

@ -1,6 +1,6 @@
package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
public class WxAccessToken {
@ -25,7 +25,7 @@ public class WxAccessToken {
}
public static WxAccessToken fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxAccessToken.class);
return WxCpGsonBuilder.create().fromJson(json, WxAccessToken.class);
}
}

View File

@ -1,13 +1,13 @@
package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* 微信用户分组
* @author Daniel Qian
*
*/
public class WxCpDepartment {
public class WxCpDepart {
private long id = -1;
private String name;
@ -31,12 +31,12 @@ public class WxCpDepartment {
this.count = count;
}
public static WxCpDepartment fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxCpDepartment.class);
public static WxCpDepart fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpDepart.class);
}
public String toJson() {
return WxGsonBuilder.create().toJson(this);
return WxCpGsonBuilder.create().toJson(this);
}
@Override
public String toString() {

View File

@ -5,7 +5,7 @@ import java.util.List;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.bean.messagebuilder.*;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* 客服消息
@ -128,7 +128,7 @@ public class WxCpMessage {
}
public String toJson() {
return WxGsonBuilder.INSTANCE.create().toJson(this);
return WxCpGsonBuilder.INSTANCE.create().toJson(this);
}
public static class WxArticle {

View File

@ -2,8 +2,8 @@ package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.api.WxCpConfigStorage;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
import me.chanjar.weixin.enterprise.util.xml.XmlTransformer;
import me.chanjar.weixin.common.AdapterCDATA;
import me.chanjar.weixin.common.XmlTransformer;
import me.chanjar.weixin.enterprise.util.crypto.WxCryptUtil;
import org.apache.commons.io.IOUtils;

View File

@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.MediaIdMarshaller;
import me.chanjar.weixin.common.MediaIdMarshaller;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -15,8 +15,8 @@ import me.chanjar.weixin.enterprise.bean.outxmlbuilder.TextBuilder;
import me.chanjar.weixin.enterprise.bean.outxmlbuilder.VideoBuilder;
import me.chanjar.weixin.enterprise.bean.outxmlbuilder.VoiceBuilder;
import me.chanjar.weixin.enterprise.util.crypto.WxCryptUtil;
import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
import me.chanjar.weixin.enterprise.util.xml.XmlTransformer;
import me.chanjar.weixin.common.AdapterCDATA;
import me.chanjar.weixin.common.XmlTransformer;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -11,7 +11,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
import me.chanjar.weixin.common.AdapterCDATA;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
import me.chanjar.weixin.common.AdapterCDATA;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
import me.chanjar.weixin.common.AdapterCDATA;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.AdapterCDATA;
import me.chanjar.weixin.common.AdapterCDATA;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -7,7 +7,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.xml.MediaIdMarshaller;
import me.chanjar.weixin.common.MediaIdMarshaller;
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)

View File

@ -1,70 +0,0 @@
package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
/**
* 分组群发的消息
*
* @author Daniel Qian
*/
public class WxMassGroupMessage {
private long groupId;
private String msgtype;
private String content;
private String mediaId;
public WxMassGroupMessage() {
super();
}
public String getMsgtype() {
return msgtype;
}
/**
* <pre>
* 请使用
* {@link WxConsts#MASS_MSG_IMAGE}
* {@link WxConsts#MASS_MSG_NEWS}
* {@link WxConsts#MASS_MSG_TEXT}
* {@link WxConsts#MASS_MSG_VIDEO}
* {@link WxConsts#MASS_MSG_VOICE}
* 如果msgtype和media_id不匹配的话会返回系统繁忙的错误
* </pre>
* @param msgtype
*/
public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getMediaId() {
return mediaId;
}
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public String toJson() {
return WxGsonBuilder.INSTANCE.create().toJson(this);
}
public long getGroupId() {
return groupId;
}
public void setGroupId(long groupId) {
this.groupId = groupId;
}
}

View File

@ -1,117 +0,0 @@
package me.chanjar.weixin.enterprise.bean;
import java.util.ArrayList;
import java.util.List;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
/**
* 群发时用到的图文消息素材
* @author Daniel Qian
*
*/
public class WxMassNews {
private List<WxMassNewsArticle> articles = new ArrayList<WxMassNewsArticle>();
public List<WxMassNewsArticle> getArticles() {
return articles;
}
public void addArticle(WxMassNewsArticle article) {
this.articles.add(article);
}
public String toJson() {
return WxGsonBuilder.INSTANCE.create().toJson(this);
}
/**
* <pre>
* 群发图文消息article
* 1. thumbMediaId (必填) 图文消息缩略图的media_id可以在基础支持-上传多媒体文件接口中获得
* 2. author 图文消息的作者
* 3. title (必填) 图文消息的标题
* 4. contentSourceUrl 在图文消息页面点击阅读原文后的页面链接
* 5. content (必填) 图文消息页面的内容支持HTML标签
* 6. digest 图文消息的描述
* 7, showCoverPic 是否显示封面true为显示false为不显示
* </pre>
* @author Daniel Qian
*
*/
public static class WxMassNewsArticle {
/**
* (必填) 图文消息缩略图的media_id可以在基础支持-上传多媒体文件接口中获得
*/
private String thumbMediaId;
/**
* 图文消息的作者
*/
private String author;
/**
* (必填) 图文消息的标题
*/
private String title;
/**
* 在图文消息页面点击阅读原文后的页面链接
*/
private String contentSourceUrl;
/**
* (必填) 图文消息页面的内容支持HTML标签
*/
private String content;
/**
* 图文消息的描述
*/
private String digest;
/**
* 是否显示封面true为显示false为不显示
*/
private boolean showCoverPic;
public String getThumbMediaId() {
return thumbMediaId;
}
public void setThumbMediaId(String thumbMediaId) {
this.thumbMediaId = thumbMediaId;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContentSourceUrl() {
return contentSourceUrl;
}
public void setContentSourceUrl(String contentSourceUrl) {
this.contentSourceUrl = contentSourceUrl;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getDigest() {
return digest;
}
public void setDigest(String digest) {
this.digest = digest;
}
public boolean isShowCoverPic() {
return showCoverPic;
}
public void setShowCoverPic(boolean showCoverPic) {
this.showCoverPic = showCoverPic;
}
}
}

View File

@ -1,79 +0,0 @@
package me.chanjar.weixin.enterprise.bean;
import java.util.ArrayList;
import java.util.List;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
/**
* OpenId列表群发的消息
*
* @author Daniel Qian
*/
public class WxMassOpenIdsMessage {
private List<String> toUsers = new ArrayList<String>();
private String msgType;
private String content;
private String mediaId;
public WxMassOpenIdsMessage() {
super();
}
public String getMsgType() {
return msgType;
}
/**
* <pre>
* 请使用
* {@link me.chanjar.weixin.enterprise.api.WxConsts#MASS_MSG_IMAGE}
* {@link me.chanjar.weixin.enterprise.api.WxConsts#MASS_MSG_NEWS}
* {@link me.chanjar.weixin.enterprise.api.WxConsts#MASS_MSG_TEXT}
* {@link me.chanjar.weixin.enterprise.api.WxConsts#MASS_MSG_VIDEO}
* {@link me.chanjar.weixin.enterprise.api.WxConsts#MASS_MSG_VOICE}
* 如果msgtype和media_id不匹配的话会返回系统繁忙的错误
* </pre>
* @param msgType
*/
public void setMsgType(String msgType) {
this.msgType = msgType;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getMediaId() {
return mediaId;
}
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public String toJson() {
return WxGsonBuilder.INSTANCE.create().toJson(this);
}
/**
* OpenId列表最多支持10,000个
* @return
*/
public List<String> getToUsers() {
return toUsers;
}
/**
* 添加OpenId最多支持10,000个
* @param openId
*/
public void addUser(String openId) {
this.toUsers.add(openId);
}
}

View File

@ -1,43 +0,0 @@
package me.chanjar.weixin.enterprise.bean;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
/**
* 群发时用到的视频素材
*
* @author Daniel Qian
*/
public class WxMassVideo {
private String mediaId;
private String title;
private String description;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getMediaId() {
return mediaId;
}
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public String toJson() {
return WxGsonBuilder.INSTANCE.create().toJson(this);
}
}

View File

@ -5,7 +5,7 @@ import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* 公众号菜单
@ -25,15 +25,15 @@ public class WxMenu {
}
public String toJson() {
return WxGsonBuilder.create().toJson(this);
return WxCpGsonBuilder.create().toJson(this);
}
public static WxMenu fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxMenu.class);
return WxCpGsonBuilder.create().fromJson(json, WxMenu.class);
}
public static WxMenu fromJson(InputStream is) {
return WxGsonBuilder.create().fromJson(new InputStreamReader(is), WxMenu.class);
return WxCpGsonBuilder.create().fromJson(new InputStreamReader(is), WxMenu.class);
}
public static class WxMenuButton {

View File

@ -3,7 +3,7 @@ package me.chanjar.weixin.enterprise.bean.result;
import java.util.HashMap;
import java.util.Map;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* 微信错误码说明
@ -125,7 +125,7 @@ public class WxError {
}
public static WxError fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxError.class);
return WxCpGsonBuilder.create().fromJson(json, WxError.class);
}
@Override

View File

@ -1,6 +1,6 @@
package me.chanjar.weixin.enterprise.bean.result;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* <pre>
@ -44,7 +44,7 @@ public class WxMassSendResult {
}
public static WxMassSendResult fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxMassSendResult.class);
return WxCpGsonBuilder.create().fromJson(json, WxMassSendResult.class);
}
@Override

View File

@ -1,6 +1,6 @@
package me.chanjar.weixin.enterprise.bean.result;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* <pre>
@ -41,7 +41,7 @@ public class WxMassUploadResult {
}
public static WxMassUploadResult fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxMassUploadResult.class);
return WxCpGsonBuilder.create().fromJson(json, WxMassUploadResult.class);
}
@Override

View File

@ -1,6 +1,6 @@
package me.chanjar.weixin.enterprise.bean.result;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
public class WxMediaUploadResult {
@ -34,7 +34,7 @@ public class WxMediaUploadResult {
}
public static WxMediaUploadResult fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxMediaUploadResult.class);
return WxCpGsonBuilder.create().fromJson(json, WxMediaUploadResult.class);
}
public String getThumbMediaId() {

View File

@ -1,46 +0,0 @@
package me.chanjar.weixin.enterprise.bean.result;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
/**
* 换取二维码的Ticket
*
* @author Daniel Qian
*/
public class WxQrCodeTicket {
protected String ticket;
protected int expire_seconds = -1;
protected String url;
public String getTicket() {
return ticket;
}
public void setTicket(String ticket) {
this.ticket = ticket;
}
/**
* 如果返回-1说明是永久
*/
public int getExpire_seconds() {
return expire_seconds;
}
public void setExpire_seconds(int expire_seconds) {
this.expire_seconds = expire_seconds;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public static WxQrCodeTicket fromJson(String json) {
return WxGsonBuilder.INSTANCE.create().fromJson(json, WxQrCodeTicket.class);
}
}

View File

@ -1,6 +1,6 @@
package me.chanjar.weixin.enterprise.bean.result;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* 微信用户信息
@ -89,7 +89,7 @@ public class WxUser {
}
public static WxUser fromJson(String json) {
return WxGsonBuilder.INSTANCE.create().fromJson(json, WxUser.class);
return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxUser.class);
}
}

View File

@ -3,7 +3,7 @@ package me.chanjar.weixin.enterprise.bean.result;
import java.util.ArrayList;
import java.util.List;
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder;
import me.chanjar.weixin.enterprise.util.json.WxCpGsonBuilder;
/**
* 关注者列表
@ -42,6 +42,6 @@ public class WxUserList {
}
public static WxUserList fromJson(String json) {
return WxGsonBuilder.INSTANCE.create().fromJson(json, WxUserList.class);
return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxUserList.class);
}
}

View File

@ -15,7 +15,7 @@ import org.apache.http.entity.ContentType;
import me.chanjar.weixin.enterprise.bean.result.WxError;
import me.chanjar.weixin.enterprise.exception.WxErrorException;
import me.chanjar.weixin.enterprise.util.fs.FileUtils;
import me.chanjar.weixin.common.FileUtils;
/**
* 下载媒体文件请求执行器请求的参数是String, 返回的结果是File

View File

@ -1,56 +0,0 @@
package me.chanjar.weixin.enterprise.util.http;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.UUID;
import me.chanjar.weixin.enterprise.bean.result.WxQrCodeTicket;
import me.chanjar.weixin.enterprise.exception.WxErrorException;
import me.chanjar.weixin.enterprise.util.fs.FileUtils;
import org.apache.http.Header;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.ContentType;
import me.chanjar.weixin.enterprise.bean.result.WxError;
/**
* 获得QrCode图片 请求执行器
* @author Daniel Qian
*
*/
public class QrCodeRequestExecutor implements RequestExecutor<File, WxQrCodeTicket> {
@Override
public File execute(String uri, WxQrCodeTicket ticket) throws WxErrorException, ClientProtocolException, IOException {
if (ticket != null) {
if (uri.indexOf('?') == -1) {
uri += '?';
}
uri += uri.endsWith("?") ?
"ticket=" + URLEncoder.encode(ticket.getTicket(), "UTF-8")
:
"&ticket=" + URLEncoder.encode(ticket.getTicket(), "UTF-8");
}
HttpGet httpGet = new HttpGet(uri);
CloseableHttpResponse response = httpclient.execute(httpGet);
Header[] contentTypeHeader = response.getHeaders("Content-Type");
if (contentTypeHeader != null && contentTypeHeader.length > 0) {
// 出错
if (ContentType.TEXT_PLAIN.getMimeType().equals(contentTypeHeader[0].getValue())) {
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
throw new WxErrorException(WxError.fromJson(responseContent));
}
}
InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response);
File localFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), "jpg");
return localFile;
}
}

View File

@ -9,6 +9,7 @@
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.WxAccessToken;
import java.lang.reflect.Type;
@ -18,7 +19,7 @@ import java.lang.reflect.Type;
* @author Daniel Qian
*
*/
public class WxAccessTokenAdapter implements JsonDeserializer<WxAccessToken> {
public class WxCpAccessTokenAdapter implements JsonDeserializer<WxAccessToken> {
public WxAccessToken deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxAccessToken accessToken = new WxAccessToken();

View File

@ -10,7 +10,8 @@ package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.enterprise.bean.WxCpDepartment;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.WxCpDepart;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
@ -25,9 +26,9 @@ import com.google.gson.JsonSerializer;
* @author Daniel Qian
*
*/
public class WxGroupGsonAdapter implements JsonSerializer<WxCpDepartment>, JsonDeserializer<WxCpDepartment> {
public class WxCpDepartGsonAdapter implements JsonSerializer<WxCpDepart>, JsonDeserializer<WxCpDepart> {
public JsonElement serialize(WxCpDepartment group, Type typeOfSrc, JsonSerializationContext context) {
public JsonElement serialize(WxCpDepart group, Type typeOfSrc, JsonSerializationContext context) {
JsonObject json = new JsonObject();
JsonObject groupJson = new JsonObject();
groupJson.addProperty("name", group.getName());
@ -37,8 +38,8 @@ public class WxGroupGsonAdapter implements JsonSerializer<WxCpDepartment>, JsonD
return json;
}
public WxCpDepartment deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxCpDepartment group = new WxCpDepartment();
public WxCpDepart deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxCpDepart group = new WxCpDepart();
JsonObject groupJson = json.getAsJsonObject();
if (json.getAsJsonObject().get("group") != null) {
groupJson = json.getAsJsonObject().get("group").getAsJsonObject();

View File

@ -0,0 +1,29 @@
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import me.chanjar.weixin.enterprise.bean.*;
import me.chanjar.weixin.enterprise.bean.result.*;
public class WxCpGsonBuilder {
public static final GsonBuilder INSTANCE = new GsonBuilder();
static {
INSTANCE.disableHtmlEscaping();
INSTANCE.registerTypeAdapter(WxCpMessage.class, new WxCpMessageGsonAdapter());
INSTANCE.registerTypeAdapter(WxMenu.class, new WxCpMenuGsonAdapter());
INSTANCE.registerTypeAdapter(WxCpDepart.class, new WxCpDepartGsonAdapter());
INSTANCE.registerTypeAdapter(WxUser.class, new WxCpUserGsonAdapter());
INSTANCE.registerTypeAdapter(WxUserList.class, new WxCpUserListGsonAdapter());
INSTANCE.registerTypeAdapter(WxAccessToken.class, new WxCpAccessTokenAdapter());
INSTANCE.registerTypeAdapter(WxError.class, new WxErrorAdapter());
INSTANCE.registerTypeAdapter(WxMediaUploadResult.class, new WxCpMediaUploadResultAdapter());
}
public static Gson create() {
return INSTANCE.create();
}
}

View File

@ -9,6 +9,7 @@
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult;
import java.lang.reflect.Type;
@ -18,7 +19,7 @@ import java.lang.reflect.Type;
* @author Daniel Qian
*
*/
public class WxMediaUploadResultAdapter implements JsonDeserializer<WxMediaUploadResult> {
public class WxCpMediaUploadResultAdapter implements JsonDeserializer<WxMediaUploadResult> {
public WxMediaUploadResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxMediaUploadResult uploadResult = new WxMediaUploadResult();

View File

@ -10,6 +10,7 @@ package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.WxMenu;
import com.google.gson.JsonArray;
@ -26,7 +27,7 @@ import com.google.gson.JsonSerializer;
* @author Daniel Qian
*
*/
public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializer<WxMenu> {
public class WxCpMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializer<WxMenu> {
public JsonElement serialize(WxMenu menu, Type typeOfSrc, JsonSerializationContext context) {
JsonObject json = new JsonObject();

View File

@ -10,6 +10,7 @@ package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.result.WxUser;
import com.google.gson.JsonDeserializationContext;
@ -23,7 +24,7 @@ import com.google.gson.JsonParseException;
* @author Daniel Qian
*
*/
public class WxUserGsonAdapter implements JsonDeserializer<WxUser> {
public class WxCpUserGsonAdapter implements JsonDeserializer<WxUser> {
public WxUser deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject o = json.getAsJsonObject();

View File

@ -10,6 +10,7 @@ package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.result.WxUserList;
import com.google.gson.JsonArray;
@ -24,7 +25,7 @@ import com.google.gson.JsonParseException;
* @author Daniel Qian
*
*/
public class WxUserListGsonAdapter implements JsonDeserializer<WxUserList> {
public class WxCpUserListGsonAdapter implements JsonDeserializer<WxUserList> {
public WxUserList deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject o = json.getAsJsonObject();

View File

@ -9,6 +9,7 @@
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.common.GsonHelper;
import me.chanjar.weixin.enterprise.bean.result.WxError;
import java.lang.reflect.Type;

View File

@ -1,36 +0,0 @@
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import me.chanjar.weixin.enterprise.bean.*;
import me.chanjar.weixin.enterprise.bean.result.*;
public class WxGsonBuilder {
public static final GsonBuilder INSTANCE = new GsonBuilder();
static {
INSTANCE.disableHtmlEscaping();
INSTANCE.registerTypeAdapter(WxCpMessage.class, new WxCpMessageGsonAdapter());
INSTANCE.registerTypeAdapter(WxMenu.class, new WxMenuGsonAdapter());
INSTANCE.registerTypeAdapter(WxMassNews.class, new WxMassNewsGsonAdapter());
INSTANCE.registerTypeAdapter(WxMassGroupMessage.class, new WxMassMessageGsonAdapter());
INSTANCE.registerTypeAdapter(WxMassOpenIdsMessage.class, new WxMassOpenIdsMessageGsonAdapter());
INSTANCE.registerTypeAdapter(WxCpDepartment.class, new WxGroupGsonAdapter());
INSTANCE.registerTypeAdapter(WxUser.class, new WxUserGsonAdapter());
INSTANCE.registerTypeAdapter(WxUserList.class, new WxUserListGsonAdapter());
INSTANCE.registerTypeAdapter(WxAccessToken.class, new WxAccessTokenAdapter());
INSTANCE.registerTypeAdapter(WxError.class, new WxErrorAdapter());
INSTANCE.registerTypeAdapter(WxMassVideo.class, new WxMassVideoAdapter());
INSTANCE.registerTypeAdapter(WxMediaUploadResult.class, new WxMediaUploadResultAdapter());
INSTANCE.registerTypeAdapter(WxMassSendResult.class, new WxMassSendResultAdapter());
INSTANCE.registerTypeAdapter(WxMassUploadResult.class, new WxMassUploadResultAdapter());
INSTANCE.registerTypeAdapter(WxQrCodeTicket.class, new WxQrCodeTicketAdapter());
}
public static Gson create() {
return INSTANCE.create();
}
}

View File

@ -1,64 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.bean.WxMassGroupMessage;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
/**
*
* @author Daniel Qian
*
*/
public class WxMassMessageGsonAdapter implements JsonSerializer<WxMassGroupMessage> {
public JsonElement serialize(WxMassGroupMessage message, Type typeOfSrc, JsonSerializationContext context) {
JsonObject messageJson = new JsonObject();
JsonObject filter = new JsonObject();
filter.addProperty("group_id", message.getGroupId());
messageJson.add("filter", filter);
if (WxConsts.MASS_MSG_NEWS.equals(message.getMsgtype())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_NEWS, sub);
}
if (WxConsts.MASS_MSG_TEXT.equals(message.getMsgtype())) {
JsonObject sub = new JsonObject();
sub.addProperty("content", message.getContent());
messageJson.add(WxConsts.MASS_MSG_TEXT, sub);
}
if (WxConsts.MASS_MSG_VOICE.equals(message.getMsgtype())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_VOICE, sub);
}
if (WxConsts.MASS_MSG_IMAGE.equals(message.getMsgtype())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_IMAGE, sub);
}
if (WxConsts.MASS_MSG_VIDEO.equals(message.getMsgtype())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_VIDEO, sub);
}
messageJson.addProperty("msgtype", message.getMsgtype());
return messageJson;
}
}

View File

@ -1,55 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.enterprise.bean.WxMassNews;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
/**
*
* @author Daniel Qian
*
*/
public class WxMassNewsGsonAdapter implements JsonSerializer<WxMassNews> {
public JsonElement serialize(WxMassNews message, Type typeOfSrc, JsonSerializationContext context) {
JsonObject newsJson = new JsonObject();
JsonArray articleJsonArray = new JsonArray();
for (WxMassNews.WxMassNewsArticle article : message.getArticles()) {
JsonObject articleJson = new JsonObject();
articleJson.addProperty("thumb_media_id", article.getThumbMediaId());
articleJson.addProperty("title", article.getTitle());
articleJson.addProperty("content", article.getContent());
if (null != article.getAuthor()) {
articleJson.addProperty("author", article.getAuthor());
}
if (null != article.getContentSourceUrl()) {
articleJson.addProperty("content_source_url", article.getContentSourceUrl());
}
if (null != article.getDigest()) {
articleJson.addProperty("digest", article.getDigest());
}
articleJson.addProperty("show_cover_pic", article.isShowCoverPic() ? "1" : "0");
articleJsonArray.add(articleJson);
}
newsJson.add("articles", articleJsonArray);
return newsJson;
}
}

View File

@ -1,68 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import java.lang.reflect.Type;
import me.chanjar.weixin.enterprise.api.WxConsts;
import me.chanjar.weixin.enterprise.bean.WxMassOpenIdsMessage;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
/**
*
* @author Daniel Qian
*
*/
public class WxMassOpenIdsMessageGsonAdapter implements JsonSerializer<WxMassOpenIdsMessage> {
public JsonElement serialize(WxMassOpenIdsMessage message, Type typeOfSrc, JsonSerializationContext context) {
JsonObject messageJson = new JsonObject();
JsonArray toUsers = new JsonArray();
for (String openId : message.getToUsers()) {
toUsers.add(new JsonPrimitive(openId));
}
messageJson.add("touser", toUsers);
if (WxConsts.MASS_MSG_NEWS.equals(message.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_NEWS, sub);
}
if (WxConsts.MASS_MSG_TEXT.equals(message.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("content", message.getContent());
messageJson.add(WxConsts.MASS_MSG_TEXT, sub);
}
if (WxConsts.MASS_MSG_VOICE.equals(message.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_VOICE, sub);
}
if (WxConsts.MASS_MSG_IMAGE.equals(message.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_IMAGE, sub);
}
if (WxConsts.MASS_MSG_VIDEO.equals(message.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", message.getMediaId());
messageJson.add(WxConsts.MASS_MSG_VIDEO, sub);
}
messageJson.addProperty("msgtype", message.getMsgType());
return messageJson;
}
}

View File

@ -1,39 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.enterprise.bean.result.WxMassSendResult;
import java.lang.reflect.Type;
/**
*
* @author Daniel Qian
*
*/
public class WxMassSendResultAdapter implements JsonDeserializer<WxMassSendResult> {
public WxMassSendResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxMassSendResult sendResult = new WxMassSendResult();
JsonObject sendResultJsonObject = json.getAsJsonObject();
if (sendResultJsonObject.get("errcode") != null && !sendResultJsonObject.get("errcode").isJsonNull()) {
sendResult.setErrorCode(GsonHelper.getAsString(sendResultJsonObject.get("errcode")));
}
if (sendResultJsonObject.get("errmsg") != null && !sendResultJsonObject.get("errmsg").isJsonNull()) {
sendResult.setErrorMsg(GsonHelper.getAsString(sendResultJsonObject.get("errmsg")));
}
if (sendResultJsonObject.get("msg_id") != null && !sendResultJsonObject.get("msg_id").isJsonNull()) {
sendResult.setMsgId(GsonHelper.getAsString(sendResultJsonObject.get("msg_id")));
}
return sendResult;
}
}

View File

@ -1,39 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.enterprise.bean.result.WxMassUploadResult;
import java.lang.reflect.Type;
/**
*
* @author Daniel Qian
*
*/
public class WxMassUploadResultAdapter implements JsonDeserializer<WxMassUploadResult> {
public WxMassUploadResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxMassUploadResult uploadResult = new WxMassUploadResult();
JsonObject uploadResultJsonObject = json.getAsJsonObject();
if (uploadResultJsonObject.get("type") != null && !uploadResultJsonObject.get("type").isJsonNull()) {
uploadResult.setType(GsonHelper.getAsString(uploadResultJsonObject.get("type")));
}
if (uploadResultJsonObject.get("media_id") != null && !uploadResultJsonObject.get("media_id").isJsonNull()) {
uploadResult.setMediaId(GsonHelper.getAsString(uploadResultJsonObject.get("media_id")));
}
if (uploadResultJsonObject.get("created_at") != null && !uploadResultJsonObject.get("created_at").isJsonNull()) {
uploadResult.setCreatedAt(GsonHelper.getAsPrimitiveLong(uploadResultJsonObject.get("created_at")));
}
return uploadResult;
}
}

View File

@ -1,31 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.enterprise.bean.WxMassVideo;
import java.lang.reflect.Type;
/**
*
* @author Daniel Qian
*
*/
public class WxMassVideoAdapter implements JsonSerializer<WxMassVideo> {
public JsonElement serialize(WxMassVideo message, Type typeOfSrc, JsonSerializationContext context) {
JsonObject messageJson = new JsonObject();
messageJson.addProperty("media_id", message.getMediaId());
messageJson.addProperty("description", message.getDescription());
messageJson.addProperty("title", message.getTitle());
return messageJson;
}
}

View File

@ -1,39 +0,0 @@
/*
* KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
*
* This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
* only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
package me.chanjar.weixin.enterprise.util.json;
import com.google.gson.*;
import me.chanjar.weixin.enterprise.bean.result.WxQrCodeTicket;
import java.lang.reflect.Type;
/**
*
* @author Daniel Qian
*
*/
public class WxQrCodeTicketAdapter implements JsonDeserializer<WxQrCodeTicket> {
public WxQrCodeTicket deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
WxQrCodeTicket ticket = new WxQrCodeTicket();
JsonObject ticketJsonObject = json.getAsJsonObject();
if (ticketJsonObject.get("ticket") != null && !ticketJsonObject.get("ticket").isJsonNull()) {
ticket.setTicket(GsonHelper.getAsString(ticketJsonObject.get("ticket")));
}
if (ticketJsonObject.get("expire_seconds") != null && !ticketJsonObject.get("expire_seconds").isJsonNull()) {
ticket.setExpire_seconds(GsonHelper.getAsPrimitiveInt(ticketJsonObject.get("expire_seconds")));
}
if (ticketJsonObject.get("url") != null && !ticketJsonObject.get("url").isJsonNull()) {
ticket.setUrl(GsonHelper.getAsString(ticketJsonObject.get("url")));
}
return ticket;
}
}

View File

@ -2,7 +2,7 @@ package me.chanjar.weixin.enterprise.api;
import java.util.List;
import me.chanjar.weixin.enterprise.bean.WxCpDepartment;
import me.chanjar.weixin.enterprise.bean.WxCpDepart;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
@ -23,19 +23,19 @@ public class WxGroupAPITest {
@Inject
protected WxCpServiceImpl wxService;
protected WxCpDepartment group;
protected WxCpDepart group;
public void testGroupCreate() throws WxErrorException {
WxCpDepartment res = wxService.departmentCreate("测试分组1");
WxCpDepart res = wxService.departmentCreate("测试分组1");
Assert.assertEquals(res.getName(), "测试分组1");
}
@Test(dependsOnMethods="testGroupCreate")
public void testGroupGet() throws WxErrorException {
List<WxCpDepartment> groupList = wxService.departmentGet();
List<WxCpDepart> groupList = wxService.departmentGet();
Assert.assertNotNull(groupList);
Assert.assertTrue(groupList.size() > 0);
for (WxCpDepartment g : groupList) {
for (WxCpDepart g : groupList) {
group = g;
Assert.assertNotNull(g.getName());
}