Files
sundynix-plant-be/task/care_reminder.go
T
2026-02-06 14:44:06 +08:00

118 lines
3.5 KiB
Go

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