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


from app.util.component.ApiTemplate import ApiTemplate
from app.util.component.ModelVisitor import ModelVisitor
from .models import Service

class Api(ApiTemplate):
    api_name = "服务Info"
    def process(self):
        res = {}
        try:
            guid = self.para.get("guid")
            service = Service.query.filter_by(guid=guid).one_or_none()
            if not service:
                raise Exception("服务不存在!")
            res["data"] = {}

            if service.type.__eq__("影像服务"):
                speci_service = service.relate_image_service.one_or_none()
                relate_images = speci_service.images.all()
                res["data"]["speci_service"] = ModelVisitor.object_to_json(speci_service)
                res["data"]["speci_service"]["images"] = [{"name":im["name"],"guid":im["guid"]} for im in ModelVisitor.objects_to_jsonarray(relate_images)]
                res["data"]["speci_service"]["images"] = sorted(res["data"]["speci_service"]["images"], key=lambda x: x["name"])

            elif service.type.__eq__("切片服务"):
                speci_service = service.relate_tile_service.one_or_none()
                res["data"]["speci_service"] = ModelVisitor.object_to_json(speci_service)
            elif service.type.__eq__("地图服务"):
                speci_service = service.relate_map_service.one_or_none()
                res["data"]["speci_service"] = ModelVisitor.object_to_json(speci_service)
            else:
                res["data"] = {}

            functions = ModelVisitor.objects_to_jsonarray(service.relate_service_functions.all())
            res["data"]["service"] = ModelVisitor.object_to_json(service)
            res["data"]["service"]["functions"] = functions
        except Exception as e:
            raise e
        return res


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