leave_cron_job.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package service
  2. import (
  3. "dy-admin/internal/pcmserver/bus/model"
  4. "dy-admin/internal/pcmserver/global"
  5. "dy-admin/internal/pcmserver/pkg/crontab"
  6. "dy-admin/pkg/log"
  7. "fmt"
  8. "go.uber.org/zap"
  9. "time"
  10. )
  11. const (
  12. ResetLeaveJob uint8 = iota + 1
  13. LeaveJob
  14. )
  15. type LeaveCronJob struct {
  16. LeaveLogID int
  17. JobName string
  18. StaffID int
  19. Action uint8
  20. }
  21. func (job *LeaveCronJob) Run() {
  22. var err error
  23. now := time.Now()
  24. var execRes = "定时任务已执行,执行信息: "
  25. defer func() {
  26. if err != nil {
  27. execRes += fmt.Sprintf("staffId:%d,action:%d,err:%s", job.StaffID, job.Action, err.Error())
  28. } else {
  29. execRes += fmt.Sprintf("staffId:%d,action:%d", job.StaffID, job.Action)
  30. }
  31. // 记录执行日志
  32. err = global.DB.Create(&model.CronLog{
  33. ExecTime: now,
  34. CronName: "leave_time",
  35. CronRes: execRes,
  36. }).Error
  37. if err != nil {
  38. log.Error("create cron log err", zap.Error(err))
  39. }
  40. }()
  41. switch job.Action {
  42. case LeaveJob:
  43. // 人员状态为请假
  44. err = ServicesGroupApp.StaffService.updateStaffLeaveStatus(job.StaffID, job.Action)
  45. if err != nil {
  46. log.Errorf("updateStaffLeaveStatus err:%s", err)
  47. }
  48. // 更新请假记录状态
  49. err = ServicesGroupApp.LeaveLogService.updateLeaveLogStatus(job.LeaveLogID, model.StatusExecuting)
  50. if err != nil {
  51. log.Errorf("updateStaffLeaveStatus err:%s", err)
  52. }
  53. case ResetLeaveJob:
  54. err = ServicesGroupApp.StaffService.updateStaffLeaveStatus(job.StaffID, job.Action)
  55. if err != nil {
  56. log.Errorf("updateStaffLeaveStatus err:%s", err)
  57. }
  58. // 更新请假记录状态
  59. err = ServicesGroupApp.LeaveLogService.updateLeaveLogStatus(job.LeaveLogID, model.StatusFinish)
  60. if err != nil {
  61. log.Errorf("updateStaffLeaveStatus err:%s", err)
  62. }
  63. default:
  64. log.Errorf("run leave cron job err:action not found.jobName:%s", job.JobName)
  65. return
  66. }
  67. err = crontab.GetCron("leave").RemoveJob(job.JobName)
  68. if err != nil {
  69. log.Errorf("jobName:%s finish,remove err:%s", job.JobName, err)
  70. } else {
  71. log.Infof("jobName:%s finish,remove success", job.JobName)
  72. }
  73. }