mirror of
https://github.com/ZSCNetSupportDept/scheduler.git
synced 2025-10-28 20:45:05 +08:00
..........
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
<body >
|
<body >
|
||||||
<div align=center>
|
<div align=center>
|
||||||
<h1>网维排班系统</h1>
|
<h1>网维排班系统</h1>
|
||||||
<a href=/assignment.html>查看今日值班表</br></a>
|
<a href=/testAssignment.html>查看今日值班表</br></a>
|
||||||
<br>
|
<br>
|
||||||
<a href=/switch.html>发起换班</br></a>
|
<a href=/switch.html>发起换班</br></a>
|
||||||
<a href=/repay.html>发起补班</br></a>
|
<a href=/repay.html>发起补班</br></a>
|
||||||
|
|||||||
@@ -18,28 +18,21 @@ var data *[7][]*model.Member
|
|||||||
var mutex sync.RWMutex //lock for data
|
var mutex sync.RWMutex //lock for data
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
// /api/getAssignment GET 获取当日值班表,返回html
|
// /api/getAssignment GET 获取当日值班表
|
||||||
// 接受参数date,是需要生成值班表的日期
|
// 接受参数date,是需要生成值班表的日期
|
||||||
func GetAssignment(i echo.Context) error {
|
func GetAssignment(i echo.Context) error {
|
||||||
|
|
||||||
|
//如果没有参数,则生成当前时间
|
||||||
|
arg := carbon.Now()
|
||||||
//如果指定了参数,则生成参数指定的
|
//如果指定了参数,则生成参数指定的
|
||||||
if date := i.QueryParam("date"); date != "" {
|
if date := i.QueryParam("date"); date != "" {
|
||||||
mutex.Lock()
|
arg = carbon.Parse(date)
|
||||||
data, err = generateTable(carbon.Parse(date))
|
|
||||||
mutex.Unlock()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
i.String(http.StatusInternalServerError, err.Error())
|
|
||||||
return echo.ErrInternalServerError
|
|
||||||
}
|
|
||||||
goto render
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果没有参数,则生成当前时间
|
|
||||||
if (carbon.Now().ToDateString() != signals.Table.GetLastUpdated().ToDateString()) || signals.Table.IsNeedUpdate() == true {
|
if (carbon.Now().ToDateString() != signals.Table.GetLastUpdated().ToDateString()) || signals.Table.IsNeedUpdate() == true {
|
||||||
|
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
data, err = generateTable(carbon.Now())
|
data, err = generateTable(arg)
|
||||||
mutex.Unlock()
|
mutex.Unlock()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -50,9 +43,8 @@ func GetAssignment(i echo.Context) error {
|
|||||||
//signals.Table.SetUpdated(carbon.Now())
|
//signals.Table.SetUpdated(carbon.Now())
|
||||||
//测试时注释掉上面的状态更新方便调试
|
//测试时注释掉上面的状态更新方便调试
|
||||||
}
|
}
|
||||||
render:
|
|
||||||
mutex.RLock()
|
mutex.RLock()
|
||||||
i.Render(http.StatusOK, "table.html", data)
|
i.JSON(200, data)
|
||||||
mutex.RUnlock()
|
mutex.RUnlock()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -69,7 +61,7 @@ func generateTable(time carbon.Carbon) (*[7][]*model.Member, error) {
|
|||||||
//检查传入时间有没有问题
|
//检查传入时间有没有问题
|
||||||
//TODO:这里好像有bug(对日期是否在值班时间内的判断部分),不过不怎么影响使用
|
//TODO:这里好像有bug(对日期是否在值班时间内的判断部分),不过不怎么影响使用
|
||||||
if (week < 0) || (week > config.Week) {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
//添加标题
|
//添加标题
|
||||||
table[0] = append(table[0], &model.Member{Name: "凤翔"})
|
table[0] = append(table[0], &model.Member{Name: "凤翔", Access: 7})
|
||||||
table[1] = append(table[1], &model.Member{Name: "朝晖"})
|
table[1] = append(table[1], &model.Member{Name: "朝晖", Access: 7})
|
||||||
table[2] = append(table[2], &model.Member{Name: "香晖AB"})
|
table[2] = append(table[2], &model.Member{Name: "香晖AB", Access: 7})
|
||||||
table[3] = append(table[3], &model.Member{Name: "香晖CD"})
|
table[3] = append(table[3], &model.Member{Name: "香晖CD", Access: 7})
|
||||||
table[4] = append(table[4], &model.Member{Name: "东门"})
|
table[4] = append(table[4], &model.Member{Name: "东门", Access: 7})
|
||||||
table[5] = append(table[5], &model.Member{Name: "北门"})
|
table[5] = append(table[5], &model.Member{Name: "北门", Access: 7})
|
||||||
table[6] = append(table[6], &model.Member{Name: "歧头"})
|
table[6] = append(table[6], &model.Member{Name: "歧头", Access: 7})
|
||||||
|
|
||||||
//初始化数据
|
//初始化数据
|
||||||
for _, i := range members {
|
for _, i := range members {
|
||||||
|
|||||||
37
handler/init.go
Normal file
37
handler/init.go
Normal file
@@ -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
|
||||||
|
// }
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package handler
|
package uo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"zsxyww.com/scheduler/model"
|
"zsxyww.com/scheduler/model"
|
||||||
@@ -6,25 +6,41 @@ import (
|
|||||||
|
|
||||||
// 增加一项tweak
|
// 增加一项tweak
|
||||||
func (uo *uoPrototype) addTweak(in *model.Tweak) error {
|
func (uo *uoPrototype) addTweak(in *model.Tweak) error {
|
||||||
|
_ = uo.c.Create(in)
|
||||||
|
if uo.c.Error != nil {
|
||||||
|
return uo.c.Error
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除一项tweak
|
// 删除一项tweak
|
||||||
func (uo *uoPrototype) deleteTweak(in *model.Tweak) error {
|
func (uo *uoPrototype) deleteTweak(in *model.Tweak) error {
|
||||||
|
if uo.c.Error != nil {
|
||||||
|
return uo.c.Error
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询一些tweak,通过IssueID
|
// 查询一些tweak,通过IssueID
|
||||||
func (uo *uoPrototype) getTweakByIssueID(in *model.Tweak) (result []*model.Tweak, err error) {
|
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
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询一些tweak,通过一个日期
|
// 查询一些tweak,通过一个日期
|
||||||
func (uo *uoPrototype) getTweakByTime(in *model.Tweak) (result []*model.Tweak, err error) {
|
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
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询一些tweak,通过一个工号
|
// 查询一些tweak,通过一个工号
|
||||||
func (uo *uoPrototype) getTweakByID(in *model.Tweak) (result []*model.Tweak, err error) {
|
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
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package handler
|
package uo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
@@ -11,6 +11,6 @@ type uoPrototype struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
uo := uoPrototype{c: db.Main}
|
Uo := &uoPrototype{c: db.Main}
|
||||||
_ = uo
|
_ = Uo
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ type Member struct {
|
|||||||
Name string `csv:"姓名"`
|
Name string `csv:"姓名"`
|
||||||
Sex bool `csv:"性别"` //不要把女生安排进男生宿舍,male=True
|
Sex bool `csv:"性别"` //不要把女生安排进男生宿舍,male=True
|
||||||
FreeDay int `csv:"有空"` //哪天有空
|
FreeDay int `csv:"有空"` //哪天有空
|
||||||
|
FreeDay2 int `csv:"有空"`
|
||||||
Access int `csv:"权限"` //遵循报修系统的access enum ,用来标注管理层
|
Access int `csv:"权限"` //遵循报修系统的access enum ,用来标注管理层
|
||||||
Arranged bool `csv:"-"` //供分配程序使用的字段
|
Arranged bool `csv:"-"` //供分配程序使用的字段
|
||||||
Note int `csv:"-"` //正常=0,换班/补班=1,蹭班=2,供分配程序使用
|
Note int `csv:"-"` //正常=0,换班/补班=1,蹭班=2,供分配程序使用
|
||||||
|
|||||||
Reference in New Issue
Block a user