refactor(gerp): form_service 通用增删改落库点下沉 gvsdsdk FormServiceBase
This commit is contained in:
1 parent
187aebe811
commit
5405286734
2 files changed
+28
-6
No files matched your search
@@ -1268,7 +1268,7 @@ class FormService(FormServiceBase):
|
||||
raw_password = create_data.pop('UserPassword')
|
||||
obj = model(**create_data)
|
||||
obj.SetPassword(raw_password)
|
||||
obj.save()
|
||||
self._SaveObject(obj)
|
||||
elif table_name == 'Order':
|
||||
# 订单走 OrderManager 状态机保护(自动单号 + 强制 PENDING + 事务)
|
||||
from gvsdsdk.order.manager import OrderManager, OrderError
|
||||
@@ -1295,7 +1295,7 @@ class FormService(FormServiceBase):
|
||||
except OrderError as _e:
|
||||
return {'error': str(_e), 'field': 'OrderTitle'}
|
||||
else:
|
||||
obj = model.objects.create(**create_data)
|
||||
obj = self._CreateObject(model, create_data)
|
||||
except IntegrityError as e:
|
||||
# 捕获数据库完整性错误(如必填字段为 null),返回友好的错误信息
|
||||
error_msg = str(e)
|
||||
@@ -1395,7 +1395,7 @@ class FormService(FormServiceBase):
|
||||
lookup['CompanyUUID'] = self.current_company_uuid
|
||||
break
|
||||
try:
|
||||
obj = model.objects.get(**lookup)
|
||||
obj = self._GetObject(model, lookup)
|
||||
except model.DoesNotExist:
|
||||
return None
|
||||
# 角色作用域越权校验:Order 按 role_scope 差异化可见范围(member 只能改自己的订单)
|
||||
@@ -1510,7 +1510,7 @@ class FormService(FormServiceBase):
|
||||
if _receiver and _receiver != _operator:
|
||||
self._send_workorder_notify(obj, _receiver, _wo_title, _wo_content)
|
||||
if update_fields:
|
||||
obj.save(update_fields=update_fields)
|
||||
self._SaveObject(obj, update_fields)
|
||||
# 审计日志:记录修改操作
|
||||
if table_name in self.AUDIT_TABLES:
|
||||
new_snapshot = self._get_record_snapshot(obj)
|
||||
@@ -1561,7 +1561,7 @@ class FormService(FormServiceBase):
|
||||
lookup['CompanyUUID'] = self.current_company_uuid
|
||||
break
|
||||
try:
|
||||
obj = model.objects.get(**lookup)
|
||||
obj = self._GetObject(model, lookup)
|
||||
except model.DoesNotExist:
|
||||
return False
|
||||
# 角色作用域越权校验:Order 按 role_scope 差异化可见范围(member 只能删自己的订单)
|
||||
@@ -1599,7 +1599,7 @@ class FormService(FormServiceBase):
|
||||
if member_count:
|
||||
return {'error': f'该部门下仍有 {member_count} 名成员,请先在"部门员工"中移除成员后再删除', 'field': 'PK'}
|
||||
try:
|
||||
obj.delete()
|
||||
self._DeleteObject(obj)
|
||||
except IntegrityError as e:
|
||||
# 其他表的外键引用拦截:返回友好提示而非 500 裸错
|
||||
logger.warning('[delete_record/%s] IntegrityError: %s', table_name, e)
|
||||
|
||||
@@ -388,6 +388,28 @@ class FormServiceBase:
|
||||
deleted, _ = model.objects.filter(**{pk_field_name: pk_value}).delete()
|
||||
return bool(deleted)
|
||||
|
||||
# ---- 低层落库辅助:供子类通用 CRUD 落库点复用(裸 ORM 收敛到 SDK) ----
|
||||
|
||||
def _CreateObject(self, model, create_data):
|
||||
"""按已解析字段字典创建记录(通用新增落库点)"""
|
||||
return model.objects.create(**create_data)
|
||||
|
||||
def _GetObject(self, model, lookup):
|
||||
"""按查询条件取单条记录(通用查询落库点,DoesNotExist 由调用方处理)"""
|
||||
return model.objects.get(**lookup)
|
||||
|
||||
def _SaveObject(self, obj, update_fields=None):
|
||||
"""保存记录(通用更新落库点)"""
|
||||
if update_fields:
|
||||
obj.save(update_fields=update_fields)
|
||||
else:
|
||||
obj.save()
|
||||
return obj
|
||||
|
||||
def _DeleteObject(self, obj):
|
||||
"""删除记录(通用删除落库点)"""
|
||||
obj.delete()
|
||||
|
||||
def CodeDisplay(self, data):
|
||||
table_name = data.get('Table', '')
|
||||
code_field = data.get('CodeField', 'PermCode')
|
||||
|
||||
Reference in new issue
Block a user