Files
Message-Push-Nest/service/cron_msg_service/cron_msg.go
T

88 lines
1.9 KiB
Go
Raw Normal View History

2024-04-11 17:20:36 +08:00
package cron_msg_service
import (
2024-04-12 10:39:05 +08:00
"github.com/robfig/cron/v3"
2024-04-11 17:20:36 +08:00
"message-nest/models"
2024-04-12 10:39:05 +08:00
"time"
2024-04-11 17:20:36 +08:00
)
2024-04-12 10:39:05 +08:00
type CronMsgResult struct {
models.CronMessages
NextTime string `json:"next_time"`
}
2024-04-11 17:20:36 +08:00
type CronMsgService struct {
ID string
Name string
TaskID string
Cron string
Title string
Content string
Url string
CreatedBy string
ModifiedBy string
CreatedOn string
PageNum int
PageSize int
}
func (st *CronMsgService) Add() (string, error) {
return models.AddSendCronMsg(st.Name, st.TaskID, st.Cron, st.Title, st.Content, st.Url, st.CreatedBy)
}
func (st *CronMsgService) Edit(data map[string]interface{}) error {
return models.EditCronMsg(st.ID, data)
}
func (st *CronMsgService) GetByID() (models.CronMessages, error) {
return models.GetCronMsgByID(st.ID)
}
2024-04-29 17:31:13 +08:00
func (st *CronMsgService) Count() (int64, error) {
2024-04-11 17:20:36 +08:00
return models.GetCronMessagesTotal(st.Name, st.getMaps())
}
2024-04-12 10:39:05 +08:00
func (st *CronMsgService) GetAll() ([]CronMsgResult, error) {
2024-04-11 17:20:36 +08:00
msgs, err := models.GetCronMessages(st.PageNum, st.PageSize, st.Name, st.getMaps())
if err != nil {
return nil, err
}
2024-04-12 10:39:05 +08:00
return st.FillNextExecTime(msgs), nil
}
func (st *CronMsgService) FillNextExecTime(msgs []models.CronMessages) []CronMsgResult {
var result []CronMsgResult
for _, msg := range msgs {
r := CronMsgResult{
CronMessages: msg,
NextTime: GetCronNextTime(msg.Cron),
}
result = append(result, r)
}
return result
2024-04-11 17:20:36 +08:00
}
func (st *CronMsgService) getMaps() map[string]interface{} {
maps := make(map[string]interface{})
return maps
}
func (st *CronMsgService) Delete() error {
return models.DeleteCronMsg(st.ID)
}
2024-04-12 10:39:05 +08:00
// GetCronNextTime 获取下次的执行时间
func GetCronNextTime(cronExpr string) string {
specParser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.DowOptional | cron.Descriptor)
schedule, err := specParser.Parse(cronExpr)
if err != nil {
return ""
}
nextTime := schedule.Next(time.Now()).Format("2006-01-02 15:04:05")
return nextTime
}