00:00
各位同学大家好,下面呢,咱们按照刚才说的步骤来完成公众号菜单的推送,那咱们具体写一下啊,首先第一部分咱们在配置文件中,把这两个重要的值,就是公众号里面的ID和密钥加到咱们项目的配置文件中来,那我现在把它来加一下啊,在我这个OA的置件中,咱们找到OB-D里加上它相关这个配置就加到这位置,注意这两值一个ID,一个密钥,咱们到这个管理平台中看一下,把它重新复制一下,这个一定不要写错啊,要写错的话,最终这个效果没有,然后你复制的时候要把你的值给它复制过来。这个啊,是咱们做的第一步这个完成,然后完成之后我们继续来看咱们的第二部分呢,在我们的项目中引入依赖,这个依赖呢,就是刚才咱说那个进行公众号菜单推送这个工具,咱后面很多功能都是在工具中给咱封装好的,我们直接用就可以了,所以第二部分在我们项目这个po点文件中把依给它引入进去,微信杠,Java-M,这是咱们的第二部分,完成之后呢,下面我们工具以及相关的配置。
01:20
那咱写一下啊,首先工具类呢,我们就在这个里边呢个这个我们叫con,然后里边加上一个工具类,这工具类什么意思呢?给大家说明啊,各位来看到我配置文件中是不是有两个值啊,我们现在做的就是读取配置文件中这两个值就可以了啊,当然两个值你可以写固定,我现在通过配置文件这里边,然后从里边读取出来,那咱们写一个工具类来读这个配置文件。我在里边写一下啊,首先我们加上一个注解,叫这个date,就是咱说那个生成get和set方法,然后第二个呢,我们加上一个,在此里边进行注册,加上之后我们再加上第三个注解,这是要的注解啊,咱加一个什么呢?叫configuration。
02:17
Properties。加上,然后这什么意思呢?就读取们配置件啊,包括你可能是格式可能是然在里面什么我们上一个叫前缀,这个前缀呢们看啊,我现在这两的前缀是不是把来表示读取以这个开头里面那个值,然后下面加上它的两个属性加上啊注意属性名字根据这两个值要保持一致,我为了怕写错啊,这里边我就复制了一个叫m pad,一个叫MPA这个密钥。把这两个加上啊,这样的话,它就会读取配置文件的值,然后完成赋值,注意两个名字啊,跟他要保持一致。
03:08
然后这个之后啊,下面呢,我们继续往下来写,下面写什么呢?我们写一个配置类,这个配置类呢,我在这个资料中给大家提供好了,就是它里边你可以理解为咱们看一下啊,就是得到我们这里边这个叫微信MP service这个对象,包括里边是它的一些值,后面咱用这个对象中的方法来完成我们的具体功能,那现在啊,这个配置类我就把它直接复制过来了,因为这是一个固定写法,也是它官方提供一个固定的结构啊,咱们把它直接就拿过来,我们放到这个位置。是一个配置类。所以现在啊,这一部分我们就完成了啊,这是咱们写到的,然后这个完成之后,下面呢,我们继续来看啊,下面呢,咱就写controller,写services来编写这个推送菜单接口,或者说叫同步菜单接口,那咱们来写一下啊。
04:04
首先啊,在我们的这个menu ctrl里边,咱们加上这个方法,我写到这位置就是同步菜单,或者说叫推送菜单,在service里边把方法咱们给它创建出来。这个方法啊,调这个位置,最后来到实现类中,我们实现一下这个方法。同步或者说掉推动菜单,那这方法怎么做呢?刚才咱们做了分析啊,我写下一个总体的步骤,首先第一部分就是把我们这个数据,或者说菜单的数据啊,肯定要查询出来。查询出来做什么呢?给他要就是封装成啊,封装成这个微信。要求的菜单的格式,这格式咱刚才看到了,就是里边的这种格式,所以咱们要做这个事情,然后这个之后我们的第二部分调用我们那个工具里边的这个方法实现这个菜单的推送,就刚才咱们有那个依赖微信Java MP啊,调用这里边的方法完成最终推送,所以它总体上就是这么两个部分,那咱们啊把这个快速来做一下啊,首先第一部分就是封装数据,也就是里边的这段代码啊,我把它给各位拿过来啊,然后咱们详细看一下这个写法啊,因为跟之前类似,这里我就不再再写一遍了啊,但是咱们要把这代码给大家一行一行解释一下,跟之前都差不多啊,首先大家看写法啊,我们的第一部分。
05:40
什么意思?这方法还记得吧?啊,咱应该刚写过,是不是咱们之前那个数形结构那个集合的数据,例思的me纽VO把这个得到,然后得到这个集合数据之后跟我们要求数据不太一样,所咱进行封装,那怎么封装?首先我们用一个叫Jason,也是咱们看到的这个结构。
06:01
这个啊,这次额对,然后通过它进行封装,那怎么封装把它便利得到每个VO,然后在里边得到里面这个值。它的值里边咱们看到啊,首先在这个值里边,第一部分我们有name,包括type,包括啊,然后它的下一层有一个叫sub,就是你可以理解为有第一层啊,有第二层,包括有第一级菜单,有第二级菜单,所以咱们一次进行封装,包括你看啊这个是第一层,然后这是第二层,最终它加了一个叫SV8,最终咱都放到这个叫八粒集合中去。然后这里边完成一个转换啊,这是我们就是这个菜单部分啊,就这是一个比较固定的一个结构啊,按照这个微信要求结构封装,这个结构不是我约定的啊,是微信约定的,就是它里边底层只认这种结构,所以你就按照它的结构进行封装,也是一段要固定代码,各位用的时候把这直接拿过来进行修改就可以了。
07:03
然后这个之后啊,在这里边啊,有个细节问题咱没有讲到这一会儿来讲,大家看这个位置啊。这是什么?是不是一个域名啊,比如说咱们一会儿啊,我们在推送菜单之后,这个菜单是不是要在微信公众号中进行显示啊,但是这里边显示的菜单,比如咱要点击它,因为是微信那个网络上那个服务中的这个地址嘛,它肯定返不到咱们本地的地址,因为咱项目在本地,本地local house微信肯定仿驳到,所以这里边我要加上一个域名,但是域名呢,有同学会想啊,说老师我是不是需要买个域名,这个不需要,当然买肯定更好啊,只是没必要,所以咱一会儿会用一个工具,通过工具把这个域名给他,就让它叫做内网穿透到咱的本地接入中来,这一会继续来说啊,咱先写到这里,一会儿咱来改这个值,所以现在啊,这一部分我们就完成这么一个操作啊,就是把数据完成封装,然后完成封装之后,第二部分呢,我们调用那个就是工具里边的方法来实现它这个推送的过程,那这个代码给大家来写一下啊。
08:12
啊,咱们调那个方法做这个推送。这个推送呢,刚才提到了第一种方式,用那个叫HT方式,但是这种方式特别不方便,咱一般建议用工具实现,因为这个最方便啊,那我写一下怎么做啊,首先我们在里边呢,先注入一个对象,我们最后注入啊。Private这个名字叫微信MP service,把它注入,就刚才类中这个对象,然后注入之后我们调用里边的方法进行实现,这方法咱们调一下啊,它叫get。Menu service在里面有一个方法叫menu入咱们刚才那个封装好的数据,我们加上一个button,点上to string,这样的话就完成了推送,这里面有异常啊,咱加上一个TRYK给它捕获一下。
09:10
所以现在啊,我们就把这个菜单同步或者说推送的方法就完成了,这是咱们写到这个这口部分啊,给各位知道这个特点,按照微信要求封装数据,最终调工具里边的方法完成才能推送,这个咱们就写这里啊,然后这个写到这里之后呢,咱们下面看一下前端啊,这个前端我已经写好了,咱们直接啊给他看一下啊,首先卖到里边加上我们这个方法。咱们看啊,就这个同步菜单,先找的这个menus。大家看到是已经加上了,然后加上之后,我们的第二部分在页面中加个按钮叫同步菜单,咱们找到页面这个,找到那个按钮位置啊,我是加到了这个里面啊,在这里。
10:00
大家看是不是同步菜单,然后在里边加一个方法,就是同步菜单,方法中我们就写上说你确定上传菜单是否继续点确定调接口中的方法同步啊,点取消,那就不进行同步,最终通过它进行实现。这是我们完成的同步菜单过程,这咱就讲这里啊,然后这个之后呢,在这里边呢,还一个接口,比如我现在啊,我同步之后,我想把这同步菜单都给它删掉,所以咱们再写一个删除同步菜单方法,我把这个做个实现啊。在CTRL里边我们继续加列方法,叫删除同步菜单,Service里边把方法创建出来,最终进行实现。咱们放假啊,然后来到实现类中,把这个我们最后实现一下啊这个方法。然后这个方法就比较简单了啊,还是调咱们这个工具里边的方法进行这个删除,那这里边啊,给各位快速写一下啊这个位置。
11:04
咱们调用service get service,然后里个家能猜到是哪个,是不是这个menu delete么进行删除啊,所以现在啊就完成同样一场TRY开捕获一下。现在啊,这就写到这里啊,然后之后在前段里边跟刚才过程类似。卖掉里边。接口进行定义啊,在这个list点里边,首先加上这个删除菜单的按钮,就是在这个位置,然后这里边加上一个方法,方法中完成接口调用,最终提示说菜单已删除。所以咱们到这里啊,就是把这个微信公众号菜单部分就完成了,完成了菜单的推送,包括菜单这个删除这个,咱们就讲这里啊,所以各位啊,按照这步骤能给它整合出来,特别注意啊,这里边我们申请的是一个微信公众号测试账号,实际开发中可能是一个正式账号啊,你把它其实直接把那个ID和密钥切换就可以了,咱自己测试用它就可以了,因为我们项目中没有用到那个支付的高级功能,用它完全能满足咱们的需求,也方便各位更好学习这个微信公众号的开发。
12:26
这个啊,咱就做到这里啊,然后做到这里之后,下面呢,我把这个后端服务咱们给它启动一下,最终完成这个测试,试一下它的效果是怎么样的,那咱给他试一下啊。我现在启动一下啊,然后注意我刚才提到的啊,你在测试的时候呢,需要在你这个测试号管理里边,把这个公众号用你的微信扫码进行关注,就是关注一下这个公众号怎么关注,这不用我演示,这各位应该都会啊,你平时应该经常在关注公众号,只要你正常用微信公众号怎么关注,应该都会一扫并关注啊,我这里边有关注过了,所以在这个位置有我们这个公众号这个东西。
13:10
就这个啊,公众号那一会儿我们进行测试啊,现在我把它进行启动啊,然后启动之后呢,我们这里边啊,就是为了咱们测试的更加明确,我给他改个值,找到我这个菜单这个表里边,为了测试明确啊,我给他改一下啊,比如说第一个审批列表,咱加个二。审批中心加个二,我的也加个二啊,为了咱看的方便,要不然这里边可能有时候他不是特别明确啊,都给它加上一个二,对咱能看到,然后之后我们下面做这个操作啊。首先来到咱们的管理员系统中,我先刷新。先登录啊,刷新。然后刷新之后,大家看这里是不是有二啊,咱加个二或加个三啊,得看你的实际,咱为了测试使用啊,然后现在怎么做呢?注意啊,我点这个叫同步菜单,就开始做同步,现在咱们一点。
14:06
点确定。看他提示我们。是不是成功就可以了,然后咱怎么看效果呢,这个时候呢,就是你来到公众号里边,点击你的公众号点击。然后这位置我们点发消息,大家看下边啊,是不是有这个值,但这个因为是我之前关注的,你发现它是没有变呀,这个场景就是很常见啊,就是可以各位可以这么做,你把公众号先给他,就是不再关注,然后再关注,再经测试,就是先给他不关注,然后再关注,再试一下啊,这样的话就出来了,有的时候你头目之后,它可能没有马上更新,那你先把它取消关注,再进行关注,再测试,应该就没有问题了,现在啊,我再看一下。然后大家看里边啊,或者我给它先关掉啊,咱重新打开一下。或者给它重新登录一下啊,我现在给它先关掉,重新登录一下,咱们试一下啊。
15:03
有时候可能不会马上同步过来啊。现在我重新做个登录啊。然后我在手机上啊,稍等我这里点一下啊。手机上啊,我已经点完了啊,然后这里边我们进行登录,登录之后咱们点击这个公众号,然后再点击我们再看这个测试啊,在里边点发消息,我们试一下这个效果。然后大家现在来看啊,这个值是不是二审批列表二,这个里边都带了二,就是咱们刚才那个值啊,包括你看里边啊,有它的二级菜单,就这功能还没有写啊,但是这个菜单是不是都做了显示,这是我们完成的微信公众号菜单的这个推送功能,注意刚才这个问题啊,有的时候你投过之后,他可能不会马上就更新,那你怎么做?第一个你可以把公众号先取消关注,然后再关注,如果还不好使,你把它退出去,再重新登录,再来看效果就出来了,我现在是不是有这个效果,这个我们就完成了啊,完成之后我们再试个效果,咱们现在啊点击删除,当我删除之后,公众号中的菜单应该就没有了,我现在点一下删除。
16:21
看效果提示我们说菜单已删除,然后咱们来到公众号里边,同样啊,我先。取消。然后再关注。这个时候一点啊,这里边啊,当然还是那个问题啊,我给他还是退出去啊,这个测试就是这样啊,有时候稍微麻烦点,但是功能肯定对的啊,我先退出去重新登录一下啊,然后咱们再来看。我这里啊,快速做个登录啊。手机上啊,点击登录。然后咱们再来到这里边再看一下啊。公众号。点击发消息,你看里边菜单是不是就没了,它就是一个数框的部分,因为菜单刚才我已经给他删掉了。
17:08
以上啊,就是咱们完成这个同步菜单以及删除菜单功能,这个咱就做到了啊,这个按照过程把这个呢现出来,比如说咱们现在就完成了微信公众号操作的第一个功能,微信公众号菜单的推送功能。
我来说两句