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
from .util.ServiceType import ServiceType
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 [ServiceType.map_service.value,ServiceType.tile_service.value]:
                service:Service = Service.query.filter_by(guid=guid).one_or_none()
                if service:

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

                    try:
                        if service.type == ServiceType.tile_service.value:
                            #调用接口
                            tile_service = TileService.query.filter_by(service_guid=guid).one_or_none()
                            db.session.delete(tile_service)

                        if service.type == ServiceType.map_service.value:
                            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": {
                    }
                }
            }
        }
    }