# -*- 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()