鼎鼎知识库
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

总部运营后台运作原理.md 5.4KB

1、总部运营后台运作原理

1.1 创建组织

组织是一个抽象概念,鼎鼎总部是组织,与鼎鼎公司签订合同的公司是组织,调用鼎鼎开放平台接口的第三方也是组织。

鼎鼎总部作为组织不需要人为创建。一般是在程序启动时,通过程序创建。

凡是调用鼎鼎开放平台接口的第三方,一般是由总部管理员创建组织而来。创建过程中最主要的信息是授权Key和命名空间,授权Key在第三方调用开放平台接口时使用,命名空间用来区分模块数据在Redis缓冲中的存放空间。创建之后在数据库层面,IsThirdParty=1。需要注意的是:在把模块和第三方进行绑定时,如果第三方没有授权Key和命名空间,系统不会允许绑定。

凡是与鼎鼎签订合同的公司,一般都会有一个独立的数据库,这类组织是由销售员创建,然后经财务和CEO审核,才可以对该组织(也叫项目,在数据库中IsProject=1)进行其它设置。一个重要的设置是为该项目设置命名空间,该命名空间用来区分模块数据在Redis缓冲中的存放空间。需要注意的是:在把模块和项目进行绑定时,如果项目还没有命名空间,系统不会允许绑定。

1.2 设置项目数据库

目前对于不同项目都有其独立数据库,是一种多租户设计。设置项目数据之前还有一个步骤,需要程序员为该项目创建对应的关系数据库和时序数据库。之后,通常由总部管理员为项目设置数据库信息,为项目设置关系数据库和时序数据库相关信息。

1.3 设置项目Banner

一般由总部管理员为项目设置Banner。当通过手机端或者Web端登录,可以为不同项目呈现不同Banner

1.4 创建电工

创建电工本质上是为总部这个组织增加了一名员工,一般由总部管理员创建。数据库层面来看,首先在User表中增加一条记录,然后在UserRole中增加一条记录,最后在Employee表中增加一条记录。

1.5 电工和项目的绑定

一旦电工和项目绑定之后,电工在手机端登录之后才可以找到对应的项目,通常是由总部管理员进行绑定。

1.6 创建模块

一般由总部管理员创建模块,包括模块号、通讯方式(比如HTTPUDP方式)、软件版本(目前没有,需要加上)。模块的在线离线状态从开放平台获取。假设有一个模块在总部运营后台创建之后,一直没有被用到项目中,开放平台对该模块无感,这个模块会一直显示离线。如果一个模块某天被安装在某个项目,联上网之后,开放平台捕获到了该模块状态,这个模块就会显示在在线状态。

1.7 模块和项目绑定

模块和项目的绑定是有前提的。如果是第三方合作方(数据库层面IsThridPary=1), 在绑定之前第三方合作方必须有授权Key和命名空间。如果是项目(数据库层面IsProject=1),在绑定之前必须有命名空间。因为当模块和项目进行绑定时,不仅在总部运营后台记录了模块和项目的关系,还必须把相关的有授权Key和命名空间信息告诉开放平台,这样开放平台借助这些信心来保存或获取信息。

总部运营后台在模块和项目绑定完成之后,必须调用开放平台的一个接口,把项目和模块信息同步给开放平台。开放平台相关的两张表是projectsmacs表,第一张表用来管理项目信息,第二张表用来管理模块信息。

projects表大致如下:

ProjectId ProjectName NSpace APIKey
4 办公楼版测试2 OpenAPI_Office

macs表大致如下:

Mac ProjectId ProtocolType
98CC4D212FE1 3 UDP
187ED5311111 4 HTTP

以上,模块和项目之间的关系有了。随之而来的问题是:如果把模块及线路保存到项目数据库中去呢?打个比方,有一个办公楼版的项目叫办公楼版测试2, 对应数据库2。另一个办公楼版的项目叫办公楼版测试3,对应数据库3。如何把模块及线路保存到数据库2数据库3呢?

一种方式是:当电工登录手机端,根据电工绑定的项目,把模块和线路保存到项目数据库。这是目前采用的方式,但应该不是最合理的,这个时间点应该靠前。

第二种方式是:当总部管理员在绑定模块和项目的时刻,把模块及线路保存到项目数据库中去,将来需要采用这种方式,暂时不做。

1.8 模块和项目的解绑

首先完成在总部运营后台上模块和项目的解绑。

其次需要完成在开放平台上模块和项目的解绑。开放平台的macs表解绑后的ProjectId为空。如下:

Mac ProjectId ProtocolType
98CC4D212FE1 3 UDP
187ED5311111 HTTP

最后需要把模块及线路从项目数据库中删除(可能是物理删除,也有可能是逻辑删除),这点放【总部运营后台后端处理】中讲。