catalog_create.py 2.3 KB
# coding=utf-8
#author:        4N
#createtime:    2021/3/9
#email:         nheweijun@sina.com

import uuid
from app.models import ServiceCatalog,db
from app.util.component.ApiTemplate import ApiTemplate
class Api(ApiTemplate):
    api_name = "创建服务目录"


    def process(self):
  
        # 返回结果
        res = {}
        res["result"] = False
        try:


            if ServiceCatalog.query.filter_by(name=self.para.get("name"),
                                       pguid=self.para.get("pguid")).one_or_none():
                res["msg"]="目录已经存在!"
                return res

    
            guid = uuid.uuid1().__str__()
            path = guid
    
            # 获得目录的全路径
            pguid = self.para.get("pguid")
            count = 0
            while pguid !="0" and count<100:
                count+=1
                path = pguid+":"+path
                p_catalog = ServiceCatalog.query.filter_by(guid=pguid).one_or_none()
                pguid = p_catalog.pguid
            if count==100:
                raise Exception("目录结构出现问题!")
            path = "0" + ":" + path
    
            sort = ServiceCatalog.query.filter_by(pguid=self.para.get("pguid")).count()
    
            catalog = ServiceCatalog(guid=guid,
                              pguid=self.para.get("pguid"),name=self.para.get("name"),
                              sort=sort,
                              description=self.para.get("description"),
                              path=path)
            db.session.add(catalog)
            db.session.commit()


            res["msg"] = "目录创建成功!"
            res["data"] = guid
            res["result"] = True
        except Exception as e:
            db.session.rollback()
            raise e
        return res
    
    api_doc={
    
    "tags":["服务目录接口"],
    "parameters":[
        {"name": "name",
         "in": "formData",
         "type": "string",
         "description":"目录名"},
        {"name": "pguid",
         "in": "formData",
         "type": "string","description":"父目录guid,创建根目录时为0"}
    
    ],
    "responses":{
        200:{
            "schema":{
                "properties":{
                }
            }
            }
        }
    }