cn.zkdcloud.core.UserManagerComponent Maven / Gradle / Ivy
package cn.zkdcloud.core;
import cn.zkdcloud.component.user.UserInfo;
import cn.zkdcloud.util.AccessToken;
import cn.zkdcloud.util.HttpUtil;
import cn.zkdcloud.util.JsonUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.log4j.Logger;
import java.util.List;
/**
* 用户管理组件
*
* @author zk
* @version 2017/9/3
*/
public class UserManagerComponent implements Component {
private static Logger logger = Logger.getLogger(UserManagerComponent.class);
public static UserManagerComponent userManagerComponent;
/**
* 设置用户备注名(POST)
*/
public static String USER_REMARK_URL = "https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=" + AccessToken.getAccessToken();
/**
* 查询用户信息(GET)
*/
public static String GET_USER_INFO = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + AccessToken.getAccessToken();
/**
* 批量获取用户基本信息(POST) *errmsg 无效openid
*/
public static String BATCH_GET_USERINFOS = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=" + AccessToken.getAccessToken();
/**
* 批量获取用户openId,一次拉取调用最多拉取10000个关注者的OpenID(GET)
*/
public static String GET_USER_OPENIDS = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + AccessToken.getAccessToken();
/**
* 获取公账号黑名单列表(POST)
* 该接口每次调用最多可拉取 10000 个OpenID,当列表数较多时,可以通过多次拉取的方式来满足需求。
*/
public static String GET_BLACK_LIST = "https://api.weixin.qq.com/cgi-bin/tags/members/getblacklist?access_token=" + AccessToken.getAccessToken();
/**
* 批量拉黑用户(POST,一次最多20)
*/
public static String BATCH_BLACK_USES = "https://api.weixin.qq.com/cgi-bin/tags/members/batchblacklist?access_token=" + AccessToken.getAccessToken();
/**
* 批量取消拉黑用户(POST,一次最多20)
*/
public static String BARCH_UNBLACK_USERS = "https://api.weixin.qq.com/cgi-bin/tags/members/batchunblacklist?access_token=" + AccessToken.getAccessToken();
@Override
public void init() {
}
private UserManagerComponent() {
}
/**
* 设置用户备注名
*
* @param openid open_id
* @param remarkName remarkName
* @return is or not success
*/
public boolean remarkUser(String openid, String remarkName) {
JSONObject data = new JSONObject();
data.put("openid", openid);
data.put("remark", remarkName);
String ret = HttpUtil.doPost(USER_REMARK_URL, data.toJSONString());
if (JsonUtil.isError(ret)) {
logger.info("remark user:" + openid + remarkName + " fail");
return false;
}
return true;
}
/**
* 根据用户openid获取用户信息(language default:zh-cn)
*
* @param openid openid
* @return userInfoBean
*/
public UserInfo getUserInfoByOpenId(String openid) {
return getUserInfoByOpenId(openid, "zh_CN");
}
/**
* 根据用户openid 获取用户信息
*
* @param openid openid
* @param lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
* @return userInfoBean
*/
public UserInfo getUserInfoByOpenId(String openid, String lang) {
String ret = HttpUtil.doPost(GET_USER_INFO + "&openid=" + openid + "&lang=" + lang);
if (JsonUtil.isError(ret)) {
logger.info("get userInfo :" + openid + "fail");
return null;
}
return JSONObject.parseObject(ret).toJavaObject(UserInfo.class);
}
/**
* 批量获取用户信息 ×
*
* @param openids openids
* @return userInfos
*/
public List getBatchUserInfo(List openids) {
return getBatchUserInfo(openids, "zh_CN");
}
/**
* 批量获取用户信息
*
* @param openids openids
* @param lang lang default 'zh_cn'
* @return userInfos
*/
public List getBatchUserInfo(List openids, String lang) {
JSONObject data = new JSONObject();
JSONArray userList = new JSONArray();
for (String openid : openids) {
userList.add("{\"openid\": \"" + openid + "\",\"lang\": \"" + lang + "\"}");
}
data.put("user_list", userList);
String ret = HttpUtil.doPost(BATCH_GET_USERINFOS, data.toJSONString());
if (JsonUtil.isError(ret)) {
logger.info("get batch uerInfo fail:" + ret);
return null;
}
if (null != JSONObject.parseObject(ret).getJSONArray("user_info_list")) {
return JSONObject.parseObject(ret).getJSONArray("user_info_list").toJavaList(UserInfo.class);
}
return null;
}
/**
* 批量获取用户openid
*
* @return List
*/
public List getUserOpenids() {
return getUserOpenids(null);
}
/**
* 批量获取用户openid
*
* @param next_openid 开始的第一个openId
* @return List
*/
public List getUserOpenids(String next_openid) {
String ret;
if (null != next_openid) {
ret = HttpUtil.doGet(GET_USER_OPENIDS + "&next_openid=" + next_openid);
} else {
ret = HttpUtil.doGet(GET_USER_OPENIDS);
}
if (JsonUtil.isError(ret)) {
logger.info("get user openids fail" + ret);
return null;
}
if (null != JSONObject.parseObject(ret).getJSONObject("data")) {
return JSONObject.parseObject(ret).getJSONObject("data").getJSONArray("openid").toJavaList(String.class);
}
return null;
}
/**
* 获取公账号黑名单列表(一次最多10000)
*
* @return List
*/
public List getBlackList() {
return getBlackList(null);
}
/**
* 获取公众号黑名单列表
*
* @param begin_openid 开始的openid
* @return List
*/
public List getBlackList(String begin_openid) {
String ret;
if (null == begin_openid) {
ret = HttpUtil.doPost(GET_BLACK_LIST);
} else {
ret = HttpUtil.doPost(GET_BLACK_LIST, "{\"begin_openid\":\"" + begin_openid + "\"}");
}
if (JsonUtil.isError(ret) || null == JSONObject.parseObject(ret).get("data")) {
logger.info("get blackList fail or list is not :" + ret);
return null;
}
return JSONObject.parseObject(ret).getJSONObject("data").getJSONArray("openid").toJavaList(String.class);
}
/**
* 批量拉黑用户
*
* @param openIds List
* @return is or not success
*/
public boolean batchBlackUsers(List openIds) {
JSONObject data = new JSONObject();
data.put("opened_list", openIds);
String ret = HttpUtil.doPost(BATCH_BLACK_USES, data.toJSONString());
if (JsonUtil.isError(ret)) {
logger.info("batch black users fail :" + ret);
return false;
}
return true;
}
/**
* 批量取消拉黑用户
*
* @param openIds List>
* @return is or not success
*/
public boolean batchUnblackUsers(List openIds) {
JSONObject data = new JSONObject();
data.put("opened_list", openIds);
String ret = HttpUtil.doPost(BARCH_UNBLACK_USERS, data.toJSONString());
if (JsonUtil.isError(ret)) {
logger.info("batch unblack users fail :" + ret);
return false;
}
return true;
}
public static UserManagerComponent getInstance() {
if (null == userManagerComponent) {
userManagerComponent = new UserManagerComponent();
}
return userManagerComponent;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy