package plant import ( "sundynix-go/global" "sundynix-go/model/system" "sundynix-go/utils/timer" "time" "gorm.io/gorm" ) // MyPlant 我的植物 type MyPlant struct { global.BaseModel UserId string `json:"userId" form:"userId" gorm:"size:50;column:user_id;comment:用户id"` Name string `json:"name" form:"name" gorm:"size:20;column:name;comment:名称"` PlantTime time.Time `json:"plantTime" form:"plantTime" gorm:"column:plant_time;comment:种植时间"` Status int `json:"status" form:"status" gorm:"column:status;comment:生长状态"` Placement string `json:"placement" form:"placement" gorm:"size:50;column:placement;comment:摆放位置"` PotMaterial string `json:"potMaterial" form:"potMaterial" gorm:"column:pot_material;size:50;comment:花盆材质"` PotSize string `json:"potSize" form:"potSize" gorm:"column:pot_size;size:50;comment:花盆大小"` // 花盆大小 如直径 20cm × 高度 18cm Sunlight string `json:"sunlight" form:"sunlight" gorm:"column:sunlight;size:50;comment:光照条件"` // 如每日12小时 PlantingMaterial string `json:"plantingMaterial" form:"plantingMaterial" gorm:"column:planting_material;size:50;comment:植料"` ImgList []*system.Oss `json:"imgList" form:"imgList" gorm:"many2many:my_plant_oss;comment:图片列表"` CarePlans []*CarePlan `json:"carePlans" form:"carePlans" gorm:"foreignKey:PlantId;comment:养护计划"` CareTasks []*CareTask `json:"careTasks" form:"careTasks" gorm:"foreignKey:PlantId;comment:养护任务"` CareRecords []*CareRecord `json:"careRecords" form:"careRecords" gorm:"foreignKey:PlantId;comment:养护记录"` GrowthRecords []*GrowthRecord `json:"growthRecords" form:"growthRecords" gorm:"foreignKey:PlantId;comment:成长记录"` } // AfterCreate 钩子函数 创建plant时自动创建careTask func (p *MyPlant) AfterCreate(tx *gorm.DB) (err error) { today := timer.GetZeroTime() for _, v := range p.CarePlans { dueDate := today.AddDate(0, 0, v.Period) task := CareTask{ UserId: p.UserId, PlantId: p.Id, PlanId: v.Id, Name: v.Name, Icon: v.Icon, DueDate: dueDate, Status: 1, } err = tx.Create(&task).Error if err != nil { return err } } return }