package task // //import ( // "sundynix-go/global" // "sundynix-go/model/plant" // "time" // // "go.uber.org/zap" //) // //// GeneratorTodayCare 生成今日养护任务 //func GeneratorTodayCare() error { // now := time.Now() // today := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local) // // //1.获取所有的养护计划 // var plans []*plant.CarePlan // if err := global.DB.Find(&plans).Error; err != nil { // global.Logger.Error("获取所有的养护计划失败", zap.Error(err)) // return err // } // for _, plan := range plans { // if plan.Period > 0 { // var todayCare plant.TodayCare // err := global.DB.Where("care_id = ?", plan.Id).First(&todayCare).Error // if err != nil { // return err // } // // 如果今日日期满足周期循环 // if plan.ShouldTriggerOn() { // // 如果不是逾期的任务 就把ExpectedDate改为今日 // if todayCare.Status != 4 { // todayCare.Status = 1 // todayCare.ExpectedDate = today // if err = global.DB.Save(&todayCare).Error; err != nil { // return err // } // } // } // } // } // return nil //} // //// UpdateExpireCare 更新过期的养护任务 //func UpdateExpireCare() error { // now := time.Now() // // 归一化到当天的0点(本地时区) // today := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local) // var expiredCares []*plant.TodayCare // // 1.查询所有未完成且预计日期在今天之前的养护任务 // if err := global.DB.Where("status = ? and expected_date < ?", 1, today). // Or("status = ?", 4).Find(&expiredCares).Error; err != nil { // return err // } // //2.计算过期天数并更新状态为逾期 // for _, care := range expiredCares { // expireDays := int(today.Sub(care.ExpectedDate).Hours() / 24) // updateMap := map[string]interface{}{ // "is_expired": 1, // "expire_days": expireDays, // "status": 4, // "expected_date": today, // } // if err := global.DB.Model(care).Updates(updateMap).Error; err != nil { // return err // } // } // return nil //} // //// GenerateUserCenter 更新用户中心数据 //func GenerateUserCenter() error { // //1.所有的用户 // var users []plant.Personal // if err := global.DB.Find(&users).Error; err != nil { // return err // } // now := time.Now() // // 归一化到当天的0点(本地时区) // now = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local) // for _, user := range users { // joinDate := user.JoinDate // //1.加入多少天 // joinDays := int(now.Sub(joinDate).Hours() / 24) // //2.植物数量 // var plantCount int64 // err := global.DB.Model(&plant.MyPlant{}).Where("user_id = ?", user.Id).Count(&plantCount).Error // if err != nil { // return err // } // //3.养护次数 // var careCount int64 // err = global.DB.Model(&plant.CareRecord{}).Where("user_id = ?", user.Id).Count(&careCount).Error // if err != nil { // return err // } // // //4.徽章数量 todo // var badgeCount int64 // err = global.DB.Model(&plant.MyBadge{}).Where("user_id = ?", user.Id).Count(&badgeCount).Error // user.BadgeCount = int(badgeCount) // // 5. 使用 Updates 方法进行精确、安全的更新 // // 只更新我们刚刚计算和查询出的这四个字段 // updateData := map[string]interface{}{ // "join_days": joinDays, // "plant_count": plantCount, // "care_count": careCount, // "badge_count": badgeCount, // } // if err := global.DB.Model(&plant.Personal{}).Where("id = ?", user.Id).Updates(updateData).Error; err != nil { // return err // } // } // return nil //}