use erp_core::error::AppError; /// 消息中心模块错误类型。 #[derive(Debug, thiserror::Error)] pub enum MessageError { #[error("验证失败: {0}")] Validation(String), #[error("未找到: {0}")] NotFound(String), #[error("模板编码已存在: {0}")] DuplicateTemplateCode(String), #[error("渲染失败: {0}")] TemplateRenderError(String), #[error("版本冲突: 数据已被其他操作修改,请刷新后重试")] VersionMismatch, } impl From for AppError { fn from(err: MessageError) -> Self { match err { MessageError::Validation(msg) => AppError::Validation(msg), MessageError::NotFound(msg) => AppError::NotFound(msg), MessageError::DuplicateTemplateCode(msg) => AppError::Conflict(msg), MessageError::TemplateRenderError(msg) => AppError::Internal(msg), MessageError::VersionMismatch => AppError::VersionMismatch, } } } impl From> for MessageError { fn from(err: sea_orm::TransactionError) -> Self { match err { sea_orm::TransactionError::Connection(db_err) => { MessageError::Validation(db_err.to_string()) } sea_orm::TransactionError::Transaction(msg_err) => msg_err, } } } pub type MessageResult = Result;