service_state.py 2.7 KB
# coding=utf-8
#author:        4N
#createtime:    2021/9/14
#email:         nheweijun@sina.com

from app.util.component.UserCheck import UserCheck
from app.util.component.ApiTemplate import ApiTemplate
from .models import Service,db
import requests

class Api(ApiTemplate):
    api_name = "修改服务状态"
    def process(self):
        res = {}
        try:
            guid = self.para.get("guid")
            state = int(self.para.get("state"))
            s_type = self.para.get("type")

            if s_type in ["切片服务","地图服务","地址匹配"]:
                service = Service.query.filter_by(guid=guid).one_or_none()
                # 验证权限
                UserCheck.verify(service.creator)

                if service:
                    service.state = state
                    db.session.commit()
                    res["result"] = True
                else:
                    raise Exception("服务不存在!")
            # 删除影像服务
            else:
                user_req: requests.Response = requests.post("{}/API/Service/Info".format(self.para.get("url")),
                                                            data={"guid": self.para.get("guid")})
                if not user_req.json().get("result"):
                    raise Exception("服务不存在!")
                # 验证权限
                UserCheck.verify(user_req.json().get("data").get("service").get("creator"))

                url = "{}/API/Service/State".format(self.para.get("url"))
                response: requests.Response = requests.post(url, data=self.para)
                if not response.json().get("result"):
                    raise Exception("由于{},影像服务修改失败!".format(response.json().get("msg")))
                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"},
            {"name": "state",
             "in": "formData",
             "type": "int",
             "description": "state"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }