You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.8 KiB
132 lines
4.8 KiB
"""
|
|
{{ 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<Integer> 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()
|
|
|