feat(core): implement optimistic locking across all entities
Add VersionMismatch error variant and check_version() helper to erp-core. All 13 mutable entities now enforce version checking on update/delete: - erp-auth: user, role, organization, department, position - erp-config: dictionary, dictionary_item, menu, setting, numbering_rule - erp-workflow: process_definition, process_instance, task - erp-message: message, message_subscription Update DTOs to expose version in responses and require version in update requests. HTTP 409 Conflict returned on version mismatch.
This commit is contained in:
@@ -20,6 +20,9 @@ pub enum WorkflowError {
|
||||
|
||||
#[error("表达式求值失败: {0}")]
|
||||
ExpressionError(String),
|
||||
|
||||
#[error("版本冲突: 数据已被其他操作修改,请刷新后重试")]
|
||||
VersionMismatch,
|
||||
}
|
||||
|
||||
impl From<sea_orm::TransactionError<WorkflowError>> for WorkflowError {
|
||||
@@ -42,6 +45,7 @@ impl From<WorkflowError> for AppError {
|
||||
WorkflowError::InvalidDiagram(s) => AppError::Validation(s),
|
||||
WorkflowError::InvalidState(s) => AppError::Validation(s),
|
||||
WorkflowError::ExpressionError(s) => AppError::Validation(s),
|
||||
WorkflowError::VersionMismatch => AppError::VersionMismatch,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user