00:02
好,那接下来呢,我们要做这个新老用户校验了,而这个思路呢,之前我们都已经整理好了,对吧,就是拿这个,那我们想啊,在做新老用户校验的时候,我们是不是应该针对于同一个mid而言。我们能把多个mid混着用吗?大家想一下。大家想一下,能混着用吗?不能吧,所以说在做新老用户校验的时候,我们应该先要做一个什么事啊。
01:04
卡了吗?没有卡吧,那你为什么说你卡了。对,一定要做一次K,拜,是不是对吧,要先做一次K。啊,要先做一次K啊,Mid分组OK,好,那这边呢,我们先做1K半,就是杰森点K半啊,那注意啊,我们是按照这个公共字段当中叫mid字段,所以我们是不是先应该获取common,然后common当中获取mid啊。对吧,我们要先获取common,再获取m mid这个意思,所以呢,我们就拿这个地方,这是杰森OBG啊这个对象,然后呢,我们拿着。杰森OJ点先去获取get杰森object,把common拿到,继续点get stream,然后呢,第二步获取m mid,我们一步到位了啊直接一步到位了,先大家想一下,是不是先获取common整个的大的这个呢,我们又获取的是杰森对象,接下来获取这里边的一个m mid对吧?所以我刚才写的是Jason object object.get Jason object common。
02:23
之后呢,再获取mid啊,做这个的一个分组,好,那我们要做新老用户校验。这里边呢,要用到状态编程没有问题。对吧,要用到状态编程,但是我们想我们应该用什么函数呢。不要一上来就说process啊,不要一上来就放大招嘛,对吧,我们想一下这个地方我们应该可以简单一点用什么数据。用哪个函数。
03:01
想一想啊,当然process肯定可以,是不是?但是不要一上来直接就用process。想一个最简单的。哎,对了啊,孙总说了,Map里边放一个什么reach map方式,因为这个地方要用到状态变成了首先我们每一条数据。我们每一条数据。都要做处理对吧,但是呢,我们要用状态编程,所以呢,我们得用这个reach map方式。我们得用reach map方对吧,所以这边呢,我们有一个map,有一个reach map function。啊,那这边呢,还是一样的,J3OBJECT的输入数据接object,输出数据也是接object的,也就是说这里边有一部分数据的一,我们要把它变为零。
04:04
啊,有一部分数据的一要变为零。对吧,有一部分数据的一要变为零,是这个意思,好,那我们要去定义一个状态了,在这边private,然后呢,那我们想这个状态的类型,我们应该用什么类型呢。我们可以用什么类型?对,Value state是不是就够了,就做一个标记是不是啊,对吧?好,只要判断它有没有值就行了,Value state。好,那这里面呢,我们放一个string类型啊,那这边呢是value state,然后接下来这边。我们要做它的一个初始化啊,在open方法里边,对吧,做它初始化,那就value state,然后呢,赋值get runtime contact.get state这边有一个value state的script,好,这里面呢有两个东西,一个是ID,一个是类型name,对吧,Name呢我们就是value。
05:13
Got state,好,然后呢,还有一个是类型点class。这个就搞定。啊,这个就搞定了对吧?呃,那这个状态有了,接下来呢,我们要做这个判断处理,还记得刚才我们的思路,我们如果是零就无所谓,如果是一才要处理,对吧,首先我们要获取标记。获取数据中的奖。一六标记。啊,S6标记对吧,那S6标记在哪呢?它同样的是不是在common字段当中啊。对吧,我们可以通过这来看common当中有一个is new啊,有一个is new,对吧?嗯,那这边呢,我们直接拿着value.get杰森common。
06:07
点get string叫ISA new加得到一个is new标记,那当然如果它为零的话,我们是不需要处理的,只有为一的时候才需要处理,所以呢,这边判断。IN6标记是否为一对吧?啊是否为一?好,那这边if1.equals。我们的。啊,那如果说是这样子的话。啊,1.16,那我们要做处理L呢,如果它不等于一呢,那是零呢。零的话,我们就直接干什么,Return value,把值自己写出去,对吧?如果是零的话,那我们可以自己写出去,如果是一,那此时我们要获取状态数据。
07:06
好,那就是value state.value加V得到我们的state。得到我们的状态,然后接下来我们判断状态是否为一,是否存在,那就state啊,那如果说状态它。不等于呢。说明有值了,那有值了,你还为一,这个时候是不是要修改一标记。修改我们的什么一六标记。啊,要修改这个值。对吧,啊,之前的一我们要变为零,变为零再写出好,那这个时候我们应该怎么去修改一下。那就直接。设计个值啊,那我们这样啊呃。
08:00
value.get接森object。点set,哎,这个是我们的,呃,Common对象,哎,这个地方错了N啊common。得到这个值,然后呢,Put啊put谁呢is new把这个改为谁啊改为零。加零就好了,对吧,最后呢,我们也要把它输出这个value啊,Value或者说等会我们可以统一输出啊,可以统一输出啊,那先这样啊,先这样,然else,如果它等于now呢。如果说这个状态等于呢,说明这个mid以前还没有人来过,对吧,没有人来过,那我们就正常输出没有问题,但是状态要改吧,Value state点。Update啊,我们随便更新一个E对吧,随便更新一个值,因为下一次再来的时候,里面就不等于none了,第一次获取的时候等于闹对吧,那这个返回值呢?既然大家返回都是这个value,所以这个活也就不要了,对吧?直接这个不要了,这个不要了,直接返回就好了。
09:14
对吧,因为刚才我们写在这儿要返回一次,大家想啊,这返回一次,这返回一次,还有这个else,这也要返回一次。所以我就直接返回一个一个value就好了。新用户应该第一天都是新用户,新老用户校验不用去数据库不用,我们是对mid,不是UI。我们是mid,不是U的ID啊,注意一下。而且新用户第一天都是新用户,我们不做这样的处理。我们只记录第一条,只记录第一条啊,那有同学说我要用第一天都作为新用户,能不能做这个事情。
10:07
如果说我想做到的是。第一天都是这样子的,那有没有办法能做到这个事情?大家想一下应该怎么做?那我们状态里边就保留一个时间,当这个状态不为当的时候,我们再看一下时间是不是跟今天相同,对吧?啊也可以做到这个事情。带时间戳,不是带时间戳啊,应该在年月日。带年月日啊,不是时间拖,时间拖太细了吧,对吧。对,用年月日吧,放到天,因为你按天嘛,所以放到天就够了,对吧,再判断,当然这个可以做啊,可以做,那这个你自己可以下去做一下,因为后面我们有需求需要按天去重,所以这个地方没做了,当前我们是按MID啊,不是按UID。
11:00
不是按UID对吧?好,那这块呢,我们也已经搞定了啊好,CTRL加V得到一个杰森o BJ with new flag啊新的一个标记D。这个没有问题吧,这里面逻辑其实比较清楚啊,大家自己可以看一下逻辑啊,行,我把这个。
我来说两句