""" {{ table.comment }} Service - 对齐JAVA Service @author: {{ author }} @date: {{ date }} """ from sqlalchemy.orm import Session from sqlalchemy import and_ from typing import List, Optional, Tuple from datetime import datetime from app.models.{{ table.name_lower }} import {{ table.entity }}Model from app.schemas.{{ table.name_lower }} import {{ table.entity }} class {{ table.entity }}Service: """{{ table.comment }} Service Class - 对齐JAVA Service""" @staticmethod def get_by_id(db: Session, id: int) -> Optional[{{ table.entity }}Model]: """根据ID查询{{ table.comment }}""" return db.query({{ table.entity }}Model).filter( and_({{ table.entity }}Model.id == id, {{ table.entity }}Model.is_deleted == False) ).first() @staticmethod def info(db: Session, param: {{ table.entity }}) -> Optional[{{ table.entity }}Model]: """{{ table.comment }}详情 - 对齐JAVA: info({{ table.entity }} param)""" query = db.query({{ table.entity }}Model).filter({{ table.entity }}Model.is_deleted == False) if param.id is not None: query = query.filter({{ table.entity }}Model.id == param.id) {% for field in fields %} {% if field.searchable %} if param.{{ field.name }} is not None: query = query.filter({{ table.entity }}Model.{{ field.name }} == param.{{ field.name }}) {% endif %} {% endfor %} return query.first() @staticmethod def get_list( db: Session, param: {{ table.entity }}, page: int = 1, page_size: int = 10 ) -> Tuple[List[{{ table.entity }}Model], int]: """{{ table.comment }}分页列表 - 对齐JAVA: page({{ table.entity }} param)""" query = db.query({{ table.entity }}Model).filter({{ table.entity }}Model.is_deleted == False) # 根据参数条件过滤 - 对齐JAVA MPJLambdaWrapper条件查询 {% for field in fields %} {% if field.searchable %} if param.{{ field.name }} is not None: query = query.filter({{ table.entity }}Model.{{ field.name }} == param.{{ field.name }}) {% endif %} {% endfor %} total = query.count() items = query.offset((page - 1) * page_size).limit(page_size).all() return items, total @staticmethod def list(db: Session, param: {{ table.entity }}) -> List[{{ table.entity }}Model]: """{{ table.comment }}列表 - 对齐JAVA: list({{ table.entity }} param)""" query = db.query({{ table.entity }}Model).filter({{ table.entity }}Model.is_deleted == False) {% for field in fields %} {% if field.searchable %} if param.{{ field.name }} is not None: query = query.filter({{ table.entity }}Model.{{ field.name }} == param.{{ field.name }}) {% endif %} {% endfor %} return query.all() @staticmethod def add(db: Session, param: {{ table.entity }}) -> None: """{{ table.comment }}新增 - 对齐JAVA: add({{ table.entity }} param)""" db_obj = {{ table.entity }}Model( {% for field in fields %} {{ field.name }}=param.{{ field.name }}, {% endfor %} created_by=param.user_id, created_at=datetime.now() ) db.add(db_obj) db.commit() db.refresh(db_obj) @staticmethod def modify(db: Session, param: {{ table.entity }}) -> None: """{{ table.comment }}修改 - 对齐JAVA: modify({{ table.entity }} param)""" db_obj = db.query({{ table.entity }}Model).filter( and_({{ table.entity }}Model.id == param.id, {{ table.entity }}Model.is_deleted == False) ).first() if db_obj is None: return # 更新非空字段 {% for field in fields %} if param.{{ field.name }} is not None: db_obj.{{ field.name }} = param.{{ field.name }} {% endfor %} db_obj.updated_by = param.user_id db_obj.updated_at = datetime.now() db.commit() @staticmethod def remove(db: Session, id: int) -> None: """{{ table.comment }}删除(单个条目) - 对齐JAVA: remove(Integer id)""" db_obj = db.query({{ table.entity }}Model).filter( and_({{ table.entity }}Model.id == id, {{ table.entity }}Model.is_deleted == False) ).first() if db_obj: db_obj.is_deleted = True db_obj.updated_at = datetime.now() db.commit() @staticmethod def removes(db: Session, ids: List[int]) -> None: """{{ table.comment }}删除(多个条目) - 对齐JAVA: removes(List ids)""" db.query({{ table.entity }}Model).filter( and_({{ table.entity }}Model.id.in_(ids), {{ table.entity }}Model.is_deleted == False) ).update({ {{ table.entity }}Model.is_deleted: True, {{ table.entity }}Model.updated_at: datetime.now() }, synchronize_session=False) db.commit()