diff --git a/model/plant/user_badge.go b/model/plant/user_badge.go index 4499bce..cecc133 100644 --- a/model/plant/user_badge.go +++ b/model/plant/user_badge.go @@ -8,7 +8,7 @@ import ( type UserBadge struct { global.BaseModel UserId string `gorm:"type:varchar(50);index;not null;column:user_id;comment:用户id" json:"userId"` - BadgeId string `gorm:"index:idx_user_badge,unique;not null;column:badge_id;comment:徽章配置ID" json:"badgeId"` + BadgeId string `gorm:"index:idx_user_badge;not null;column:badge_id;comment:徽章配置ID" json:"badgeId"` AcquiredAt time.Time `gorm:"autoCreateTime;column:acquired_at;comment:获得时间" json:"acquiredAt"` Badge *BadgeConfig `json:"badge" gorm:"foreignKey:BadgeId"` } diff --git a/task/care_message_send_task.go b/task/care_message_send_task.go index 02b4127..70c4219 100644 --- a/task/care_message_send_task.go +++ b/task/care_message_send_task.go @@ -107,10 +107,10 @@ func SendCareMsg() error { } if smr.Errcode != 0 { - global.Logger.Error("订阅消息发送失败!" + userId + "open-id" + user.MiniOpenId) - return fmt.Errorf("微信服务器返回错误: errcode=%d, errmsg=%s", smr.Errcode, smr.Errmsg) + global.Logger.Error(fmt.Sprintf("订阅消息发送失败! userId: %s, openId: %s, errcode: %d, errmsg: %s", userId, user.MiniOpenId, smr.Errcode, smr.Errmsg)) + continue // 不要因为某个用户失败(如43101没配额)而中断整个发送流程 } - global.Logger.Info("订阅消息发送成功!" + userId + "open-id" + user.MiniOpenId) + global.Logger.Info(fmt.Sprintf("订阅消息发送成功! userId: %s, openId: %s", userId, user.MiniOpenId)) } } } diff --git a/task/care_reminder.go b/task/care_reminder.go deleted file mode 100644 index a134780..0000000 --- a/task/care_reminder.go +++ /dev/null @@ -1,117 +0,0 @@ -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 -//}