service_delete.py 2.9 KB
# coding=utf-8
#author:        4N
#createtime:    2021/9/14
#email:         nheweijun@sina.com
from app.util.component.ApiTemplate import ApiTemplate

from app.models import db
from app.modules.service.models import Service
from app.modules.service.models import TileService
from app.modules.service.models import MapService
from app.util.component.UserCheck import UserCheck

class Api(ApiTemplate):

    api_name = "服务删除"

    def process(self):

        # 返回结果
        res = {}

        try:
            guid = self.para.get("guid")
            s_type =  self.para.get("type")

            #删除本地服务
            if s_type in ["切片服务","地图服务"]:
                service:Service = Service.query.filter_by(guid=guid).one_or_none()
                if service:

                    # 验证权限
                    UserCheck.verify(service.creator)

                    try:
                        if service.type.__eq__("切片服务"):
                            #调用接口
                            tile_service = TileService.query.filter_by(service_guid=guid).one_or_none()
                            db.session.delete(tile_service)

                        if service.type.__eq__("地图服务"):
                            map_service = MapService.query.filter_by(service_guid=guid).one_or_none()
                            db.session.delete(map_service)

                        service_functions = service.relate_service_functions.all()
                        for function in service_functions:
                            db.session.delete(function)
                    except:
                        pass

                    db.session.delete(service)

                else:
                    raise Exception("服务不存在!")
            # 删除影像服务
            else:
                from app.modules.service.image_service.image_service_delete import Api as RealApi
                api = RealApi()
                api.para = self.para
                res = api.process()

            db.session.commit()
            res["result"] = True
        except Exception as e:
            raise e

        return res

    api_doc = {
        "tags": ["服务接口"],
        "parameters": [
            {"name": "guid",
             "in": "formData",
             "type": "string",
             "description": "guid"},
            {"name": "type",
             "in": "formData",
             "type": "string",
             "description": "type"},
            {"name": "url",
             "in": "formData",
             "type": "string",
             "description": "url"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }