后端: 1. 四象限任务新增修改与删除接口——部分更新语义 + 硬删除 + 幂等信息码 - 新增 PUT/task/update:指针字段部分更新(title / priority_group / deadline_at / urgency_threshold_at),优先级 1~4 校验,空更新检测 - 新增 DELETE /task/delete:硬删除,重复删除返回 10003 幂等信息码 - 新增错误码 TaskUpdateNoFields (40063) 与 TaskAlreadyDeleted (10003) 前端: 1. 四象限卡片对接修改与删除 - 任务项重构为三区布局:勾选、内容点击编辑、悬浮删除按钮 - 创建弹窗复用为编辑模式,新增 urgency_threshold_at 字段 - 删除走二次确认弹窗,空状态增加 SVG 插画 2. 今日时间轴微调——色调简化为取模轮换,午休/晚餐改称午间/晚休
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package conv
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/LoveLosita/smartflow/backend/model"
|
|
)
|
|
|
|
func UserAddTaskRequestToModel(request *model.UserAddTaskRequest, userID int) *model.Task {
|
|
return &model.Task{
|
|
Title: request.Title,
|
|
Priority: request.PriorityGroup,
|
|
DeadlineAt: request.DeadlineAt,
|
|
UserID: userID,
|
|
}
|
|
}
|
|
|
|
func ModelToUserAddTaskResponse(task *model.Task) *model.UserAddTaskResponse {
|
|
status := "incomplete"
|
|
if task.IsCompleted {
|
|
status = "completed"
|
|
}
|
|
return &model.UserAddTaskResponse{
|
|
ID: task.ID,
|
|
Title: task.Title,
|
|
PriorityGroup: task.Priority,
|
|
DeadlineAt: task.DeadlineAt,
|
|
Status: status,
|
|
CreatedAt: time.Now(), // 创建时间为当前时间
|
|
}
|
|
}
|
|
|
|
func ModelToGetUserTasksResp(tasks []model.Task) []model.GetUserTaskResp {
|
|
var resp []model.GetUserTaskResp
|
|
for _, task := range tasks {
|
|
status := "incomplete"
|
|
if task.IsCompleted {
|
|
status = "completed"
|
|
}
|
|
|
|
deadline := ""
|
|
if task.DeadlineAt != nil {
|
|
deadline = task.DeadlineAt.Format("2006-01-02 15:04:05")
|
|
}
|
|
|
|
resp = append(resp, model.GetUserTaskResp{
|
|
ID: task.ID,
|
|
UserID: task.UserID,
|
|
Title: task.Title,
|
|
PriorityGroup: task.Priority,
|
|
Status: status,
|
|
Deadline: deadline,
|
|
IsCompleted: task.IsCompleted,
|
|
})
|
|
}
|
|
return resp
|
|
}
|
|
|
|
// ModelToGetUserTaskResp 将单个 Task 模型转换为 GetUserTaskResp。
|
|
func ModelToGetUserTaskResp(task *model.Task) model.GetUserTaskResp {
|
|
status := "incomplete"
|
|
if task.IsCompleted {
|
|
status = "completed"
|
|
}
|
|
deadline := ""
|
|
if task.DeadlineAt != nil {
|
|
deadline = task.DeadlineAt.Format("2006-01-02 15:04:05")
|
|
}
|
|
return model.GetUserTaskResp{
|
|
ID: task.ID,
|
|
UserID: task.UserID,
|
|
Title: task.Title,
|
|
PriorityGroup: task.Priority,
|
|
Status: status,
|
|
Deadline: deadline,
|
|
IsCompleted: task.IsCompleted,
|
|
}
|
|
}
|