00:00
接下来我们再根据接口文档继续来编写销售属性相关的功能。首先我们来编写获取分类里边的所有销售属性,比如我来刷新。它呢会发送一个请求叫product at tr cell list,它是来获取销售属性列表的,那零代表获取所有分类,我们在这个接口文档上呢,也说明了,那销售属性的获取和规格参数其实都是一样的,因为我们所有的属性表都是放在at tr里边,是根据at tr的类型来区分它是销售属性还是我们的规格参数,那我来右键改变表,如果是零,那代表的就是销售属性,而如果是一,那我们就是规格参数,而且呢,这还有一个值,如果是二,既是销售属性又是规格参数,那我们可以不启用这种功能,那么就来检索一下,还是来到我们at tr里边at tr CTR了,我们现在的这个请求呢,是product at tr cell list带上分类的ID,我们发现呢,跟上面的这个list。
01:09
他们基本上是一样的,只不过中间的这个base变成了cell base是获取基本属性,Cell是销售属性,所以我把这一块呢,我就稍微变一下,我们一个方法当两个用,我这个就叫at tr type,按照我们的属性类型,这个类型呢也是路径变量。它是一个string类型的类型,来获取这个路径变量。如果这个at tr type它是一,那就是我们的基本属性,否则就是销售属性,所以我们在这查询的时候将这个类型也传过来,那么改变一下这个方法的签名,添加上第三个参数,最终来改变这个方法,变成这样,我们来reflect,好,同样进入它的实现,那现在呢,这里边就有一个类型了,那我们在这查的时候,不仅是分类的ID是这个,而且呢,属性的类型我们必须也等于我们指定的值,打开我们现在有两个检索条件,分类的ID和属性的类型,所以我们在这直接再来拼上一个条件就行了,直接E口,E口什么呢?我们现在得来判断这个type,我们现在把这个属性类型放在这at tr type,那它要等的值应该是这样,我们判断如果贝斯。
02:27
点equals ignore case,无论是大小写,如果你现在是base,那就是基本属性。基本属性我们让at tr type。等于一,否则就是零,我们写一个三元运算,也就是说类型是基本类型,那我们就查一,否则查零,剩下的都一样,都需要模糊检索,好,我们来重新启动。在这儿呢,来测试一下,我先把这清空,重新刷新。那么在这来获取销售属性,我们发现他在这还拿到的是基本属性们发送的请求呢,是sell list,我们看一下我们这一块的判断在上边。
03:11
我们判断at tr type,我们让它的at tr type,如果传来的type是base,那就是一,否则就是零,这是没问题的。我们来看这一块的SQL语句,在上边我们来进行检索的时候,我们来找从at tr表里边进行的检索。这有一个select at tr search type等等这一堆的属性,我们来看一下。From我们PMS这张表里边有limit,但是我们没有这个属性的类型,原因就在这,我们不是分类ID不等于零的时候才拼的,我们是无论任何条件都要拼装这个at tr type,所以我们把这个at tr type的拼装我就直接放到一开始构造的时候。
04:00
我们将这个泛型的放在这儿。现在来重新启动一下,来测试一下效果,来关闭这个销售属性,我们重新点开。现在呢,他就会查到我们这些销售属性,只不过现在这些销售属性默认是没有的,那我们如果想要新增销售属性,也一样来点一个新增,这新增方法跟新增规格参数都是一样的,只不过销售属性在这默认,它会选中销售属性。比如有一个销售属性叫颜色,颜色呢只能允许单个值,我们可以提前写一些可选值列表,比如黑色。白色。属性图标我们先随便写一个三级分类,我们来指定上手机通讯来点击确定。那新增成功以后,我们点查询全部这一块就应该有数据,没有的原因,我们再来看一下。来点查询全部现在来cell list,我们的SQL语句这一块呢,已经出现了报错,我们来看一下错误原因,这有一个空指针异常at tr service,那就是在查询的时候我们要设置分组信息,它主要是在108行,那就是在这儿,而且由于如果我们是销售属性,它是不存在分组的,所以我们在这要设置分组信息的时候,我们也可以判断一下if。
05:24
如果我们传过来的这个类型是base,我们才给它设置分组,点e ex case,我们这个type是base,好,我们再来给它设置我们属性分组的这些关联信息,把它放过来,否则我们就不用设置了,重新启动。现在我们来重新进行一个测试,我们把它关掉。再来打开。诶,我们现在发现呢,颜色这个销售属性就查出来了,可选值列表,黑色白色都是没问题的。包括我们进行修改,我们多提交一个颜色的值,蓝色好。
06:04
我们再来点击确定。来看一下,现在我们颜色的值又多了一个,但是呢,这还有一个问题,我们看一下在数据库中间表中,当我们保存了九号属性,由于九号呢是一个销售属性,它在这还存了一个空的分组关联关系,这个原因呢,就是由于我们跟基本属性共用了一个保存方法,我们在这儿保存的时候,无论是保存还是修改,我们都得判断,如果是销售属性就不用做分组的事情了。好,我们点进来这儿呢,有一个保存关联关系,我们需要呢在这判断一下,如果当前页面给我们提交的这个at tr VO,我们来获取它的at tr类型,如果这个类型呢,等等,一说明这是一个基本属性,那才需要在这保存分组关系,否则我们就没有必要了。包括我们经常要在这判断我们这个属性的类型,所以我们可以来编写一个常量,这个常量呢,我们可以直接放到common里边,因为后来呢,还可能被别的系统会用到,好后来我们系统里边所有的常量我都放在constant这个文件夹下。
07:14
我们来建立一个和商品系统有关的常量product constant。在这个常量里边呢,主要有这么一个枚举,好首先呢,有一个at tr相关的这个枚举,这个枚举里边呢,有两个分别是我们at tr的类型at tr。Type,它的这个类型呢,是基本属性base和另外一个叫at tr type。Cell。我们经常要用到它的这个零一字段进行判断,所以我在这先来写两个属性,一个是T的Co。一个是string的message。
08:01
这个code就是我们数据库里边存的这些枚举值,我来写上它的构造器,构造器呢主要会用到这两个属性,Int类型的code和我们string类型的message。我们把这两个放在这,用this.code等于传过来的code和this.message。等于message。然后我们base at t了,那它的code是一,我们就叫基本属性,包括c at tr了,那它的code就是零,那我们就是销售属性。那以后凡是要用到这些零一判断,我们都应该将这一块替换成常量。我们商品的product constant里边们有一个枚举是at tr判断,它如果是基本属性点get code。
09:01
那我们还要为这个code添加get set方法来到这来添加一个get code,这个message呢是提示我们用的。我们也可以给它添上get message,好,我们在这呢就来判断第2GET code,如果at tr的类型就是code这个类型,我们看一下在这封装at tr的类型,如果是基本属性了,那么就去保存关联关系,那修改也一样,我们在下边,包括我们以后凡是用到了。At tr类型得到它零一值的地方,我们全部使用枚举来替换,这样以后我们系统数据库更改一些规则了,那么只需要修改一下枚举类,我们就不需要修改各处引用的这些代码了。好,我们在这还是product constant at tr枚举,我们来到基本属性点get code,否则呢,那就是销售属性product constant at tr枚举第二销售属性get code。
10:01
那剩下的这些地方呢,都是一样的,特别是我们的修改方法,我们来看一下,包括我们在这获取at tr info属性详情的时候,获取详情要进行回显,我们也没有分组信息,所以要不要设置分组信息,我们还是要判断一下。那么这个基本详情拿过来,如果它当前at tr entity.get at tr type它呢是基本类型product constant.at tr枚举的基本类型,那我们才有必要给他查询分组信息并进行设置。好,我们把它放在这儿,否则我们是不需要的,包括在下边儿。在更新at tr的时候,我们想要修改分组的关联,当然这必须是基本属性,也就是规格参数才有分组。我们来判断一下,还是这个at tr n,我就直接把上边的这个F来复制过来,CTRLC。如果呢,它是基本类型,我们就来做下边的这些事情来修改分组,好,我把这一块呢,直接全部剪切过来。
11:08
那至此我们这一块就修改成功了,我们启动来测试一下。以前呢,在这儿添加销售属性,会多添一个空分组的引用,我们现在把这个删除掉。我们重新在这添加一个销售属性。好,我来新增。那现在呢,在这添加一个内存,每一个SQ呢,只能有一个内存型号,所以我们内存呢,我们多写几个,比如这个4G。在这写上几个可供选择的列表,还有6G、8G、12G。属性图标都先不设置,包括所属的分类,还是我们手机类下的好,那现在新增了这个属性,我点击确定,那在这个销售属性这呢,我们来看一下刷新关联关系表呢,就没有数据了,包括测试更新等其他东西,我们在这都会判断是基本属性还是销售属性,那至此呢,我们对整个属性的维护,无论是规格参数还是销售属性我们都做完了,那下一节课呢,我们要为每一个分组要关联他们可以拥有的一些规格参数。
我来说两句