1.0
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package tasks
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/common"
|
||||
"awesomeProject/internal/models"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CheckUserExpiry 检查用户过期状态并禁用过期用户
|
||||
func CheckUserExpiry() {
|
||||
log.Println("开始执行用户过期检查任务...")
|
||||
|
||||
db := common.GetDB()
|
||||
now := time.Now()
|
||||
|
||||
// 查找所有已过期但仍然启用的用户
|
||||
var expiredUsers []models.User
|
||||
if err := db.Where("expiry_date IS NOT NULL AND expiry_date < ? AND status = ?", now, 1).Find(&expiredUsers).Error; err != nil {
|
||||
log.Printf("查询过期用户失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(expiredUsers) == 0 {
|
||||
log.Println("没有发现过期用户")
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("发现 %d 个过期用户需要禁用", len(expiredUsers))
|
||||
|
||||
// 批量禁用过期用户
|
||||
var userIDs []uint
|
||||
for _, user := range expiredUsers {
|
||||
userIDs = append(userIDs, user.ID)
|
||||
log.Printf("用户 ID: %d, 手机号: %s, 过期时间: %v",
|
||||
user.ID, user.Phone, user.ExpiryDate.Format("2006-01-02 15:04:05"))
|
||||
}
|
||||
|
||||
// 使用事务批量更新状态
|
||||
tx := db.Begin()
|
||||
if err := tx.Model(&models.User{}).Where("id IN ?", userIDs).Update("status", 0).Error; err != nil {
|
||||
tx.Rollback()
|
||||
log.Printf("批量禁用过期用户失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := tx.Commit().Error; err != nil {
|
||||
log.Printf("提交事务失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("成功禁用 %d 个过期用户", len(userIDs))
|
||||
log.Println("用户过期检查任务执行完成")
|
||||
}
|
||||
Reference in New Issue
Block a user