fix: cron message edit bug

This commit is contained in:
engigu
2024-04-12 10:39:05 +08:00
parent 32229b3e99
commit 44054ae157
4 changed files with 51 additions and 12 deletions
+33 -2
View File
@@ -1,9 +1,17 @@
package cron_msg_service
import (
"github.com/robfig/cron/v3"
"message-nest/models"
"time"
)
type CronMsgResult struct {
models.CronMessages
NextTime string `json:"next_time"`
}
type CronMsgService struct {
ID string
@@ -38,12 +46,24 @@ func (st *CronMsgService) Count() (int, error) {
return models.GetCronMessagesTotal(st.Name, st.getMaps())
}
func (st *CronMsgService) GetAll() ([]models.CronMessages, error) {
func (st *CronMsgService) GetAll() ([]CronMsgResult, error) {
msgs, err := models.GetCronMessages(st.PageNum, st.PageSize, st.Name, st.getMaps())
if err != nil {
return nil, err
}
return msgs, nil
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
}
func (st *CronMsgService) getMaps() map[string]interface{} {
@@ -54,3 +74,14 @@ func (st *CronMsgService) getMaps() map[string]interface{} {
func (st *CronMsgService) Delete() error {
return models.DeleteCronMsg(st.ID)
}
// 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
}