|
@@ -13,25 +13,14 @@ import (
|
|
|
func InitJob() {
|
|
|
fmt.Println("消息推送任务开启。。。")
|
|
|
// 每天凌晨1点检测, 发送消息
|
|
|
- // tk1 := task.NewTask("CheckUserPermission", "0 0 1 * * *", CheckUserTime)
|
|
|
- // task.AddTask("CheckUserPermission", tk1)
|
|
|
+ tk1 := task.NewTask("SendReminderMsg", "0 0 1 * * *", SendReminderMsg)
|
|
|
+ task.AddTask("发送消息提醒", tk1)
|
|
|
// 每天凌晨1点检测, 修改用户状态
|
|
|
tk2 := task.NewTask("ModifyUserStatus", "0 0 1 * * *", ModifyUser)
|
|
|
- task.AddTask("ModifyUserStatus", tk2)
|
|
|
+ task.AddTask("定时修改用户状态", tk2)
|
|
|
task.StartTask()
|
|
|
- defer task.StopTask()
|
|
|
}
|
|
|
|
|
|
-// func CheckUserTime(ctx context.Context) (err error) {
|
|
|
-// defer func() {
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("userPermission 定时任务出错,Err: %s", err.Error())
|
|
|
-// }
|
|
|
-// }()
|
|
|
-// // err = CheckUserPermissionTime()
|
|
|
-// return
|
|
|
-// }
|
|
|
-
|
|
|
func ModifyUser(ctx context.Context) (err error) {
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
@@ -57,151 +46,127 @@ func ModifyUserStatus() (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// func CheckUserPermissionTime() (err error) {
|
|
|
-// var condition string
|
|
|
-// var pars7 []interface{}
|
|
|
-// var pars15 []interface{}
|
|
|
-// var pars30 []interface{}
|
|
|
-// var pars60 []interface{}
|
|
|
-
|
|
|
-// var userTotal int
|
|
|
-// pageSize := 500
|
|
|
-
|
|
|
-// curTime := time.Now()
|
|
|
-// time7 := time.Now().AddDate(0, 0, 7)
|
|
|
-// time15 := time.Now().AddDate(0, 0, 15)
|
|
|
-// time30 := time.Now().AddDate(0, 0, 30)
|
|
|
-// time60 := time.Now().AddDate(0, 0, 60)
|
|
|
-
|
|
|
-// condition7 := ` AND valid_end_time<? `
|
|
|
-// pars7 = append(pars7, time7)
|
|
|
-// condition15 := `valid_end_time>? AND valid_end_time<?`
|
|
|
-
|
|
|
-// models.GetUserCount(condition7, pars7)
|
|
|
-
|
|
|
-// // 批量查询到期的用户
|
|
|
-// messageMap := make(map[int]int)
|
|
|
-// userTotal, err = models.GetUserCount(condition, pars)
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("userPermission task err: %s", err.Error())
|
|
|
-// }
|
|
|
-// pageCount := paging.PageCount(userTotal, pageSize)
|
|
|
-// for i := 1; i <= pageCount; i++ {
|
|
|
-// startPage := utils.StartIndex(i, pageSize)
|
|
|
-// userList, err := models.GetUserList(condition, pars, startPage, pageSize)
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("userPermission task err: %s", err.Error())
|
|
|
-// }
|
|
|
-// for _, user := range userList {
|
|
|
-// if user.Status != 2 {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// if time60.After(user.ValidEndTime) {
|
|
|
-// messageMap[user.UserId] = 60
|
|
|
-// }
|
|
|
-// if time30.After(user.ValidEndTime) {
|
|
|
-// messageMap[user.UserId] = 30
|
|
|
-// }
|
|
|
-// if time15.After(user.ValidEndTime) {
|
|
|
-// messageMap[user.UserId] = 15
|
|
|
-// }
|
|
|
-// if time7.After(user.ValidEndTime) {
|
|
|
-// messageMap[user.UserId] = 7
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// // 把消息发送到系统用户中
|
|
|
-// sysUserIds, err := models.GetSysUserIdList()
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("userPermission task err: %s", err.Error())
|
|
|
-// }
|
|
|
-// layout := "【%s】到期%d天提醒,请及时跟进"
|
|
|
-// messageList := []models.SysMessageReport{}
|
|
|
-// for k, v := range messageMap {
|
|
|
-// count, err := models.GetSysMessageReportCount(k, v)
|
|
|
-// if err != nil {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// if count > 0 {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// user, err := models.GetUserById(k)
|
|
|
-// if err != nil {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// for _, sysUserId := range sysUserIds {
|
|
|
-// messageList = append(messageList, models.SysMessageReport{
|
|
|
-// UserId: k,
|
|
|
-// ReceiveSysUserId: sysUserId,
|
|
|
-// MessageType: v,
|
|
|
-// IsRead: false,
|
|
|
-// CreateTime: curTime,
|
|
|
-// ModifyTime: curTime,
|
|
|
-// Content: fmt.Sprintf(layout, user.RealName, v),
|
|
|
-// })
|
|
|
-// }
|
|
|
-// err = models.InsertMultiSysMessageReport(messageList)
|
|
|
-// if err != nil {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return
|
|
|
-// }
|
|
|
-
|
|
|
-// func GetSendUser(condition string, pars []interface{}, messagetType int) (user []*models.UserView, err error) {
|
|
|
-// total, err := models.GetUserCount(condition, pars)
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("获取用户列表失败 task err: %s", err.Error())
|
|
|
-// }
|
|
|
-// if total == 0 {
|
|
|
-// return
|
|
|
-// }
|
|
|
-// // 获得待发送用户的列表
|
|
|
-// userList, err := models.GetUserList(condition, pars, 0, total)
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("获取用户列表失败 task err: %s", err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-
|
|
|
-// // 获得待发送系统用户的列表
|
|
|
-// sysUserIds, err := models.GetSysUserIdList()
|
|
|
-// if err != nil {
|
|
|
-// utils.ApiLog.Warn("userPermission task err: %s", err.Error())
|
|
|
-// }
|
|
|
-
|
|
|
-// messageList, err := models.GetSysMessageReportByCondition(condition, pars)
|
|
|
-
|
|
|
-// layout := "【%s】到期%d天提醒,请及时跟进"
|
|
|
-// messageList := []models.SysMessageReport{}
|
|
|
-// for _, v := range sysUserIds {
|
|
|
-// count, err := models.GetSysMessageReportCount(v, messagetType)
|
|
|
-// if err != nil {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// if count > 0 {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// user, err := models.GetUserById(v)
|
|
|
-// if err != nil {
|
|
|
-// continue
|
|
|
-// }
|
|
|
+func SendReminderMsg(ctx context.Context) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err := recover(); err != nil {
|
|
|
+ utils.ApiLog.Warn("发送提醒消息,定时任务出错,Err: %s", err)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var userPars7 []interface{}
|
|
|
+ var userPars15 []interface{}
|
|
|
+ var userPars30 []interface{}
|
|
|
+ var userPars60 []interface{}
|
|
|
+ var msgPars7 []interface{}
|
|
|
+ var msgPars15 []interface{}
|
|
|
+ var msgPars30 []interface{}
|
|
|
+ var msgPars60 []interface{}
|
|
|
+
|
|
|
+ userTime7 := time.Now().AddDate(0, 0, 7)
|
|
|
+ userTime15 := time.Now().AddDate(0, 0, 15)
|
|
|
+ userTime30 := time.Now().AddDate(0, 0, 30)
|
|
|
+ userTime60 := time.Now().AddDate(0, 0, 60)
|
|
|
+ msgTime7 := time.Now().AddDate(0, 0, -7)
|
|
|
+ msgTime15 := time.Now().AddDate(0, 0, -15)
|
|
|
+ msgTime30 := time.Now().AddDate(0, 0, -30)
|
|
|
+ msgTime60 := time.Now().AddDate(0, 0, -60)
|
|
|
+
|
|
|
+ userCondition1 := ` AND valid_end_time<? `
|
|
|
+ userCondition2 := ` AND valid_end_time<? AND valid_end_time>? `
|
|
|
+ msgCondition := ` AND create_time>? `
|
|
|
+ userPars7 = append(userPars7, userTime7)
|
|
|
+ userPars15 = append(userPars15, userTime15, userTime7)
|
|
|
+ userPars30 = append(userPars30, userTime30, userTime15)
|
|
|
+ userPars60 = append(userPars60, userTime60, userTime30)
|
|
|
+ msgPars7 = append(msgPars7, msgTime7)
|
|
|
+ msgPars15 = append(msgPars15, msgTime15)
|
|
|
+ msgPars30 = append(msgPars30, msgTime30)
|
|
|
+ msgPars60 = append(msgPars60, msgTime60)
|
|
|
+
|
|
|
+ err = SendMsgToSysUser(userCondition1, msgCondition, userPars7, msgPars7, 7)
|
|
|
+ if err != nil {
|
|
|
+ utils.ApiLog.Warn("发送提醒消息,定时任务出错,Err: %s", err.Error())
|
|
|
+ }
|
|
|
+ err = SendMsgToSysUser(userCondition2, msgCondition, userPars15, msgPars15, 15)
|
|
|
+ if err != nil {
|
|
|
+ utils.ApiLog.Warn("发送提醒消息,定时任务出错,Err: %s", err.Error())
|
|
|
+ }
|
|
|
+ err = SendMsgToSysUser(userCondition2, msgCondition, userPars30, msgPars30, 30)
|
|
|
+ if err != nil {
|
|
|
+ utils.ApiLog.Warn("发送提醒消息,定时任务出错,Err: %s", err.Error())
|
|
|
+ }
|
|
|
+ err = SendMsgToSysUser(userCondition2, msgCondition, userPars60, msgPars60, 60)
|
|
|
+ if err != nil {
|
|
|
+ utils.ApiLog.Warn("发送提醒消息,定时任务出错,Err: %s", err.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
|
|
|
-// }
|
|
|
-// for _, sysUserId := range sysUserIds {
|
|
|
-// messageList = append(messageList, models.SysMessageReport{
|
|
|
-// UserId: k,
|
|
|
-// ReceiveSysUserId: sysUserId,
|
|
|
-// MessageType: v,
|
|
|
-// IsRead: false,
|
|
|
-// CreateTime: curTime,
|
|
|
-// ModifyTime: curTime,
|
|
|
-// Content: fmt.Sprintf(layout, user.RealName, v),
|
|
|
-// })
|
|
|
-// }
|
|
|
-// err = models.InsertMultiSysMessageReport(messageList)
|
|
|
-// if err != nil {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// return
|
|
|
-// }
|
|
|
+func SendMsgToSysUser(userCondition, msgCondition string, userPars, msgPars []interface{}, messagetType int) (err error) {
|
|
|
+ total, err := models.GetUserCount(userCondition, userPars)
|
|
|
+ if err != nil {
|
|
|
+ utils.ApiLog.Warn("获取用户列表失败 task err: %s", err.Error())
|
|
|
+ }
|
|
|
+ if total == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 获得待发送用户的列表
|
|
|
+ userList, err := models.GetUserList(userCondition, userPars, 0, total)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获得待通知系统用户的列表
|
|
|
+ sysUserIds, err := models.GetSysUserIdList()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ messageList, err := models.GetSysMessageReportByCondition(msgCondition, msgPars)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ layout := "【%s】到期%d天提醒,请及时跟进"
|
|
|
+ messageMap := make(map[int]map[int]struct{})
|
|
|
+ for _, v := range messageList {
|
|
|
+ if mv, ok := messageMap[v.ReceiveSysUserId]; ok {
|
|
|
+ mv[v.UserId] = struct{}{}
|
|
|
+ } else {
|
|
|
+ messageMap[v.ReceiveSysUserId] = make(map[int]struct{})
|
|
|
+ messageMap[v.ReceiveSysUserId][v.UserId] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sendMsg := make([]*models.SysMessageReport, 0)
|
|
|
+ for _, v := range sysUserIds {
|
|
|
+ if userMap, ok := messageMap[v]; ok {
|
|
|
+ for _, u := range userList {
|
|
|
+ if _, ok := userMap[u.UserId]; !ok {
|
|
|
+ sendMsg = append(sendMsg, &models.SysMessageReport{
|
|
|
+ UserId: u.UserId,
|
|
|
+ ReceiveSysUserId: v,
|
|
|
+ MessageType: messagetType,
|
|
|
+ IsRead: false,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ Content: fmt.Sprintf(layout, u.RealName, messagetType),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for _, u := range userList {
|
|
|
+ sendMsg = append(sendMsg, &models.SysMessageReport{
|
|
|
+ UserId: u.UserId,
|
|
|
+ ReceiveSysUserId: v,
|
|
|
+ MessageType: messagetType,
|
|
|
+ IsRead: false,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ Content: fmt.Sprintf(layout, u.RealName, messagetType),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(sendMsg) > 0 {
|
|
|
+ err = models.InsertMultiSysMessageReport(sendMsg)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|