diff --git a/FrontEnd/index.html b/FrontEnd/index.html index 9684091..876f3f9 100644 --- a/FrontEnd/index.html +++ b/FrontEnd/index.html @@ -5,7 +5,7 @@

网维排班系统

-查看今日值班表
+查看今日值班表

发起换班
发起补班
diff --git a/handler/assignments.go b/handler/assignments.go index 508ad58..555f2e2 100644 --- a/handler/assignments.go +++ b/handler/assignments.go @@ -18,28 +18,21 @@ var data *[7][]*model.Member var mutex sync.RWMutex //lock for data var err error -// /api/getAssignment GET 获取当日值班表,返回html +// /api/getAssignment GET 获取当日值班表 // 接受参数date,是需要生成值班表的日期 func GetAssignment(i echo.Context) error { + //如果没有参数,则生成当前时间 + arg := carbon.Now() //如果指定了参数,则生成参数指定的 if date := i.QueryParam("date"); date != "" { - mutex.Lock() - data, err = generateTable(carbon.Parse(date)) - mutex.Unlock() - - if err != nil { - i.String(http.StatusInternalServerError, err.Error()) - return echo.ErrInternalServerError - } - goto render + arg = carbon.Parse(date) } - //如果没有参数,则生成当前时间 if (carbon.Now().ToDateString() != signals.Table.GetLastUpdated().ToDateString()) || signals.Table.IsNeedUpdate() == true { mutex.Lock() - data, err = generateTable(carbon.Now()) + data, err = generateTable(arg) mutex.Unlock() if err != nil { @@ -50,9 +43,8 @@ func GetAssignment(i echo.Context) error { //signals.Table.SetUpdated(carbon.Now()) //测试时注释掉上面的状态更新方便调试 } -render: mutex.RLock() - i.Render(http.StatusOK, "table.html", data) + i.JSON(200, data) mutex.RUnlock() return nil @@ -69,7 +61,7 @@ func generateTable(time carbon.Carbon) (*[7][]*model.Member, error) { //检查传入时间有没有问题 //TODO:这里好像有bug(对日期是否在值班时间内的判断部分),不过不怎么影响使用 if (week < 0) || (week > config.Week) { - return nil, errors.New("Invalid date,the date must lie in our duty period(startTime~startTime+week*7)in config file") + return nil, errors.New("日期错误,日期需要在本学期的值班日期内并且格式正确") } // 为了实现更换值班的片区,写的一个闭包切片访问器 @@ -83,13 +75,13 @@ func generateTable(time carbon.Carbon) (*[7][]*model.Member, error) { return nil, err } //添加标题 - table[0] = append(table[0], &model.Member{Name: "凤翔"}) - table[1] = append(table[1], &model.Member{Name: "朝晖"}) - table[2] = append(table[2], &model.Member{Name: "香晖AB"}) - table[3] = append(table[3], &model.Member{Name: "香晖CD"}) - table[4] = append(table[4], &model.Member{Name: "东门"}) - table[5] = append(table[5], &model.Member{Name: "北门"}) - table[6] = append(table[6], &model.Member{Name: "歧头"}) + table[0] = append(table[0], &model.Member{Name: "凤翔", Access: 7}) + table[1] = append(table[1], &model.Member{Name: "朝晖", Access: 7}) + table[2] = append(table[2], &model.Member{Name: "香晖AB", Access: 7}) + table[3] = append(table[3], &model.Member{Name: "香晖CD", Access: 7}) + table[4] = append(table[4], &model.Member{Name: "东门", Access: 7}) + table[5] = append(table[5], &model.Member{Name: "北门", Access: 7}) + table[6] = append(table[6], &model.Member{Name: "歧头", Access: 7}) //初始化数据 for _, i := range members { diff --git a/handler/init.go b/handler/init.go new file mode 100644 index 0000000..a974322 --- /dev/null +++ b/handler/init.go @@ -0,0 +1,37 @@ +package handler + +// +// import ( +// "github.com/gocarina/gocsv" +// "os" +// "zsxyww.com/scheduler/config" +// //"zsxyww.com/scheduler/database" +// "zsxyww.com/scheduler/model" +// ) +// +// func init() { +// allMember, err := loadMembers() +// if err != nil { +// panic(err) +// } +// _ = allMember +// } +// +// func loadMembers() ([]model.Member, error) { +// data, err := os.OpenFile(config.File, os.O_RDWR|os.O_CREATE, os.ModePerm) +// if err != nil { +// return nil, err +// } +// defer data.Close() +// +// var m []model.Member +// +// err = gocsv.UnmarshalFile(data, m) +// if err != nil { +// return nil, err +// } +// //for index, member := range *m { +// // fmt.Printf("%v:%v\n", index, member) // for debug concerns +// //} +// return m, nil +// } diff --git a/handler/unit/tweaks.go b/handler/unit/tweaks.go index 48f498e..ffca8da 100644 --- a/handler/unit/tweaks.go +++ b/handler/unit/tweaks.go @@ -1,4 +1,4 @@ -package handler +package uo import ( "zsxyww.com/scheduler/model" @@ -6,25 +6,41 @@ import ( // 增加一项tweak func (uo *uoPrototype) addTweak(in *model.Tweak) error { + _ = uo.c.Create(in) + if uo.c.Error != nil { + return uo.c.Error + } return nil } // 删除一项tweak func (uo *uoPrototype) deleteTweak(in *model.Tweak) error { + if uo.c.Error != nil { + return uo.c.Error + } return nil } // 查询一些tweak,通过IssueID func (uo *uoPrototype) getTweakByIssueID(in *model.Tweak) (result []*model.Tweak, err error) { + if uo.c.Error != nil { + return nil, uo.c.Error + } return nil, nil } // 查询一些tweak,通过一个日期 func (uo *uoPrototype) getTweakByTime(in *model.Tweak) (result []*model.Tweak, err error) { + if uo.c.Error != nil { + return nil, uo.c.Error + } return nil, nil } // 查询一些tweak,通过一个工号 func (uo *uoPrototype) getTweakByID(in *model.Tweak) (result []*model.Tweak, err error) { + if uo.c.Error != nil { + return nil, uo.c.Error + } return nil, nil } diff --git a/handler/unit/unit_entry.go b/handler/unit/unit_entry.go index 889d752..5151a57 100644 --- a/handler/unit/unit_entry.go +++ b/handler/unit/unit_entry.go @@ -1,4 +1,4 @@ -package handler +package uo import ( "gorm.io/gorm" @@ -11,6 +11,6 @@ type uoPrototype struct { } func init() { - uo := uoPrototype{c: db.Main} - _ = uo + Uo := &uoPrototype{c: db.Main} + _ = Uo } diff --git a/model/member.go b/model/member.go index ccc4402..8f601b8 100644 --- a/model/member.go +++ b/model/member.go @@ -5,6 +5,7 @@ type Member struct { Name string `csv:"姓名"` Sex bool `csv:"性别"` //不要把女生安排进男生宿舍,male=True FreeDay int `csv:"有空"` //哪天有空 + FreeDay2 int `csv:"有空"` Access int `csv:"权限"` //遵循报修系统的access enum ,用来标注管理层 Arranged bool `csv:"-"` //供分配程序使用的字段 Note int `csv:"-"` //正常=0,换班/补班=1,蹭班=2,供分配程序使用