鼎鼎知识库
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # 1、总部运营后台运作原理
  2. ## 1.1 创建组织
  3. 组织是一个抽象概念,鼎鼎总部是组织,与鼎鼎公司签订合同的公司是组织,调用鼎鼎开放平台接口的第三方也是组织。
  4. 鼎鼎总部作为组织不需要人为创建。一般是在程序启动时,通过程序创建。
  5. 凡是调用鼎鼎开放平台接口的第三方,一般是由总部管理员创建组织而来。创建过程中最主要的信息是授权`Key`和命名空间,授权`Key`在第三方调用开放平台接口时使用,命名空间用来区分模块数据在`Redis`缓冲中的存放空间。创建之后在数据库层面,`IsThirdParty=1`。需要注意的是:在把模块和第三方进行绑定时,如果第三方没有授权`Key`和命名空间,系统不会允许绑定。
  6. 凡是与鼎鼎签订合同的公司,一般都会有一个独立的数据库,这类组织是由销售员创建,然后经财务和`CEO`审核,才可以对该组织(也叫项目,在数据库中`IsProject=1`)进行其它设置。一个重要的设置是为该项目设置命名空间,该命名空间用来区分模块数据在`Redis`缓冲中的存放空间。需要注意的是:在把模块和项目进行绑定时,如果项目还没有命名空间,系统不会允许绑定。
  7. ## 1.2 设置项目数据库
  8. 目前对于不同项目都有其独立数据库,是一种`多租户`设计。设置项目数据之前还有一个步骤,需要程序员为该项目创建对应的关系数据库和时序数据库。之后,通常由总部管理员为项目设置数据库信息,为项目设置关系数据库和时序数据库相关信息。
  9. ## 1.3 设置项目`Banner`
  10. 一般由总部管理员为项目设置`Banner`。当通过手机端或者`Web`端登录,可以为不同项目呈现不同`Banner`。
  11. ## 1.4 创建电工
  12. 创建电工本质上是为总部这个组织增加了一名员工,一般由总部管理员创建。数据库层面来看,首先在`User`表中增加一条记录,然后在`UserRole`中增加一条记录,最后在`Employee`表中增加一条记录。
  13. ## 1.5 电工和项目的绑定
  14. 一旦电工和项目绑定之后,电工在手机端登录之后才可以找到对应的项目,通常是由总部管理员进行绑定。
  15. ## 1.6 创建模块
  16. 一般由总部管理员创建模块,包括模块号、通讯方式(比如`HTTP`和`UDP`方式)、软件版本(目前没有,需要加上)。模块的在线离线状态从开放平台获取。假设有一个模块在总部运营后台创建之后,一直没有被用到项目中,开放平台对该模块无感,这个模块会一直显示离线。如果一个模块某天被安装在某个项目,联上网之后,开放平台捕获到了该模块状态,这个模块就会显示在在线状态。
  17. ## 1.7 模块和项目绑定
  18. 模块和项目的绑定是有前提的。如果是第三方合作方(数据库层面`IsThridPary=1`), 在绑定之前第三方合作方必须有授权`Key`和命名空间。如果是项目(数据库层面`IsProject=1`),在绑定之前必须有命名空间。因为当模块和项目进行绑定时,不仅在总部运营后台记录了模块和项目的关系,还必须把相关的有授权`Key`和命名空间信息告诉开放平台,这样开放平台借助这些信心来保存或获取信息。
  19. 总部运营后台在模块和项目绑定完成之后,必须调用开放平台的一个接口,把项目和模块信息同步给开放平台。开放平台相关的两张表是`projects`和`macs`表,第一张表用来管理项目信息,第二张表用来管理模块信息。
  20. `projects`表大致如下:
  21. | `ProjectId` | `ProjectName` | `NSpace` | `APIKey` |
  22. | ----------- | ------------- | ---------------- | -------- |
  23. | 4 | 办公楼版测试2 | `OpenAPI_Office` | |
  24. `macs`表大致如下:
  25. | `Mac` | `ProjectId` | `ProtocolType` |
  26. | -------------- | ----------- | -------------- |
  27. | `98CC4D212FE1` | 3 | `UDP` |
  28. | `187ED5311111` | 4 | `HTTP` |
  29. 以上,模块和项目之间的关系有了。随之而来的问题是:如果把模块及线路保存到项目数据库中去呢?打个比方,有一个办公楼版的项目叫`办公楼版测试2`, 对应`数据库2`。另一个办公楼版的项目叫`办公楼版测试3`,对应数据库3。如何把模块及线路保存到`数据库2`或`数据库3`呢?
  30. 一种方式是:当电工登录手机端,根据电工绑定的项目,把模块和线路保存到项目数据库。这是目前采用的方式,但应该不是最合理的,这个时间点应该靠前。
  31. 第二种方式是:当总部管理员在绑定模块和项目的时刻,把模块及线路保存到项目数据库中去,将来需要采用这种方式,暂时不做。
  32. ## 1.8 模块和项目的解绑
  33. 首先完成在总部运营后台上模块和项目的解绑。
  34. 其次需要完成在开放平台上模块和项目的解绑。开放平台的`macs`表解绑后的`ProjectId`为空。如下:
  35. | `Mac` | `ProjectId` | `ProtocolType` |
  36. | -------------- | ----------- | -------------- |
  37. | `98CC4D212FE1` | 3 | `UDP` |
  38. | `187ED5311111` | | `HTTP` |
  39. 最后需要把模块及线路从项目数据库中删除(可能是物理删除,也有可能是逻辑删除),这点放【总部运营后台后端处理】中讲。