Bladeren bron

feature:仪器预约添加提前预约时间、未来可预约范围设置

liuyaqi 2 jaren geleden
bovenliggende
commit
bbd21dfa28
2 gewijzigde bestanden met toevoegingen van 28 en 6 verwijderingen
  1. 24 6
      service/equipment/equipment.go
  2. 4 0
      sql/tmp.sql

+ 24 - 6
service/equipment/equipment.go

@@ -254,6 +254,8 @@ type AppointTimeInfoInstrument struct {
 	BeginAt            *gtime.Time
 	EndAt              *gtime.Time
 	IsAppointAvailable int // 是否默认可预约 1是 2否
+	InAdvance          int // 需要提前预约时间 单位小时
+	FurtherRange       int // 未来可预约范围 单位周
 
 }
 
@@ -277,7 +279,7 @@ func (s Service) AppointTimeInfo(req *equipment2.AppointTimeInfoReq, userinfo re
 	var instr AppointTimeInfoInstrument
 	err := s.Dao.DB.Table("instrument").
 		Where("Id", req.InstrumentId).
-		Fields("Id, BeginAt, EndAt, Weekday, IsAppointAvailable").
+		Fields("Id, BeginAt, EndAt, Weekday, IsAppointAvailable, InAdvance, FurtherRange").
 		Struct(&instr)
 	if err != nil {
 		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{}{
-		"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
 }
 

+ 4 - 0
sql/tmp.sql

@@ -57,3 +57,7 @@ CREATE TABLE `announcement_read_record` (
   KEY (`UserId`),
   PRIMARY KEY (`Id`) USING BTREE
 ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC COMMENT = '公告已读记录';
+
+alter table instrument add `InAdvance` int(11) DEFAULT NULL COMMENT '需要提前预约时间 单位小时' after EndAt;
+alter table instrument add `FurtherRange` int(11) DEFAULT NULL COMMENT '未来可预约范围 单位周' after EndAt;
+alter table instrument modify `Responsible` varchar(2048) DEFAULT NULL COMMENT '责任人';