initial commit
This commit is contained in:
91
apps/dict/controllers/contact.py
Normal file
91
apps/dict/controllers/contact.py
Normal file
@@ -0,0 +1,91 @@
|
||||
from ninja_extra import api_controller, ControllerBase, route
|
||||
from ninja import Query
|
||||
from apps.project.models import Contact
|
||||
from ninja_jwt.authentication import JWTAuth
|
||||
from ninja_extra.permissions import IsAuthenticated
|
||||
from ninja.pagination import paginate
|
||||
from utils.chen_pagination import MyPagination
|
||||
from django.db import transaction
|
||||
from typing import List
|
||||
from utils.chen_crud import multi_delete
|
||||
from utils.chen_response import ChenResponse
|
||||
from apps.dict.schema import DeleteSchema, ContactListInputSchema, ContactOut
|
||||
|
||||
# 公司信息处理接口
|
||||
@api_controller("/system", tags=['公司信息相关'], auth=JWTAuth(), permissions=[IsAuthenticated])
|
||||
class ContactController(ControllerBase):
|
||||
@route.get("/contact/getlist", response=List[ContactOut], url_name="contact-search")
|
||||
@transaction.atomic
|
||||
@paginate(MyPagination)
|
||||
def get_contact_list(self, payload: ContactListInputSchema = Query(...)):
|
||||
for attr, value in payload.__dict__.items():
|
||||
if getattr(payload, attr) is None:
|
||||
setattr(payload, attr, '')
|
||||
if payload.key == '':
|
||||
qs = Contact.objects.filter(name__icontains=payload.name, entrust_person__icontains=payload.entrust_person,
|
||||
addr__icontains=payload.addr)
|
||||
else:
|
||||
qs = Contact.objects.filter(name__icontains=payload.name, entrust_person__icontains=payload.entrust_person,
|
||||
key=int(payload.key), addr__icontains=payload.addr)
|
||||
return qs
|
||||
|
||||
# 单独获取
|
||||
@route.get("/contact/index", response=List[ContactOut], url_name="contact-all")
|
||||
@transaction.atomic
|
||||
def get_contact_index(self):
|
||||
qs = Contact.objects.all()
|
||||
return qs
|
||||
|
||||
@route.post("/contact/save", response=ContactOut, url_name='contact-create')
|
||||
@transaction.atomic
|
||||
def create_contact(self, data: ContactListInputSchema):
|
||||
for attr, value in data.__dict__.items():
|
||||
if getattr(data, attr) is None:
|
||||
setattr(data, attr, '')
|
||||
# 判重key -> key可能为空
|
||||
if data.key == '':
|
||||
data.key = 0
|
||||
assert_dict = data.dict()
|
||||
key_qs = Contact.objects.filter(key=str(data.key))
|
||||
if len(key_qs) > 0:
|
||||
return ChenResponse(code=400, status=400, message="公司或单位的编号重复,请修改")
|
||||
# 全称判重
|
||||
name_qs = Contact.objects.filter(name=data.name)
|
||||
if len(name_qs) > 0:
|
||||
return ChenResponse(code=400, status=400, message="全称重复,请修改")
|
||||
|
||||
# 去掉key
|
||||
assert_dict.pop("key")
|
||||
assert_dict['key'] = 999999
|
||||
qs = Contact.objects.create(**assert_dict)
|
||||
qs.key = qs.id
|
||||
qs.save()
|
||||
return qs
|
||||
|
||||
@route.put("/contact/update/{id}", response=ContactOut, url_name='contact-update')
|
||||
@transaction.atomic
|
||||
def update_contact(self, id: int, data: ContactListInputSchema):
|
||||
for attr, value in data.__dict__.items():
|
||||
if getattr(data, attr) is None:
|
||||
setattr(data, attr, '')
|
||||
qs = Contact.objects.filter(id=id).first()
|
||||
if qs:
|
||||
if qs.key != data.key:
|
||||
key_qs = Contact.objects.filter(key=str(data.key))
|
||||
if len(key_qs) > 0:
|
||||
return ChenResponse(code=400, status=400, message="公司或单位的编号重复,请修改")
|
||||
if qs.name != data.name:
|
||||
name_qs = Contact.objects.filter(name=data.name)
|
||||
if len(name_qs) > 0:
|
||||
return ChenResponse(code=400, status=400, message="全称重复,请修改")
|
||||
# 更新联系人数据
|
||||
for attr, value in data.__dict__.items():
|
||||
setattr(qs, attr, value)
|
||||
qs.save()
|
||||
return qs
|
||||
|
||||
@route.delete('/contact/delete', url_name='contact-delete')
|
||||
@transaction.atomic
|
||||
def delete_contact(self, data: DeleteSchema):
|
||||
multi_delete(data.ids, Contact)
|
||||
return ChenResponse(message='单位或公司删除成功')
|
||||
Reference in New Issue
Block a user