00:00
然后呢,这个地方来启动服务看一看。有什么小问题啊?看看啊,对小问题不怕是吧,有问题解决是吧。看看看看看看什么问题。然后呢,这个地方这些,然后呢,这个地方线索查看线索明细,我想给这个线索关联一些市场活动,那我就点它,点它的时候你看我这个地方去点。刚弹出来,刚弹出来知吧,都把所有的显示出来,这样也行,知这样也行,刚弹出来,那就把所有的显示出来,那怎么显示。对给他发一个发一个键盘弹起视角是吗?或者干什么,或者一点这个的时候可不可以,对对显示之前是不是向后台发请求,就这么显示了,是工作直接这个搜索获。
01:19
啊也行是吧,你点它是吧,就是给什么让他默认这个焦点落到它上面。然后这样键盘他没没落,键盘没落,键盘没有弹,对没没没发生弹起事件,对他只是获取焦点了是吗?对那那那是他们俩吗?知道。啊,当然我说到底什么刚一进来是不是要把所有的市场工作都都查出来,这个地方,那你看看客户要求了,那不者你看客户就客户说那个市场工作万一很多,你要所有都显示出来,这样话有好多头对知,所以这个就不大好了,知道吧,啊所以像这样的话,那我们这个地方大概你看我一按,刚才按这个我啥都不按,按一个什么CTRL一个那个什么一个空,我本来想输入那个切换这个输入法呢,知道吧,结果我一按这个键盘弹起了,因为什么光标在上面了,我按键盘弹起了,弹起它就发请求,发请求我这个什么啥都没输,没输的话,就把所有的市场活动全查出来了啊那你说要是我想要别的要想要什么,我想要所有含有零三的这些市场活动,那怎么办?你输入啊零三的看吧。
02:38
你输完之后,键盘一弹起,他就去查,查完之后把你把你原来的给你出发了,我想去查那些所有导入的市场活动知道吧,知道所有第二次导入的市场活动知道吧。啊,所以这些大卡每次加满上以他都是向后啊。你回车上吧,啊回车它这个有个bug是吧,有有啥bug有你们发现了是吧,这是他这个框架的一个bug,他这框架,这框架它是推做啊,他这个bug已经提供提出来很长时间了,提出来很长时间不能按回,按回车就没了,对他这有bug,但是我们可以通过有一些技术手段可以解决它按回车是吧,执行我们的代码啥都不让他干,那他这个地方有个bug,他一直没解决,但不知道为啥,肯定有,也有很多人给他们写写邮件,因为这些,因为这些技术,像这些开源的这些技术有专门团队去维护的,咱不知道这个8UG分了好多版本了,都没解决。
03:43
当然我们这个我们不用管他就行了,这些,但我们这个的这个这是,而且即使要管的话,这也不是咱们管,这都美工做的事,这都是美工的这页们我们只负责把上边静态数据改成我们的动态数据就行了,这是我们说的好,这样的话呢,我们这个流程好,这个流程完成了,下边继续往下做了,用户能够把这些市场活动,该搜的市场活动都搜出来了,做完之后下边那用户就可以选了,而且这些市场活都已经把已经关联过的市场红排除了,所以用户就放心大胆的选就行了,知道吧,都是没关联过的,那用户选择要关联的市场红,下面我们这个流程继续,流程继续。
04:25
然后呢,这个地方继续了用户选择选择要关联的市场活动,知道吧,选完之后,那他就点那个关联按钮,用户点击关联按钮,点击关联按钮,用户点击关联按钮,一点关联按钮,大家看发生什么事一点它。是不是对,是不是又要向后台发请求了,对,要发,为什么发请求?因为你要把这些关联关系要保存到后台了,知道吧,保存哪,往第三张表格保存记录了。
05:01
你选了几个市场活动?那每一条市场活动。要和当前线索结合起来,往第三方加记录,选了几个加几条记录,知道吗?所以这时候我们说,那你说要向后台发掘,那你后台要提供C来什么来处理了,那后台提controlrl处理线索关联市场活动,那还是到线索C去。所以我们这个地方来一个线索挺出来可路然后呢挺多了,这然后呢,我们这个方在这里边来提供一个方法。来接收和处理保存关联的请求。然后呢,这个地方这个保存关联,保存关联请求,那大家想想这个请求是同步的,是义务的。对,是不是还是一不到对响应回来之后,需求说了这个地方不关,就这个地方关了,他刷一下,后边这些都不动,知道是如果失败了,他连关都不关,下边也不用刷了,所以整个都是在明细页面操作,没有跳转页面,所以意义不清楚。
06:09
那一步请求需要提交什么参数,对ID和是不是这些个activity的ID啊,对,你选了几个市场活动ID,把这几个市场活动ID都得发到后台。以及当前线索的ID一块发送回来,因为将来每一个市场方的和当前线索I都要结合起来,往第三加记录。选了几个加几条记录知道吗?所以把他们的ID和当前线索的一体发出的,但但是这些市场活动的ID是多条,而且大家的名字都叫市场活动ID,所以这些参数一定是一个参数名对应多个参数值,一定是这样,所以大概我们这个地方就直接这么来写了,那就每一个市摩地,我这个地方都叫activity ID,等于一个再选一个,又选一个activity。
07:06
艾啊TID等于由选了几个市场往都往后拼拼,最后艾TID等于知道吧,到最后还得把那个线索的ID也得发到后台,你光把选中的市场的ID发到后台不行,他们要和哪个线索关联,你得把那个线索的ID放到后台,知道吧。这样的话,当然我们这参数就发过去了。知道吧,那发过之后,那这个CTRLL我们就接收请求了,接收到请求三个值的有参数获取,参数怎么获取,那通过形参获取,通过形态获取,这个时候牵扯到一种知道吧,一个参数名对应多个参数值这种情况,那它的定义形态的时候类型的是什么?对数组类型的参数名叫ID。
08:03
还有一个叫线索的ID,那只有一个ID,一个字符串就行了,这是我们这个设计的,所以大概我说你设计的时候,其实在代码都已经写完了。代码在你脑子里边都应该应应该已经写完了,就差一个敲的过程,你知道吧。好,然后呢,大家看那参数拿到了这些参数比较多,多个ID和一个线ID,那最好把它们封装一下封装参数,那封装参数封装成什么。对对,关系表的实体类对象,为什么?因为这样每一个市场活动的ID和建构ID都是属于一个关联关系表的对应的实体类对象,因为它是两个外键呀。知道吧,所以说大看我们每一个市场中的ID,都应该给这个线索ID结合在一起,封上一个relation对象,Relation对象。然后呢,大家看那多个市场化题都和线索封装一个relation对象,然后呢,那多个什么多个对象封装一个离子掉色上一下把这个离子的批量保存了,就一下保存多个为真的对象就行了。那你说老师为啥封装实体的对象,因为他们属属于每一个线索ID和一个每一个市场文作ID和线索ID都是属于一个设计对象的,而且将来这些参数传给service层,传给map层,传给是作为写数据的。
09:29
符合我们前面给咱那个讲的规则,那这个是候分装的实际对象,那由于多个数据多个对象,那就分装次,所以这就是我们做到知道。风光日层,所以这些都是有原则的,就有原则你就不累了,要没有原则的话,你很累,为什么很累,做这样做也行,那样做也行,你就纠结吧知吧,所以大家有原则的话,你就不用纠结,我就直接这么做,知道吧,所以这是我们这,然后呢,大家我们说那这样的话呢,我们这个什么封装好了,他能封了,封装好之后,他的第一个指导完成了,第二个指导完成了,下边第二个指道,第二个指导,然后处理业务,我们处理业务干什么,就是把这个封装好的历史的批量保存到第三张表里边就行了。
10:13
那所以说他什么,他要调service叫什么C调service,他不直接处理业务,他调service调谁的service。往第三张表表保存记录。我们的原则是操作一张表对应一个实体类,对应一个map接口,对应个文件,对应一个service,甚至对应一个controller。那我们这个操作第三张表呢,调第三张表对应的service叫线索和市场活动关联关系的service,所以我们这个地方来一个叫线索和市场活动关联关系relation service,然后呢,在这里边加一个方法,那么这个方法是什么?就是批量保存创建的线索和市场活动的关联关系。
11:00
知道吗?所以我们这个地方在这里边加一个方法,让这个CTRLL调过来,叫批量保存创建的,创建的线索和市场活动关联关系。知道批量保存这个地方这个半list的知道吧,这里边就把我们封装好的那个list传过来知道吧。叫什么这个方法,然后呢,大家看这个service调过来之后,他要访问数据库,把这些数据批量保存,但是它不能直接访问数据库,调map map,那这个map叫线索,和市场功能关联关系的map,可录IV,然后呢,Relation map。然后呢,在这里边儿加一个横。然后呢,在这里边来加一个方法,这个地方来加过来一个方法,然后呢,这个方法来一个保存的音色。叫C录艾可,然后呢relation by list批量模型,然后呢这里边传了一个list,然后呢大家我们在这个什么map里边就可以通过MY8访问数据库了,然后呢执行搜索语句,搜索语句然后呢这个地方来批量保存,批量保存创建的线索和市场活动的关联关系这样的,然后呢把这个关联关系往执行完了之后,把执行的结果往法执行的结果批量保存,保存的返回值影响结术投入,然后把影响技术投入继续往后放。
12:42
然后呢,这个地方来走。然后呢,大看CTRLL就拿到一行结果条数,拿到之后他的职责第第二个职责就完成了,把该处理的数据都保存好了,下边第三个职责根据处理结果,根据处理结果,然后呢生成响应信息,响应信息,然后把这个响应信息返回到前台,看保存成功了还是失败了。
13:10
这个地方,然后呢,这个地方那个。啊,这是。好,访问到这这个响应信息,响应信息,那么那大家想一想,这个响应信息是个什么样的信息。对,从格式上来讲,前面E步请求他是不是一定是个杰森,对这个杰森里边包含什么呢?对,那你看前台,前台说了,如果成功了,把它关了下边刷出来,对下边刷咋刷。成功了。对,假如说成功了,这个地方是不是你这个地方选了几条,是不是下边又得拼出来几条市场活动,那拼出来几条市场活动,这些数据从哪取。
14:01
再从这里边返回,对你是不是还得把那些市场活动的信息往回返啊,对前面没有你得返知道吗?那返的话,你这个的方再去查,去让他去查知道吗?那如果失败了呢,那就不拼了,是不是只返回提示引义就行了,所以总的而言的话,他前台需要什么成功或失败,一成功,零失败,如果成功了,还得把那些市场活动的信息再往回返,往回返现在有没有没有没有得去查,所以这个CT了,为了生成响应信息,还得调service去查。查谁查市场活动的信息,根据谁查?对,跟着谁呀?查谁啊,你要注意查谁?查市场活动的信息,这是已经关联成功的市场活动信息。得查谁呀,是不是得查市场活动那个表。
15:03
对,根据什么去查询市场活动那个标志记录。对XTD是不是根据这个数组去长,所以这个地方为了生成结果。有可能只关联成功了,还得再去调service,调谁的service,市场活动的service。在市场活动service里边加一个方法,这个方法干什么?根据ID组成的数组去查询市场活动的信息,查出来之后访一肯定根据ID总的速度,肯定是多条记录访问一个历史的往回访。这个地方还得拼出来,所以大家是这样的,这个地方如果关联失败了,无所谓了,如果关联成功还得掉surface,那掉surface这个地方图我们继续画。如果关联成功了,这个地方还得调这个service,这个service不一定非要调,关联成功才需要调,关联失败不需要调,调市场弄service service在这里边加一个方法,这个方法干什么?
16:05
就是根据这个船过来选中的这些市场温度ID。那就关联他们嘛,如果关联成功了,这些信息也要显示到这个列表里边,为了刷新这一块,为了拼这一块,到这里边去调一个方法去这个CTRL,为了生成响应信息去调它这个方法不一定非要调。只有关联成功了,它就掉哪一个方法,Query activity activity这个地方也是在明细页面去显示关联字段,也查名字,For detail by,根据什么去查ID总的数组。市场活动ID组成数组,然后呢,这里传个ids,就是把谁就是就把这个数据传过来就行。然后呢,带上那他去调map,去调市市场活动的,根据ID组合数组去查询市场活动。
17:02
这个地方,然后呢,我们这个地方来一个来一个map。这然后呢,在这个activity的map里边加一个方法,根据ID总数数组去查询市场中的信息,Active four DQ by ids这边传个ids,然后在这里边去执行搜数据,根据ID组成数组来查询市场活动的信息。这个地方就是为了关联成功之后去刷新已经关联过的市场活动列表,为了在这中拼出来这么几条。然后呢,把它返回就行了。返回这个地方什么查询结果,根据ID总数组,每一个ID对应一条记录,那一定是多条记录,每一条记录封装一个I和K的实计对象,多条记录做成list子,然后把这个list往回反应就行了。返回CTR艾list知道吧,我们说这个方法不一定掉关联成功才会掉,所以我这个地方写一句话,这东西给他写个注释。
18:25
关联成功,关联成功之后啊,关联成功之后为了刷新,为了刷新已经关联,为了刷新已经关联过的市场活动啊市场这个活动啊列表,而啊关联为了刷新已经关联过的市场活动列表,然后呢。才会什么调用该方法,该方法,该方法如果关联失败,这个方法就不用调了。就这。
19:03
知道吧,这时我们这样他会查这个列表啊,查回来表,如果关联成功了干什么,这个地方大家拉到这了,还得把这个activity历史的方位。把它转成阶层头照它转成阶,转成什么样子的。这个属性名属性值是什么类型的?发括号。对方括号是数组。对,他的值就是那个意思。这里边是什么?对大括一个一个市场对象,ID属性名,Name属性值知道吗?那这里边大腕边有几个元素,那你看他选了几个市场活动都有了吗?知道吗?知道吗。这些在那有可能是多条,这是如果成功了,把这些已经关联过了,关联成功的这些市场活动信息再往回返,知道吧。
20:06
到时候我们便利它去显示到另一个那个列表下边就行了,那如果失败了,返回提示进去。这么一个阶层返回去,你知道吗?然后呢,这个接待返回之后呢,看我们前台拿到之后解析接渲染页面,渲染页面渲染页面,页面怎么渲染页面,看零还是一。如果是一,那就是把它关了,下面刷一下。刷一下,就说辨认activity的list变出来一条,在这追加一条。如果失败了,提车信息他不管,下边也不用说了,这是这个流程就可以了。这是我们这个流程线索关联市场功能就可以了。啊,它的难点在于成功完了之后,这个地方如何再拼接几条,其实我们现在写到这儿应该是不不再成太大的问题了,就是刚一开始大家什么刷新这个拼接这些列表,大家可能觉得以前做的少,现在我们做过很多遍,就实从技术来讲应该不太成问题了,大家主要这个流程大家要理解理解它。
21:15
好,那后边代码就比较好办了,是代码我们今天写不完了是吧,明天接着写,然后我们还是来接着做我们这个线索关联市场合同,那我们上次课已经设计好了,我们这个线保存线索关联的这个过程啊,这个过程,那这个过程就是前面我们做好的就是线索关联市场活动,在查看线索明细的时候,用户。他想给当前线索关联一个市场波动。那他就点这个地方一点,它弹了魔刀窗口啊,然后在这个魔刀窗口里边,然后我们说他去搜索一下市场化东西,知道吧,搜索搜索的时候每次键盘品弹起向后台发请求,然后把这市场活动所有符合条件的市场活动查出来。
22:01
并且把那些已经关联过的市场我们排除了啊排除然后呢,用户下边呢,下边我们这个流程我们已经画完了,代码上面写啊,他这个应该这样说,用户选择要关联的市场活动,但他可以选多个是吧,然后呢一点关联按钮,想获得发行图。把当前线索的ID以及选中的市场活动ID一块儿发到后台,那后台那么大家发出这参数,就是这样子,多个市场光ID和一个线索ID发到后台,拿后台品证接收请求之后,接收参数知道吧接收参数或者获取这参数,获了之后封装成知道吧,封装起来,封装成一个一个的关联关系的实体对象。那多个模式关系,那是分了一个list,然后呢调service,调关联关系的service,然后service调map,关联关系的map,批量把这个list史的保存到线索和市场活度关联关系标准那保存,保存完了之后把保存的结果往后转,就是影响技术投入,那返回到前台之后,那前台我返回到CTRCTR拿到之后,那根据这个影响技术投入,根据处理结果生成相。
23:13
那说真是小息,真是什么样的消息,根据我们的分息,就这么一个消息,成功或者失败,如果成功了,为了刷新就把它关了,为了刷新这个列表,还要把这些市场活动的信息,然后呢,再返回到前台,再给他拼出来。关联成功的,刚刚刚刚选的这几条,再给他拼出来,拼到这个什么已经关联过的这市场活动列表里边去。在下边追加啊,追加显示就行了,这关联成功了是吧,那如果失败了对吧,失败了提示信息这样行。那这个如果成功了,那返回这个这些市场文度信息,我们说我们又到后台去查了一下,查了一下。根据什么查,就是根据你在这个地方选了几个,根据这些市场工作ID去查询。
24:00
那ID的话,那多个ID组成数组,然后去查市场文动信息,把这些关联成功的,刚刚关联成功的这些市场文的信息又查出来,查出来之后封装这个接线字符串,这样发放到前台,前台拿走之后,然后呢,把这个接森字符串解析了,显制上,那怎么解析成功了,把它关了,然后呢,对把那个数独查出来的数独遍历出来,然后在这追加几条就行了,但如果失败了,这个不关这个是么?下边也不说,提示一下就行了。这是我们大概这个流程,就是我们上次课先设计这个流程啊好,那当然这个流程我们设计好之后,下边我们就准备编码实现了啊好,下边我们来写这个流程啊,来写这个代码了,下边我们来写这个代码,写代码的话从底层那写。那么先写这个map,叫线索和市场活动关联关系,这个map里边加一个方法。这个方法干什么叫批量保存创建的线索和市场活动的关联关系,知道好这个,那我说这个表我们以前从来没单独操作过它,所以说呢,我说他签扯的什么map层三模代码,我们通过买八的立项工程得先生成的线索和市场活动关联关系的map,下面我们首先生成它,那生拿我们还是通过买八的逆向工程来生成。
25:22
好,下面我们来看看买八逆向工程,来把我们的这些参数改一改就行了,那参数改同样道理,数据库这些信息不用改了,这里边大家设计是不是也不用改了,这种目录包结构这些都不用改了,然后呢,大只需要打开我们那个表就行了,叫线索和社场关联关系表。那打开的话,先把以前的表注释了,这是以前线索备注表注释了,然后打开线索和市场跟关联关系表,就这个表。然后呢,大家把它打开就行了,把它打开我们这个地方揉揉,哎,这个地方,然后呢,这个地方来它后边都注不掉,把它打开,这个表明我们没有做任何改动,直接用它就行了,这是这个实体类的类名,然后呢,我们运行买八的词逆向工程。
26:15
好,这样的话呢,我们就生成了,生成完了之后,大家可以看一下它的代码,那它这个代码的话,我们来看看这个实体类,线索和市场活动关联关系的实体类,再一个还有线索和市场活动关联关系的map。线索和市场关联关系映射文件知道吧,然后我们在这个基础上开发就行了,那首先在这个map里边加一个方法,这个方法咱们已经设计好了。就是批量保存创建的线索和市场活动关联关系,知道吧,然后呢,访问值影响记录条数,然后呢方网名都设计好了,保存的insult叫线索和市场活动关联关系,Relation,批量保存by list,知道吧,然后呢,在这里边来提供一个参数,这个参数根据我们设计就是一个例子。
27:10
List里边是一个一个的线索和市场动关联关系的实际对象,然后呢,这是线索和市场活动关联关系的实际对象,然后呢,这里边是个例子,那我就直接写例子,然后呢,把这些类该引进的类引进来,这样就行了,然后呢,在这里边我们来写我们的一些一个注释,那这个注释就是批量保存保存啊,批量保存,然后呢,创建的线索和市场活动的关联关系啊,因为你选一个,那关联一个,呃,关联关系,那么我们就要往这个表边加一条记录,他选了几个市场活动,就往这里边加几条记录就行了。好,方法定义好了,下边在他这个映射文件里边提供一搜数据了,那在这个地方来提供一搜入句,这样好保存的sol语句insert,嗯,然后呢,大家看这样的ID要和。
28:10
和范扰名一样,把这个方耳名拷贝过来,然后呢放到我们这里边知道,然后呢,这里边来个参数排尔名的态,那这个参数根据我们设计是个list啊list,那这个这里边要写list里边单条参数的数据类型。那list里边每一个参数都是一个实体的对象,那我们随便考虑一个实体对象就行,知道吧。然后呢,大家这个是因色的语句自动访问银行记构跳入,不用写type,直接在这边写骚入语句就行了,那后我们这个地方来写我们骚入句,然后呢,这个地方添加的造数句叫iner知,然后呢in into知道往哪个标准添加,往线索和摄网关联关系这表。那王川的哪些字段里边添加,它里边总共就三个字段,一个是自己的组件,一个是那两个外键,那这两个外键那么一个一个写这是外键,还有一个叫activity ID,知道吗?这样的话大看这些字段,我给它加上数据,数据从哪取values,然后呢,就从这些实体类对象中取。
29:22
那如果加一条记录,这里边value后边,我们说这value后边这是应该是什么,那从就从这一个实例最象里边取相应的属性,那取的话怎么取就能取,然后呢取C的属性,然后呢再来一个又一个字段,再取这个属性可录ID这个属性,然后呢又一条记录,然后呢ID这个属性知就这样,那这是一条记录,我们说批量添加了,批量添加应该多条,多条的话,那么一个搜扰去添加多条记录,那就value流的后边一个一个小括号,那到底有几个小括号啊,那你就看看你这个例里边有几个元素了,那例这有几个元素,你要变立,你可以写个什么负一变立这个常生的参数这个例子。
30:10
然后每变出来一个元素,放到一个obg里边去,放里边之后,然后呢,让他给我拼这么一个字符串就行了。然后呢,都变辑完了,把这些字符串都拼成一个大字符串,这边就是我们需要的所需要的这种字符串,所以这是我们的批量保存数据,所以下边呢,我为了什么要拼成一个这么样的一个字符串,我就写一个负一标签,让它遍历这个历子。然后呢,这个地方的负一是不这。然后呢,这里边他这个写什么便利的,如果是便利数组,这时写A瑞,那现在便利集合,那写什对例子,其实它不但能取A瑞和例子,还可以取更复杂的值,就那些复杂值我们不推荐大家用,所以我们也不给他家说了,我们也不会举例子,你知道吧?啊我们什么推荐的,说参数越简单越好,别太复杂,封装的太复杂了,那说他那也是什么,他可以什么,把一个list的话,把一个数组放到一个Java对象里边,也可以放到Java对象的对象里边,是吧,所以这就比较复杂了,那这个地方什么,如果是放到一个什么,把这list或数组放到对象的一个对象里边,或者对象的对象,对象一直往往下边分工,那这个是对象套对象,对象到对象,那这个时候你这里边还可以写更复杂的一些什么,就是更复杂的一些这个写法,所以那是那些我们不推荐来用,你就分成一个参数,你做这么复杂干什么,但是我说他做这种框架的话,他做框架的时候。
31:40
他们做到他提供这种语法知,他如果不提供这种语法,他觉得他这个框架可能功能没有那么强大,你这个参数你只能封装成什么啊,数独只能封装是单个的数独,或者单个的list子的啊,那那这样的话,他感觉它这个功能不够强大,万一有人用那更复杂的参数,那这个它不支持,不支持它作为框架的话,所以得它这框架这个功能不够强大,那是话用户用的时候受限了,所以大家有可能不用它了,但实际开发的时候,程序员的原则就用那说越简单越好,重像这些参数你分成那么复杂干什么是吗?所以说呢,一般来讲我们推荐大家用。
32:18
数组或者集合,懂数组这个地方就写个瑞集合,就是例子知道,所以我们要知道,那我们这个集合那就是例子,然后呢,这里边有个循环变量,这个循环变量你随便取,我就叫它了,将来他从这个集合里边每取一个元素都放到OB阶里边,放到OB阶里边干什么?那直行循环体执行循环题干什么?每循环一个,然后呢,我就拼这么一个字符串啊,当然这个字符串里边数据都是从每次变量的循环变量边取。那每次循环变量都是一个市场,都是一个什么关联关系的一个对象。那完了,取它相应的属性就行,从obj里边取就行,知道吗?知道吧。那每次辩论一个对什么relation对象,都碰到这拼这么一个字符。
33:04
每次变成每次辩论要拼一个,那是字符串和字符串之间逗数号隔开,到最终变离完了,都拼成这么一个字符号。我说拼了一个大字符串,知这时候我说这那我因为我们要这个字符串,每一条里边都有一个小括号,左符括号右括号了,所以都拼完了,不用加左括号右括号,不用带open和close了,然后把我们写这个例子给它去掉,这样的话我们这个就行了,嗯。这是我们就叫批量保存创建的线索和市场活动关联关系。好,这样的话,我们这个骚义就写完了,Serve义写了,这个map就写完了,好,那这个map写完了,下边我们就要写这个S了,这个S就线索和市场活动关联关系的service,在这里边要提供一个方法,这个方法也是批量保存创建的线索和市场活动关联关系,所以我们来写这个service,那这个service词以前从来没写过,没写过在这儿的时是吧,再给他创建一个接口。
34:03
关联关系的接口,因我们的原则就是操作一张表对应一个实体类,对应外接口,对应接文件,对应一个service,甚至对应一个control,所以我什么要操作线索和市场中关联关系表达,那这个地方提供线索和市场论关联关系,然等service它这个接口,那我们来建立个接口,然后呢,在这里边定义个方法,这个方法咱们前面都已经设计好了,直接写范围值影响技术调数方法名那就吧,叫c create,批量保存创建的线索和市场公关联关系叫C现索和市场波动关联关系relation,批量保存by list知道吗?在这边传一个参数,那这个参数是一个线索和整关联关系的这一个list子里边都是线索和市场活动关联关系的审批的对项,然后呢,这个地方参数名我就叫list索,但这参数名叫啥都行,无所谓,然后。
35:04
该营业类引进来让进懂吧,这样的话,当我们这个service这个方法就定义好了,Service方法定义好了,下边来一个时间类,然后呢,在这个什么IMPL里边创建一个时间类,这个时间类是个线索和市场活动关联关系service IM PL实现类IMPL,然后呢,这是个类,它实现我们的接口叫employment,然后呢就接口哪一个接口叫线索和市场活动关联关系的service接口。那么它是个service存类加一个注解,叫service注解,然后呢,在这边给它的B起个名字,这个B我就叫他了,这个线索和市场活动关联关系的所谓。好,这样的话,这个肋骨就定义好,类定义好,那么这个类实际上这个接口它要实现,这个接口里边定义所有方法,Of insert,然后呢,Employment method,知道吧,那service方法的实现要调map,所以这个地方要注入一个线索和市场活动关联关系的map。
36:10
那线索和市场活动关联关系map叫线索市场活动关联关系的map,就然后呢,这个注入进来线索和市场活动关联关系的门孔,然后呢,这个地方住出去呢,叫来一个凹凸work,然后呢,我们直接是吧,把它调过来就行,然后呢,这个地方还有他调它的哪一个方法,咱们刚刚写的那个方法叫批量保存创建的线索和市场文物关联关系,然后呢,就这样懂吗?然后呢,把我们这个历史传过来就行了,这样的话,我们这个service也写完了。知道吗?好,那service讲完了,这个micro service就行了,好,那这个micro service讲完了,下边还有一个micro service。这个micro是专门为了生成响应信息,来查询那些关刚刚关联好的那些市场活动的信息的。
37:02
知道吗?就这个就为了刷新动态的刷新那个什么已经关联过的这个市场活动列表,我的刷新这。刚关联成功这几条,把它的信息查出来,那查出来的话,那在我们这个什么,那在我们这个map,市场活动的map里边加一个方法啊,这个方法干什么?根据市场活动的ID组成的数组来查询这些市场中的明细信息,知道吧,所以下边我们来写这个方法,然后呢,在市场活动的map,市场活动的map在这里边加一个方法,这决方法,那这个方法咱设计好了,根据ID组的数组来查询市场活动,那一定是波头说数组吗?然后呢,在这里边Le Lia里边是一个一个市场活动设体对象,然后在这里边写我们这个方法名,那这个方法名我们都已经设计好了,查询市场活动activeiv for啊,所以带上这个这个方法,你看这一个activity map,它有很多这种查询的方法。
38:08
然后这些方法都不是你你想创建就创建,这都是需求推动的,知道吧,还是拿这个地方来个select activity for by,根据什么去抄ID组的数组去查啊。然后呢,这个地方来,它在这呢,提供一个参数,这个参数是个数组,这个数组我们就叫ids,然后呢,这个地方来,我们给他一个注释,这个注释就是根据根据ID总数组叫ids,然后呢去查询市场。活动的明细信息对吧。好,那这个方法定义好了,下边在映射文件时提供搜索句,然后呢,在这里边再加一个搜索句,知道吗?那这个搜索句查询的搜索句来ID要和方网名一样,把这方扰名拷贝过来,然后呢放到我们这里,然后呢参数类型,派尔米小T,那这个参数是个数组,这里边要写数组,里边单求参数的数据类型。
39:16
那它这个字符串的速度,ID组成速度,那每一个元素是一个字符串知道,然后呢,结果result慢知道,那是为什么要慢,因为我们每一条市场中都以实体类对象的形式往后放。所以说这个主要卖,所以这个地方来一个就要卖,然后呢,在这里边写我们四十五一行。那写算数据查询的三数据谁来,然后呢说从哪个表里边查查市场活动,那肯定从市场活动这个表说查询他的哪些字段,那你看你前台需要哪些字段,那前台需要哪些字段,需求说了段需求说了响应回来之后要刷新这个列表,你查的那些市场活动信息应该想到这个列表,那这个列表需要哪些字段,其实咱们前面是不是查过这个列表就五个字段,一对一个ID,还有什么名字,开始日期,结束日期,所有者。
40:13
而且所有者要连接查询知道吧,所以就查这五个字段去吧,因为你查找数据要想到这个列表,那你就看他需要哪个字段,那就是五个字段了吗?那要连接查询起个别名知道吗?然后呢,在这时候查这些什ID,然后呢,这个地方来个A点地方来个ID知道还有A点内容,然后A点对start来一个a.in还有over是不是得连接查询了,对连接查询,由于所有者不可以为空内连接啊,然后呢,这个地方来个U,起个别名U连接和价啊叫a.over等于u.ID这边去查叫优点name as放到哪了,对欧自动。
41:10
然后呢,大家这样的话,我们把我们前台所需要的字段都查出来了,下边查询条件根据什么去查。对,根据ID去查,那根据ID这那Y a.ID根据几个ID去查。对数组是不是有可能是多个,那有人是多个,那你就不能用等号了,然只有一个,你看能用等号,对那多个那什么因。我一后边是什么小括号,那小括号里边有几个元素,有几个ID,不知道是吧?那不知道那怎么办呢?是不是变利那个数组便利数组,把那个ID总的数组里边每一个元素取出来,取出来干什么?拼成这样的字符串就行。那怎么拼?用for each标签去拼?其实for each标签就是干什么呢?就是用来拼字串,For each标签就是用来拼字符串。
42:09
知吧,怎么拼它便利一些数组或者集合去拼,知道吗?它的作用就是拼最终运行的结果,就拼出来一个字符块,就是你可以在这里边,然后呢,让它怎么拼它就怎么拼,最终运行出来是一个字符串,懂吧,所以那我们就变了边否一变懂这样里边现在变,刚才是变成的集合,现在变离速度啊这地方写二,然后呢,这样的话,它也有个循环变量特,那这个循环变量你随便写。那我们这个地方建明之意了,数字里边既然放到每一个元素都是ID,那我取出来,我就是叫做ID了。他把那ID都取了,放到这个变量。放在这个变量里面干什么,直行循环体,直行循环体干什么,把它把每次变出来这个值取出来,拼成这个字符串,那我就品牌,那我就那我就取吧,取的话那什么井号大括号取这个ID啊。
43:06
每次取了一个ID,然后取了ID干什么?它会拼成一个字符串里,每取一个拼个,每取一个拼一个,那字符串和字符串之间用对ID和ID的逗号隔开。变利完都拼成这种字符号了,拼完之后在左边加个左号,右边加个右符,那左边加个左括号,来一个open左符括,右边加个右括号,Close右括号,最终变利完之后就生成这样的字符号了。所以我们把这个例子给它去掉,最终就是我们所需要的走势。知道吗?好,这时候我们说到这,他作为这种查询条件的时候。用也可以用这种for去遍历啊,就看你所需要什么样的字符串。然后你就可以让他给你拼就行。好,这样的话,那我们这个solo句就写了啊,就这样so,然后so欲行了,这个map层我们也写完了,市场不弄这个map这个地方没想了啊。
44:09
然后呢,这个麦层写完了,下边写service了,在市场活动的service边加一个方法,这个方法就根据ID组成的数组来查询市场活动的明细信息,知道吧,所以下边我们再在市场活动的service边加方吗?那市场活动service找到市场活动的service就这个,在这里边加方码就行。然后呢,这个地方加入来的方法,那这个方法范围值是个Le le4里边是一个一个的市场活动,实际就行是。然后呢,在这里边我们直接写这个方法查询叫query图,然后呢后给Q,然后呢BY啊BY我们的ID总额数组叫IDS。然后呢,在这边传个参数,这个参数是个数组类型的,然后呢,Ids这样方法定义好了,在它的时间类里边也得加一个方法。
45:05
在市场活动service的实现内容加这个方法,那加加上out insert,然后呢,这个地方来个method,知道吗?然后service和方法的实现调map,我就直接调过来了,知道吧,这样就行了。然后呢,调查哪一个方法,咱们刚刚写的那个方法,根据ID总额数图来查询市场活的名义解,那这个地方来个艾,哪一个呢,By ids。I ids就这个,把这个ids成功了。这样的话,当然我们这个service层也写完了啊。那这样的话,大概我们知道这一对map service也写了,那两对map service都行了,下边就可以写CTRL了。下边都可以写这个CTRL了。然后呢,在线索啊,在线索的CTRL里边加一个方法,这个方法干什么?就是保存线索关联市场活动就保存关联。
46:04
然后呢,大家下边我们在这里加一个方法,然后呢,在这个CTRL这在这里边加方法。然后呢,在这边讲,然后CTRL的方法返回值,返回什么类型的。对,我们要访问接算字符号凹解锁,然后下边我们这个方法,那这个方法叫什么?保存线索关联上,那关联的话叫棒,那我们这个地方叫,那么叫棒呢?那我是保存保保存关联叫废物帮,咱这个名字你随便起吗?贱明之意叫保存关联吧,那我就save棒这个方法我就叫他了,这行了。然后呢,再看那这个方法就可以了,可以完了之后它是CTR的方法,给它分配一个U,还要处理来请求request的map,然后这个U2我们说要和他处理资源路径保持一致,他处理的资源路径在线索的明细页面上,那和线索明页面资源路径保持致,线索名页面资源路径就是这个叫walk位下边的叫C,下边资源的名称和方法名保持一致,我叫save b,然后呢点住这样就行了。
47:20
好,这个request mapping知道吧,就把UR给它分配好了,然后呢,大然,我们说将来这个方法要返回杰森加一个方波。然后呢,大家在这里边定义型仓来接收客户端传输参数,那定义什么样的行呢?你看客户端传什么仓数,那客户端传的这种仓数,多个市场活动ID和一个线索ID,那么这个时候我就可以接收市场活动ID多个一个参数名对应多个参数值。线段一个参数中对应一个参数值,所以我这个地方对应两个参数就行,一个是市场网络ID用字符串数组,然后呢,线索ID用字符串就行了,所以那我这个地方来一个谁在前面谁在后边无所谓,我这个地方假如说市场文度ID在前面,他选了多个市场文度ID,我就叫上了有个数独,然后来一个叫I推ID,知道这个地方别带S啊,别带S,因为我们是市场活动ID,这个地方这个参数要和前台传那个,这么这个行参的这个参数名要和前台传,提交请求的时候,那个市场活动啊,那个ID的那个参数名保持一致。
48:26
它虽然是个数组,但是你也不用带S,也不要带S,明白这是我要这样,要和那提交参数,那参数没要保持一致知吧,但其实你虽然不带S,但它里边也是多个ID,就这意思,然后呢,在后边再获取线索的ID,那就一个字符串就行了,然后呢叫可录ID这样,然后呢,这样的话的话,我就把这些参数都拿到了。拿到之后,现在我们已经来到这一步了,接收到请求,参数都拿到了,下边我要把这些参数都封装成一个一个的关联关系的实例对象。
49:04
那封装一个一个关联关系式的对象到底分装几个?你看看他选了几个市场活动,每一个市场活动的ID都要和线索的D一起封装一个relation对象。那多个对量放到利知道,所以那下边我要便利头了,每变出来一个,那么市场活动ID就要和它结合,分成一个relationship对象,便利出来几合分成几个对对象,然后把它们保存list,所以下边我要变利子,那便利它由这个,由于这个一定不会空的,为什么一定不会空?因为需求说了,用户在这个上选的时候一定一定至少要选一个。他如果一个不选点,这个不让点前来已经验证好了,这个地方一定会至少有一个元素,所以我们不用判断它是否为空,不用判断它里边是不是有元素,直接变粒就行了,直接变率,因为它里边一定有元素。
50:02
因为我们如果说它里边没有元素,没选市场活动前台提交请求都不让提交,所以我就直接便利它就行了,那变利我这个地方,其实这个什么过程,就是封装参数,封装参数的一个过程啊,然后呢,来便利这个数组,每变出来一个市场活动的ID和这个线ID结合在一起,然后呢,生成一个结合在一起来生成一个relation对象,这样就行了。好,那说便利它我用可以用个增强到否循环,这样简单,简单一些,遍利这它是个数组,我也变的增强到for循环,怎么便利对看说然后呢,中间起一个循环变量,这个变量你随便起了,我又叫S冒号。将来他会从这个数组里边每拿一个元素都放到这里,那它里边每一个元素都是一个市场活动的ID啊,然后把每次变成市场文度ID和这个线索ID一起分成一个relation对象。
51:07
那如何放到瑞对象里边,那这个地方要创建一个对象。那创建类分享,那我说了直接六就行,叫线索和市场活动关联关系的类分享。是吧,然后呢,定一个变量去接触口,这个变量名随边起,我叫CA2,这样就行。当然这个变量我们拿到循环体外边定义效率更更高,然后呢,拿到外边定义啊,这样外边切定个now,然后呢,每次循环出来一个市场活动ID,就创建一个relation对象,那然后呢,这个relation对象现在是空的,里边数据从那取对从哎市场活动的ID从这过取线索ID从这过取,还有自己的ID又有ID对,那让我往老封装就行了,那往老师封装调用SXTID这个地方取AI市场D,然后呢,cal.S还有可录ID,那就是这个刻录ID。
52:19
是这样,市场工作A和线ID就拼装成一个关联关系了,然后当然我说CR它还有自己的ID,那我们说所有新创建的这页记录ID都是UUID,这样的话每变成一个市场活动的ID。然后给当前线索ID就封装一个对象,封装好了之后,按理说在这个地方应该调service方法去保存,但是由于太多了,有可能很多,如果频繁的每封装一个都掉槽一次,那他效率太低了,那怎么办呢?封装好之后把它放一个list纸。将来调动service方法一下,批量把一个list出去一下保存了就行了。
53:00
所以下边我们说要把封装好,把它放一个离子放到list里边,那我这个地方得创建一个list。那这个list来一个list list里边是一个一个线索和适红关联关系的实际对象。那这李子的名字,你随便写了,我这个地西,简单写了,我就叫李子。然后呢,它是个a list,这样就行了,然后呢,大家看每次封装好一个对象都往里边保存就行了。保存掉I,然后呢把CR传过去,然后呢,大家看这样的话,每封装一个relationship的项,就保存到这个封,就保存到这个利索便利完之后所有的市场活动的ID都和线的ID一起封入中央。然后这个地方就得到一个relation list,这我这起个名字,这个这样这样看着更好读一些,把这个list叫list。
54:03
这样的话,我们这个参数就封装好了。就是把参数封到实体的对象中,只不过这个地方稍微麻烦一点,叫什么多个实体的对象,那多个实体上放到例子里,道理一样知道吧,所以现在什么参数封法好,参数封好,现在我们就来到这儿了,好吗?
我来说两句