design
Context
待办事项功能需要追踪每个待办的归属员工(创建人)。当前实现使用硬编码值,导致所有新建待办都归属于同一个用户。
Goals / Non-Goals
Goals:
- 修复待办创建时的用户归属问题
- 使用现有的
getCurrentUserForApi()函数获取用户信息 - 保持编辑模式的原有行为不变
Non-Goals:
- 修改后端 API 或数据库结构
- 修改其他页面的用户获取逻辑
- 引入新的用户状态管理方案
Decisions
Decision 1: 使用 getCurrentUserForApi 而非 useCurrentUser hook
分析:
getCurrentUserForApi(): 同步函数,直接返回用户信息对象useCurrentUser(): React hook,需要在组件内使用
选择: 使用 getCurrentUserForApi()
理由: handleSubmit 是普通函数(非 React 组件),无法使用 hook。同步函数更适合当前场景,且已有良好的兜底逻辑(未登录时返回默认值)。
Decision 2: 保持编辑模式的用户信息不变
分析:
- 编辑已有待办时,应保持原有的归属信息
- 修改他人创建的待办时,不应改变创建人
选择: 仅在新建模式下应用用户信息
理由: 归属信息应反映待办的原始创建人,编辑操作不应改变这一属性。
实现方案
// 引入
import { getCurrentUserForApi } from '@/commons';
// 在 handleSubmit 中
const currentUser = getCurrentUserForApi();
const payload: Partial<TodoEntity> = {
// ... 其他字段
belongEmployeeId: isEdit ? values.belongEmployeeId : currentUser.userId,
belongEmployeeName: isEdit ? values.belongEmployeeName : currentUser.userName,
};
注意: 后端可能返回字符串类型的 ID,需要确保类型兼容性。