From 812eb587bbd6bd69e192619ce6643be68df90340 Mon Sep 17 00:00:00 2001 From: wsczx Date: Sun, 16 Oct 2022 19:55:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=AF=94=E5=89=8D=E7=AB=AF=E5=B0=8F8?= =?UTF-8?q?=E5=B0=8F=E6=97=B6=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96null=E5=80=BC=E5=89=8D=E7=AB=AF=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/db_orm.go | 5 ++++- server/dbdata/tables.go | 18 +++++++++--------- server/main.go | 1 + server/sessdata/session.go | 3 +-- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/server/dbdata/db_orm.go b/server/dbdata/db_orm.go index 65bc889..728d820 100644 --- a/server/dbdata/db_orm.go +++ b/server/dbdata/db_orm.go @@ -64,10 +64,13 @@ func One(fieldName string, value interface{}, data interface{}) error { // 用户过期时间到达后,更新用户状态,并返回一个状态为过期的用户切片 func CheckUserlimittime() []interface{} { + //初始化xorm时区 + xdb.DatabaseTZ = time.Local + xdb.TZLocation = time.Local var user map[int64]User var limitUser []interface{} u := &User{Status: 2} - xdb.Where("limittime < ?", time.Now()).And("status = ?", 1).Update(u) + xdb.Where("limittime <= ?", time.Now()).And("status = ?", 1).Update(u) xdb.Where("status= ?", 2).Find(u) for _, v := range user { limitUser = append(limitUser, v.Username) diff --git a/server/dbdata/tables.go b/server/dbdata/tables.go index 04a15df..53dff7a 100644 --- a/server/dbdata/tables.go +++ b/server/dbdata/tables.go @@ -29,15 +29,15 @@ type User struct { Nickname string `json:"nickname" xorm:"varchar(255)"` Email string `json:"email" xorm:"varchar(255)"` // Password string `json:"password"` - PinCode string `json:"pin_code" xorm:"varchar(32)"` - LimitTime time.Time `json:"limittime" xorm:"Datetime limittime"` - OtpSecret string `json:"otp_secret" xorm:"varchar(255)"` - DisableOtp bool `json:"disable_otp" xorm:"Bool"` // 禁用otp - Groups []string `json:"groups" xorm:"Text"` - Status int8 `json:"status" xorm:"Int"` // 1正常 - SendEmail bool `json:"send_email" xorm:"Bool"` - CreatedAt time.Time `json:"created_at" xorm:"DateTime created"` - UpdatedAt time.Time `json:"updated_at" xorm:"DateTime updated"` + PinCode string `json:"pin_code" xorm:"varchar(32)"` + LimitTime *time.Time `json:"limittime,omitempty" xorm:"Datetime limittime"` //值为null时,前端不显示 + OtpSecret string `json:"otp_secret" xorm:"varchar(255)"` + DisableOtp bool `json:"disable_otp" xorm:"Bool"` // 禁用otp + Groups []string `json:"groups" xorm:"Text"` + Status int8 `json:"status" xorm:"Int"` // 1正常 + SendEmail bool `json:"send_email" xorm:"Bool"` + CreatedAt time.Time `json:"created_at" xorm:"DateTime created"` + UpdatedAt time.Time `json:"updated_at" xorm:"DateTime updated"` } type IpMap struct { diff --git a/server/main.go b/server/main.go index c52ddcf..a25efc5 100644 --- a/server/main.go +++ b/server/main.go @@ -1,5 +1,6 @@ // AnyLink 是一个企业级远程办公vpn软件,可以支持多人同时在线使用。 +//go:build !windows // +build !windows package main diff --git a/server/sessdata/session.go b/server/sessdata/session.go index 23d4095..8b651a3 100644 --- a/server/sessdata/session.go +++ b/server/sessdata/session.go @@ -116,8 +116,7 @@ func checkSession() { // 状态为过期的用户踢下线 func CloseUserLimittimeSession() { - y := dbdata.CheckUserlimittime() - s := mapset.NewSetFromSlice(y) + s := mapset.NewSetFromSlice(dbdata.CheckUserlimittime()) for k, v := range sessions { sessMux.Lock() v.mux.Lock()