cron.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package utils
  2. import (
  3. "fmt"
  4. "pbx-api-gin/pkg/lfshook"
  5. "strings"
  6. )
  7. func GenCronRule(mode, timeStr string, weeks []string) string {
  8. switch mode {
  9. case "once":
  10. return genOnceCronRule(timeStr)
  11. case "loop":
  12. return genWeekCronRule(timeStr, weeks)
  13. }
  14. return ""
  15. }
  16. //genOnceCronRule
  17. func genOnceCronRule(timeStr string) string {
  18. hourMinute := strings.Split(timeStr, ":")
  19. if len(hourMinute) != 2 {
  20. lfshook.NewLogger().Errorf("error timeStr %s", timeStr)
  21. return ""
  22. }
  23. return fmt.Sprintf("%s %s * * *", hourMinute[1], hourMinute[0])
  24. }
  25. //GenOnceCronRule
  26. func genWeekCronRule(timeStr string, weeks []string) string {
  27. hourMinute := strings.Split(timeStr, ":")
  28. if len(weeks) == 0 {
  29. return fmt.Sprintf("%s %s * * *", hourMinute[1], hourMinute[0])
  30. }
  31. return fmt.Sprintf("%s %s * * %s", hourMinute[1], hourMinute[0], strings.Join(weeks, ","))
  32. }
  33. //FkZero 格式化数据,去掉多余的0
  34. func FkZero(times string) (fmttime string) {
  35. if string(times[0]) != "0" {
  36. return times
  37. } else if strings.Split(times, "0")[1] == "" {
  38. fkzero := "0"
  39. return fkzero
  40. } else {
  41. fkzero := strings.Split(times, "0")[1]
  42. return fkzero
  43. }
  44. }