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


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


class Api(ApiTemplate):
    api_name = "服务列表"

    def process(self):

        # 返回结果
        res = {}

        try:
            page_index = int(self.para.get("page_index", "0"))
            page_size = int(self.para.get("page_size", "10"))

            title = self.para.get("title")
            name = self.para.get("name")
            type = self.para.get("type")
            function_type = self.para.get("function_type")

            catalog_guid = self.para.get("catalog_guid")

            services = Service.query.order_by(Service.update_time.desc())
            if type:
                services = services.filter_by(type=type)

            if catalog_guid:
                services = services.filter_by(catalog_guid=catalog_guid)
            # 并集
            if title and name:
                services = services.filter(
                    or_(Service.title.like("%" + title + "%"), Service.name.like("%" + name + "%")))
            else:
                if title:
                    services = services.filter(Service.title.like("%" + title + "%"))
                if name:
                    services = services.filter(Service.name.like("%" + name + "%"))
            res["data"] = {}
            res["data"]["count"] = services.count()
            services = services.limit(page_size).offset(page_index * page_size).all()
            res["data"]["list"] = ModelVisitor.objects_to_jsonarray(services)
            res["result"] = True


        except Exception as e:
            raise e

        return res

    api_doc = {
        "tags": ["服务接口"],
        "parameters": [
            {"name": "page_index",
             "in": "formData",
             "type": "int",
             "description": "页"},
            {"name": "page_size",
             "in": "formData",
             "type": "int",
             "description": "页大小"},
            {"name": "title",
             "in": "formData",
             "type": "string",
             "description": "服务标题"},
            {"name": "name",
             "in": "formData",
             "type": "string",
             "description": "服务名"},
            {"name": "type",
             "in": "formData",
             "type": "string",
             "description": "服务类型",
             "enum":["影像服务","切片服务","地图服务"]},
            {"name": "catalog_guid",
             "in": "formData",
             "type": "string",
             "description": "服务目录"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }