# 接口注入机制

---
DDS-Section: 2. 系统架构 - 2.3 接口注入机制
DDS-Lines: L113-L149
---

## 用户模块与工单模块依赖

采用接口注入（依赖注入）方式实现模块间回调，避免循环依赖。

## 工单模块 → 用户模块回调接口

```go
// UserStatusUpdater 用户状态更新接口
// 由 rmdc-core 在初始化时注入，工单模块状态变更时调用
type UserStatusUpdater interface {
    // UpdateUserStatus 更新用户状态（审批通过时激活）
    UpdateUserStatus(userID int64, status string) error
    
    // ActivateUser 激活用户（注册审批通过）
    ActivateUser(userID int64) error
    
    // DeletePendingUser 删除待审批用户（工单撤销时）
    DeletePendingUser(userID int64) error
    
    // ExecuteUserManagement 执行用户管理操作（管理审批通过）
    ExecuteUserManagement(userID int64, action string, payload map[string]interface{}) error
}
```

## 用户模块 → 工单模块调用接口

```go
// WorkflowCreator 工单创建接口
// 由 rmdc-core 在初始化时注入，用户模块通过此接口创建工单
type WorkflowCreator interface {
    // CreateRegistrationWorkflow 创建用户注册工单
    CreateRegistrationWorkflow(ctx context.Context, req *RegistrationWorkflowRequest) (string, error)
    
    // CreateManagementWorkflow 创建用户管理工单
    CreateManagementWorkflow(ctx context.Context, req *ManagementWorkflowRequest) (string, error)
}
```

## 注入时机

在 `rmdc-core/cmd/main.go` 初始化阶段完成所有接口注入：

1. 创建 UserService 实例
2. 创建 WorkflowService 实例
3. 将 UserStatusUpdater 注入 WorkflowService
4. 将 WorkflowCreator 注入 UserService
