fix: 修复订阅消息发送逻辑

This commit is contained in:
Blizzard
2026-03-30 14:31:19 +08:00
parent b17d233cd5
commit ae0020aa71
3 changed files with 4 additions and 121 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ import (
type UserBadge struct { type UserBadge struct {
global.BaseModel global.BaseModel
UserId string `gorm:"type:varchar(50);index;not null;column:user_id;comment:用户id" json:"userId"` 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"` AcquiredAt time.Time `gorm:"autoCreateTime;column:acquired_at;comment:获得时间" json:"acquiredAt"`
Badge *BadgeConfig `json:"badge" gorm:"foreignKey:BadgeId"` Badge *BadgeConfig `json:"badge" gorm:"foreignKey:BadgeId"`
} }
+3 -3
View File
@@ -107,10 +107,10 @@ func SendCareMsg() error {
} }
if smr.Errcode != 0 { if smr.Errcode != 0 {
global.Logger.Error("订阅消息发送失败!" + userId + "open-id" + user.MiniOpenId) global.Logger.Error(fmt.Sprintf("订阅消息发送失败! userId: %s, openId: %s, errcode: %d, errmsg: %s", userId, user.MiniOpenId, smr.Errcode, smr.Errmsg))
return fmt.Errorf("微信服务器返回错误: errcode=%d, errmsg=%s", 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))
} }
} }
} }
-117
View File
@@ -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
//}