diff --git a/.gitignore b/.gitignore index a46062a..8d5a766 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -scheduler -scheduler.db - - ignore/* +build/target/* + + diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 66a16b1..0000000 --- a/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# 构建阶段 -FROM golang:1.23 AS builder - -WORKDIR /app - -# 复制源码 -COPY . . - -# 构建二进制文件 -RUN go build -o /app/scheduler - -# 运行阶段 -FROM scratch - -WORKDIR /app - -# 复制构建好的二进制文件 -COPY --from=builder ./scheduler ./scheduler - -RUN mkdir -p config - -EXPOSE 25005 - -USER nonroot:nonroot - -CMD ["./scheduler","--config","config/config.yaml"] diff --git a/Makefile b/Makefile index f85ba99..cf41d23 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,8 @@ -build: - go build +# 配置项 +PWD = $(shell pwd) -deploy: - go build -o scheduler - cp -u ./scheduler /opt/scheduler/scheduler - cp -r -u FrontEnd /opt/scheduler/FrontEnd - cp -r -u templates /opt/scheduler/templates - cp -r -u tools /opt/scheduler/tools - ln -sf /opt/scheduler/tools/ZSCWW-Scheduler.service /etc/systemd/system/ZSCWW-Scheduler.service - echo "部署脚本执行完成,记得放入以及在tools/start.sh中修改配置文件,在新环境运行时记得带上--init-db参数" +SOURCE_PATH = $(PWD)/src +TARGET_PATH = $(PWD)/build/target +INSTALL_PATH = /opt/scheduler -default: help - -clean: - rm ./scheduler -help: - echo "请查看MakeFile文件查看构建选项" +include build/Makefile diff --git a/build/Help b/build/Help new file mode 100755 index 0000000..9c0abd2 --- /dev/null +++ b/build/Help @@ -0,0 +1,3 @@ +#! /usr/bin/bash + +echo "" diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..fbe6f3d --- /dev/null +++ b/build/Makefile @@ -0,0 +1,12 @@ +.PHONY: clean help + +help: + ./build/Help + +clean: + rm -rf $(TARGET_PATH)/* + +scheduler: + cd $(SOURCE_PATH) && go build -o $(TARGET_PATH)/scheduler + +all: scheduler diff --git a/config.yaml b/doc/config.yaml similarity index 100% rename from config.yaml rename to doc/config.yaml diff --git a/member.csv b/member.csv deleted file mode 100755 index bcd6a91..0000000 --- a/member.csv +++ /dev/null @@ -1,101 +0,0 @@ -姓名,工号,性别,权限,有空 -m-10001,10001,1,6,1 -m-10002,10002,1,7,2 -m-10003,10003,1,7,3 -m-10004,10004,1,7,4 -m-10005,10005,1,6,5 -m-10006,10006,1,7,6 -m-10007,10007,1,6,7 -m-10008,10008,1,6,1 -m-10009,10009,1,7,2 -m-10010,10010,1,6,3 -m-10011,10011,1,6,4 -m-10012,10012,1,6,5 -m-zs-10013,10013,1,2,6 -m-10014,10014,1,6,7 -m-10015,10015,1,6,1 -m-10016,10016,1,7,2 -m-zs-10017,10017,1,2,3 -m-10018,10018,1,6,4 -m-10019,10019,1,7,5 -m-10020,10020,1,7,6 -m-10021,10021,1,7,7 -m-10022,10022,1,7,1 -m-zs-10023,10023,1,3,2 -m-10024,10024,1,7,3 -m-10025,10025,1,6,4 -m-10026,10026,1,7,5 -m-10027,10027,1,6,6 -m-10028,10028,1,7,7 -m-10029,10029,1,7,1 -m-10030,10030,1,6,2 -m-10031,10031,1,7,3 -m-10032,10032,1,7,4 -m-10033,10033,1,7,5 -m-10034,10034,1,6,6 -m-10035,10035,1,6,7 -m-10036,10036,1,6,1 -m-10037,10037,1,7,2 -m-10038,10038,1,7,3 -m-10039,10039,1,7,4 -m-zs-10040,10040,1,0,5 -m-10041,10041,1,7,6 -m-10042,10042,1,7,7 -m-10043,10043,1,6,1 -m-10044,10044,1,7,2 -m-zs-10045,10045,1,2,3 -m-10046,10046,1,6,4 -m-10047,10047,1,7,5 -m-10048,10048,1,6,6 -m-10049,10049,1,7,7 -m-10050,10050,1,7,1 -m-10051,10051,1,6,2 -m-10052,10052,1,7,3 -m-10053,10053,1,7,4 -m-10054,10054,1,6,5 -m-10055,10055,1,7,6 -m-10056,10056,1,6,7 -m-10057,10057,1,7,1 -m-10058,10058,1,7,2 -m-10059,10059,1,7,3 -m-zs-10060,10060,1,3,4 -m-10061,10061,1,7,5 -m-10062,10062,1,6,6 -m-10063,10063,1,7,7 -m-10064,10064,1,6,1 -m-10065,10065,1,7,2 -m-10066,10066,1,7,3 -m-10067,10067,1,7,4 -m-10068,10068,1,6,5 -m-10069,10069,1,6,6 -m-zs-10070,10070,1,1,7 -m-10071,10071,1,6,1 -m-10072,10072,1,7,2 -m-10073,10073,1,7,3 -m-10074,10074,1,6,4 -m-zs-10075,10075,1,3,5 -f-zs-10076,10076,0,3,6 -f-10077,10077,0,6,7 -f-10078,10078,0,6,1 -f-10079,10079,0,6,2 -f-10080,10080,0,6,3 -f-10081,10081,0,7,4 -f-10082,10082,0,7,5 -f-10083,10083,0,6,6 -f-10084,10084,0,6,7 -f-10085,10085,0,6,1 -f-10086,10086,0,7,2 -f-10087,10087,0,6,3 -f-10088,10088,0,7,4 -f-10089,10089,0,7,5 -f-10090,10090,0,7,6 -f-zs-10091,10091,0,3,7 -f-10092,10092,0,7,1 -f-10093,10093,0,6,2 -f-zs-10094,10094,0,3,3 -f-10095,10095,0,7,4 -f-10096,10096,0,6,5 -f-10097,10097,0,6,6 -f-10098,10098,0,7,7 -f-10099,10099,0,7,1 -f-10100,10100,0,7,2 diff --git a/signals/issueID.go b/signals/issueID.go deleted file mode 100644 index 55e8709..0000000 --- a/signals/issueID.go +++ /dev/null @@ -1,28 +0,0 @@ -package signals - -import ( - "sync" - //"zsxyww.com/scheduler/database" -) - -var IssueID int -var IssueIDMutex sync.Mutex - -func init() { - //启动程序时从数据库获取最后的IssueID用来初始化程序的IssueID变量~ -} - -// IssueID++ -func IssueIDPP() { - - IssueIDMutex.Lock() - IssueID++ - IssueIDMutex.Unlock() - -} - -func GetIssueID() int { - IssueIDMutex.Lock() - defer IssueIDMutex.Unlock() - return IssueID -} diff --git a/signals/table.go b/signals/table.go deleted file mode 100644 index c64a528..0000000 --- a/signals/table.go +++ /dev/null @@ -1,65 +0,0 @@ -package signals - -import ( - "github.com/golang-module/carbon/v2" - "sync" -) - -// 有关值班表相关的状态 -type TablePrototype struct { - lastUpdated carbon.Carbon //值班表最后更新的时间,不要直接读取这个变量 - LUMutex sync.RWMutex - - needUpdate bool //值班表是否需要更新,不要直接读取这个变量 - NUMutex sync.RWMutex -} - -var Table TablePrototype - -// 下面是操作这些状态的专用函数,用且仅用它们来操作上面的全局变量 - -// 表格最后的更新时间 -func (t *TablePrototype) GetLastUpdated() carbon.Carbon { - t.LUMutex.RLock() - defer t.LUMutex.RUnlock() - return t.lastUpdated - -} - -// 标记最后更新的时间 -func (t *TablePrototype) MarkUpdateTime(newtime carbon.Carbon) error { - t.LUMutex.Lock() - defer t.LUMutex.Unlock() - t.lastUpdated = newtime - return nil -} - -// 表格需要更新吗? -func (t *TablePrototype) IsNeedUpdate() bool { - t.NUMutex.RLock() - defer t.NUMutex.RUnlock() - return t.needUpdate - -} - -// 标记表格要求更新吗 -func (t *TablePrototype) MarkUpdateStatus(i bool) error { - t.NUMutex.Lock() - defer t.NUMutex.Unlock() - t.needUpdate = i - return nil -} - -// 标记表格更新,是这两个函数的wrapper,一般用这个 -func (t *TablePrototype) SetUpdated(newtime carbon.Carbon) error { - err := t.MarkUpdateTime(newtime) - if err != nil { - return err - } - err = t.MarkUpdateStatus(false) - if err != nil { - return err - } - return nil - -} diff --git a/FrontEnd/admin.html b/src/FrontEnd/admin.html similarity index 100% rename from FrontEnd/admin.html rename to src/FrontEnd/admin.html diff --git a/FrontEnd/assignment.html b/src/FrontEnd/assignment.html similarity index 100% rename from FrontEnd/assignment.html rename to src/FrontEnd/assignment.html diff --git a/FrontEnd/htmx.min.js b/src/FrontEnd/htmx.min.js similarity index 100% rename from FrontEnd/htmx.min.js rename to src/FrontEnd/htmx.min.js diff --git a/FrontEnd/index.html b/src/FrontEnd/index.html similarity index 100% rename from FrontEnd/index.html rename to src/FrontEnd/index.html diff --git a/FrontEnd/renderTable.js b/src/FrontEnd/renderTable.js similarity index 100% rename from FrontEnd/renderTable.js rename to src/FrontEnd/renderTable.js diff --git a/FrontEnd/repay.html b/src/FrontEnd/repay.html similarity index 100% rename from FrontEnd/repay.html rename to src/FrontEnd/repay.html diff --git a/FrontEnd/robots.txt b/src/FrontEnd/robots.txt similarity index 100% rename from FrontEnd/robots.txt rename to src/FrontEnd/robots.txt diff --git a/FrontEnd/switch.html b/src/FrontEnd/switch.html similarity index 100% rename from FrontEnd/switch.html rename to src/FrontEnd/switch.html diff --git a/FrontEnd/testAssignment.html b/src/FrontEnd/testAssignment.html similarity index 100% rename from FrontEnd/testAssignment.html rename to src/FrontEnd/testAssignment.html diff --git a/FrontEnd/volunteering.html b/src/FrontEnd/volunteering.html similarity index 100% rename from FrontEnd/volunteering.html rename to src/FrontEnd/volunteering.html diff --git a/config/config.go b/src/config/config.go similarity index 100% rename from config/config.go rename to src/config/config.go diff --git a/config/middleware.go b/src/config/middleware.go similarity index 100% rename from config/middleware.go rename to src/config/middleware.go diff --git a/config/model.go b/src/config/model.go similarity index 100% rename from config/model.go rename to src/config/model.go diff --git a/config/newsemester.go b/src/config/newsemester.go similarity index 100% rename from config/newsemester.go rename to src/config/newsemester.go diff --git a/config/route.go b/src/config/route.go similarity index 100% rename from config/route.go rename to src/config/route.go diff --git a/database/database.go b/src/database/database.go similarity index 54% rename from database/database.go rename to src/database/database.go index 0e1bde5..54e4aba 100644 --- a/database/database.go +++ b/src/database/database.go @@ -2,10 +2,8 @@ package db import ( "fmt" - //"gorm.io/driver/postgres" "os" - "gorm.io/driver/postgres" "gorm.io/driver/sqlite" "gorm.io/gorm" "zsxyww.com/scheduler/config" @@ -23,7 +21,6 @@ func Connect() { default: panic("DBType error") } - //Main.AutoMigrate(&model.Member{}, &model.Tweak{}) } func connectSQLite() { @@ -33,17 +30,4 @@ func connectSQLite() { fmt.Println(err) os.Exit(1) } - if config.InitDB == true { - //Main.AutoMigrate(&model.Member{}, &model.Tweak{}) - } -} - -func connectPGSQL() { - Main, err = gorm.Open(postgres.Open(config.Default.DB.Path), &gorm.Config{}) - if err != nil { - panic(err) - } - if config.InitDB == true { - //Main.AutoMigrate(&model.Member{}, &model.Tweak{}) - } } diff --git a/database/model.go b/src/database/model.go similarity index 100% rename from database/model.go rename to src/database/model.go diff --git a/database/pgsql.go b/src/database/pgsql.go similarity index 72% rename from database/pgsql.go rename to src/database/pgsql.go index 9f6916e..9693ab0 100644 --- a/database/pgsql.go +++ b/src/database/pgsql.go @@ -3,8 +3,12 @@ package db import ( "context" "fmt" - "github.com/jackc/pgx/v5/pgxpool" "os" + + //"gorm.io/driver/postgres" + "github.com/jackc/pgx/v5/pgxpool" + "gorm.io/driver/postgres" + "gorm.io/gorm" "zsxyww.com/scheduler/config" ) @@ -24,3 +28,10 @@ func PGSQL() { fmt.Println("Connected to:", version) PGX = pgx } + +func connectPGSQL() { + Main, err = gorm.Open(postgres.Open(config.Default.DB.Path), &gorm.Config{}) + if err != nil { + panic(err) + } +} diff --git a/go.mod b/src/go.mod similarity index 100% rename from go.mod rename to src/go.mod diff --git a/go.sum b/src/go.sum similarity index 98% rename from go.sum rename to src/go.sum index de320d8..2eb2208 100644 --- a/go.sum +++ b/src/go.sum @@ -64,8 +64,6 @@ github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= diff --git a/handler/assignments.go b/src/handler/assignments.go similarity index 97% rename from handler/assignments.go rename to src/handler/assignments.go index ede9d57..5c5182e 100644 --- a/handler/assignments.go +++ b/src/handler/assignments.go @@ -1,17 +1,13 @@ package handler import ( - //"fmt" "errors" - //"github.com/gocarina/gocsv" + "net/http" + "github.com/golang-module/carbon/v2" "github.com/labstack/echo/v4" - "net/http" - //"os" - //"sync" "zsxyww.com/scheduler/config" "zsxyww.com/scheduler/model" - //"zsxyww.com/scheduler/signals" ) // /api/getAssignment GET 获取当日值班表 diff --git a/handler/init.go b/src/handler/init.go similarity index 100% rename from handler/init.go rename to src/handler/init.go diff --git a/handler/repay.go b/src/handler/repay.go similarity index 100% rename from handler/repay.go rename to src/handler/repay.go diff --git a/handler/test.go b/src/handler/test.go similarity index 100% rename from handler/test.go rename to src/handler/test.go diff --git a/handler/tweaks.go b/src/handler/tweaks.go similarity index 100% rename from handler/tweaks.go rename to src/handler/tweaks.go diff --git a/handler/utils.go b/src/handler/utils.go similarity index 100% rename from handler/utils.go rename to src/handler/utils.go diff --git a/main.go b/src/main.go similarity index 67% rename from main.go rename to src/main.go index 72edeee..668844f 100644 --- a/main.go +++ b/src/main.go @@ -2,38 +2,38 @@ package main import ( "fmt" - "github.com/gocarina/gocsv" - "github.com/labstack/echo/v4" "html/template" "os" + + "github.com/gocarina/gocsv" + "github.com/labstack/echo/v4" "zsxyww.com/scheduler/config" - "zsxyww.com/scheduler/database" + db "zsxyww.com/scheduler/database" "zsxyww.com/scheduler/model" "zsxyww.com/scheduler/route" - "zsxyww.com/scheduler/templates" + tl "zsxyww.com/scheduler/templates" ) func main() { + //进行各种初始化工作: + config.Load() db.Connect() app := echo.New() - register(app) - csv() + csv() //初始化Model.MemberList - listenAddress := fmt.Sprintf(":%d", config.Default.App.ListenPort) - - app.Logger.Fatal(app.Start(listenAddress)) -} -func register(app *echo.Echo) { - route.Route(app) - route.Middleware(app) + route.Route(app) //注册路由表 + route.Middleware(app) //注册中间件 renderer := tl.Tlw{ Tl: template.Must(template.ParseGlob("templates/*.html")), } - app.Renderer = renderer + app.Renderer = renderer //注册模板 + listenAddress := fmt.Sprintf(":%d", config.Default.App.ListenPort) + + app.Logger.Fatal(app.Start(listenAddress)) //启动服务器 } // 读取csv文件 diff --git a/model/README.md b/src/model/README.md similarity index 100% rename from model/README.md rename to src/model/README.md diff --git a/src/model/init.go b/src/model/init.go new file mode 100644 index 0000000..222db16 --- /dev/null +++ b/src/model/init.go @@ -0,0 +1,12 @@ +package model + +import ( + "zsxyww.com/scheduler/config" + db "zsxyww.com/scheduler/database" +) + +func init() { + if config.InitDB == true { + db.Main.AutoMigrate(&Member{}, &Tweak{}) + } +} diff --git a/model/member.go b/src/model/member.go similarity index 100% rename from model/member.go rename to src/model/member.go diff --git a/model/tweak.go b/src/model/tweak.go similarity index 97% rename from model/tweak.go rename to src/model/tweak.go index 68b5ebe..d0d5d6f 100644 --- a/model/tweak.go +++ b/src/model/tweak.go @@ -1,9 +1,10 @@ package model import ( - "gorm.io/gorm" "time" - "zsxyww.com/scheduler/database" + + "gorm.io/gorm" + db "zsxyww.com/scheduler/database" ) // 这个结构体是供数据库使用的表结构,换班补班蹭班的记录都会以这种方式储存 diff --git a/model/zones.go b/src/model/zones.go similarity index 100% rename from model/zones.go rename to src/model/zones.go diff --git a/route/middleware.go b/src/route/middleware.go similarity index 100% rename from route/middleware.go rename to src/route/middleware.go diff --git a/route/route.go b/src/route/route.go similarity index 100% rename from route/route.go rename to src/route/route.go diff --git a/templates/renderer.go b/src/templates/renderer.go similarity index 100% rename from templates/renderer.go rename to src/templates/renderer.go diff --git a/templates/table.html b/src/templates/table.html similarity index 100% rename from templates/table.html rename to src/templates/table.html