All Downloads are FREE. Search and download functionalities are using the official Maven repository.

weixin.popular.api.UserAPI Maven / Gradle / Ivy

Go to download

The weixin-popular is a JAVA SDK for weixin. Weixin web url is https://mp.weixin.qq.com.

There is a newer version: 2.8.32
Show newest version
package weixin.popular.api;

import java.nio.charset.Charset;
import java.util.List;

import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.StringEntity;

import weixin.popular.bean.BaseResult;
import weixin.popular.bean.user.FollowResult;
import weixin.popular.bean.user.GetblacklistResult;
import weixin.popular.bean.user.Group;
import weixin.popular.bean.user.TagsCreatResult;
import weixin.popular.bean.user.TagsGetResult;
import weixin.popular.bean.user.TagsGetidlistResult;
import weixin.popular.bean.user.User;
import weixin.popular.bean.user.UserInfoList;
import weixin.popular.bean.user.UserTagGetResult;
import weixin.popular.client.LocalHttpClient;
import weixin.popular.util.EmojiUtil;
import weixin.popular.util.JsonUtil;

/**
 * User API
 * @author LiYi
 *
 */
public class UserAPI extends BaseAPI{

	/**
	 * 获取用户基本信息
	 * @since 2.7.1
	 * @param access_token access_token
	 * @param openid openid
	 * @param emoji 表情解析方式
* 0 不设置
* 1 HtmlHex 格式
* 2 HtmlTag 格式
* 3 Alias 格式
* 4 HtmlDec 格式
* 5 PureText 纯文本
* @return User */ public static User userInfo(String access_token,String openid,int emoji){ HttpUriRequest httpUriRequest = RequestBuilder.get() .setUri(BASE_URI+"/cgi-bin/user/info") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .addParameter("openid",openid) .addParameter("lang","zh_CN") .build(); User user = LocalHttpClient.executeJsonResult(httpUriRequest,User.class); if(emoji != 0 && user != null && user.getNickname() != null){ user.setNickname_emoji(EmojiUtil.parse(user.getNickname(), emoji)); } return user; } /** * 获取用户基本信息 * @param access_token access_token * @param openid openid * @return User */ public static User userInfo(String access_token,String openid){ return userInfo(access_token, openid, 0); } /** * 获取关注列表 * @param access_token access_token * @param next_openid 第一次获取使用null * @return FollowResult */ public static FollowResult userGet(String access_token,String next_openid){ HttpUriRequest httpUriRequest = RequestBuilder.get() .setUri(BASE_URI+"/cgi-bin/user/get") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .addParameter("next_openid", next_openid==null?"":next_openid) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,FollowResult.class); } /** * 批量获取用户基本信息 * @since 2.7.1 * @param access_token access_token * @param lang zh-CN * @param openids 最多支持一次拉取100条 * @param emoji 表情解析方式
* 0 不设置
* 1 HtmlHex 格式
* 2 HtmlTag 格式
* 3 Alias 格式
* 4 HtmlDec 格式
* 5 PureText 纯文本
* @return UserInfoList */ public static UserInfoList userInfoBatchget(String access_token,String lang,List openids,int emoji){ StringBuilder sb = new StringBuilder(); sb.append("{\"user_list\": ["); for(int i = 0;i < openids.size();i++){ sb.append("{") .append("\"openid\": \"").append(openids.get(i)).append("\",") .append("\"lang\": \"").append(lang).append("\"") .append("}").append(i==openids.size()-1?"":","); } sb.append("]}"); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/user/info/batchget") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(sb.toString(), Charset.forName("utf-8"))) .build(); UserInfoList userInfoList = LocalHttpClient.executeJsonResult(httpUriRequest,UserInfoList.class); if(emoji != 0 && userInfoList != null && userInfoList.getUser_info_list() != null){ for(User user : userInfoList.getUser_info_list()){ if(user.getNickname() != null){ user.setNickname_emoji(EmojiUtil.parse(user.getNickname(), emoji)); } } } return userInfoList; } /** * 批量获取用户基本信息 * @param access_token access_token * @param lang zh-CN * @param openids 最多支持一次拉取100条 * @return UserInfoList */ public static UserInfoList userInfoBatchget(String access_token,String lang,List openids){ return userInfoBatchget(access_token, lang, openids,0); } /** * 设置备注名 * @param access_token access_token * @param openid openid * @param remark remark * @return BaseResult */ public static BaseResult userInfoUpdateremark(String access_token,String openid,String remark){ String postJson = String.format("{\"openid\":\"%1$s\",\"remark\":\"%2$s\"}", openid,remark); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/user/info/updateremark") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(postJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 创建分组 * @param access_token access_token * @param name name * @return Group */ public static Group groupsCreate(String access_token,String name){ String groupJson = String.format("{\"group\":{\"name\":\"%1$s\"}}",name); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/groups/create") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(groupJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,Group.class); } /** * 查询所有分组 * @param access_token access_token * @return Group */ public static Group groupsGet(String access_token){ HttpUriRequest httpUriRequest = RequestBuilder.post() .setUri(BASE_URI+"/cgi-bin/groups/get") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,Group.class); } /** * 查询用户所在分组 * @param access_token access_token * @param openid openid * @return Group */ public static Group groupsGetid(String access_token,String openid){ String groupJson = String.format("{\"openid\":\"%1$s\"}",openid); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/groups/getid") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(groupJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,Group.class); } /** * 修改分组名 * @param access_token access_token * @param id 分组ID * @param name 分组名 * @return BaseResult */ public static BaseResult groupsUpdate(String access_token,String id,String name){ String groupJson = "{\"group\":{\"id\":"+id+",\"name\":\""+name+"\"}}"; HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/groups/update") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(groupJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 移动用户分组 * @param access_token access_token * @param openid openid * @param to_groupid to_groupid * @return BaseResult */ public static BaseResult groupsMembersUpdate(String access_token,String openid,String to_groupid){ String groupJson = "{\"openid\":\""+openid+"\",\"to_groupid\":"+to_groupid+"}"; HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/groups/members/update") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(groupJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 批量移动用户分组 * @param access_token access_token * @param openid_list openid_list * @param to_groupid to_groupid * @return BaseResult */ public static BaseResult groupsMembersBatchUpdate(String access_token,List openid_list,String to_groupid){ String openidListStr = JsonUtil.toJSONString(openid_list); String groupJson = "{\"openid_list\":"+openidListStr+",\"to_groupid\":"+to_groupid+"}"; HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/groups/members/batchupdate") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(groupJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 删除分组 * @param access_token access_token * @param id id * @return BaseResult */ public static BaseResult groupsDelete(String access_token,String id){ String groupJson = String.format("{\"group\":{\"id\":%1$s}}",id); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/groups/delete") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(groupJson,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 标签管理 创建标签
* 一个公众号,最多可以创建100个标签。 * @since 2.8.1 * @param access_token access_token * @param name name 标签名长度超过30个字节 * @return result */ public static TagsCreatResult tagsCreate(String access_token,String name){ String json = String.format("{\"tag\":{\"name\":\"%s\"}}",name); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/create") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,TagsCreatResult.class); } /** * 标签管理 获取公众号已创建的标签 * @since 2.8.1 * @param access_token access_token * @return result */ public static TagsGetResult tagsGet(String access_token){ HttpUriRequest httpUriRequest = RequestBuilder.get() .setUri(BASE_URI+"/cgi-bin/tags/get") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,TagsGetResult.class); } /** * 标签管理 编辑标签 * @since 2.8.1 * @param access_token access_token * @param id id * @param name name 标签名长度超过30个字节 * @return result */ public static BaseResult tagsUpdate(String access_token,Integer id,String name){ String json = String.format("{\"tag\":{\"id\":%d,\"name\":\"%s\"}}",id,name); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/update") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 标签管理 删除标签
* 请注意,当某个标签下的粉丝超过10w时,后台不可直接删除标签。
* 此时,开发者可以对该标签下的openid列表,先进行取消标签的操作,直到粉丝数不超过10w后,才可直接删除该标签。 * @since 2.8.1 * @param access_token access_token * @param id id * @return result */ public static BaseResult tagsDelete(String access_token,Integer id){ String json = String.format("{\"tag\":{\"id\":%d}}",id); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/delete") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 标签管理 获取标签下粉丝列表 * @since 2.8.1 * @param access_token access_token * @param tagid tagid * @param next_openid 第一个拉取的OPENID,不填默认从头开始拉取 * @return result */ public static UserTagGetResult userTagGet(String access_token,Integer tagid,String next_openid){ String json = String.format("{\"tagid\":%d,\"next_openid\":\"%s\"}",tagid,next_openid==null?"":next_openid); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/user/tag/get") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,UserTagGetResult.class); } /** * 用户管理 批量为用户打标签
* 标签功能目前支持公众号为用户打上最多20个标签。 * @since 2.8.1 * @param access_token access_token * @param tagid tagid * @param openids openids * @return result */ public static BaseResult tagsMembersBatchtagging(String access_token,Integer tagid,String[] openids){ String json = String.format("{\"tagid\":%d,\"openid_list\":%s}",tagid,JsonUtil.toJSONString(openids)); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/members/batchtagging") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 用户管理 批量为用户取消标签 * @since 2.8.1 * @param access_token access_token * @param tagid tagid * @param openids openids * @return result */ public static BaseResult tagsMembersBatchuntagging(String access_token,Integer tagid,String[] openids){ String json = String.format("{\"tagid\":%d,\"openid_list\":%s}",tagid,JsonUtil.toJSONString(openids)); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/members/batchuntagging") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 用户管理 获取用户身上的标签列表 * @since 2.8.1 * @param access_token access_token * @param openid openid * @return result */ public static TagsGetidlistResult tagsGetidlist(String access_token,String openid){ String json = String.format("{\"openid\":\"%s\"}",openid); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/getidlist") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,TagsGetidlistResult.class); } /** * 黑名单管理 获取公众号的黑名单列表
* 该接口每次调用最多可拉取 10000 个OpenID,当列表数较多时,可以通过多次拉取的方式来满足需求。 * @since 2.8.1 * @param access_token access_token * @param begin_openid 当 begin_openid 为空时,默认从开头拉取。 * @return result */ public static GetblacklistResult tagsMembersGetblacklist(String access_token,String begin_openid){ String json = String.format("{\"begin_openid\":\"%s\"}",begin_openid == null?"":begin_openid); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/members/getblacklist") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,GetblacklistResult.class); } /** * 黑名单管理 拉黑用户 * @since 2.8.1 * @param access_token access_token * @param openid_list 需要拉入黑名单的用户的openid,一次拉黑最多允许20个 * @return result */ public static BaseResult tagsMembersBatchblacklist(String access_token,String[] openid_list){ String json = String.format("{\"openid_list\":%s}",JsonUtil.toJSONString(openid_list)); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/members/batchblacklist") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } /** * 黑名单管理 取消拉黑用户 * @since 2.8.1 * @param access_token access_token * @param openid_list 需要取消拉入黑名单的用户的openid,一次取消拉黑最多允许20个 * @return result */ public static BaseResult tagsMembersBatchunblacklist(String access_token,String[] openid_list){ String json = String.format("{\"openid_list\":%s}",JsonUtil.toJSONString(openid_list)); HttpUriRequest httpUriRequest = RequestBuilder.post() .setHeader(jsonHeader) .setUri(BASE_URI+"/cgi-bin/tags/members/batchunblacklist") .addParameter(PARAM_ACCESS_TOKEN, API.accessToken(access_token)) .setEntity(new StringEntity(json,Charset.forName("utf-8"))) .build(); return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy