更新了软删除
This commit is contained in:
28
User/migrations/0013_add_is_deleted_fields.py
Normal file
28
User/migrations/0013_add_is_deleted_fields.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated migration for soft delete support
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('User', '0012_remove_user_department_remove_user_role_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='department',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='user',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='approval',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -4,6 +4,7 @@ from business.models import role
|
||||
# Create your models here.
|
||||
class Department(models.Model):
|
||||
username = models.CharField(max_length=100) # 部门名称
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
class User(models.Model):
|
||||
role = models.ManyToManyField(role)
|
||||
department =models.ManyToManyField(Department) # 归属部门
|
||||
@@ -26,6 +27,7 @@ class User(models.Model):
|
||||
salary = models.CharField(max_length=100,null=True, blank=True, default=None) # 工资
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
token = models.TextField()
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class Approval(models.Model):
|
||||
title = models.CharField(max_length=100)
|
||||
@@ -39,5 +41,6 @@ class Approval(models.Model):
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
type = models.CharField(max_length=100) # 类别
|
||||
user_id = models.CharField(max_length=100) # 事件id
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class CreateUserView(APIView):
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 检查用户名是否已存在(username字段有唯一性约束)
|
||||
if User.objects.filter(username=username).exists():
|
||||
if User.objects.filter(username=username, is_deleted=False).exists():
|
||||
return Response({'status': 'error', 'message': '用户名已存在,不能重复', 'code': 1},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -201,10 +201,10 @@ class EditorialStaffView(APIView):
|
||||
if not all([username, account, password, IdCard, department, position, nation, mobilePhone, team, Dateofjoining,
|
||||
academic]):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
user = User.objects.get(id=id)
|
||||
user = User.objects.get(id=id, is_deleted=False)
|
||||
|
||||
# 检查用户名是否已被其他用户使用(排除当前用户)
|
||||
if username and User.objects.filter(username=username).exclude(id=id).exists():
|
||||
if username and User.objects.filter(username=username, is_deleted=False).exclude(id=id).exists():
|
||||
return Response({'status': 'error', 'message': '用户名已存在,不能重复', 'code': 1},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -292,7 +292,7 @@ class LoginView(APIView):
|
||||
if not all([username, password]):
|
||||
return Response({'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
try:
|
||||
user = User.objects.get(account=username)
|
||||
user = User.objects.get(account=username, is_deleted=False)
|
||||
|
||||
# 只有"在职"状态的用户才能登录,新创建的用户需要完成财务登记审批流程
|
||||
if user.state != '在职':
|
||||
@@ -405,7 +405,7 @@ class DepartmentView(APIView):
|
||||
Q_obj = Q()
|
||||
if name:
|
||||
Q_obj &= Q(username__icontains=name)
|
||||
deps = Department.objects.filter(Q_obj)
|
||||
deps = Department.objects.filter(Q_obj, is_deleted=False)
|
||||
data = []
|
||||
for dep in deps:
|
||||
data.append({
|
||||
@@ -481,7 +481,7 @@ class AddDepartment(APIView):
|
||||
name = request.data.get('name')
|
||||
if not all([name]):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
dep = Department.objects.filter(username=name).first()
|
||||
dep = Department.objects.filter(username=name, is_deleted=False).first()
|
||||
if dep:
|
||||
return Response({'message': '添加失败,部门存在', 'code': 0}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -496,16 +496,18 @@ class DeleteDepartment(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
dep = Department.objects.get(id=id)
|
||||
dep = Department.objects.get(id=id, is_deleted=False)
|
||||
except Department.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '部门不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
department = User.objects.filter(department=dep)
|
||||
department = User.objects.filter(department=dep, is_deleted=False)
|
||||
if department.exists():
|
||||
return Response({'status': 'error', 'message': '删除失败,该部门还存在人员,请及时转移', 'code': 1},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
dep.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
dep.is_deleted = True
|
||||
dep.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -515,7 +517,7 @@ class Personlist(APIView):
|
||||
"""
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
users = Department.objects.all().order_by('id')
|
||||
users = Department.objects.filter(is_deleted=False).order_by('id')
|
||||
page = request.data.get('page')
|
||||
per_page = request.data.get('per_page')
|
||||
total = len(users)
|
||||
@@ -583,7 +585,7 @@ class roxyExhibition(APIView):
|
||||
# 如果用户没有部门,只匹配审批员(兼容旧数据)
|
||||
query &= person_query
|
||||
|
||||
approvals = Approval.objects.filter(query).order_by('-id')
|
||||
approvals = Approval.objects.filter(query, is_deleted=False).order_by('-id')
|
||||
|
||||
# 调试信息(生产环境可以注释掉)
|
||||
# print(f"用户: {user.username}, 部门IDs: {user_department_ids_str}")
|
||||
@@ -773,7 +775,7 @@ class personneldisplay(APIView):
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
users = User.objects.all()
|
||||
users = User.objects.filter(is_deleted=False)
|
||||
data = []
|
||||
for user in users:
|
||||
itme = {
|
||||
@@ -799,9 +801,11 @@ class DeleteUser(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
user = User.objects.get(id=id)
|
||||
user = User.objects.get(id=id, is_deleted=False)
|
||||
except User.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '用户不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
user.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
user.is_deleted = True
|
||||
user.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
83
business/migrations/0025_add_is_deleted_fields.py
Normal file
83
business/migrations/0025_add_is_deleted_fields.py
Normal file
@@ -0,0 +1,83 @@
|
||||
# Generated migration for soft delete support
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('business', '0024_role_remark'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='prefiling',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='projectregistration',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='bid',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='case',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='invoice',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='caselog',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='sealapplication',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='warehousing',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='registerplatform',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='announcement',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='lawyerflie',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='schedule',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='role',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -8,6 +8,7 @@ class PreFiling(models.Model):
|
||||
description = models.TextField() # 描述
|
||||
Undertaker = models.CharField(max_length=100) # 承办人员
|
||||
submit = models.CharField(max_length=100) # 谁提交的
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class ProjectRegistration(models.Model):
|
||||
@@ -19,6 +20,7 @@ class ProjectRegistration(models.Model):
|
||||
charge = models.CharField(max_length=100) # 收费情况
|
||||
contract = models.TextField() # 合同
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Bid(models.Model):
|
||||
@@ -28,6 +30,7 @@ class Bid(models.Model):
|
||||
times = models.CharField(max_length=100) # 申请日期
|
||||
BiddingAnnouncement = models.TextField() # 上传招标公告
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Case(models.Model):
|
||||
@@ -39,11 +42,13 @@ class Case(models.Model):
|
||||
ChangeRequest = models.CharField(max_length=100) # 变更申请
|
||||
paymentcollection = models.CharField(max_length=100) # 已收款
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class Invoice(models.Model):
|
||||
user = models.ForeignKey(PreFiling, on_delete=models.CASCADE)
|
||||
amount = models.CharField(max_length=100) # 金额
|
||||
file = models.TextField() # 发票图片或PDF
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class Caselog(models.Model):
|
||||
user = models.ForeignKey(PreFiling, on_delete=models.CASCADE)
|
||||
@@ -51,6 +56,7 @@ class Caselog(models.Model):
|
||||
times = models.CharField(max_length=100) # 时间
|
||||
username = models.CharField(max_length=100) # 提交人
|
||||
file = models.TextField() # 文件
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class SealApplication(models.Model):
|
||||
Printingpurpose = models.CharField(max_length=100) # 用印用途
|
||||
@@ -62,6 +68,7 @@ class SealApplication(models.Model):
|
||||
times = models.CharField(max_length=100) # 日期
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
username = models.CharField(max_length=100) # 提交人
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Warehousing(models.Model):
|
||||
@@ -71,12 +78,14 @@ class Warehousing(models.Model):
|
||||
deadline = models.CharField(max_length=100) # 入库期限
|
||||
contract = models.TextField() # 入库合同
|
||||
times = models.CharField(max_length=100) # 日期
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class RegisterPlatform(models.Model):
|
||||
platform = models.CharField(max_length=100) # 注册平台
|
||||
number = models.CharField(max_length=100) # 注册号码
|
||||
password = models.CharField(max_length=100) # 密码
|
||||
username = models.CharField(max_length=100) # 注册人员
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class Announcement(models.Model):
|
||||
title = models.CharField(max_length=100) # 标题
|
||||
@@ -85,6 +94,7 @@ class Announcement(models.Model):
|
||||
file = models.TextField() # 文件
|
||||
username = models.CharField(max_length=100) # 提交人
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class LawyerFlie(models.Model):
|
||||
@@ -92,6 +102,7 @@ class LawyerFlie(models.Model):
|
||||
remark = models.CharField(max_length=200)
|
||||
file = models.TextField() # 文件
|
||||
times = models.CharField(max_length=100)
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Schedule(models.Model):
|
||||
@@ -100,6 +111,7 @@ class Schedule(models.Model):
|
||||
end_time = models.CharField(max_length=100)
|
||||
remark = models.CharField(max_length=200) # 备注
|
||||
state = models.CharField(max_length=100)
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
|
||||
@@ -107,9 +119,11 @@ class role(models.Model):
|
||||
RoleName = models.CharField(max_length=100) # 角色名称
|
||||
permissionId = models.CharField(max_length=1000) # 权限
|
||||
remark = models.CharField(max_length=200) # 备注
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class permission(models.Model):
|
||||
permission_name = models.CharField(max_length=100) # 权限名称
|
||||
permission_logo = models.CharField(max_length=100) # 权限标识
|
||||
parent = models.CharField(max_length=100) # 父级
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
@@ -90,7 +90,7 @@ class registrationDetail(APIView):
|
||||
if Undertaker:
|
||||
Q_obj &= Q(Undertaker__icontains=Undertaker)
|
||||
|
||||
pre = PreFiling.objects.filter(Q_obj).order_by('-id')
|
||||
pre = PreFiling.objects.filter(Q_obj, is_deleted=False).order_by('-id')
|
||||
total = len(pre)
|
||||
|
||||
paginator = Paginator(pre, per_page)
|
||||
@@ -276,7 +276,7 @@ class ProjectDetail(APIView):
|
||||
pre_id = pre.values_list('id', flat=True)
|
||||
Q_obj &= Q(user_id__in=pre_id)
|
||||
|
||||
pre = ProjectRegistration.objects.filter(Q_obj).order_by('-id')
|
||||
pre = ProjectRegistration.objects.filter(Q_obj, is_deleted=False).order_by('-id')
|
||||
total = len(pre)
|
||||
|
||||
paginator = Paginator(pre, per_page)
|
||||
@@ -419,17 +419,19 @@ class DeleteProject(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
pro = ProjectRegistration.objects.get(id=id)
|
||||
pro = ProjectRegistration.objects.get(id=id, is_deleted=False)
|
||||
except ProjectRegistration.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '立项登记不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
# 检查是否已经被案件管理关联
|
||||
case_exists = Case.objects.filter(user_id=pro.user_id).exists()
|
||||
case_exists = Case.objects.filter(user_id=pro.user_id, is_deleted=False).exists()
|
||||
|
||||
if case_exists:
|
||||
return Response({'status': 'error', 'message': '该立项已被案件管理关联,无法删除', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
pro.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
pro.is_deleted = True
|
||||
pro.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -505,7 +507,7 @@ class BidDetail(APIView):
|
||||
pre_id = pre.values_list('id', flat=True)
|
||||
Q_obj &= Q(user_id__in=pre_id)
|
||||
|
||||
pre = Bid.objects.filter(Q_obj).order_by('-id')
|
||||
pre = Bid.objects.filter(Q_obj, is_deleted=False).order_by('-id')
|
||||
total = len(pre)
|
||||
|
||||
paginator = Paginator(pre, per_page)
|
||||
@@ -602,11 +604,13 @@ class DeleteBid(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
bid = Bid.objects.get(id=id)
|
||||
bid = Bid.objects.get(id=id, is_deleted=False)
|
||||
except Bid.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '投标登记不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
bid.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
bid.is_deleted = True
|
||||
bid.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -710,7 +714,7 @@ class caseManagementDetail(APIView):
|
||||
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
|
||||
|
||||
if type:
|
||||
por_id = ProjectRegistration.objects.filter(type=type).values_list('user_id', flat=True)
|
||||
por_id = ProjectRegistration.objects.filter(type=type, is_deleted=False).values_list('user_id', flat=True)
|
||||
Q_obj &= Q(user_id__in=por_id)
|
||||
|
||||
# if client_username:
|
||||
@@ -722,7 +726,7 @@ class caseManagementDetail(APIView):
|
||||
# pre_id = pre.values_list('id', flat=True)
|
||||
# Q_obj &= Q(user_id__in=pre_id)
|
||||
|
||||
pre = Case.objects.filter(Q_obj).order_by('-id')
|
||||
pre = Case.objects.filter(Q_obj, is_deleted=False).order_by('-id')
|
||||
total = len(pre)
|
||||
|
||||
paginator = Paginator(pre, per_page)
|
||||
@@ -858,11 +862,13 @@ class DeleteCase(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
case = Case.objects.get(id=id)
|
||||
case = Case.objects.get(id=id, is_deleted=False)
|
||||
except Case.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '案件管理不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
case.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
case.is_deleted = True
|
||||
case.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -946,7 +952,7 @@ class LogDetail(APIView):
|
||||
if not all([page, per_page]):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
pre = Caselog.objects.all()
|
||||
pre = Caselog.objects.filter(is_deleted=False)
|
||||
total = len(pre)
|
||||
|
||||
paginator = Paginator(pre, per_page)
|
||||
@@ -1001,7 +1007,7 @@ class preFilingLinkedCases(APIView):
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
proa = ProjectRegistration.objects.all()
|
||||
proa = ProjectRegistration.objects.filter(is_deleted=False)
|
||||
data = []
|
||||
for prefiling in proa:
|
||||
pre = PreFiling.objects.get(id=prefiling.user_id)
|
||||
@@ -1187,11 +1193,13 @@ class DeleteApplication(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
app = SealApplication.objects.get(id=id)
|
||||
app = SealApplication.objects.get(id=id, is_deleted=False)
|
||||
except SealApplication.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '申请用印不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
app.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
app.is_deleted = True
|
||||
app.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -1331,11 +1339,13 @@ class DeleteWarehousing(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
ware = Warehousing.objects.get(id=id)
|
||||
ware = Warehousing.objects.get(id=id, is_deleted=False)
|
||||
except Warehousing.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '入库登记不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
ware.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
ware.is_deleted = True
|
||||
ware.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -1375,7 +1385,7 @@ class PlatformDetail(APIView):
|
||||
"""
|
||||
page = request.data.get('page')
|
||||
per_page = request.data.get('per_page')
|
||||
seas = RegisterPlatform.objects.all().order_by('-id')
|
||||
seas = RegisterPlatform.objects.filter(is_deleted=False).order_by('-id')
|
||||
total = len(seas)
|
||||
|
||||
paginator = Paginator(seas, per_page)
|
||||
@@ -1435,8 +1445,14 @@ class DeletePlatformDetail(APIView):
|
||||
:return:
|
||||
"""
|
||||
ID = request.data.get('id')
|
||||
RegisterPlatform.objects.get(id=ID).delete()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
try:
|
||||
platform = RegisterPlatform.objects.get(id=ID, is_deleted=False)
|
||||
# 软删除:更新 is_deleted 字段
|
||||
platform.is_deleted = True
|
||||
platform.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except RegisterPlatform.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '注册平台登记不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class bulletin(APIView):
|
||||
@@ -1485,7 +1501,7 @@ class BulletinDetail(APIView):
|
||||
"""
|
||||
page = request.data.get('page')
|
||||
per_page = request.data.get('per_page')
|
||||
seas = Announcement.objects.all().order_by('-state', '-times')
|
||||
seas = Announcement.objects.filter(is_deleted=False).order_by('-state', '-times')
|
||||
total = len(seas)
|
||||
|
||||
paginator = Paginator(seas, per_page)
|
||||
@@ -1576,8 +1592,14 @@ class EditBulletin(APIView):
|
||||
class deleteBulletin(APIView):
|
||||
def post(self, request, *args, **kwargs):
|
||||
ID = request.data.get('id')
|
||||
Announcement.objects.get(id=ID).delete()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
try:
|
||||
announcement = Announcement.objects.get(id=ID, is_deleted=False)
|
||||
# 软删除:更新 is_deleted 字段
|
||||
announcement.is_deleted = True
|
||||
announcement.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except Announcement.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '公告不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class Lawyersdocuments(APIView):
|
||||
@@ -1601,7 +1623,7 @@ class Lawyersdocuments(APIView):
|
||||
|
||||
class LawyersdocumentsDetail(APIView):
|
||||
def post(self, request, *args, **kwargs):
|
||||
law = LawyerFlie.objects.all().order_by('-times')
|
||||
law = LawyerFlie.objects.filter(is_deleted=False).order_by('-times')
|
||||
total = law.count()
|
||||
data = []
|
||||
for info in law:
|
||||
@@ -1619,8 +1641,14 @@ class LawyersdocumentsDetail(APIView):
|
||||
class LwaDetail(APIView):
|
||||
def post(self, request, *args, **kwargs):
|
||||
id = request.data.get('id')
|
||||
LawyerFlie.objects.get(id=id).delete()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
try:
|
||||
lawyer_file = LawyerFlie.objects.get(id=id, is_deleted=False)
|
||||
# 软删除:更新 is_deleted 字段
|
||||
lawyer_file.is_deleted = True
|
||||
lawyer_file.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except LawyerFlie.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '律师文件不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class EditLawyerFlie(APIView):
|
||||
@@ -1694,8 +1722,14 @@ class DeleteSchedule(APIView):
|
||||
:return:
|
||||
"""
|
||||
id = request.data.get('id')
|
||||
Schedule.objects.get(id=id).delete()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
try:
|
||||
schedule = Schedule.objects.get(id=id, is_deleted=False)
|
||||
# 软删除:更新 is_deleted 字段
|
||||
schedule.is_deleted = True
|
||||
schedule.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except Schedule.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '日程不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class ScheduleDetail(APIView):
|
||||
@@ -1808,7 +1842,7 @@ class DisplayRermission(APIView):
|
||||
"""
|
||||
权限列表展示
|
||||
"""
|
||||
permissions = permission.objects.all()
|
||||
permissions = permission.objects.filter(is_deleted=False)
|
||||
|
||||
# 先将数据转换为字典格式
|
||||
data = []
|
||||
@@ -1852,8 +1886,14 @@ class DeleteRermission(APIView):
|
||||
删除权限
|
||||
"""
|
||||
ID = request.data.get('id')
|
||||
permission.objects.get(id=ID).delete()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
try:
|
||||
perm = permission.objects.get(id=ID, is_deleted=False)
|
||||
# 软删除:更新 is_deleted 字段
|
||||
perm.is_deleted = True
|
||||
perm.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except permission.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '权限不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class EditRermission(APIView):
|
||||
@@ -1896,8 +1936,14 @@ class addRole(APIView):
|
||||
class DeleteRole(APIView):
|
||||
def post(self, request, *args, **kwargs):
|
||||
id = request.data.get('id')
|
||||
role.objects.get(id=id).delete()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
try:
|
||||
r = role.objects.get(id=id, is_deleted=False)
|
||||
# 软删除:更新 is_deleted 字段
|
||||
r.is_deleted = True
|
||||
r.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except role.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '角色不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
|
||||
class EditRole(APIView):
|
||||
@@ -2014,12 +2060,12 @@ class DeleteRegistration(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
pre = PreFiling.objects.get(id=id)
|
||||
pre = PreFiling.objects.get(id=id, is_deleted=False)
|
||||
|
||||
# 检查是否已经被立项登记关联
|
||||
project_exists = ProjectRegistration.objects.filter(user_id=id).exists()
|
||||
project_exists = ProjectRegistration.objects.filter(user_id=id, is_deleted=False).exists()
|
||||
# 检查是否已经被投标登记关联
|
||||
bid_exists = Bid.objects.filter(user_id=id).exists()
|
||||
bid_exists = Bid.objects.filter(user_id=id, is_deleted=False).exists()
|
||||
|
||||
if project_exists:
|
||||
return Response({'status': 'error', 'message': '该预立案已被立项登记,无法删除', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
@@ -2027,7 +2073,9 @@ class DeleteRegistration(APIView):
|
||||
if bid_exists:
|
||||
return Response({'status': 'error', 'message': '该预立案已被投标登记,无法删除', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
pre.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
pre.is_deleted = True
|
||||
pre.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
except PreFiling.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '预立案登记不存在', 'code': 1},
|
||||
|
||||
43
finance/migrations/0010_add_is_deleted_fields.py
Normal file
43
finance/migrations/0010_add_is_deleted_fields.py
Normal file
@@ -0,0 +1,43 @@
|
||||
# Generated migration for soft delete support
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('finance', '0009_bonuschange_state'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='invoice',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='income',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='accounts',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='payment',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='reimbursement',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='bonuschange',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -13,6 +13,7 @@ class Invoice(models.Model):
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
username = models.CharField(max_length=100) # 谁提交的
|
||||
times = models.TextField() # 提交时间
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Income(models.Model):
|
||||
@@ -24,6 +25,7 @@ class Income(models.Model):
|
||||
submit = models.CharField(max_length=100) # 谁提交的
|
||||
submit_tiem = models.CharField(max_length=100) # 提交时间
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Accounts(models.Model):
|
||||
@@ -35,6 +37,7 @@ class Accounts(models.Model):
|
||||
submit = models.CharField(max_length=100) # 谁提交的
|
||||
submit_tiem = models.CharField(max_length=100) # 提交时间
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
|
||||
class Payment(models.Model):
|
||||
@@ -47,6 +50,7 @@ class Payment(models.Model):
|
||||
applicant = models.CharField(max_length=100) # 申请人
|
||||
submit_tiem = models.CharField(max_length=100) # 提交时间
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class Reimbursement(models.Model):
|
||||
person = models.CharField(max_length=100) # 报销人
|
||||
@@ -56,6 +60,7 @@ class Reimbursement(models.Model):
|
||||
FeeDescription = models.TextField() # 费用说明
|
||||
submit_tiem = models.CharField(max_length=100) # 提交时间
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
|
||||
class BonusChange(models.Model):
|
||||
username = models.CharField(max_length=100)
|
||||
@@ -63,3 +68,4 @@ class BonusChange(models.Model):
|
||||
Instructions = models.TextField() # 调整说明
|
||||
times = models.CharField(max_length=100) # 时间
|
||||
state = models.CharField(max_length=100) # 状态
|
||||
is_deleted = models.BooleanField(default=False) # 软删除标记
|
||||
@@ -243,11 +243,13 @@ class DeleteInvoice(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
invoice = Invoice.objects.get(id=id)
|
||||
invoice = Invoice.objects.get(id=id, is_deleted=False)
|
||||
except Invoice.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '开票申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
invoice.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
invoice.is_deleted = True
|
||||
invoice.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -436,11 +438,13 @@ class DeleteIncome(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
income = Income.objects.get(id=id)
|
||||
income = Income.objects.get(id=id, is_deleted=False)
|
||||
except Income.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '收入确认不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
income.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
income.is_deleted = True
|
||||
income.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -592,11 +596,13 @@ class DeleteAccounts(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
account = Accounts.objects.get(id=id)
|
||||
account = Accounts.objects.get(id=id, is_deleted=False)
|
||||
except Accounts.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '调账申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
account.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
account.is_deleted = True
|
||||
account.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -759,11 +765,13 @@ class DeletePayment(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
payment = Payment.objects.get(id=id)
|
||||
payment = Payment.objects.get(id=id, is_deleted=False)
|
||||
except Payment.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '付款申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
payment.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
payment.is_deleted = True
|
||||
payment.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -908,11 +916,13 @@ class DeleteReimbursement(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
reimbursement = Reimbursement.objects.get(id=id)
|
||||
reimbursement = Reimbursement.objects.get(id=id, is_deleted=False)
|
||||
except Reimbursement.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '报销申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
reimbursement.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
reimbursement.is_deleted = True
|
||||
reimbursement.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -1044,11 +1054,13 @@ class DeleteBonusChange(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
bonus = BonusChange.objects.get(id=id)
|
||||
bonus = BonusChange.objects.get(id=id, is_deleted=False)
|
||||
except BonusChange.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '工资/奖金变更不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
bonus.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
bonus.is_deleted = True
|
||||
bonus.save()
|
||||
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@@ -1307,13 +1319,13 @@ class DeleteUserDeparture(APIView):
|
||||
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
approval = Approval.objects.get(id=id, type="离职财务登记")
|
||||
approval = Approval.objects.get(id=id, type="离职财务登记", is_deleted=False)
|
||||
except Approval.DoesNotExist:
|
||||
return Response({'status': 'error', 'message': '离职登记记录不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
# 获取用户信息
|
||||
try:
|
||||
user = User.objects.get(id=int(approval.user_id))
|
||||
user = User.objects.get(id=int(approval.user_id), is_deleted=False)
|
||||
except (User.DoesNotExist, ValueError):
|
||||
return Response({'status': 'error', 'message': '用户不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
@@ -1322,8 +1334,9 @@ class DeleteUserDeparture(APIView):
|
||||
user.Dateofdeparture = None
|
||||
user.save(update_fields=['state', 'Dateofdeparture'])
|
||||
|
||||
# 删除审批记录
|
||||
approval.delete()
|
||||
# 软删除:更新 is_deleted 字段
|
||||
approval.is_deleted = True
|
||||
approval.save()
|
||||
|
||||
return Response({'message': '删除成功,用户状态已恢复为"在职"', 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user