00:00
然后呢,拿创建线索到我们这个地方来,这个地方来再设计一个流程。然后呢,我们这个地方再来设计右键,然后呢,这个地方来设计一个设计个流程,然后呢,这个流程叫创建线索,创建线索然后呢,这个地方来点它画这个流程,那这个流程我们说所有的流程都是从客户端发起的。我们说我们这个地方也是创建线索,也是从客户端,用户在客户端浏览器发起,他怎么发起,根据我们的需求,用户想创建线索,首先来到线索的主页面,如何来线索主页面点菜单。所以说第一个流程,第一个环节上面,首先发生的是用户在这个市场,在这个什么,在业务的主页面点击线索这个菜单。然后呢,线索的主页面就在工作区中打开了是吧,跳转到线索主页面是吧?然后呢,我们这个流程就是用户点击用户点击线索菜刀,线索菜刀啊。
01:07
在哪点击在业务的主页面,业务主页面一点这个菜单,大家看发生了什么事,他一点这个菜单你看。发生什么事儿,对跳转到线索主页面,而且指定在工作区这个窗口当中跳转,知道吧,跳转到这个页面,那哪一个页面就是这个页面,线索的页面大家可以看看哪一个呢?就这个对它也属于业务管理的功能,在可录里边,对线索主页面就是它。那么这个页面在外部INF里边,从客户端直接跳转能跳转过去吗?不能,必须经过ctrler,所以他一点这个线索之后,才应该向后台CTRL发送请求,这个CTRLL做两件事是吧?哪两件事,第一个它跳转页面好跳转。主要这个页面上所说的数据是不是先得查出来,查出来显示到上面,然后再跳转,这样才行,如果数据都没显示,跳转也没用,那这个页面上面有哪些动态数据?
02:05
对,是不是下拉列表里边这些数据啊,都应该从数据库里边查出来,还有大看这模态窗口,其实虽然没显示也都应该显示出来,也应该从从数据库里边查出来,都给咱们什么设置上知道吧,包括修改了模态窗口里边也有这三个列表,这些数据都应该从数据里边查出来,知道吧,所以大家我们说他一点这个菜单,向后端CRL发请求,这可RL干两件事,第一件事把线索主页面下拉列边所需要所有的数据查出来。调了之后干什么?放到作用域里边,然后跳转到主页面,跳转完之后这个页面从作用域里面把数据取出来就显示出来了,是吧。所以大家我们这个地方经过我们的分析,他一点这个菜单应该向后台发进去。那后台我要提供一个CTRL来接收和处理了,那这个CTRL来看是新创建CTRL,还是在原来CTRL基础上加方法新创建是吧,因为它将来返回,到时候返回到这个页面,这个页面它独立占你资源目录。
03:04
叫线索的资源目录,所以我们这个地方要新房间有品种了,那这个品种这个叫可录品柱了,跟线索相关的这些品种都交给这个品种,然后在这拼状里边加一个方法,然后呢,这个方法呢,我们说将来他一点这个什么线索这个菜单向这个方法加发一个请求,这个请求叫一个跳转到请求跳转哪儿跳转线索的主页面这个请求,那大家看这个请求同步的是一步到。同步对,是不是同步的页面跳转了是吧,所以是个步请求,同步请求,同步请求需要提什么参数,那你看肯卓需要什么参数,陈卓需要什么参数。对,你看CTRL干什么事,CTRL要把这些下拉这本数据是不是都取出了,取下拉这本都取哪些数据。所有的用户需要参数吗?不需要查所有的用户,那就不需要了,当然还有这个查称呼需要什么参数吗?对称呼这些数据都在哪?是不是在那个数据资产值那个标准存着的,那数据资产值的所有下拉这数据都在数据资产值那个标标志存着呢,所以我们这个地方,我们说所有的称呼来我们分析一下是吗?这些所有下拉列表里边那些选项值都在这个标里边存着,都在这个标边存着,知道吗?
04:24
那我们要到这个表里边去查下拉列表里边数据,那我查称呼的都在这里边存储,我查哪些选项呢?这边哪些记录呢。它里边是不是有个外键呀,外键叫一个什么,叫Type Code是就表示这个什么,每一个选项是属于哪一个下拉列表,属于哪个下拉列表呢?我们还有一个数据自项表叫个什么?对第一个是为,然后呢派这个表,这个表里边专门是存下拉列表的类型的,你系统里边有一个下拉列表,在这里边对应一条记录。
05:00
然后每一条记录都有一个什么,每一个记录都有一个,这个都有一个Type Code都有一个扣,知道大家我们可以看看这两个表,你看啊,然后呢,大家看这个,这是线索这个表,这是线索的这个备注这个表,还有我们找那个数据字典那个表,这这个表。所有下拉里边,不管是哪个下拉表,那些选项值都在这边我存着。都在这里边,但你可以看到都在这个表里存储,这里边有很多记录,当然现在我们还没有初始化,把记录还没有初始化进去,一会儿我给他初始化,这些记录里边都是每一个下列表数据都在这边存着的,那都在这边存着,那每一个下列表大家都存着,我就查这个下列列表数据怎么查,怎么查呢?所以每一个每一条记录都有这么一个值来区分这一条,这一条选项,这一条记录是属于哪个下载者的。那它到底属于哪个下列列表的,那么每一个下列列边在这里边都对应一条记录,那这个表里边是什么?这个标准有哪些记录,咱看这个标准,这个叫数据资产类型这个表看吧,这个表里边专门记录系统里边到底有多少下拉列表的啊,那到底有多少下有一条下列表在这边都给你条记录,那这么那这里边每一个值大概都是这每一个下列边都有编码,都有编码,那这个编码你比如说大纲,我这个地方叫什么,我这个叫称呼,那我这个名字叫称呼,然后呢,这个地方它是称呼有一个什么,我就假如说我就叫称呼了,每一个下拉里边都有一个编码,这个编码是它的主键,这下主键,那你说这个主键它怎么不是ID呢?
06:38
咱们以前给大家讲数据库设计的时候,是不是可以采用那些什么不是ID,什么时候用ID。用那些没有业务含义的字段做主键的时候,是不是才用ID啊,那这个地方我也问,是用用有业务含义的字段做主键。那有些管它就是用户自己输的这个值,不是我们通过UUID啊什么这种算法生成的,这是用户自己输的,每一个下拉里边都有这么一个值,都有这么一个编码,在这里边都对应一条记录,都有一个编码,那每一个下列列表下边的选项将来都会在另一个表里边,都在这个表里边存储的那些选项都在这边存储,那每一个选项属于哪个列表的,那后边都会引用那个什么类型表的主键值知道。
07:22
所以大概我们说这俩表,一个是存什么呢?叫存储下拉,下拉列表的类型的,也就是说在下拉在我们系统里边每一个下拉列表。是吧,在除了那个用户,除了所有者之外啊,所有者那些数据都在数用户表里存着,然后那些普通的那些下列表,在这个表里边都对应一条记录,在这个表里边都对应一条记录,一条记录,知道吗。然后呢,对应这条记录怎么了?一什么都有了主键值,主键值都是各自的编码,各自的编码,编码就那个Q的那个字段值,那这个Q的这个编码,在看主键值用编码有什么好处,编码是用户自己输的,自己输的怎么自己输的有业务含义的,有业务含义的怎么了,以后我们开发的时候,如果用到这些主见值,在程序里边可以直接写死。
08:24
知道吗?就是有业务含义的字段,字段做主键,做主建吧,然后呢,有业务含义的作用做主件,然后在程序中如果需要用到这些主键值,主键值可以直接使用给你,普通写的数据是完全一样,就跟一个用户名张三一样。那么他有业务含义,就是用户自己输的这些数据,主键值是用户自己产生的,所以在程序里边就可以直接使用,直接使用你说老师他这些主见值,它这也这么它这值在哪生成的。
09:02
当然是在这个这个功能咱们没做在哪个地方,在这个地方。数据字典表里边儿,数据都在这里边,维护系统管理里边有个叫数据字典表,点进来再看,这是数据字典类型,我可以创建一个数字典类型。你要如果系统里边增加一个下拉列表,在这里边就创建一条记录,这个编码值是你用户随便输入的。用户随便出知道吗。那你比如我叫称呼,我就输入一个称呼,当然肯定是贱名之义的,它这个编码值是自己输的,然后呢,这些名称假如说我就知道,然后还有一些描述等等,这些输上,输上之后一点保存,就往这个类型表里边存一条记录,也是我们系统里边增加了一个下拉列表,知道吧,那增加下列列表,你说老师这个下列里边,里边将来有哪些数据呢?有哪些数据到这里边,往这里边存的,怎么往这里边儿存呢?在这个地方数据字典值得维护,然后在这里边创建一个数据资产值。创建的时候,这个地方你想创建这个值,让它属于哪个类型的选中,选中完之后这个值我们可以什么可以自己取,假如说叫先生,先生,然后呢,这个假如也是叫先生,然后还有一些排序号,排序号什么意思,将来大家下拉列表,一个值一个值的,一个选项,一个选生都有顺序的,谁排第一个,谁排第二个,在同一个下拉列表都有顺序的,用这个顺序来排就行了。
10:25
那一点保存就往这个表格保存记录。一个下拉里边有哪些值都在这里边来创建。那创建的时候,大家会发现将来我们一点什么一点保存的时候,把你创建这个值是属于哪个下拉列表的,它会把这个列表的主键值。然后传到后台去,传到后台干什么,往这个标准存数据,存到哪儿就存到这个外键字段里边,其实它这个外键引用它的主件知道吗。就它有一个Q的值,它有个Q的是个主键,有业务含义的字段做主件,然后它引用什么这个物,这个外键引用它的主键,知那你说老师以后我要查称呼怎么办?称呼下拉列表的数据都在这里边存着的,对,都在这里边存着了。
11:10
都在这边,那在这边存着,我查称呼,所有下列边都在这边存着,我根据谁查。对,根据称呼对应的Q的值去查。那Q的值我可以直接用吗?可以,因为你自己是吗?用户自己写的,不是用UID自己生的,你可以写死的程序里边的。根据你想查哪个下列里边值,你到这个表里边去找它那Q的值,找到之后干什么?到这个表里边根据这个外键去查去,这样每一个下列里边的值都能取到了,但这个地方能理解吗?能理解这个意思吗?这一个这一个表里边存在什么?这个表是存储吗?它用了存储什么?存储每一个下拉列表。列表中的选项值,选项值都在这边存在,那大家所有的价值列表,选项值都存在列表,那通过什么,通过type库的这个字段,这个表里有个type库的字段来区分什么。
12:08
区分这些选项值,选项值然后呢,是属于哪一个下拉列表的啊,这是我们的账目,那将来大家看,假如说我要什么去查称呼这个什么,我去查称呼这个下拉列表的值的时候,我要查它的时候,那么根据什么去查呢?将来我要什么,我要去查他的数据,查他的数据肯定掉他的策略是调查买他里边应该设计一个方法,以后哪一个方法。查询叫value,根据谁查对BY根据谁查对Type Code,你要查称呼,在这边直接写称呼,直接写称呼啊,你要查类型,直接写类型,直接写类型。每一个下列表都对应这么一个值,知道吗?以后我们就写定义这么一个参数,当时这个值可以直接写死,为什么?因为它是这个表里边的主键值,这个主键值有业务含义,你可以直接写所的程序。
13:11
这是我们说的,这那有的同学说了,老师那这些主见值,它有业务含义的字段做主建啊,能够直接写死的成序,哎这个就挺方便的,我们这些为什么线索等等这些表他们的主键值采用ID,而不使用有业务含义的字段做组件的。都采用有业务函数段做主线不就行了吗?对,那都采用于业务函数作,为什么还有的ID有的是它是用有业务函数做主件呢。为什么对啊,为什么这样呢?对大概数据字典表里边数据是不是数据量少,用户输的时候是不是他重复的几率比较小啊,对重复的几率小,但是重复机的万一他输了一个值,然后后来已经存在这个编码了,怎么办呢?他做主将不能重啊,不就报错了吗?
14:09
大吧?编码对我们什么不做这个功能的时候,肯定是做这么做怎么做,他输入一个编码,假如说叫称呼,假如称入这个编码,在数据库,数据思想的值类型那个表格已经存在了,当你往鼠标一离开它。向后台发个异步请求,把这个编码发到后台去,到数据资产类型那个表格去查,去看能不能查出来记录,如果能查出来说明什么。这个编码是不是已经存在了,存在就重了,重了怎么办?后边给他提示说这个编码已经存在一点保存不让点,大家明白这意思吧,就是这样,我们以后做这个,按理说就应该做成这么多。为什么?就是因为他做主见值必须唯一,非空知道吗?但是让用户自己出无法保证唯一,那怎么只能帮他验证,他如果重了告诉他,重了让他改不改点保存,不让点知道,当然这个功能我们没做,他们咱们买他们那个项目的时候,他们做咱们没做,因为咱们时间不够,所以咱们没做这个知道吧,你要做的话也能做知道吧,所以呢呢,这个编码值就是说什么,就是用户自己输的,在程序里边可以写死知道吧,那么他写死,那还是那句话,为什么他能写死,就是因为数据字典值类型这个表里边数据太少了。
15:25
因为整个系统里边到底有多少个下拉列表。占里边就有多条记录,那有多少个下拉代表没有多少,他总共有几十个就不少不少了,所以他用户每次输的时候重复的几率比较少,比较小,那反过来你看他看,假如说我们创建市场活动。那个主键值这个地方也做一个输入框,叫它输入。他在在这输的时候也是给他做验证,虽然什么他一点保存,我们帮他验证了,但是你这个市场活动那个表里边是不是记录比较多呀,比较多怎么了,对它对它一输呢,就重了,一输就重了,重复的几率比较高,所以这种情况下,我们不涉及成主键值做主键这个什么有业务含义的字段做件知道吧。
16:10
都是采用那些没有业务含义的组件数据,数据这个表里边的记录比较多的时候,用那些什么没有业务含义的,那我们这个地方就一个特例啊,用有业务行业的做做组件。好,这是我们说的,关于这两张表,我们就给大家说到这儿是吧,好,这是我们要这样,那大家看那这个CTRLL,我们再回到我们这个流程上面啊,回到这个流程上面大家哈,那这个CTRL这我们说他要干的是第一个要查询数据啊,查询数据查询什么就是查询所有的用户。这些动态数据查询所有的用户不需要数据,不需要参数,查称呼,查来源,查状态,需要需要参数吗?需要从前台查吗?对,不需要,为什么不需要,那你说他那他不会,他不会的可以直接写此道程序里边,所以不需要从前台传。所以大概我们说这个CTRLL,你点菜单这个CTRL要跳转到主页面的时候,他查数据压根不需要参数,不需要参数你就别给他传了,就这个意思知所以大家我们分析,为了分析这一个单纲,我们这个的给大家分析了那两张表知道吧。
17:14
所以他不需要传,不需要参数,不用传了,不用传了,就CTRL请求就发到CTRL了,那ctrler要干什么事?三个职责,第一个接收请求,有参数数集函数,没有参数,不用收集,不用获取,更不用封装了。那它,那么他的第一个职责就完成了,第二职的处理业务,处理业务干什么?那对于我们而言,就是查询那样主页面上面所需要的内容。主页面所需要的那些动态数据,哪些动态数据,所有的用户,还有什么称呼,线索来源,线索的类型等等这些,所以把这些什么都查出来,那这些都查出来,他要调service就成了,那调service上一个一个调吧,那首先查所有的用户,那就调service,那查所有的用户是查用户表,那就调用户的service,所以我们这个地方来调用户的service,然后呢,这个地方来一个,然后呢,这个地方来个用户的service,然后在用户的service里边加一个方法,这个方法是不是咱们已经写过了。
18:14
就是查询所有的用户。因为前台页面需要这些数据,那这个方法我就直接写到叫宽。叫all user,然后呢,没有参数直接写到就行了,那它就调map去,它不能直接访问入调map叫user map,然后在这里边也加一个方法。然后呢,在这边加入法,那这个方法也是这样,其实这方法咱们已经写过了,做市场活动的时候都已经写过了,Select of user,然后呢,这个map,它就什么就可以通过MY8去访问数据库,执行测数据,然后呢查询所有的用户。所有的用户啊,把这个什么,所有的用户都查了,查出来之后,大家看那这个地方,那查执行完了之后,把执行的结果往回发,那查所有的用户,那每一条户封到用户的实体对象,所有的用户多条list,然后把list的继续往回发。
19:14
把list斯的记方法,那这个地方来个优list知道吧,这是所有的者都查出来了,还有什么,还有称呼,那称呼在哪存着呢?我们说在数据资产值这个表存着,那那在数据资产值这个表里存着呢,那存到那大家看在数据资产值这个表存着,那存的话,那你得查这个表了。查这个表,你得调用这个表对应的service了,所以我们这个地方点这个表对应的service组,我们呢,这个地方呢,对应的service,我们说后台代码已经访问一张表,对应一个实体类,对应个micro接口,对应文件,对应一个service,甚至对应一个CTR,所以我们要访问这个表,要用这个表对应service,那哪一个表就这个叫dictionary value service。Value特,然后呢,大概我们说调它的service,然后呢,这个地方来一个,它那调它的service这个地方来继续了,在这个service里边加一个方法,这个方法就是咱们设计的这个方法。
20:10
你要查询哪一个下拉列表的那些数据电值。那根据Type Code去查,那根据Type Code去查,在这个什么,在这里边定义一个方法,这个方法就是我们的query,叫dictionary value by type。Type Code,然后在这里边去传一个参数,这个参数就能Type Code,这个Type Code值我们说可以写词。对吧,这个Type Code值它可以写死,那大家看这个地方,那你要查什么,你要查称呼,把称呼的,把称呼的那个什么Type Code写到这儿,那有同学说了,老师我怎么知道这个称呼的这个Type Code叫什么。这状怎么写?那车库的他们会座叫什么?在哪呢?在这个地方往里边录的。你这个地方随便录那个称呼,你录成啥你就用啥就行了,他这你说老师万一这个改了改,他不能改,这个地方不能改,这是只读的。
21:05
一旦确定Type Code的任何一个下拉列表的类型,这个Type Code的就不能改了,知道吧,然后呢,这个表去引用它知道啊,所以说大家我们说这个值到底叫什么,这个称呼你在这儿随便创建,随便你爱叫啥叫啥知道吗?你叫啥这个称呼就叫它在这里边写死就行。Yeah。那你说老师,那这个地方是不是我自己碰见,按理说你就自己碰见,程序员自己碰见。成语,这些系统管理的功能,我们不是给普通用户用的,这是谁?这是开发人员或者超级管理员来用的。开发这个,我们这个地方是开发人用你创建什么,你就叫什么知道,那你说老师这些,我一个一个创建这么多下列板一个一个创建是不是太麻烦了,不用你一个一个创建干什么。按理说你得一个一个创建,实际开发的,我这个地方已经给大家创建好了,在SQL脚本里边。在SQL脚本里边,大家可以看一看。然后呢,这个CRM表结构,等它里边有个数据字点表,看了这里边这些数据可以直接导入这两张表里边。
22:08
这是我们系统里边所有的下拉列表类型的都在这里边看看啊。大家看吧,这类型的,这是用这个这个编辑器打开,那就打开吧,大家看看这个大家看吧。这是往类型标准存的,存到这几条记录,我们整个CRM项目就用到这几个下列列表,每一个下列列表的看都有这种的吧,都有一个编码看到吧。往这边创建就行,把它导入系统里边,你就不用一个一个创建了,实际开发的按理说你得一个一个创建。谁庄家开发人员框架啊?这是称呼的呢,他在下拉这边就还有大纲,我说还有这个,还有这个这是值大纲下拉这本知吧,所有下拉这本那些选项值这每一个选项都属于一个下拉列表,这是那个外键值知道吧。这是我们说的这。这是我们这个关于我们的这个这个这两个下来数据字典值里边数据是吗?那下边下边呢,我就把这两个表里边数据导入到我们数据数据库字典数据字典表里边数据就行了,我以后就直接用了,那我的导入一点,下边我就来导入了,那导入怎么导入。
23:16
是不是在这直接运行搜Q脚本就行了,对直接运行SQ脚本,然后呢这个地方打后直接运行SQ脚本,然后呢运行时候把这个取消掉,然后呢这个地方来运行它,然后呢大家我们这数据字点表先导附表数据字典类型的表,然后呢点打开,直接一点开始这个表里边就有数据了,这是数数据字典类型。所有的下拉列表,再看右键刷新啊,这个地方啊,有的错误是吧,来看看右键,你看再来运行。然后他这个地方来找他。啊,有一个有一个错误,是不是哪个地方改错了吗。对,那怎么办呢?对,把它拿过来是吧,直接执行就行,然后呢,这个地方来拿,然后呢,把它什么拷贝一下,Ctrl a ctrl c在哪执行。
24:10
对创建是不是创建个查询啊,在这一。这个地方一运行来创建,这是我们这个地方来看看这边有吗?看看这地方对吧,然后呢,刷一下是不是有了,对这按理说你得一个一个创建,你得一个一个创建,但咱们这个地方已经给大家创建好了啊,我们就直接用了,我们就不耽误时间一个一个创建了,还有大概另一个标示数据,这个地方也这样,也把它拷过来吧,这个地方能不能直接导入看看。然后呢,这个地方直接导导一下看一看,然后呢运行,然后呢,点进来数据思点啊只是这个表,然后呢,这个地方选中开始也错了是吧?嗯,哎,咱们这个为咱们班这个没导成功是吧?也有个别班也导不成功是。这个这是可能给咱们这个数据库的版本啊,这个编码可能有关系吗。
25:03
就导不成功,那有的班能导不成功,那导不成功的话直接执行,然后呢,这个地方来把它拿过来新建它,然后呢,直接执行一运行这里边有了,然后呢,这个地方来数据样值这个表右键刷新,这些数据全有了,下拉列表里边数据都在这里边呢,每一个数据都有所属的那个Type Code的知道吗。这是我们说到这,那大家看在这里边大家看我要查称呼,在这里边直接传传什么称呼的那个Type Code就行,称呼的Type Code是谁,你看看。它还不够的,那称呼就是它CTRLC把它拷贝过来,然后呢,放到我们这里边来。然后呢,点开就行,所以这就是查询,根据称呼的Type Code去查询数据字典值那个表里的数据了。他将来就放到称呼那个下拉列表里边是吗?就这个那说当然这是他调到service service要到数据库边去查,根据这个什么编码去查称呼,那根据编码去查称户,他不能直接访问出户,它就调埋粉。
26:07
那所以调map,调谁的we,调数据字量值到map,调dictionary value,然后呢,大家看在这里边也得加个方法,这个方法也是根据type库去查询数据资源值这地方继续了。将来我们在这边设计一个方法,这个方法的一个select的叫什么?第一个value by Type Code Type Code,然后呢,在这里传一个开始称呼,这个称呼大看还是这个编码传过来。那么将来在这个map里边就可以调用通过MY,然后呢,访问数据库,执行搜狗语句,执行SQL语句来查询,那么查询查询称呼,查询称呼那里边下拉列边所有数据都查出来。那查的时候大家这个骚帚句,其实你就大概能想象一下这个骚帚句是什么样骚帚句。
27:01
那就是一个select的数据,根据Type Code去查询数据资产值,那查询完之后把查询结果往回放,那访值什么类型的?对,查询称呼下边的数据字量值对,是不是下边可以有多个值啊?一个称呼下边有多个值,那每一个值分成了一个什么?对,实体类对象,那有多个值,分成什么list,所以把这个list往回返了,然后呢,返回给CTRL了,就拿到数据字典值的叫bigger value list,知道吧。然后呢,这个CTRL就拿到称呼这个下拉列表数据了。称呼这下拉列表大家看吧,这个称呼这个下拉里边数据都拿到了,那同样的道理,在查线索的状态,这里边的数据也得查出来,那查的话还是在数据字,产值那个表准存折,那是不是还得调数据字值得他来做,对,那只不过传的编码不一样了,那他还得调map,也是传编码不一样,按理说你这个地方再设计一个。
28:02
调数据资源值的,Sorry,调数据资源值的map,按理说的这种设计,但是我这么设计,我这个图太复杂了,你知道太多了,所以这个地方呢,我不准备一个一个画,按理说你得画出来知道吗?那我怎么办呢?我这这个偏棍,既然要查什么状态呢?这个地方我用一句话来代替,这俩,这俩调用了,按理说还得再调一遍,那这个地方我就什么用一句话来代替了。啊,那这这句话呢,是还是调用service方法。Service层方法,调用service方法,然后呢,这个是查询什么,查询线索的状态状态。查询线索的状态啊,那查询线索状态也是得到一个数据资产值的一个设计的力量,一个这一个例子的,所以他得到这个还是这么一个数据资产,知道一个例子,这是我们说线索状态,那查询完线索状态了,还得继续查查谁呢?线索的来源,线索来源下来也是从这个表格也得调service调买,所以我这个地方呢,我也是用一句话代替了,知道吗?调用调用,然后呢,Service层方法啊方法,然后呢,来查询叫线索的来源,线索来源同样也是得到一个例子,这个例子也是数据电值的例子啊。
29:23
这样的话,当然这个controller就把前台所需要的动态数据全查出来了。所有的所有者现称呼,线索状态,线索来源都查出来,查出来之后还要跳转主页面去显示了,跳转之前先把数据传过去,然后呢,把什么数据,然后呢保存传过去,怎么传过去对保存到request中作用中,然后跳转到线索的主页面。如何跳转这个地方来一个跳转,然后呢跳转到主页面就行了,然后呢跳转主页面就是线索下边引ex.GB然后呢,大家看我说这个跳转过来,直接跳转过来。
30:02
那这个跳转大家想想,请求转化式重庆药。对,是不是通过request传数据,是不是必须是什么一个请求啊,一个请,那请求转跳转到主页面,跳转完了之后,主页面执行的时候,那叫什么?从作用域中把数据取出来,都显示出来,然后呢,从它的职责就从作用域中来获取数据啊,获取完了之后,把这些数据都显示到页面上,我们把它叫做渲染页面,渲染页面。然后把这些页面返回到天大。把这个页面运行的结果访问到前面,访到哪,谁发的请求访问到谁,谁发的请同步请求,浏览器发了响应信息给他浏览器,那浏览器能解析到数据,对,也是一个A上面网页,把这个网页主页面运行出来,这个网页访问的起了。那访问浏览器,浏览器拿到网页时候,他最擅长的就是显示网页。
31:03
所以那那怎么了,他我说这个地方,那他一点这个菜单,这个线索的主页面就在这打开了。当然里边动态数据全部都出来了。所以说呢,浏览器在工作区中来显示线索的主页面,浏览器在工作区中来显示线索的主页面,这样的话,当我们这个流程就做好了。他一点菜单跳转到线索的主页面去,这是我们这样这个地方给我们市场活动稍微不一样的地方就是他这动态数据得迁入到数据字点表。数据资产表,我们以前给大家简单给大家说过,他专门这两张表,专门是处理,专门是存储下拉列表里边数据的。他们的特点,数据量不大,但是要经常访问是吧?而且会分类的,每一个下列边有什么,有各自的类型,知道吗?知道吗?所以一般来讲,一个项目里边基本上都有下边,下列里边下列板数据都存到他们里边,一个是存类型的,一个存值的,那这俩都有关系,什么关系?一个类型下边可以有多个值,一个值只能属于一个类型的,是不对一对多,所以在多的里边加个外键,引用一的主键。
32:15
那给大家强调一点呢,一的这个主件,它用的是有业务含义的字段做主键,为什么用有业务含义的字段做主件,就是因为它里边数据量少,用户输入这个值的时候重复的几率比较小,知道吧。那个人用ID可不可以。你对用ID也可以,但是用ID不好的地方在什么呢?你那个主键值以后呢,对在程序里边不能直接写。用有业务含义的作用数,好处就是说主键值在程序里可以直接写字,为什么可以直接写词?这是用户自己填的有业务含义的。所以这是我们这是我们说的这个地方,就跟创建市场活动不一样的地方,就在这个他用数据字点。类型和数据资产值这两张表格吗?
33:01
好,这时候我们这个大概这个流程我们就给它设计到这下边呢,我们就准备来写这个代码了,那写这个代码还是从底层开始写,那从底层也先写map service。那关于查询用户的map service这两个方法咱们已经写过了,在查在创建市场活动的时候已经写过了,那在哪写呢?在这个地方市场活动,然后呢,一点市场活动这个菜单,市场活动主页面在这打开,然后呢在创建市场活动这些下拉列表看吧,都是所有的用户,当时我们已经做完了,那写代码已经写完了,当时哪一个哪一个流程大,就这个创建市场活动看吧,一点市场活动菜单跳转市场活动组了市场活动中啊这个CTRL接到请求之后查询所有的用户好吗?知道吗?这时候我们说到这这个方法我们已经写完了,所以下边我们继续了,那这个什么micro service就写完了,知道吧,下边我们写这个map service知道吧,那写这个map service它要操作数据自检值那个表了,那个表以前我们从来没操作过,那对于这个表的它的什么,对于这个表的这个map层的代码实体内map结构映收文件,那我们要通过MY8立项工程去生成知吧,好,下边我们通过买八的立项工程先生成市场活动,这个先生成数据资产值那个表对应的map的三模代码,好,那生成的话我们首先改配置文件。
34:24
知道吧,然后呢,改成快容价,大概我们这个改的话,改的话大家哪些地方得需要改,首先再看数据库这些信息需要改吗?不对,不用是吧,这个干什么,存储代码的目录是不是也不用改啊,但是这个呢,这个需要改吗?按理说它也处于业务管理的功能,是不是按理说也都放沃奔NCH里边,但是大家看,由于咱们这个地方咱们没做哪个地方看了。对对于数据字典表格增删改查,你看吧,这些功能按理说得做,他们实际开发的他们都做,而且这些功能得先做,但是由于我们时间有限,这些功能没做,这些就是操作数据资产值以及数资源类型,那个表格增删给查到,那这些在哪呢?大哥,系统管理有功,系统管理的这些功能里边,所以他得写到哪对settings下边,对属于系统管理的功能得写到这个settings下,知道吗?
35:19
在这里边建立map实体类map service,所以呢,这个地方呢,我就给它改一下了,那这个地方改成什么?对,Setting setting,然后下边再看这个地方也得改成setting,然后这个地方也改成。三定,然后呢,大家下边那就要改那个表了哈,那改那个表先把以前的表都注释掉,一定要注释掉哈,那吧,然后呢,我们打开数据字典值那个表,因为我现在要写数据字典值那个表对应的map,所以我找着数据字典值那个表,数据典值表来找一找,这也叫数据资产类型表,这是数据量值目标,但咱们对表明做了简化了,知道吧?所以我这个地方来一个糖,把它打开这个注释知道吗?
36:10
然后呢,大家看我们把这个表名给大家简化一下第一个value,然后呢,这个地方来个第一个value改行了,好改完了之后下边我们运行my body逆向工程,然后呢,这个地方右键也运行。大纲这样的话,大概我们这个就生成了,生成完了之后,大家这个代码我也简单看一看,然后呢,在什么S下边,这是实体类数据字产值到实体类,然后呢,这是数据自产值的map接口。这是数据量值的应证文件,然后我们在这个基础上来开发就行了,那开发了在里边加一个方法,这个方法咱已经设计好了。根据Type Code去查询数据字典值。那我就设计好,那设计好那这直接写了范围值已经设计好了list list的里边是对的,叫数据自然值的,那么实体类对象这都设计好了,然后呢,在这里边提供一个方法,这个方法就是咱们已经设计好了叫select Di的的概率查询数据资产值根据什么查对Type Code去查,然后呢,在这里边传了一个Type Code,你要查哪一个下拉列边下的Type Code,那这个地方来定义个什么,对Type Code,然后呢,这个地方我们来定义这个方法,这都是设计好的,然后呢,这里边来一个叫什么根据根据什么根据Type Code来查询,那么查询,然后呢,数据字典值明白白吗?
37:36
看看这个type库的项有哪对应哪些数据量值都超了,以例的形式转回。然后呢,当那你说这不是写死了吗?当然我们调的时候给他给他查写死的那些什么,那这个Type Code就行了,当然我们定义这个方法的时候,你到底要查哪个Type Code,下午数据单词你不确定不确定定义的参数知道吗?好,然后呢,大家在这里边我们写我们错数句,行了,来写搜数句,来这个地方来写一个查询的错数句,写了艾,然后呢,这个地方来一个ID,要和方名一样,CTRLC来拷贝,然后呢,放到我这里边,然后呢,参数p me type这个参数根据Type Code去查Type Code是个什么字符串类型的是吧,然后结果result map,因为我们将来要返回一个一个数据资产值的实体的对象。
38:29
所以我们返回一个map,那后返回个map,然后呢,这个地方把它拷贝过来,然后呢放到我们这里边就行了,知所以大家要跟上我们这个思路懂,然后呢,在这里边写我们搜数句行了,那写搜句查询的搜入句select,然后呢from从哪个表里边查对查下拉列表里边值,从数据自产值这边查,查它的哪些字段。那您看前台需要哪些字段,前台需要哪些字段,大家看啊,你看啊。
39:00
对前台需要哪一段,你看创建线索的时候。这个下拉里边需要哪些字段?对,首先知道需要这个数据资产值这个名字是不知道呢,给用户看的,只需要名字可不可以不可以,因为你选中一个之后呢,真正点保存的时候,是不是把这个数据字典名字,字典这个名字这个字段对应的那个什么,对在数据字典值那个标里对应的那个ID是不是发到后台,对得拿ID哪一个ID就这个ID数据资源值这个表查这里边数据把这个ID提交后台跟用户显示的时候是value这个名字。值名字知道吗?所以待会我们说按理说只需要查这两个字段就行了,按理说只需要查出来,就说后边后边这个说明信息你可以查也可以查,也可以不查,后边的你也可以查,也可以不查,反正我们这个下拉列表用不到下拉列表只需要用到它,他俩一个给用户看的,一个是什么,真正选中一个之后提交到后台的啊,那我们这个地方它的字段不多,而且数据量不多,所以我这个地方就把所有字段都查出来了。
40:06
那所有字段注绍了,把那些列表字段列表都写在这,那字段列表太多了,我不准备是吧?对,我不准备一个一个写了,那这个地方我in可一下serve语句片段就行了,然后呢,这个地方来个in include,把这个serve句片段包含进来,这样的话我就查数据资产值这个标志,所有字段都抄出了,下边是不是查询条件啊,根据什么去查。是不是给你太扣的去找,对太扣的,然后呢,这个地方太的去找。Type Code等于几对,是不是传过来那个Type Code就那个参数就行了,这样的话这个so义就行了,好,这时我们知道so预响了这个麦就行了,好吧,啊。找这个什么micro写完了,下边就要写service了,对,在数据字典值的service里加一个方法,根据Type Code去查询数据字典值知道吗?所以那这个地方来,那在直到service也是属于系统管理的功能,所以我们采集到setting下边的service,然后呢,在这个地方来创建一个接口,Service层面向接口编程,我们把它叫做叫big value service,然后呢,这个地方创建一个接口,在这个接口里边定义一个方法,这个方法咱已经设计好了,范围值list list里边都是实体类对象,然后在这里边提供一个方法,这个方法叫query,叫什么个ary value。
41:37
根据什么去乘Type Code,然后呢,在这里边来写上它就行了,然后呢,在这里边乘个参数,这个参数叫Type Code这个参数知道吧,然后该引进类引进来就行了,知道吧,这样的话我们这个方法就定义好了,方法定义好了,那给他加一个实现类,里边也得加一个方法,那在这里边加一个实现类,这个实现类叫数据字典值的service的实现类,IMPL,它是一个类,那这个类要实现咱们那个接口叫value service接口。
42:12
那么呢,它这个service类加一个主解,那然后呢,在容器里边给这个B起个名字,我们这个名字就叫dictionary value sorry。那下边我们就写这个类了,这个类实验了这个接口,那把这个接口里边定义的所有的方法都得实现,按用out insert implement method,然后呢把它拿到行,那这个service层方法的实间要调map层,所以这个地方得注入进来一个数据字典值的map,所以我们这个地方来注入进来叫第个为value map,然后呢,这个地方第ctionary value,然后呢,在这里来注入进来叫auto。然后呢,我们直接调这个map就行,然后呢,这个地方来一个叫select dictionary value by Type Code,然后把这个Type Code窗户了,这样的话我们这个service也写完了,知道吧。
43:05
Service层写完了,那我们这个地方这些什么service micro service都写完了,包括这些也都写完了,因为他们都是复用的,所以下边我们就可以写陈出来了,所以下边这一个内容好,然后呢,大家下边我们写这个CTRL了,那CTRL在这CTRL里边加一个方法,一访问这个方法要跳转到线索主页面。同学们加这个方法,那加这个方法在哪?加在controller叫C录controller加那可controller那我们以前没写过,那得写一个C录controller,那c control线索是属于业务管理的功能,所以我们在业务管理功能这个control里边建议加一个controller就行了。所以在这里边加一个停住,你别写到三星格桌了,然后呢,这个地方来一个,那我们这个地方叫可录请出了,这都是设计好的。然后呢,这个地方来一个ctrler,然后呢,大家看这是一个类,然后呢,这个类我说是个ctrler类加一个CTRL注解知道吧。
44:03
然后呢,大家看我们说那它所在包已经被索扫描过了,不用管了,在这里边直接写CTRL方法就行了,那这个填充L方法来一个public返回值是什么类型的。反什么呀,他是不是要跳转页面啊,跳转页面什么对string方法名跳转主页面叫啥对index知道吗?然后呢,大家他这个品出的方法给他一个request卖品知道吗。这个request的map品,然后给他URL,这个URL怎么说要和他处理的自源路径保持一致,它处理的自源路径大概就这个,对要跳转到线索的主页面,对就这个地方。那它的路径什么沃克奔驰可录是不是这样的,对,然后呢,这个地方直接来了,所以大家看这都是规则,听见了,然后呢,下边来个可录,下边资源的名称跟放网名一样,叫录。然后它跳转页面不是返回键的时候,不用加瑞帮我报的那前台没有参数,不用定义形态。
45:06
在这里边直接写文代码就了,写完代码干什么啊,它调到它之后,首先什么直接调三份方法,把动态数据数数都查出来,对查出来,这就流程设计好了,下边我们调用service层方法,然后呢来查询动态数据,查询动态数据首先查所有的用户,根据网络设据调用户的service,那调用户的service,在这注入用户的service。这个地方来一个注入进来叫user service,然后呢,这个地方user service,然后呢,在这里边来注入进来auto work,然后呢,直接调它就行了,它里边有个方法叫query or user,知道吧,然后呢,我们这个地方定一个变量结束它,那这个变量来一个list,它里边来一个user,然后呢,这个是U色list,然后呢,这个地方来引进来。
46:00
好,这样的话呢,我们就可以了啊,这是查询所有的用户,再一个要查询称呼。那查称呼要调数据资产值的所词,所以在这个时候得注入进来一个数据资产值的所词,那后来注入进来一个create数据资产值的所位词value service,然后呢,这个地方来一个数据资产,直到service注入进来,来一个out work,明白吧,然后直接调就行了。知道吗?然后呢,这个地方直接掉过了,然后呢,它里边有个方法,咱们刚刚写的那个方法叫query,这个by by code。那这个Type Code,我们说我们就给他写死了,这是查询称呼,那称呼的Type Code值叫什么,你自己创建的时候,在数据库边已经写了哪一个标志,就这个表格找称呼,这是你自己创建的时候自己输的。对有业务含义的字段,可以直接写死到程序里边,这是称呼的还是?这样就行了。然后呢,它得到一个例子离子,离子里边是一个一个的数据字典值的是一对项,然后这个地方定一个变量,变量名我就建明之意的直接叫他称呼的例子算什了。
47:10
这样的话,大概我们这个地方就可以了,好吧,这是我们这样,那这是称呼,下边还得查谁啊,查线索的状态,线索状态也是在数据字产值的sorry轴存折,所以我们还是调数据字典值的sorry,调谁还是调这个方法,Query这个value by type Type Code,这个Type Code叫什么,你到数据库里边去查去,你创建的时候线索状态那个Type Code值叫什么,你这个东就写什么。对,我们叫这个叫可state。这是我们这,所以大家我们今天又学了一个这种用这种新的用法,以前从来没用过,用有业务含义的字段做主键啊,然后呢,这个地方得到一个值,这个值也是一个list list时是一个一个除以字点值,然后呢,当上这个list,那我就直接定义叫可好,然后呢,大家看这个地方,那下边还得还得查询什么查询线索的来源,那查询线索来源这个地方还是吊顶。
48:12
调它的还是调这个方法,Query dictionary value by Type Code,那它在什么Type Code,也去找他的Type Code线索的来源在这个force,然后呢,这个地方来啊,那你们老师这些S谁写的,程序员写的,那么到公司里边谁写的,项目经理一般都项目经理创建知,他告诉你这些数据从数据资源值里边直接取就行了,这他创建好的知,这是一些公共的,不属于任何一个人做知,然后呢,这个地方来看,叫这个头value,然后呢,这个地方来S例子啊。好,这样的话,大概我们把这些数据都查出来了,查出来之后,现在我们就来到这来了,数据,所有的数据都查出了,下边把数据保存作文位里,然后从作位边取出来数据显示跳转页面就行了,所以下边我这个地方来把数据保存到作用率中,Request中行保存的request,然我得拿到request,拿request,注入request sorry request,然后呢,Request,然后把这个request的,然后呢,这个地方拿过来,然后呢,Side把这一数据放里边,那放里边那就放吧,那要起K,这个K你随便起了,我就见名之意,对,我就直接叫它了U,错,例子这个值就是这个意子,然后呢,这个地方来一个再放,还有什么,还有这个称呼,对,把这个称呼也放里边,然后呢,request.set叫tribute,然后还有这个线索的。
49:49
状态,然后这个地方来拿过来,然后呢,Request叫set,然后呢这个是线索的来源,Source list source list都保存了,作用密转,这都是设计好了,然后下边请求转发,对请求转发的线索主页面把这些动态数据都显出来,请求转发,那请求转发如何转发,对return把那个页面的资源路径写的这个页面大概就这个页面,就这个页面资源路径对从哪对worker奔可录inex知道,所以我们这个地方来个work奔,然后呢C录然呢index它会自动加上前缀和后缀,这样的话我们这CTRL就行了,这样对CTRLL行了,后台就行了,后台响就前台了,前台是吧,一个是发请求,一个是显示结果。
50:43
那我们先写这个结果吧,先写这个JSP好。
我来说两句