118 lines
3.5 KiB
Go
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
|
|
//}
|