|
@@ -254,6 +254,8 @@ type AppointTimeInfoInstrument struct {
|
|
|
BeginAt *gtime.Time
|
|
BeginAt *gtime.Time
|
|
|
EndAt *gtime.Time
|
|
EndAt *gtime.Time
|
|
|
IsAppointAvailable int // 是否默认可预约 1是 2否
|
|
IsAppointAvailable int // 是否默认可预约 1是 2否
|
|
|
|
|
+ InAdvance int // 需要提前预约时间 单位小时
|
|
|
|
|
+ FurtherRange int // 未来可预约范围 单位周
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -277,7 +279,7 @@ func (s Service) AppointTimeInfo(req *equipment2.AppointTimeInfoReq, userinfo re
|
|
|
var instr AppointTimeInfoInstrument
|
|
var instr AppointTimeInfoInstrument
|
|
|
err := s.Dao.DB.Table("instrument").
|
|
err := s.Dao.DB.Table("instrument").
|
|
|
Where("Id", req.InstrumentId).
|
|
Where("Id", req.InstrumentId).
|
|
|
- Fields("Id, BeginAt, EndAt, Weekday, IsAppointAvailable").
|
|
|
|
|
|
|
+ Fields("Id, BeginAt, EndAt, Weekday, IsAppointAvailable, InAdvance, FurtherRange").
|
|
|
Struct(&instr)
|
|
Struct(&instr)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, err
|
|
return nil, err
|
|
@@ -416,12 +418,28 @@ func (s Service) AppointTimeInfo(req *equipment2.AppointTimeInfoReq, userinfo re
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if instr.InAdvance != 0 {
|
|
|
|
|
+ start := time.Now()
|
|
|
|
|
+ var toNextSpan time.Duration
|
|
|
|
|
+ if start.Minute()%timesplit != 0 {
|
|
|
|
|
+ toNextSpan = time.Duration(timesplit - start.Minute()%timesplit) * time.Minute
|
|
|
|
|
+ }
|
|
|
|
|
+ start = time.Date(start.Year(), start.Month(), start.Day(), start.Hour(), start.Minute(), 0, 0, time.Local)
|
|
|
|
|
+ start = start.Add(toNextSpan)
|
|
|
|
|
+ end := start.Add(time.Duration(instr.InAdvance) * time.Hour)
|
|
|
|
|
+ unavailable = append(unavailable, TimeSpan{
|
|
|
|
|
+ Start: gtime.NewFromTime(start),
|
|
|
|
|
+ End: gtime.NewFromTime(end),
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return map[string]interface{}{
|
|
return map[string]interface{}{
|
|
|
- "time_split": timesplit,
|
|
|
|
|
- "begin_at": instr.BeginAt.Time.Format("15:04:05"),
|
|
|
|
|
- "ent_at": instr.EndAt.Time.Format("15:04:05"),
|
|
|
|
|
- "unavailable": unavailable,
|
|
|
|
|
- "appoint": appointInfo,
|
|
|
|
|
|
|
+ "further_range": instr.FurtherRange,
|
|
|
|
|
+ "time_split": timesplit,
|
|
|
|
|
+ "begin_at": instr.BeginAt.Time.Format("15:04:05"),
|
|
|
|
|
+ "ent_at": instr.EndAt.Time.Format("15:04:05"),
|
|
|
|
|
+ "unavailable": unavailable,
|
|
|
|
|
+ "appoint": appointInfo,
|
|
|
}, nil
|
|
}, nil
|
|
|
}
|
|
}
|
|
|
|
|
|