|
|
<?php
|
|
|
namespace LaneWeChat\Core; // 定义命名空间为 LaneWeChat\Core,表示该类属于 LaneWeChat 模块的核心部分
|
|
|
|
|
|
/**
|
|
|
* 用户管理类
|
|
|
*
|
|
|
* 该类用于管理微信公众号的用户信息,包括创建和管理用户分组、获取用户信息、设置用户备注等。
|
|
|
*/
|
|
|
class UserManage {
|
|
|
|
|
|
/**
|
|
|
* 创建一个新的用户分组
|
|
|
*
|
|
|
* @param string $groupName 分组名称
|
|
|
* @return mixed 返回创建分组的结果
|
|
|
*/
|
|
|
public static function createGroup($groupName) {
|
|
|
// 获取access_token,用于验证API请求的合法性
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/groups/create?access_token=' . $accessToken;
|
|
|
// 准备发送的数据,包含分组名称
|
|
|
$data = '{"group":{"name":"' . $groupName . '"}}';
|
|
|
// 发起POST请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, $data, 'POST');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取所有用户分组列表
|
|
|
*
|
|
|
* @return mixed 返回分组列表
|
|
|
*/
|
|
|
public static function getGroupList() {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/groups/get?access_token=' . $accessToken;
|
|
|
// 不需要发送数据
|
|
|
$data = '';
|
|
|
// 发起GET请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, $data, 'GET');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据OpenId获取用户所在的分组ID
|
|
|
*
|
|
|
* @param string $openId 用户的OpenId
|
|
|
* @return mixed 返回用户所在的分组ID
|
|
|
*/
|
|
|
public static function getGroupByOpenId($openId) {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=' . $accessToken;
|
|
|
// 准备发送的数据,包含OpenId
|
|
|
$data = '{"openid":"' . $openId . '"}';
|
|
|
// 发起POST请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, $data, 'POST');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 编辑用户分组的名称
|
|
|
*
|
|
|
* @param int $groupId 分组ID
|
|
|
* @param string $groupName 新的分组名称
|
|
|
* @return mixed 返回编辑分组名称的结果
|
|
|
*/
|
|
|
public static function editGroupName($groupId, $groupName) {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/groups/update?access_token=' . $accessToken;
|
|
|
// 准备发送的数据,包含分组ID和新名称
|
|
|
$data = '{"group":{"id":' . $groupId . ',"name":"' . $groupName . '"}}';
|
|
|
// 发起POST请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, $data, 'POST');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将用户移动到另一个分组
|
|
|
*
|
|
|
* @param string $openid 用户的OpenId
|
|
|
* @param int $to_groupid 目标分组ID
|
|
|
* @return mixed 返回移动用户的结果
|
|
|
*/
|
|
|
public static function editUserGroup($openid, $to_groupid) {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=' . $accessToken;
|
|
|
// 准备发送的数据,包含OpenId和目标分组ID
|
|
|
$data = '{"openid":"' . $openid . '","to_groupid":' . $to_groupid . '}';
|
|
|
// 发起POST请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, $data, 'POST');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取用户的详细信息
|
|
|
*
|
|
|
* @param string $openId 用户的OpenId
|
|
|
* @return mixed 返回用户的详细信息
|
|
|
*/
|
|
|
public static function getUserInfo($openId) {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token和OpenId
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=' . $accessToken . '&openid=' . $openId;
|
|
|
// 发起GET请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, '', 'GET');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取公众号粉丝列表
|
|
|
*
|
|
|
* @param string $next_openid 下一个OpenId,用于分页获取粉丝列表
|
|
|
* @return mixed 返回粉丝列表
|
|
|
*/
|
|
|
public static function getFansList($next_openid = '') {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 如果没有提供next_openid
|
|
|
if (empty($next_openid)) {
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=' . $accessToken;
|
|
|
} else {
|
|
|
// 如果提供了next_openid
|
|
|
// 构建请求URL,包含access_token和next_openid
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=' . $accessToken . '&next_openid=' . $next_openid;
|
|
|
}
|
|
|
// 发起GET请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, '', 'GET');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置用户的备注名
|
|
|
*
|
|
|
* @param string $openId 用户的OpenId
|
|
|
* @param string $remark 用户的备注名
|
|
|
* @return mixed 返回设置备注名的结果
|
|
|
*/
|
|
|
public static function setRemark($openId, $remark) {
|
|
|
// 获取access_token
|
|
|
$accessToken = AccessToken::getAccessToken();
|
|
|
// 构建请求URL,包含access_token
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=' . $accessToken;
|
|
|
// 准备发送的数据,包含OpenId和备注名
|
|
|
$data = json_encode(array('openid' => $openId, 'remark' => $remark));
|
|
|
// 发起POST请求,调用Curl类的方法
|
|
|
return Curl::callWebServer($queryUrl, $data, 'POST');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取网络状态
|
|
|
*
|
|
|
* 输出JavaScript代码,用于在微信浏览器中调用微信JSSDK的getNetworkType方法
|
|
|
*/
|
|
|
public static function getNetworkState() {
|
|
|
// 输出JavaScript代码
|
|
|
echo "WeixinJSBridge.invoke('getNetworkType',{},function(e){WeixinJSBridge.log(e.err_msg);});";
|
|
|
}
|
|
|
} |