浏览代码

fix:补充定时任务修改用户状态的记录

zqbao 9 月之前
父节点
当前提交
bb4f82ca50
共有 3 个文件被更改,包括 42 次插入16 次删除
  1. 10 0
      models/user.go
  2. 5 0
      models/user_change_record.go
  3. 27 16
      scheduler/task.go

+ 10 - 0
models/user.go

@@ -71,6 +71,16 @@ func UpdateUserStatus(condition string, pars []interface{}) (err error) {
 	return
 }
 
+func GetUserIdListByCondition(condition string, pars []interface{}) (items []int, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT user_id FROM user WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 func SaveUser(user *User, chartPermissionIds []int) (err error) {
 	o := orm.NewOrm()
 	err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {

+ 5 - 0
models/user_change_record.go

@@ -20,6 +20,11 @@ func (u *UserChangeRecord) Insert() (err error) {
 	_, err = o.Insert(u)
 	return
 }
+func UserChangeRecordMultiInsert(list []*UserChangeRecord) (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(500, list)
+	return
+}
 
 func GetUserChangeRecordListById(userId int) (items []*UserChangeRecord, err error) {
 	sql := `SELECT * FROM user_change_record WHERE user_id=? ORDER BY create_time DESC `

+ 27 - 16
scheduler/task.go

@@ -12,37 +12,48 @@ import (
 
 func InitJob() {
 	fmt.Println("消息推送任务开启。。。")
-	// 每天凌晨1点检测, 发送消息
-	tk1 := task.NewTask("SendReminderMsg", "0 0 1 * * *", SendReminderMsg)
+	// 每天凌晨1210分检测, 发送消息
+	tk1 := task.NewTask("SendReminderMsg", "0 10 0 * * *", SendReminderMsg)
 	task.AddTask("发送消息提醒", tk1)
-	// 每天凌晨1点检测, 修改用户状态
-	tk2 := task.NewTask("ModifyUserStatus", "0 0 1 * * *", ModifyUser)
+	// 每天凌晨12点检测, 修改用户状态
+	tk2 := task.NewTask("ModifyUserStatus", "5 0 0 * * *", ModifyUserStatus)
 	task.AddTask("定时修改用户状态", tk2)
 	task.StartTask()
 }
 
-func ModifyUser(ctx context.Context) (err error) {
+func ModifyUserStatus(ctx context.Context) (err error) {
 	defer func() {
-		if err != nil {
-			utils.ApiLog.Warn("userPermission 定时任务出错,Err: %s", err.Error())
+		if err := recover(); err != nil {
+			utils.ApiLog.Warn("发送提醒消息,定时任务出错,Err: %s", err)
 		}
 	}()
 	curTime := time.Now()
 	var pars []interface{}
-	condition := ` AND valid_end_time<? AND status=? `
-	pars = append(pars, curTime, 2)
-	err = models.UpdateUserStatus(condition, pars)
-	return
-}
-
-func ModifyUserStatus() (err error) {
-	curTime := time.Now()
 	condition := ` AND valid_end_time<?`
-	var pars []interface{}
 	pars = append(pars, curTime)
 	condition += ` AND status=? `
 	pars = append(pars, 2)
+	userIds, err := models.GetUserIdListByCondition(condition, pars)
+	if err != nil {
+		return
+	}
 	err = models.UpdateUserStatus(condition, pars)
+	if err != nil {
+		return
+	}
+	userRecordList := make([]*models.UserChangeRecord, 0)
+	for _, v := range userIds {
+		record := &models.UserChangeRecord{}
+		record.UserId = v
+		record.SysUserId = 0
+		record.Content = "有效期到期禁用用户"
+		record.CreateTime = time.Now()
+		userRecordList = append(userRecordList, record)
+	}
+	err = models.UserChangeRecordMultiInsert(userRecordList)
+	if err != nil {
+		return
+	}
 	return
 }