package service import ( "dy-admin/internal/pcmserver/bus/model" "dy-admin/internal/pcmserver/bus/model/request" "dy-admin/internal/pcmserver/common" "dy-admin/internal/pcmserver/global" "dy-admin/internal/pcmserver/pkg/code" "dy-admin/internal/pcmserver/utils" "dy-admin/pkg/rescode" ) type SpecialTimeService struct { } func (s *SpecialTimeService) CreateSpecialTime(specTime model.SpecialTime) (err error) { startDate, err := utils.ParseMinuteTime(specTime.StartTimeStr) if err != nil { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrSpecTimeParseTimeCode]) } endDate, err := utils.ParseMinuteTime(specTime.EndTimeStr) if err != nil { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrSpecTimeParseTimeCode]) } if startDate.After(*endDate) { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrSpecTimeParseTimeCode]) } specTime.StartTime = startDate specTime.EndTime = endDate err = global.DB.Create(&specTime).Error if err != nil { return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return } func (s *SpecialTimeService) UpdateSpecialTime(specTime model.SpecialTime) (err error) { startDate, err := utils.ParseMinuteTime(specTime.StartTimeStr) if err != nil { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrSpecTimeParseTimeCode]) } endDate, err := utils.ParseMinuteTime(specTime.EndTimeStr) if err != nil { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrSpecTimeParseTimeCode]) } if startDate.After(*endDate) { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrSpecTimeParseTimeCode]) } specTime.StartTime = startDate specTime.EndTime = endDate err = global.DB.Updates(&specTime).Error if err != nil { return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return } func (s *SpecialTimeService) UpdateSpecialTimeStatus(id int, status string) (err error) { err = global.DB.Model(&model.SpecialTime{}).Where("id = ?", id).Update("work_day", status).Error if err != nil { return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return } func (s *SpecialTimeService) DeleteSpecialTime(id int) (err error) { err = global.DB.Delete(&model.SpecialTime{Model: common.Model{ID: id}}).Error if err != nil { return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return } func (s *SpecialTimeService) GetSpecialTimeList(info request.SpecialTimeSearch) (list []model.SpecialTime, total int64, err error) { limit := info.PageSize offset := info.PageSize * (info.Page - 1) db := global.DB.Model(&model.SpecialTime{}) if info.Name != "" { db = db.Where("name LIKE ?", "%"+info.Name+"%") } if info.WorkDay != "" { db = db.Where("work_day = ?", "%"+info.WorkDay+"%") } err = db.Count(&total).Error if err != nil { return } if err = db.Order("id desc").Limit(limit).Offset(offset).Find(&list).Error; err != nil { return list, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return }