|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
from website import errors
|
|
|
from website.handler import APIHandler, authenticated
|
|
|
from website.db.enterprise_entity import enterprise_entity as DB_Entity
|
|
|
from website.db.enterprise_node import enterprise_node as DB_Node
|
|
|
from website.db.enterprise_busi_model import enterprise_busi_model as DB_BusiModel
|
|
|
from website.db.enterprise_busi_model import enterprise_busi_model_node_device as DB_BusiModelNodeDevice
|
|
|
from website.db.enterprise_device import enterprise_device as DB_Device
|
|
|
from website.util import shortuuid
|
|
|
|
|
|
|
|
|
class AddHandler(APIHandler):
|
|
|
"""
|
|
|
- 描述:添加企业节点
|
|
|
- 请求方式:post
|
|
|
- 请求参数:
|
|
|
>- entity_suid, int, 企业id, short uuid
|
|
|
>- name, string, 名称
|
|
|
>- parent, int, 上级节点id
|
|
|
>- addr, string, 地址
|
|
|
>- lola, string, 经纬度,longitude and latitude
|
|
|
>- contact, string, 负责人
|
|
|
>- phone, string, 联系方式
|
|
|
>- comment, string, 简介
|
|
|
- 返回值:无
|
|
|
"""
|
|
|
|
|
|
# @authenticated
|
|
|
def post(self):
|
|
|
entity_id = self.get_int_argument("entity_suid")
|
|
|
entity_suid = self.get_escaped_argument("entity_suid", "")
|
|
|
name = self.get_escaped_argument("name", "")
|
|
|
parent = self.get_int_argument("parent", 0)
|
|
|
addr = self.get_escaped_argument("addr", "")
|
|
|
lola = self.get_escaped_argument("lola", "")
|
|
|
contact = self.get_escaped_argument("contact", "")
|
|
|
phone = self.get_escaped_argument("phone", "")
|
|
|
comment = self.get_escaped_argument("comment", "")
|
|
|
|
|
|
if not entity_id or not name:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
|
|
|
|
|
|
db_entity = DB_Entity.EnterpriseEntityRepository()
|
|
|
entity_suid = db_entity.get_entity_suid(entity_id)
|
|
|
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
db_node.insert_node({
|
|
|
"suid": shortuuid.ShortUUID().random(length=10),
|
|
|
"entity_id": entity_id,
|
|
|
"entity_suid": entity_suid,
|
|
|
"name": name,
|
|
|
"parent": parent,
|
|
|
"addr": addr,
|
|
|
"lola": lola,
|
|
|
"contact": contact,
|
|
|
"phone": phone,
|
|
|
"comment": comment
|
|
|
})
|
|
|
|
|
|
self.finish()
|
|
|
|
|
|
|
|
|
class EditHandler(APIHandler):
|
|
|
"""
|
|
|
- 描述:更新企业节点
|
|
|
- 请求方式:post
|
|
|
- 请求参数:
|
|
|
>- node_id, int, 节点id
|
|
|
>- name, string, 名称
|
|
|
>- parent, int, 上级节点id
|
|
|
>- addr, string, 地址
|
|
|
>- lola, string, 经纬度,longitude and latitude
|
|
|
>- contact, string, 负责人
|
|
|
>- phone, string, 联系方式
|
|
|
>- comment, string, 简介
|
|
|
- 返回值:无
|
|
|
"""
|
|
|
|
|
|
# @authenticated
|
|
|
def post(self):
|
|
|
node_id = self.get_int_argument("node_id", 0)
|
|
|
name = self.get_escaped_argument("name", "")
|
|
|
parent = self.get_int_argument("parent", 0)
|
|
|
addr = self.get_escaped_argument("addr", "")
|
|
|
lola = self.get_escaped_argument("lola", "")
|
|
|
contact = self.get_escaped_argument("contact", "")
|
|
|
phone = self.get_escaped_argument("phone", "")
|
|
|
comment = self.get_escaped_argument("comment", "")
|
|
|
|
|
|
if not node_id or not name:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
|
|
|
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
db_node.update_node({
|
|
|
"node_id": node_id,
|
|
|
"name": name,
|
|
|
"parent": parent,
|
|
|
"addr": addr,
|
|
|
"lola": lola,
|
|
|
"contact": contact,
|
|
|
"phone": phone,
|
|
|
"comment": comment
|
|
|
})
|
|
|
|
|
|
self.finish()
|
|
|
|
|
|
|
|
|
class TreeHandler(APIHandler):
|
|
|
"""
|
|
|
- 描述:企业节点树
|
|
|
- 请求方式:post
|
|
|
- 请求参数:
|
|
|
>- entity_id, int, 企业id
|
|
|
>- name, string, 搜索内容
|
|
|
- 返回值:
|
|
|
```
|
|
|
{
|
|
|
"data":[
|
|
|
{
|
|
|
"id": 123,
|
|
|
"name": "xxx",
|
|
|
"children": [
|
|
|
{
|
|
|
"id": 123,
|
|
|
"name": "xxx"
|
|
|
"children": [
|
|
|
{
|
|
|
"id": 123,
|
|
|
"name": "xxx"
|
|
|
},
|
|
|
|
|
|
]
|
|
|
},
|
|
|
...
|
|
|
]
|
|
|
},
|
|
|
...
|
|
|
]
|
|
|
|
|
|
}
|
|
|
```
|
|
|
"""
|
|
|
|
|
|
@authenticated
|
|
|
def post(self):
|
|
|
entity_id = self.get_escaped_argument("entity_id", "")
|
|
|
name = self.get_escaped_argument("name", "")
|
|
|
if not entity_id:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
|
|
|
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
nodes = db_node.select_tree(entity_id, name)
|
|
|
self.finish({
|
|
|
"data": nodes
|
|
|
})
|
|
|
|
|
|
|
|
|
class InfoHandler(APIHandler):
|
|
|
"""
|
|
|
- 描述:企业节点信息
|
|
|
- 请求方式:post
|
|
|
- 请求参数:
|
|
|
>- node_id, int, 节点id
|
|
|
- 返回值:
|
|
|
```
|
|
|
{
|
|
|
"name": "xxx",
|
|
|
"parent": "xxx",
|
|
|
"addr": "xxx",
|
|
|
"lola": "xxx",
|
|
|
"contact": "xxx",
|
|
|
"phone": "xxx",
|
|
|
"comment": "xxx",
|
|
|
}
|
|
|
```
|
|
|
"""
|
|
|
|
|
|
@authenticated
|
|
|
def post(self):
|
|
|
node_id = self.get_int_argument("node_id")
|
|
|
|
|
|
if not node_id:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
|
|
|
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
node = db_node.select_node(node_id)
|
|
|
node = node and node or {}
|
|
|
self.finish(node)
|
|
|
|
|
|
|
|
|
class DeleteHandler(APIHandler):
|
|
|
|
|
|
@authenticated
|
|
|
def post(self):
|
|
|
node_id = self.get_int_argument("node_id")
|
|
|
if not node_id:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
db_node.delete_node(node_id)
|
|
|
self.finish()
|
|
|
|
|
|
|
|
|
class BusimodelHandler(APIHandler):
|
|
|
"""
|
|
|
- 描述:企业节点,业务模型部署
|
|
|
- 请求方式:post
|
|
|
- 请求参数:
|
|
|
> - pageNo
|
|
|
> - pageSize
|
|
|
> - node_id, int, 节点id
|
|
|
- 返回值:
|
|
|
```
|
|
|
{
|
|
|
"count": 123,
|
|
|
"data": [
|
|
|
{
|
|
|
"busi_model_id": 123, # 业务模型id
|
|
|
"busi_model_name": "xxx", # 业务模型name
|
|
|
"deployed": 0, # 是否部署
|
|
|
"create_time": "xxx" # 创建时间
|
|
|
},
|
|
|
...
|
|
|
]
|
|
|
}
|
|
|
```
|
|
|
"""
|
|
|
@authenticated
|
|
|
def post(self):
|
|
|
node_id = self.get_int_argument('node_id')
|
|
|
pageNo = self.get_int_argument('pageNo', 1)
|
|
|
pageSize = self.get_int_argument('pageSize', 20)
|
|
|
if not node_id:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点不能为空')
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
busi_models = db_node.select_busi_model(node_id, pageNo, pageSize)
|
|
|
self.finish({
|
|
|
'data': busi_models,
|
|
|
'count': len(busi_models)
|
|
|
})
|
|
|
|
|
|
|
|
|
class BusimodelInfoHandler(APIHandler):
|
|
|
"""
|
|
|
"""
|
|
|
@authenticated
|
|
|
def post(self):
|
|
|
self.finish()
|
|
|
|
|
|
|
|
|
class BusimodelDeployHandler(APIHandler):
|
|
|
"""
|
|
|
- 描述:企业节点,节点信息 -> 业务模型部署 -> 业务模型配置
|
|
|
- 请求方式:post
|
|
|
- 请求参数:
|
|
|
> - node_id, int, 节点id
|
|
|
> - busi_model_id, int,业务模型id
|
|
|
> - device_ids, string, 设备id, 多个id逗号分割
|
|
|
- 返回值:无
|
|
|
"""
|
|
|
@authenticated
|
|
|
def post(self):
|
|
|
node_id = self.get_int_argument('node_id')
|
|
|
busi_model_id = self.get_int_argument('busi_model_id')
|
|
|
device_ids = self.get_escaped_argument('device_ids', '')
|
|
|
if not node_id or not busi_model_id:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '参数错误')
|
|
|
db_node = DB_Node.EnterpriseNodeRepository()
|
|
|
node = db_node.get_node_by_id(node_id)
|
|
|
if not node:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '节点不存在')
|
|
|
node_suid = node["suid"]
|
|
|
|
|
|
db_busi_model = DB_BusiModel.EnterpriseBusiModelRepository()
|
|
|
busi_model = db_busi_model.get_busi_model_by_id(busi_model_id)
|
|
|
busi_model_suid = busi_model.suid
|
|
|
|
|
|
entity_suid_row = db_node.get_entity_suid_by_node_id(node_id)
|
|
|
if not entity_suid_row:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点不存在')
|
|
|
|
|
|
records = []
|
|
|
|
|
|
|
|
|
records = []
|
|
|
for device_id in device_ids.split(','):
|
|
|
device = DB_Device.EnterpriseDeviceRepository().get_device(int(device_id))
|
|
|
if not device:
|
|
|
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '设备不存在')
|
|
|
|
|
|
records.append({
|
|
|
"suid": shortuuid.ShortUUID.random(length=10),
|
|
|
"entity_suid": entity_suid_row["entity_suid"],
|
|
|
"node_id": node_id,
|
|
|
"node_suid": node_suid,
|
|
|
"busi_model_id": busi_model_id,
|
|
|
"busi_model_suid": busi_model_suid,
|
|
|
"device_id": int(device_id),
|
|
|
"device_suid": device["suid"]
|
|
|
})
|
|
|
DB_BusiModelNodeDevice.EnterpriseBusiModelNodeDeviceRepository().batch_insert_record(records)
|
|
|
|
|
|
self.finish() |