00:00
各位同学大家好,咱们继续来完成公众号消息功能的开发,刚才呢,咱把流程已经走通了,那下面呢,我们结合具体的业务场景把功能进行实现,下面咱们来做什么?我做个说明,首先大家看啊,刚才我们做了一个测试,在公众号中输入关键字Java,或者输入my circle,这里边我们能得到这个消息,但是它是没有返回啊,所以下面咱把这个返回数据实现,比如现在我输Java,那把Java相关的课程信息返回,输入MY搜,把MYSO信息返回,包括我这里边。我添加关注,取消关注,会有一些数据返回,另外在菜单里边大家看这个位置。是不是有一个关于我们要当我点击关于我们把一些信息返回,所以下面咱就来做这几个功能,就是根据输入内容,根据点击的按钮返回对应的消息,咱们首先做这个课程新返回,那怎么做,给各位写一下这个过程啊,首先我说明,因为咱们课程呢,我们是根据关键字是不是要查数据库,所以一会儿我这么来做。
01:13
我写一下啊,一会儿咱们就在我们的这个模块中,Service这个vod模块中,咱们来编写一个接口,这个接口就是根据课程名称返回课程信息,根据课程名称做一个模糊查询,这是咱一会儿做的第一部分,我在里边写一下啊。咱们在这个vod模块里边。我们编写一个接口。这个接口做的事情是什么呢?就是根据课程的名称。然后进行一个模糊查询,所以咱们一会儿先写这个内容,然后写完之后,咱们第二部分在这个V叉的里边远程调接口,根据我们输入这个关键字,然后返回对应的内容。
02:04
那我写一下啊,我们的下一个部分在这个service v chart模块里边,咱们来远程调用vod中这个接口。画一个图,咱们先分析啊,然后一会儿按这流程进行实现这个过程我们就远程调用。然后调用到接口之后,把它反映数据,咱们封装成微信公众号要求的消息进行返回,所以以上是咱们要做这个事情,那下面呢,咱们先在vod中把这接口先做个实现,这接口很简单,就是根据课程名称进行模糊查询,那这里边我来写一下啊。咱们现在来到这个vod模块中。我把它打开在vod中呢,我们找到它这个controller啊,或者说呢,你可以建个新的controller,或者用之前的都可以,因为咱们现在专注于微信公众号部分,所以我现在就建个新的controller做这个事情。
03:10
那我来做个创建啊,我在这里边首先我先建个包,这个包起个名字就叫APIAPI里边的创建一个CTR,咱们叫做 cosA片ctrler,然后在上面加上它的路径,我跟课件中我们就保持一致这个路径。那我写下啊,呃,这部分我用它咱们快速改一下啊,就改成类似于这么一个路径。我改到这里。然后这位置我就叫这个。APIVOD这个cos。咱们叫这个路径,然后写完之后在下面的加上我们的接口,接口就是根据课程的名称做一个模查询,那里面这个接口上的路径这个结构过来,在里边我们写下它的具体代码。
04:02
那咱们啊做一个最终实现,然后在这里边把依赖我先给他引入,根据关键字查询课程,我们用的是get提交返回一个第次集合,里面有你的查询出来的课程信息,根据关键字进行查询。这个一个结构,然后写完之后在里边咱们注入service,然后调方法进行实现,那我来注意一下啊。加上。奥。普莱维。Cos。Service Co service,然后在里边写下,咱们调用Co service里面的方法叫list做个查询,在上面加上我们的条件,咱就在这里面直接写了。Quary加上等于new上一个RY rap里边设置条件加上like,然后里边加上课程的名称,啊,咱们课程名称应该叫title这个字段。
05:05
后面加上这个keyword,最后把进去。返回咱们需要这个数据,就这list集合,然后把list我最终做一个对。所以以上这个接口部分我们就完成了,根据课程名称进行模查询,然后这个完成之后,下面呢,咱们把这个接口做个定义,为了后面做到这个远程调用,那我来写一下啊,然后定义呢,咱之前这么写过,我们有一个模块service client,那我在这模块中咱们建一个新的模块,然后定义我们就用这个接口。包括大家看我课件中也是这个流程,咱们建个模块service Co client,然后里边把这个接口做个定义,那我这里边啊,把这个复制一下。首先我在这模块中建个新的子模块。
06:01
就是一个慰问工程。模块就是service Co,把这个先创建出来。然后创建之后,咱等他加载完成。等先加载啊。等它出来加载之后,在里边还按照之前的方式,咱们建个包,然后建个interface,那我在里边最后创建,我先把包创建出来。Com点。At硅谷,硅谷课堂,点上client,点上cos。在里边建一个interface,那我来创建啊,Interface我从课件复制一下,跟它的名字保持一致了啊。比如咱们叫这个名字。Cos client,然后在里边加上我们接口的定义部分,也就是之前咱们写过这个结构,第一个client只有你接口所在的服务名字下面加上接口的路径,然后路径中把你类上边和方法上面路径都复制过来,咱们看啊,类上面是A片vod cos,然后方法上面叫inner find by keyword,传入一个keyword,它是一个get提交。
07:19
所以现在这个接口我们就完成定义,也就说目前呢,咱们把service vod这个部分就完成了,就这张图里边的这一部分就做到了,那下面呢,咱就开始做这个远程调用,把它的最终过程做实现。那咱们啊,进一步往下写一下,这个流程呢,我课件中每步应该都写到了,各位自己写的时候呢,可以按照我这流程把这步做到,当然你写的时候呢,顺序不一定是我这顺序,但是事情肯定都是这个事情,那下面咱们进一步来写一下啊下面怎么做呢?因为我们要做远程调用,所以我现在在service里边把刚才这个service这个依先引入进来,为了做到这个远程调用,那我就直接把这复制。
08:11
咱给它引入一下。给先进行引入啊,咱们先引入进来。等他加载完成,然后引入之后,下面呢,开始写这个具体的代码,那代码怎么做,咱们找到刚才我们写那个消息接收的方法里边找到啊,Menu ctrl里边我们看到啊,在这里边。啊,不是me,就是message里边,在这里边呢,刚才写到。首先这个方法做校验,然后这是接收到消息方法在里边,我们这个位置,刚才咱是测试做了一个输出,所以下面呢,把这一部分我们做一个修改,然后最终把这个消息部分咱们最终做个实现。
09:00
那下面啊,咱就开始来写下这个代码,那咱给他改一下啊,这里边要实现根据关键字进行搜索,包括你关注取消关注,包括点击关于我们等等,都要把相应的数据进行返回,所以下面咱们在这里边做一个处理,也就这里边做个实现。那我们来做一下啊,这个过程呢,因为要写很多的代码,所以咱们这么做啊,我在services里边呢,先建一个service,就是叫这个message service,然后再建它的实现类,咱们做一个详细的实现,我写一下啊。Message。Service。这是一个interface,来到它的实现类中。我们写一个实。这里啊。ML,让它实现我们的service。然后别忘记在service类上边加上一个注解service,所以现在结构完成,完成之后,在CTRL里边我们做一个最终的一个实现,咱们开始写下啊,就是最终这个消息的一个过程。
10:09
那咱们看一下啊,首先这两个代码我就先注掉了啊,就是当时咱们测试的暂时先注掉了,然后在里边我们就是调用思维中的方法,那service在里边先住进来。加上service,然后调的方法做一个消息的接收,包括最终的返回。咱们给方法起个名字,这个名字呢,这个receive。Message。这个方法,然后把request对象咱们给它进去。这个方法啊,最终让他就返回这么一个。Map集合啊,或者反一个其他结构,那我们看一下啊,咱就跟课件中保持一致啊,其实反什么类型都可以,就看你怎么去写啊,这里边你看啊,我这个是反一个死润字符串,所以咱们让这方法也反一个词缀。
11:09
那这里边啊,我给它就返回一下,加上一个string。比如我们叫这个message。然后最终啊,把这个咱们给它返回下,就这个纸,所以现在啊写了这么一个结构,然后结构中咱们刚才也提到了,就是微信那端呢,给咱们传过来的是一个叉L格式,咱们可以把叉L转成别的结构给他再传过来,那这里边啊,我们这个方法就是给它变成卖方,我给这给它处理一下啊。我调这个this pass入,然后返回一个map这么一个结构啊,咱们就叫。然后把这个map结构传进去,用它做处理啊,就为了我们方便,因为这里边直接得到是叉M格式,咱们转成map传进去再做处理,这个方法刚才写过了,把叉买转成map,所以现在就是CTRL部分,然后写完之后,下面呢,咱们就是在里边来实现它,最终这个方法。
12:13
那我在里边把方法咱们先创建出来。然后创建之后在实现类中实现它最终的这个方法就在这里边,我们做最终实现,那下面啊,咱就开始写一下这个代码,这个代码呢,其实也是一个比较固定的结构,这个结构呢,我强调啊,各位自己写的时候,其实你可以把我课件中的代码直接复制改就可以了,因为结构比较固定,我在讲课过程中给各位来写一遍,各位自己测试的时候直接复制改就可以了,因为结构比较简单,那下面我们来做一下这个过程啊,咱看怎么来写。在这过程中我们来操作一下,首先呢,因为咱们的消息就是我们要做的事情有不同事情,比如说刚才提到第一件事情,我输入关键字是不是要反问内容啊,包括我在里边就是添加关注,取消关注,要做事情,包括我在边就是点击这个叫关于我们是不是还要做一些事情,所以咱要做不同处理,就是处理你是搜索关键字还是关于我们,还是关注和取消关注,要做不同的处理,那咱们来做这个操作啊,咱看怎么做,首先第一个。
13:29
在这个time里边,就是微信给咱传过来数据中里边有一个参数,咱用get这个参数名字它叫做msg type,我写一下啊,Type,或者说我到课件中复制一下啊,防止大小写,不要写错,也就这个,这表示什么?就是你的消息类型,就刚才我说的那几种消息,通过它可以得到,那这里边msg type。然后这个消息类型,咱们下面做一个判断。
14:01
就是判断它是什么类型的消息,比如说你是普通文本,还是你点击的关注,或者说取消关注,还是事件等等内容,或者说可能是其他的消息,那这里边判断一下啊,这个判断多种写法,你用if else,或者说一种比较原始的方式,Switch等等都可以做到,那我这里边呢,我就用一个Switch给大家判断一下啊。Switcher。然后在此里边加上这个叫msg type,根据它咱们做一个判断。在里边我们写下啊,然后这个结构各位应该记得啊,加上一个什么,是不是kiss加上你的这个值啊,比如第一个值可能是加一种形式,然后比如说我们再加case,加上别的形式,我先把结构写一下啊,比如加上一个。结束,下面再加上一个case。然后这个值。
15:00
比如这可能是别的纸,然后再加上一个这个。另外啊,在里边咱给他加上,比如最后有一个叫default。就是这些都没有之后,然后他做什么处理啊等等这个内容,所以咱们写一个结构,那在里边我们做判断啊,首先里边的第一个类型,咱们看课件中第一个类型叫这个test,表示你是普通的文本,比如说你在这个输入框中输入一个关键字,比如咱输入一个Java,输入my circle,这种类型叫test类型,那我里边加上一个test的,这是第一个。我写个注释啊,就是普通的。文本类型,比如咱们输入一个关键字,Java这种类型,然后里边还有第二个类型,这个类型呢,我们叫这个以问就这个是一种事件。把这个拿过来问,那问里边呢,它包含很多的类型,比如说你现在啊,就是关注这个公众号。
16:03
关注或者说取消关注,或者说点击这个叫关于我们等等,这些都叫event,所以在里边还要做进一步的判断,包括你是关注还是取消关注,还是做这个事件的等等内容啊,这是我们的第二部分,然后最后default,就是其他情况,我们再做别的处理,比如说你不是普通文本,也不是这些事件,可能是其他情况。那咱再做其他的处理。所以以上是一个基本结构,然后在结构中注意啊,因为刚才我提到过,我们现在你输入关键字或者点击事件,要在微信公众号返回数据,这个数据需要反应一种是叉格式,所以咱们还是用叉L格式进行返回,需要封装成叉L格式,那叉ML格式呢,我下面给大家写了这么几个方法。啊,咱们看一下啊,比如咱们先看这段代码,你看啊,这段代码中各位看这个部分。
17:02
是不是就是插不格式,包括里边有一个test的文本也是插不格式,所以最终咱就返回这种格式,那这点呢,代码我就复制过来,然后咱给他最终再完善一下啊,我把这个先拿过来,就是处理微信公众号返回数据的叉ML格式,一个是普通文本,一个是这个就是相关的消息等内容。这些依赖我先引入,然后咱们把代码再进一步完善。这个啊,我们先写到这里,然后咱再慢慢完善啊。然后这个之后咱们继续往下来写啊,咱看下面代码,然后下面怎么做呢?在这里边我们来写一下啊,第一个如果说你是普通文本,那咱就返回普通文本内容,我在上面呢,咱为了方便,我先写个变量,比如叫string啊,这个就叫content,先来个空。然后在里边加上你返回内容,我们加上一个content,等于this加上下面有一个方法叫search。
18:08
里边传入这个time,在测试里边来反映数据。那我们看这search啊,刚才复制方法你看啊,先得到里面一些值,就是我们输入这个内容,这个主要是content,然后下面你看这个代码,通过远程调用得到它这个内容,最终按照结构返回,包括你的课程名称,什么课程封面等内容反映出来,所以现在这么来做啊,里边要用到远程调用,那远程调用咱把那个就是interface先注进来。加上O,加上这个叫Co fin client。然后加上cos。Client把这些注进来。这个部分啊。做一个注入,这是咱们刚才定义的那个interface,然后注入之后,你看在下面啊,这位置进行远程调用,根据你输入的关键字调这个接口进行搜索,得到反的数据,然后自我判断,如果说这个关键字查不到数据,那咱就返回里边,说这个为空,没有搜索到内容,如果它不为空,那在里边封装插不到格式,就能进行返回,所以现在啊,就这个过程。
19:23
比如说我们现在根据输入关键字,咱们就能反映数据,反映数据之后最后我加上一个break,就这个Switch这语句就结束了,这是写到第一部分,然后下一部分跟它类似,咱们做这个事件部分事件里边我们再做进一步的梳理,包括你关注公众号,取消关注公众号,以及在里边我们做这个关于我们的这个实现,咱们要做这个处理。啊,那我们来看一下啊,这个代码部分。我给各位写一下啊,我就不复制了,各位自己练习的时候直接复制可以了,首先第一个在P里边呢,它里边有一个参数,这参数名字叫做以问。
20:06
E啊,为了防止写错,咱们到课件中看一下啊,就为了防止它的大小写别错,因为这名字是固定的,表示得到你的事件,还有一个叫event key。这个纸。那咱们把这个拿过来啊,然后这个得到之后,下面呢,我们根据event做个判断,比如说我们现在我们是点击了关注公众号,包括你点击了取消关注公众号,里面都有固定值可以做判断,那我写一下啊,第一个如果说你点击了关注公众号,那我们ES加上这个叫。Event,而你关注公众号里边有一个固定名字,就这个名字叫sub啊这个名字。用它代表关注。另外我们再加上一个else if,它就表示。就是取消关注公众号,点上依靠问他,然后里边应该叫n sub,这个取消关注也就是这个值。
21:08
这个拿过来啊,另外还有最后就是我们点击那个关于我们的这么一个部分,再加上一个LC,包括还有最后就是其他的情况。那我们写一下啊,这个位置这是关注,然后这个叫取消关注。然后这个是点击那个关于我们。啊,这个就是点击事件,然后关于我们里边这么判断,就是它里边是一个可Li,然后它叫。关于我们的这么一个描述。这个拿过来啊,所以现在这结构就完成了,完成之后在里边我们写它的句子的部分,首先啊,如果说现在我们就是进行了关注,那关注的话呢,我们在C里边加上一个值,咱们单独写个方法,这个方法比如就叫这个sub这个方法。
22:02
把里边的P某传进去啊,后面咱就写,比如说就会反映数据,说欢迎什么关注某某什么公众号啊,另外这里边有一个叫取消关注,咱们也加上一个content等于这个方法,我们就叫n sub这个方法,传入time取消关注这方法就是咱就反应一个值就可以了,然后最后那就是关于我们,我们加上content等于这点,我们加一个方法,就这个。About,就用这个方法。啊,就是它啊,As在里边加上一个,这是我们第三个,然后最后如果这些都不是,那我们count就直接反一个success。就是一个成功啊,直接success。所以以上是咱们写的这么一个结构,然后最终如果说default就是其他情况,那我们直接写这个content等于success。
23:02
所以现在啊,这个结构就完成了,完成之后呢,我们来写一下这三个方法,第一个方法那就是关注的方法,我把这方法咱们先创建出来,就是关注公众号。小这里啊。关注,然后第二个方法叫取消关注,这个我写到下边就是这个方法。啊,小这里啊。叫做取消关注,第三个就是关于我们的这个方法,这个我也做过创建在这里。关于我们下面在里边我们写一下它的返回就可以了,首先第一个啊,就是我们先写这个,关于我们那在这里边呢,咱就直接调这个this.test因为test里边有咱们这个结构,传入这个T,再传入你返回那段数据,然后最终它返回的是一个字符串啊,就是此人八法这个字符串,比如说我们给它起个名字就叫这个MS。
24:03
最终把这个做个就可以了,S。在这里边加上点击关于我们返回的这个内容,这个内容呢,我到课件中找一下啊,关于我们我就反映这些,比如上硅谷课堂现开设什么什么学科,就关于这个基本介绍啊,这段内容直接拿过来,咱就放到这里,一会儿点击关于我们,它就返回这段内容。给各位啊,给他指导一下啊,就这么一个结构。呃,稍微调整一下啊。然后这个之后往下看啊,就是关注和取消关注跟它的过程是一样的,那这两部分我们也是快速写一下啊,首先我们看这个取消关注,呃,其实取消关注呢,应该不需要反什么值,那我就直接啊存一个success了。这些success啊,另外就是关注,咱给他反一些数据,咱直接就是return,这次点test传入,然后加上我们这个数据,最后加上一个to string,关注公众号给他返回,咱看课件中这个内容,说感谢你关注硅谷课堂,可以搜索关键字,就是等数据。
25:19
这段内容啊,给它返回下。放到这里,所以说以上呢,咱就要把这三个简单方法就完成了,就是我们现在输入关键字会返回内容,当你关注和取消关注都会有事件的触发返回,当点击关于我们也会有返回,所以现在啊,这一部分就都做到了。然后都做到之后别忘记啊,最后。咱需要把这个content做一个返回,就最重要一下,这个content他要咱们最终封装之后这些数据。啊,所以以上这过程就完成了,这是咱们写的这个公众号普通消息的代码部分,这个咱就做到这里,然后做到这里之后,下面咱再检查一遍啊,然后最终我们再做一个完整的测试。
26:12
那咱们检查遍啊,刚才过程就是我们首先在service vod里边我们建立一个接口,这个接口就是根据课程名称进行模糊查询,然后咱们在这里边建立一个模块,做了接口定义,最后在里边我们要做这个远程调用。然后远程调用中我们的做法就是我们看一下啊,这先啊,我先把没用先关掉啊,咱重新看,首先在master ctrl里边我们得到这个参数,转成M步集合传到方法中,最终怼退在方法里边刚才做了实现,首先啊,咱们判断当前的消息类型,如果你是普通消息,那我们调这个测试方法,在测试方法中进行远程调用,得到课程信息,然后返回微信要求这个插标格式。
27:04
另外咱们又做了判断,如果你是关注,取消关注,包括关于我们都返回不同内容,最后把这内容做一个捋退。包括你看啊,这是关于我们这是取消关注,这是关注的部分,这些都做了返回,下面是两个工具类的方法,一个T转成普通格式,一个是这个测试变成咱们里面这个搜索这个课程的信息。所以现在啊,这个公众号普通消息的接口部分我们就完成了,这是咱们写的最终代码,然后这个写完之后,下面呢,咱们把服务器都重新启动一下,然后最终用公众号做一个完整的测试。那下面咱们再开始测试一下啊。
我来说两句