微信开放文档

微信小程序和公众号中,同一个用户在不同的应用中的openId是不同的,也就是说同一个用户在一个小程序和对应的公众号上是无法通过openId对应的,需要用微信唯一的unionId进行对应,还需要进行unionid和openId的转换。

先写拉取关注公众号的用户数据列表。

数据库表结构:

/*Navicat Premium Data TransferSource Server         : yixue1Source Server Type    : MySQLSource Server Version : 80024Source Host           : 110.42.3.22:3306Source Schema         : yixueTarget Server Type    : MySQLTarget Server Version : 80024File Encoding         : 65001Date: 15/08/2022 16:40:25
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for wx_official_account_user
-- ----------------------------
DROP TABLE IF EXISTS `wx_official_account_user`;
CREATE TABLE `wx_official_account_user`  (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',`subscribe_scene` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关注的渠道来源',`openid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '微信openid',`union_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '微信unionId',`subscribe_time` datetime NOT NULL COMMENT '用户关注时间',`create_time` datetime NOT NULL COMMENT '创建时间',`status` tinyint NULL DEFAULT 0 COMMENT '状态',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `openId`(`openid` ASC) USING BTREE,UNIQUE INDEX `unionId`(`union_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 146 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信公众号用户信息' ROW_FORMAT = DYNAMIC;SET FOREIGN_KEY_CHECKS = 1;

controller层代码:

@ApiOperation("公众号关注信息")@PostMapping("/")public void getOfficialUsers() throws WxErrorException {wxOfficialAccountUserService.getOfficialUsers();}

service层:

@Overridepublic void getOfficialUsers() throws WxErrorException {WxOfficialAccountUser user = this.getOne(Wrappers.<WxOfficialAccountUser>query().orderByDesc("subscribe_time").last("limit 1"));//获取关注公众号的所有openidWxMpUserList wxMpUserList = wxMpService.getUserService().userList(null);List<String> openIds = wxMpUserList.getOpenids();List<WxOfficialAccountUser> list = new ArrayList<>();//获取后将数据存入数据库for (String s:openIds) {WxMpUser wxMpUser = wxMpService.getUserService().userInfo(s);if(wxMpUser.getSubscribeTime()>(Timestamp.valueOf(user.getSubscribeTime()).getTime())) {WxOfficialAccountUser wxUser = new WxOfficialAccountUser();wxUser.setOpenid(s);wxUser.setUnionId(wxMpUser.getUnionId());wxUser.setSubscribeScene(wxMpUser.getSubscribeScene());wxUser.setCreateTime(LocalDateTime.now());wxUser.setSubscribeTime(LocalDateTime.ofInstant(Instant.ofEpochSecond(wxMpUser.getSubscribeTime()), ZoneId.systemDefault()));list.add(wxUser);}}this.saveBatch(list);}

AppID这些需要自行设置。

这样就拿到了关注公众号的用户数据列表,简单写一个通过unionId拿公众号openId的代码

@Overridepublic String getOfficialOpenId(String unionId) {//通过unionId拿openIdWxOfficialAccountUser user = this.getOne(Wrappers.<WxOfficialAccountUser>lambdaQuery().eq(WxOfficialAccountUser::getUnionId, unionId));return user.getOpenid();}

前置就完成了,接下来是通过获取的列表发送消息。

模板消息 | 微信开放文档

WxMpTemplateMessage的生成:
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder().toUser(表内的openId).templateId(自行申请的消息模板).miniProgram(new WxMpTemplateMessage.MiniProgram(appId,pagepath,false)).build();

根据模板把消息增加到templateMessage内:

map.put("first","first");map.put("keyword1",keyword1);map.put("keyword2",keyword1);map.put("keyword3",keyword1);map.put("remark",remark);map.forEach( (k,v)-> templateMessage.addData(new WxMpTemplateData(k, v, "#000000")));

推送消息:

try {wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);} catch (WxErrorException e) {count++;e.printStackTrace();}

这样就完成了消息的推送

springboot完成拉取微信公众号关注列表并通过列表推送消息相关推荐

  1. python实现微信公众号给你的重要用户推送消息

    最近小红书上这个很火,觉得做起来应该也不会太难,捣鼓了两天有了初步成效,还有一些功能没实现(比如定时推送),保姆级教程,大家可以借鉴,动手给自己重要的人做一个,或许可以暖ta一整天- - 1.步骤一 ...

  2. 微信公众号发送小程序卡片_微信公众号将能够直接给用户推送小程序卡片,社交电商开始发力...

    公众号或能在对话框中直接给粉丝推送小程序卡片了,这个功能似乎正在灰度测试中. 微信公众号将能够直接给用户推送小程序卡片,社交电商开始发力 一直以来,微信公众号和微信小程序一直是腾讯基于微信生态的两款明 ...

  3. 通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)

    通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python) https://github.com/QInzhengk/Math-Model-and-Machine-Learn ...

  4. Android拉取微信公众号列表,Xposed实时获取微信公众号推送

    友情提示:阅读本文需要稍微有一点点Xposed开发基础,一点点Android逆向的基础,以及一点点Kotlin基础 鸣谢:本项目基于@Gh0u1L5,开源的Xposedhook框架----Wechat ...

  5. 公众号开发 单独 给某个用户 推送消息_坡解版wetool有没有用-公众号

    坡解版wetool有没有用-公众号 wetool个人版下载地址:/b015v08kb wetool企业版(管理软件)是一款可以对进行管理的管理工具,下载使用这款wetool管理软件可以让您对运营或者好 ...

  6. 公众号开发 单独 给某个用户 推送消息_韩国5G用户6月底已达134万 较5月底增加近70%...

    中关村在线消息:韩国三大运营商SK.KT和LG率先于去年12月开始向企业用户提供商用5G 服务,今年4月初推出面向个人消费者的5G民用服务.韩国作为全球首个推出5G 服务的国家,他们的5G用户数量在6 ...

  7. Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章

    前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知 ...

  8. 使用代理爬去微信公众号_Python3网络爬虫开发实战之使用代理爬取微信公众号文章...

    本节目标 我们的主要目标是利用代理爬取微信公众号的文章,提取正文.发表日期.公众号等内容,爬取来源是搜狗微信,其链接为 http://weixin.sogou.com/,然后把爬取结果保存到 MySQ ...

  9. 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...

    9.5 使用代理爬取微信公众号文章 前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 1. 本节目标 我们的主要目标是利用代理爬取微信公众号 ...

最新文章

  1. 不断学习UI框架的写法
  2. git回滚到任意版本
  3. 9岁女孩联合国演讲上热搜,网友:自愧不如
  4. Linux笔记-bash批量启动、停止、重启、查询状态指定Java进程(其他进行通用)
  5. sigprocmask()函数实例详解,设置信号规定时间堵塞,取消信号堵塞
  6. 交出娃哈哈,宗庆后还是不放心?
  7. Docker学习总结(28)——Docker 容器健康检查机制
  8. Google 也要“勒紧腰带”过日子了!
  9. Xcode6无法安装VVDocumenter插件的解决方法
  10. MySql5.6操作时报错:You must SET PASSWORD before execut
  11. WRF Output Fields描述
  12. 微信小程序赞赏功能,非微信赞赏功能
  13. 几种常见的光纤接头(ST,SC,LC,FC)
  14. excel文档加密破解,简单操作亲测有效
  15. 【Ansys】什么软件模块是DS,它和workbench、mechanical的区别在哪里?
  16. python引用计数的原理_深入Python中引用计数
  17. Homestead 安装 phpMyAdmin 作为数据库管理客户端 — Laravel 实战 果酱 API 教程
  18. 隐马尔科夫模型一(概念理解)
  19. 学习路上——技术书籍摸爬滚打
  20. vue2.0 渲染列表在苹果手机加载不出来的问题

热门文章

  1. sql 中的cast 函数 和 nvl函数的知识点
  2. Kigo Netflix Video Downloader for Mac(Netflix视频下载工具)
  3. HashMap和Hashtable理解与对比
  4. C++ 单冒号与双冒号用法
  5. 创建数据库mysql的sql语句是_创建数据库和表的SQL语句
  6. 搜索引擎重视原创内容的原因是什么?
  7. SQL 多表查询去除重复
  8. 数量遗传学遗传力计算2:半同胞和全同胞
  9. 工业无线路由器远程数据采集解决方案
  10. php微信扫码登录业务(带参数二维码方式)