image_list.py 2.5 KB
# coding=utf-8
#author:        4N
#createtime:    2021/7/19
#email:         nheweijun@sina.com


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

from app.modules.service.image.models import Image,ImageTag
from sqlalchemy import or_,and_
class Api(ApiTemplate):

    api_name = "影像数据List"

    def process(self):

        # 返回结果
        res = {}
        try:
            page_index = int(self.para.get("page_index", "0"))
            page_size = int(self.para.get("page_size", "10"))

            alias = self.para.get("alias")
            name = self.para.get("name")
            tag_guid = self.para.get("tag_guid")

            images = Image.query

            # 并集
            if alias and name:
                images = images.filter(or_(Image.alias.like("%" + alias + "%") , Image.name.like("%" + name + "%")))
            else:
                if alias:
                    images = images.filter(Image.alias.like("%" + alias + "%"))
                if name:
                    images = images.filter(Image.name.like("%" + name + "%"))
            if tag_guid:
                tag:ImageTag = ImageTag.query.filter_by(guid=tag_guid).one_or_none()
                images_guid = [img.guid for img in tag.images.all()]
                images = images.filter(Image.guid.in_(images_guid))


            images = images.limit(page_size).offset(page_index).all()

            res["data"] = ModelVisitor.objects_to_jsonarray(images)
            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": "alias",
             "in": "formData",
             "type": "string"},
            {"name": "name",
             "in": "formData",
             "type": "string"},
            {"name": "tag_guid",
             "in": "formData",
             "type": "string"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }