You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
6.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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);});";
}
}