12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package service
- import (
- "dy-admin/internal/pcmserver/bus/model"
- "dy-admin/internal/pcmserver/global"
- "dy-admin/internal/pcmserver/pkg/crontab"
- "dy-admin/pkg/log"
- "fmt"
- "go.uber.org/zap"
- "time"
- )
- const (
- ResetLeaveJob uint8 = iota + 1
- LeaveJob
- )
- type LeaveCronJob struct {
- LeaveLogID int
- JobName string
- StaffID int
- Action uint8
- }
- func (job *LeaveCronJob) Run() {
- var err error
- now := time.Now()
- var execRes = "定时任务已执行,执行信息: "
- defer func() {
- if err != nil {
- execRes += fmt.Sprintf("staffId:%d,action:%d,err:%s", job.StaffID, job.Action, err.Error())
- } else {
- execRes += fmt.Sprintf("staffId:%d,action:%d", job.StaffID, job.Action)
- }
- // 记录执行日志
- err = global.DB.Create(&model.CronLog{
- ExecTime: now,
- CronName: "leave_time",
- CronRes: execRes,
- }).Error
- if err != nil {
- log.Error("create cron log err", zap.Error(err))
- }
- }()
- switch job.Action {
- case LeaveJob:
- // 人员状态为请假
- err = ServicesGroupApp.StaffService.updateStaffLeaveStatus(job.StaffID, job.Action)
- if err != nil {
- log.Errorf("updateStaffLeaveStatus err:%s", err)
- }
- // 更新请假记录状态
- err = ServicesGroupApp.LeaveLogService.updateLeaveLogStatus(job.LeaveLogID, model.StatusExecuting)
- if err != nil {
- log.Errorf("updateStaffLeaveStatus err:%s", err)
- }
- case ResetLeaveJob:
- err = ServicesGroupApp.StaffService.updateStaffLeaveStatus(job.StaffID, job.Action)
- if err != nil {
- log.Errorf("updateStaffLeaveStatus err:%s", err)
- }
- // 更新请假记录状态
- err = ServicesGroupApp.LeaveLogService.updateLeaveLogStatus(job.LeaveLogID, model.StatusFinish)
- if err != nil {
- log.Errorf("updateStaffLeaveStatus err:%s", err)
- }
- default:
- log.Errorf("run leave cron job err:action not found.jobName:%s", job.JobName)
- return
- }
- err = crontab.GetCron("leave").RemoveJob(job.JobName)
- if err != nil {
- log.Errorf("jobName:%s finish,remove err:%s", job.JobName, err)
- } else {
- log.Infof("jobName:%s finish,remove success", job.JobName)
- }
- }
|