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
//}
