增加类型转换时顺序检测
This commit is contained in:
@@ -40,10 +40,10 @@ func PlanToResponse(plan *models.Plan) *PlanResponse {
|
||||
return response
|
||||
}
|
||||
|
||||
// PlanFromCreateRequest 将CreatePlanRequest转换为Plan模型
|
||||
func PlanFromCreateRequest(req *CreatePlanRequest) *models.Plan {
|
||||
// PlanFromCreateRequest 将CreatePlanRequest转换为Plan模型,并进行业务规则验证
|
||||
func PlanFromCreateRequest(req *CreatePlanRequest) (*models.Plan, error) {
|
||||
if req == nil {
|
||||
return nil
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
plan := &models.Plan{
|
||||
@@ -60,7 +60,7 @@ func PlanFromCreateRequest(req *CreatePlanRequest) *models.Plan {
|
||||
for i, childPlanID := range req.SubPlanIDs {
|
||||
plan.SubPlans[i] = models.SubPlan{
|
||||
ChildPlanID: childPlanID,
|
||||
ExecutionOrder: i + 1, // 默认执行顺序
|
||||
ExecutionOrder: i, // 默认执行顺序, ReorderSteps会再次确认
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,19 +69,27 @@ func PlanFromCreateRequest(req *CreatePlanRequest) *models.Plan {
|
||||
if req.ContentType == models.PlanContentTypeTasks && req.Tasks != nil {
|
||||
plan.Tasks = make([]models.Task, len(req.Tasks))
|
||||
for i, taskReq := range req.Tasks {
|
||||
// 使用来自请求的ExecutionOrder
|
||||
plan.Tasks[i] = TaskFromRequest(&taskReq)
|
||||
// 设置执行顺序
|
||||
plan.Tasks[i].ExecutionOrder = i + 1
|
||||
}
|
||||
}
|
||||
|
||||
return plan
|
||||
// 1. 首先,执行重复性验证
|
||||
if err := plan.ValidateExecutionOrder(); err != nil {
|
||||
// 如果检测到重复,立即返回错误
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 2. 然后,调用方法来修复顺序断层
|
||||
plan.ReorderSteps()
|
||||
|
||||
return plan, nil
|
||||
}
|
||||
|
||||
// PlanFromUpdateRequest 将UpdatePlanRequest转换为Plan模型
|
||||
func PlanFromUpdateRequest(req *UpdatePlanRequest) *models.Plan {
|
||||
// PlanFromUpdateRequest 将UpdatePlanRequest转换为Plan模型,并进行业务规则验证
|
||||
func PlanFromUpdateRequest(req *UpdatePlanRequest) (*models.Plan, error) {
|
||||
if req == nil {
|
||||
return nil
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
plan := &models.Plan{
|
||||
@@ -98,7 +106,7 @@ func PlanFromUpdateRequest(req *UpdatePlanRequest) *models.Plan {
|
||||
for i, childPlanID := range req.SubPlanIDs {
|
||||
plan.SubPlans[i] = models.SubPlan{
|
||||
ChildPlanID: childPlanID,
|
||||
ExecutionOrder: i + 1, // 默认执行顺序
|
||||
ExecutionOrder: i, // 默认执行顺序, ReorderSteps会再次确认
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,13 +115,21 @@ func PlanFromUpdateRequest(req *UpdatePlanRequest) *models.Plan {
|
||||
if req.ContentType == models.PlanContentTypeTasks && req.Tasks != nil {
|
||||
plan.Tasks = make([]models.Task, len(req.Tasks))
|
||||
for i, taskReq := range req.Tasks {
|
||||
// 使用来自请求的ExecutionOrder
|
||||
plan.Tasks[i] = TaskFromRequest(&taskReq)
|
||||
// 设置执行顺序
|
||||
plan.Tasks[i].ExecutionOrder = i + 1
|
||||
}
|
||||
}
|
||||
|
||||
return plan
|
||||
// 1. 首先,执行重复性验证
|
||||
if err := plan.ValidateExecutionOrder(); err != nil {
|
||||
// 如果检测到重复,立即返回错误
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 2. 然后,调用方法来修复顺序断层
|
||||
plan.ReorderSteps()
|
||||
|
||||
return plan, nil
|
||||
}
|
||||
|
||||
// SubPlanToResponse 将SubPlan模型转换为SubPlanResponse
|
||||
|
||||
Reference in New Issue
Block a user