|
|
package domain
|
|
|
|
|
|
import (
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
type ProductCalendarBreakTimePeriod struct {
|
|
|
// 开始时间 eg: 11:00
|
|
|
BeginAt string `json:"beginAt,omitempty"`
|
...
|
...
|
@@ -10,3 +16,44 @@ type ProductCalendarBreakTimePeriod struct { |
|
|
// 备注 eg:午饭
|
|
|
Remark string `json:"remark,omitempty"`
|
|
|
}
|
|
|
|
|
|
func (period *ProductCalendarBreakTimePeriod) CheckOverDay() (bool, error) {
|
|
|
inHour, parseInHourErr := strconv.Atoi(strings.Split(period.BeginAt, ":")[0])
|
|
|
if parseInHourErr != nil {
|
|
|
return false, parseInHourErr
|
|
|
}
|
|
|
outHour, parseOutHourErr := strconv.Atoi(strings.Split(period.EndAt, ":")[0])
|
|
|
if parseOutHourErr != nil {
|
|
|
return false, parseOutHourErr
|
|
|
}
|
|
|
if inHour <= outHour {
|
|
|
return false, nil // eg: 7:00 17:00 t 9:00
|
|
|
}
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
func (period *ProductCalendarBreakTimePeriod) GetCheckBeginTime(t time.Time) time.Time {
|
|
|
y, m, d := t.Date()
|
|
|
inHour, _ := strconv.Atoi(strings.Split(period.BeginAt, ":")[0])
|
|
|
inMinuter, _ := strconv.Atoi(strings.Split(period.BeginAt, ":")[1])
|
|
|
return time.Date(y, m, d, inHour, inMinuter, 0, 0, t.Location())
|
|
|
}
|
|
|
|
|
|
func (period *ProductCalendarBreakTimePeriod) GetCheckEndTime(t time.Time) time.Time {
|
|
|
y, m, d := t.Date()
|
|
|
inHour, _ := strconv.Atoi(strings.Split(period.EndAt, ":")[0])
|
|
|
inMinuter, _ := strconv.Atoi(strings.Split(period.EndAt, ":")[1])
|
|
|
checkTime := time.Date(y, m, d, inHour, inMinuter, 0, 0, t.Location())
|
|
|
if overDay, err := period.CheckOverDay(); overDay && err == nil {
|
|
|
return checkTime.AddDate(0, 0, 1)
|
|
|
}
|
|
|
return checkTime
|
|
|
}
|
|
|
|
|
|
func NewProductCalendarBreakTimePeriod(begin, end string, breakTime float64) *ProductCalendarBreakTimePeriod {
|
|
|
return &ProductCalendarBreakTimePeriod{
|
|
|
BeginAt: begin,
|
|
|
EndAt: end,
|
|
|
BreakTime: breakTime,
|
|
|
}
|
|
|
} |
...
|
...
|
|