1. 前言
上一篇我们实现了被动回复用户的消息,当然公众号也有主动给用户发送消息的接口,但是前提是我们需要知道发给谁。
所以我们先来实现下用户管理功能,可以查询已关注公众号的用户列表,也可以查询某个用户的具体信息。
2. 代码
直接调用wxMpService的相关方法实现即可:
/**
* 用户管理
*/
@RestController
public class UserController {
@Autowired
private WxMpService wxMpService;
/**
* 获取用户列表
*/
@RequestMapping("/userList")
public WxMpUserList userList() throws WxErrorException {
WxMpUserList wxUserList = wxMpService.getUserService().userList(null);
return wxUserList;
}
/**
* 获取用户信息
*/
@RequestMapping("/userInfo")
public WxMpUser userInfo(@RequestParam("openid") String openid) throws WxErrorException {
String lang = "zh_CN"; // 语言
WxMpUser user = wxMpService.getUserService().userInfo(openid, lang);
return user;
}
/**
* 更新用户备注名
*/
@RequestMapping("/userUpdateRemark")
public boolean userUpdateRemark(@RequestParam("openid") String openid, @RequestParam("remark") String remark) throws WxErrorException {
wxMpService.getUserService().userUpdateRemark(openid, remark);
return true;
}
}
3. 测试
接下来,我们测试下。
3.1 获取用户列表
首先获取用户列表,访问http://127.0.0.1/wx-server/userList,返回结果如下:
{"total":1,"count":1,"openids":["oINiq6UqTiKqfXN3H6RmeKvvRnmw"],"nextOpenid":"oINiq6UqTiKqfXN3H6RmeKvvRnmw"}
1
可以看出,目前有一个用户关注了公众号,其openid也获取到了,openid就是标注该用户身份的标识。
3.2 获取用户信息
访问http://127.0.0.1/wx-server/userInfo?openid=oINiq6UqTiKqfXN3H6RmeKvvRnmw,获取用户信息,返回结果如下:
{"subscribe":true,"openId":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","nickname":"熊猫大哥大","sexDesc":"男","sex":1,"language":"zh_CN","city":"泰安","province":"山东","country":"中国","headImgUrl":"http://thirdwx.qlogo.cn/mmopen/DYAIOgq83eq6c4c5ibPOHdfElABDqq4rz7kqiaAfCc8M9UbpQYy1QyMT8oCoCXKUoqCwAa7wTT5QM4CBlZGEB65scMOY1xOj61/132","subscribeTime":1632964001,"unionId":null,"remark":"","groupId":0,"tagIds":[],"privileges":null,"subscribeScene":"ADD_SCENE_SEARCH","qrScene":"0","qrSceneStr":""}
1
从中可以看到用户的昵称、性别、语言、国家、省份、城市、头像、关注时间等信息。
3.3 修改用户备注
访问http://127.0.0.1/wx-server/userUpdateRemark?openid=oINiq6UqTiKqfXN3H6RmeKvvRnmw&remark=备注名修改用户备注。
然后再次执行查询,会发现remark属性已经成功修改为备注名。
4. 小结
用户管理功能比较简单。