From 983cde2c7d571e3243482a64ea582f0edcb9e1be Mon Sep 17 00:00:00 2001 From: govolokatliai Date: Sun, 17 Nov 2024 13:42:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.yaml | 13 +++++-- config/config.go | 79 ++++++++++++++++++++++++++++----------- config/model.go | 19 ++++++---- config/newsemester.go | 5 +++ config/route.go | 4 +- doc/member.csv | 4 ++ doc/member_csv文件说明.md | 15 ++++++++ 7 files changed, 106 insertions(+), 33 deletions(-) create mode 100644 config/newsemester.go create mode 100644 doc/member.csv create mode 100644 doc/member_csv文件说明.md diff --git a/config.yaml b/config.yaml index 649897c..92cd2a8 100644 --- a/config.yaml +++ b/config.yaml @@ -1,9 +1,16 @@ # This is a example file for the system ListenPort: 25005 -File: "member.csv" DB: - Path: "scheduler.db" + Type: "SQLite" + Path: "" # not need if use SQLite Port: "" # not need if use SQLite User: "" # not need if use SQLite Password: "" # not need if use SQLite - Type: "SQLite" + Name: "" # not need if use SQLite + +[business] +Session: "2024-2025" #学年 +Semester: 1 #学期,1 或 2 +StartTime: "2024-9-14" #开始值班的日期 +Week: 15 #准备值班多少周 +File: "member.csv" #成员信息文件的路径,看文档 diff --git a/config/config.go b/config/config.go index a883764..325cf89 100644 --- a/config/config.go +++ b/config/config.go @@ -7,42 +7,79 @@ import ( ) func Load() { - + // where to read config viper.SetConfigName("config") viper.SetConfigType("yaml") viper.AddConfigPath(".") - if err := viper.ReadInConfig(); err != nil { - fmt.Printf("Error reading config file: %v\n", err) - os.Exit(1) - } + readconfig() - ListenPort = viper.GetInt("ListenPort") - File = viper.GetString("File") - DB.Path = viper.GetString("DB.Path") - //DB.Port = viper.GetString("DB.Port") - DB.Type = viper.GetString("DB.Type") - - err := check() - if err != nil { - fmt.Println("check your config!") - os.Exit(1) - } + check() debugprint() + if len(os.Args) != 1 { + handleArguments() + } + } -func check() error { - - return nil +func check() { + // 暂时只支持SQLite + if DB.Type != "SQLite" { + fmt.Println("sorry,we support SQLite only so far(At config/config.go : check())") + os.Exit(1) + } } func debugprint() { fmt.Printf("ListenPort=%v\n", ListenPort) - fmt.Printf("File=%v\n", File) - fmt.Printf("database path : %s\n", DB.Path) fmt.Printf("database type:%s\n", DB.Type) + fmt.Printf("database path : %s\n", DB.Path) + fmt.Printf("database port:%d\n", DB.Port) + fmt.Printf("database user:%s\n", DB.User) + fmt.Printf("database passowrd:%s\n", DB.Password) + fmt.Printf("database name:%s\n", DB.Name) + fmt.Printf("session:%s\n", Session) + fmt.Printf("semester:%d\n", Semester) + fmt.Printf("start time:%s\n", StartTime) + fmt.Printf("week:%d\n", Week) + fmt.Printf("File=%v\n", File) } + +func handleArguments() { + if len(os.Args) > 2 { + fmt.Println("Please enter only 1 argument") + os.Exit(1) + } + switch os.Args[1] { + case "newsemester": + if DB.Type == "SQLite" { + sqliteNewSemester() + } + default: + panic("invalid argument") + } + +} + +func readconfig() { + if err := viper.ReadInConfig(); err != nil { + fmt.Printf("Error reading config file: %v\n", err) + os.Exit(1) + } + ListenPort = viper.GetInt("ListenPort") + DB.Type = viper.GetString("DB.Type") + DB.Path = viper.GetString("DB.Path") + DB.Port = viper.GetInt("DB.Port") + DB.User = viper.GetString("DB.User") + DB.Password = viper.GetString("DB.Password") + DB.Name = viper.GetString("DB.Name") + Session = viper.GetString("Session") + Semester = viper.GetInt("Semester") + StartTime = viper.GetString("StartTime") + Week = viper.GetInt("Week") + File = viper.GetString("File") +} diff --git a/config/model.go b/config/model.go index ed9506d..b656f0c 100644 --- a/config/model.go +++ b/config/model.go @@ -2,16 +2,19 @@ package config var ( ListenPort int - File string DB database + Session string + Semester int + StartTime string + Week int + File string ) type database struct { - Path string - //Port string - //User string - //Password string - - // enable if you want use an instance other than SQLite - Type string + Type string + Path string + Port int + User string + Password string + Name string } diff --git a/config/newsemester.go b/config/newsemester.go new file mode 100644 index 0000000..084b670 --- /dev/null +++ b/config/newsemester.go @@ -0,0 +1,5 @@ +package config + +func sqliteNewSemester() { + +} diff --git a/config/route.go b/config/route.go index 956eb5b..028eed2 100644 --- a/config/route.go +++ b/config/route.go @@ -2,9 +2,11 @@ package config import ( "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4/middleware" ) func Route(app *echo.Echo) { // here is the route for our site - app.File("/", "FrontEnd/index.html") + staticFiles := app.Group("/") + staticFiles.Use(middleware.Static("./FrontEnd")) } diff --git a/doc/member.csv b/doc/member.csv new file mode 100644 index 0000000..e37aa9c --- /dev/null +++ b/doc/member.csv @@ -0,0 +1,4 @@ +姓名,工号,性别,权限,有空 +管理层,2200,0,1,0 +正式老登,2300,1,4,6 +实习萌新,2400,0,5,5 diff --git a/doc/member_csv文件说明.md b/doc/member_csv文件说明.md new file mode 100644 index 0000000..973f721 --- /dev/null +++ b/doc/member_csv文件说明.md @@ -0,0 +1,15 @@ +# 说明 +姓名:填写成员的姓名(string) +工号:填写成员的工号(string) +性别:填写成员的性别(bool),1是男生 +权限:成员的权限(int),参考报修系统的权限枚举: +- 0:开发组 +- 1:科长 +- 2:api +- 3:组长 +- 4.正式成员 +- 5:实习成员 +- 6:退休成员(或其他不应授权的成员 +有空:填写成员在那哪一天值班(int),0表示成员不值班,1-7是星期几 +## 用处 +系统需要依据这个文件生成值班表