import uuid
|
|
from Log import logger
|
from app.models.label_model import LabelModel, LabelWorkerModel
|
from app.models.role_model import RoleModel
|
|
|
async def label_list_service(db, keyword: str, label_type, object_id):
|
query = db.query(LabelModel)
|
if keyword:
|
query = query.filter(LabelModel.name.like('%{}%'.format(keyword)))
|
if label_type:
|
query = query.filter(LabelModel.label_type==label_type)
|
if object_id:
|
label_id = [i.label_id for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.object_id==object_id).all()]
|
query = query.filter(LabelModel.id.in_(label_id))
|
labels = query.order_by(LabelModel.id.desc()).all()
|
return {"total": query.count(), "rows": [label.to_json() for label in labels]}
|
|
|
|
async def create_label_service(db, label_name, label_type, user_id):
|
try:
|
label_model = LabelModel(name=label_name,creator=user_id, label_type=label_type)
|
db.add(label_model)
|
db.commit()
|
db.refresh(label_model)
|
except Exception as e:
|
logger.error(e)
|
db.rollback()
|
return False
|
return True
|
|
|
async def delete_role_service(db, label_id: int):
|
try:
|
db.query(LabelModel).filter(LabelModel.id == label_id).delete()
|
db.commit()
|
except Exception as e:
|
logger.error(e)
|
db.rollback()
|
return False
|
return True
|
|
|
async def sign_label_service(db, object_id, label_list):
|
delete_list = []
|
has_list = []
|
for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.object_id == object_id).all():
|
if i.label_id not in label_list:
|
delete_list.append(i.id)
|
else:
|
has_list.append(i.label_id)
|
for label_id in label_list:
|
if label_id in has_list:
|
continue
|
try:
|
label = LabelWorkerModel(label_id=label_id, object_id=object_id)
|
db.add(label)
|
db.commit()
|
except Exception as e:
|
logger.error(e)
|
db.rollback()
|
# return False
|
print(delete_list)
|
for label_id in delete_list:
|
try:
|
db.query(LabelWorkerModel).filter_by(id=label_id).delete()
|
db.commit()
|
except Exception as e:
|
logger.error(e)
|
db.rollback()
|
return True
|