实现Detail接口
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
package feed
|
package feed
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.huangwc.com/pig/pig-farm-controller/internal/controller"
|
"git.huangwc.com/pig/pig-farm-controller/internal/controller"
|
||||||
@@ -165,7 +166,87 @@ type FeedingPlanStep struct {
|
|||||||
|
|
||||||
// Detail 获取饲料计划列细节
|
// Detail 获取饲料计划列细节
|
||||||
func (c *Controller) Detail(ctx *gin.Context) {
|
func (c *Controller) Detail(ctx *gin.Context) {
|
||||||
// TODO: 实现获取饲料计划列表的逻辑
|
// 获取路径参数中的计划ID
|
||||||
|
planIDStr := ctx.Param("id")
|
||||||
|
planID, err := strconv.ParseUint(planIDStr, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
controller.SendErrorResponse(ctx, controller.InvalidParameterCode, "无效的计划ID")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
controller.SendSuccessResponse(ctx, "success", &DetailResponse{})
|
// 从仓库中获取计划详情
|
||||||
|
plan, err := c.feedPlanRepo.FindFeedingPlanByID(uint(planID))
|
||||||
|
if err != nil {
|
||||||
|
c.logger.Error("获取计划详情失败: " + err.Error())
|
||||||
|
controller.SendErrorResponse(ctx, controller.InternalServerErrorCode, "获取计划详情失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换为响应结构体
|
||||||
|
resp := c.convertToDetailResponse(plan)
|
||||||
|
|
||||||
|
controller.SendSuccessResponse(ctx, "success", resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
// convertToDetailResponse 将数据库模型转换为响应结构体
|
||||||
|
func (c *Controller) convertToDetailResponse(plan *model.FeedingPlan) *DetailResponse {
|
||||||
|
resp := &DetailResponse{
|
||||||
|
ID: plan.ID,
|
||||||
|
Name: plan.Name,
|
||||||
|
Description: plan.Description,
|
||||||
|
Type: plan.Type,
|
||||||
|
Enabled: plan.Enabled,
|
||||||
|
ScheduleCron: plan.ScheduleCron,
|
||||||
|
ExecutionLimit: plan.ExecutionLimit,
|
||||||
|
ParentID: plan.ParentID,
|
||||||
|
OrderInParent: plan.OrderInParent,
|
||||||
|
IsMaster: plan.IsMaster,
|
||||||
|
CreatedAt: plan.CreatedAt,
|
||||||
|
UpdatedAt: plan.UpdatedAt,
|
||||||
|
DeletedAt: plan.DeletedAt,
|
||||||
|
Steps: make([]FeedingPlanStep, len(plan.Steps)),
|
||||||
|
SubPlans: make([]DetailResponse, len(plan.SubPlans)),
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换步骤
|
||||||
|
for i, step := range plan.Steps {
|
||||||
|
resp.Steps[i] = FeedingPlanStep{
|
||||||
|
ID: step.ID,
|
||||||
|
PlanID: step.PlanID,
|
||||||
|
StepOrder: step.StepOrder,
|
||||||
|
DeviceID: step.DeviceID,
|
||||||
|
TargetValue: step.TargetValue,
|
||||||
|
Action: step.Action,
|
||||||
|
ScheduleCron: step.ScheduleCron,
|
||||||
|
ExecutionLimit: step.ExecutionLimit,
|
||||||
|
CreatedAt: step.CreatedAt,
|
||||||
|
UpdatedAt: step.UpdatedAt,
|
||||||
|
DeletedAt: step.DeletedAt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换子计划
|
||||||
|
for i, subPlan := range plan.SubPlans {
|
||||||
|
// 递归转换子计划
|
||||||
|
subPlanModel := &model.FeedingPlan{
|
||||||
|
ID: subPlan.ID,
|
||||||
|
Name: subPlan.Name,
|
||||||
|
Description: subPlan.Description,
|
||||||
|
Type: subPlan.Type,
|
||||||
|
Enabled: subPlan.Enabled,
|
||||||
|
ScheduleCron: subPlan.ScheduleCron,
|
||||||
|
ExecutionLimit: subPlan.ExecutionLimit,
|
||||||
|
ParentID: subPlan.ParentID,
|
||||||
|
OrderInParent: subPlan.OrderInParent,
|
||||||
|
IsMaster: subPlan.IsMaster,
|
||||||
|
CreatedAt: subPlan.CreatedAt,
|
||||||
|
UpdatedAt: subPlan.UpdatedAt,
|
||||||
|
DeletedAt: subPlan.DeletedAt,
|
||||||
|
Steps: subPlan.Steps,
|
||||||
|
SubPlans: subPlan.SubPlans,
|
||||||
|
}
|
||||||
|
resp.SubPlans[i] = *c.convertToDetailResponse(subPlanModel)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user