You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

251 lines
9.6 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# -*- coding: utf-8 -*-
import json
import logging
from sqlalchemy import text
from website import db_mysql, errors
from website.handler import APIHandler, authenticated
from website.util import shortuuid
from website.db.enterprise_busi_model import enterprise_busi_model as DB_BusiModel
from website.db.file import file as DB_File
class ListHandler(APIHandler):
"""
- 描述:企业部署的业务模型列表
- 请求方式post
- 请求参数:
> - pageNo
> - pageSize
> - entity_id, int, 企业id
- 返回值:
```
{
"count": 123,
"data": [
{
"model_id": 123, # 模型id
"model_name": "xxx", # 模型名称
"create_time": "xxxx", # 创建时间
},
...
]
}
```
"""
@authenticated
def post(self):
pageNo = self.get_int_argument("pageNo", 1)
pageSize = self.get_int_argument("pageSize", 10)
entity_id = self.get_int_argument("entity_id")
if not entity_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
db_busimodel = DB_BusiModel.EnterpriseBusiModelRepository()
result = db_busimodel.list_enterprise_busi_model(entity_id=entity_id, page_no=pageNo, page_size=pageSize)
self.finish({"count": result["count"], "data": result["data"]})
class AddHandler(APIHandler):
"""
- 描述:添加企业部署的业务模型
- 请求方式post
- 请求参数:
> - entity_id, int, 企业id
> - name, string, 业务模型名称
> - comment, string, 简介
> - basemodel_ids, string, 基础模型id, 多个使用逗号分割
> - business_logic, string, 业务代码压缩包的md5
> - business_conf_file, string, 业务配置压缩包的文件md5
> - business_conf_param, string, 业务配置的参数json字符串eg: '{"a":1, "b":2}'
> - link_node_ids, string, 关联节点id, 多个节点逗号分割
- 返回值:无
"""
@authenticated
def post(self):
entity_id = self.get_int_argument("entity_id")
name = self.get_escaped_argument("name", "")
comment = self.get_escaped_argument("comment", "")
basemodel_ids = self.get_escaped_argument("basemodel_ids", "")
business_logic = self.get_escaped_argument("business_logic", "")
business_conf_file = self.get_escaped_argument("business_conf_file", "")
business_conf_param = self.get_escaped_argument("business_conf_param", "")
link_node_ids = self.get_escaped_argument("link_node_ids", "")
if not entity_id or not name or not basemodel_ids:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
if not business_logic:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "业务代码参数错误")
if not business_conf_file and not business_conf_param:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "业务配置参数错误")
if not link_node_ids:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "关联节点参数错误")
model_data = {
"entity_id": entity_id,
"name": name,
"comment": comment,
"basemodel_ids": basemodel_ids,
"business_logic": business_logic,
"business_conf_file": business_conf_file,
"business_conf_param": business_conf_param,
"link_node_ids": link_node_ids,
}
db_busimodel = DB_BusiModel.EnterpriseBusiModelRepository()
busimodel_id, busimodel_suid = db_busimodel.insert_busi_model(model_data)
model_node_data = {
"entity_id": entity_id,
"busimodel_id": busimodel_id,
"busimodel_suid": busimodel_suid,
"node_ids": link_node_ids
}
db_model_node = DB_BusiModel.EnterpriseBusiModelNodeRepository()
db_model_node.insert_busi_model_nodes(model_node_data)
self.finish()
class InfoHandler(APIHandler):
"""
- 描述:企业部署的业务模型详情
- 请求方式post
- 请求参数:
> - id, int, 业务模型id
- 返回值:
```
{
"name": "xxx",
"comment": "xxx",
"basemodel_list": "xxx,xx,xx",
"business_logic": "xxx",
"business_conf_file": "xxx",
"business_conf_param": "xxx",
"link_node_list": "xxx,xx,xx"
}
```
"""
@authenticated
def post(self):
busimodel_id = self.get_int_argument("id")
if not busimodel_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
db_busimodel = DB_BusiModel.EnterpriseBusiModelRepository()
busi_model_data = db_busimodel.get_busi_model_by_id(busimodel_id)
if not busi_model_data:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "业务模型不存在")
db_file = DB_File.FileRepository()
files = db_file.get_file_by_md5([busi_model_data.business_conf_file, busi_model_data.business_logic])
business_conf_name = files[0].filename
business_logic_name = files[1].filename
# business_conf_name = db_file.get_file_by_md5(busi_model_data.business_conf_file)
# business_logic_name = db_file.get_file_by_md5(busi_model_data.business_logic)
basemodel_list = json.loads(busi_model_data.basemodel)
db_model_node = DB_BusiModel.EnterpriseBusiModelNodeRepository()
link_nodes = db_model_node.get_nodes_by_busi_model(busimodel_id)
link_node_list = []
for node in link_nodes:
link_node_list.append({"node_id": node.node_id, "node_name": node.node_name})
self.finish({
"name": busi_model_data.name,
"comment": busi_model_data.comment,
"basemodel_list":basemodel_list, # 关联模型
"business_logic_name": business_logic_name, # 业务代码压缩包文件名
"business_logic_md5": busi_model_data.business_logic, # 业务代码压缩包md5
"business_conf_name": business_conf_name, # 业务参数配置文件名
"business_conf_md5": busi_model_data.business_conf_file, # 业务参数配置md5
"business_conf_param": busi_model_data.business_conf_param, # 业务参数配置的字段
"link_node_list": link_node_list # 关联节点的id多个id逗号分割
})
class EditHandler(APIHandler):
"""
- 描述:企业部署的业务模型编辑
- 请求方式post
- 请求参数:
> - id, int, 业务模型的id
> - name, string, 业务模型名称
> - comment, string, 简介
> - basemodel_ids, string, 基础模型id, 多个使用逗号分割
> - business_logic, string, 业务代码压缩包的md5
> - business_conf_file, string, 业务配置压缩包的文件md5
> - business_conf_param, string, 业务配置的参数json字符串eg: '{"a":1, "b":2}'
> - link_node_ids, string, 关联节点id, 多个节点逗号分割
- 返回值:无
"""
@authenticated
def post(self):
busimodel_id = self.get_argument("id")
if not busimodel_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
db_busimodel = DB_BusiModel.EnterpriseBusiModelRepository()
busi_model_data = db_busimodel.get_busi_model_by_id(busimodel_id)
if not busi_model_data:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "业务模型不存在")
name = self.get_escaped_argument("name", "")
comment = self.get_escaped_argument("comment", "")
basemodel_ids = self.get_escaped_argument("basemodel_ids", "")
business_logic = self.get_escaped_argument("business_logic", "")
business_conf_file = self.get_escaped_argument("business_conf_file", "")
business_conf_param = self.get_escaped_argument("business_conf_param", "")
link_node_ids = self.get_escaped_argument("link_node_ids", "")
if not name or not basemodel_ids:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
if not business_logic:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "业务代码参数错误")
if not business_conf_file and not business_conf_param:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "业务配置参数错误")
if not link_node_ids:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "关联节点参数错误")
# 更新业务模型
model_data = {
"id": busimodel_id,
"name": name,
"comment": comment,
"basemodel_ids": basemodel_ids,
"business_logic": business_logic,
"business_conf_file": business_conf_file,
"business_conf_param": business_conf_param,
"link_node_ids": link_node_ids,
}
db_busimodel.edit_busi_model(model_data)
# 获取业务模型的数据
busi_model = db_busimodel.get_busi_model_by_id(busimodel_id)
db_model_node = DB_BusiModel.EnterpriseBusiModelNodeRepository()
# 删除关联节点
db_model_node.delete_by_busi_model_id(busimodel_id)
# 插入关联节点
model_node_data = {
"entity_id": busi_model.entity_id,
"busimodel_id": busimodel_id,
"busimodel_suid": busi_model.suid,
"node_ids": link_node_ids
}
db_model_node.insert_busi_model_nodes(model_node_data)
self.finish()