From 5afa4c48fc951a2d2a11c4329df4edae9b30754e Mon Sep 17 00:00:00 2001 From: fengsilin Date: Wed, 20 May 2026 18:03:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=A8=E6=88=B7=E8=A1=A8=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=B3=A8=E5=86=8C=E6=97=B6=E9=97=B4=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=20+=20=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E5=92=8C=E6=B3=A8=E5=86=8C=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - model/user.go: 新增 CreatedAt 字段,Insert 时自动填充 - UsersColumnDefs.jsx: 用户列表新增邮箱、注册时间列 - makefile: 新增 build-widget target --- makefile | 8 ++++++-- model/user.go | 3 +++ web/src/components/table/users/UsersColumnDefs.jsx | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index f24141b..7b779c4 100644 --- a/makefile +++ b/makefile @@ -1,14 +1,18 @@ FRONTEND_DIR = ./web BACKEND_DIR = . -.PHONY: all build-frontend start-backend docker-build docker-push +.PHONY: all build-frontend build-widget start-backend docker-build docker-push -all: build-frontend start-backend +all: build-frontend build-widget start-backend build-frontend: @echo "Building frontend..." @cd $(FRONTEND_DIR) && bun install && DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$(cat VERSION) bun run build +build-widget: + @echo "Building login widget..." + @cd $(FRONTEND_DIR)/widget && bun install && bun run build + start-backend: @echo "Starting backend dev server..." @cd $(BACKEND_DIR) && go run main.go & diff --git a/model/user.go b/model/user.go index 8e0d5a9..e9b0da7 100644 --- a/model/user.go +++ b/model/user.go @@ -55,6 +55,7 @@ type User struct { AffQuota int `json:"aff_quota" gorm:"type:int;default:0;column:aff_quota"` // 邀请剩余额度 AffHistoryQuota int `json:"aff_history_quota" gorm:"type:int;default:0;column:aff_history"` // 邀请历史额度 InviterId int `json:"inviter_id" gorm:"type:int;column:inviter_id;index"` + CreatedAt int64 `json:"created_at" gorm:"bigint;default:0"` DeletedAt gorm.DeletedAt `gorm:"index"` LinuxDOId string `json:"linux_do_id" gorm:"column:linux_do_id;index"` Setting string `json:"setting" gorm:"type:text;column:setting"` @@ -436,6 +437,7 @@ func (user *User) Insert(inviterId int) error { } //user.SetAccessToken(common.GetUUID()) user.AffCode = common.GetRandomString(4) + user.CreatedAt = time.Now().Unix() // 初始化用户设置,包括默认的边栏配置 if user.Setting == "" { @@ -503,6 +505,7 @@ func (user *User) InsertWithTx(tx *gorm.DB, inviterId int) error { user.Quota = common.QuotaForNewUser } user.AffCode = common.GetRandomString(4) + user.CreatedAt = time.Now().Unix() // 初始化用户设置 if user.Setting == "" { diff --git a/web/src/components/table/users/UsersColumnDefs.jsx b/web/src/components/table/users/UsersColumnDefs.jsx index c3ccfcf..132ea2e 100644 --- a/web/src/components/table/users/UsersColumnDefs.jsx +++ b/web/src/components/table/users/UsersColumnDefs.jsx @@ -322,6 +322,20 @@ export const getUsersColumns = ({ dataIndex: 'username', render: (text, record) => renderUsername(text, record), }, + { + title: t('邮箱'), + dataIndex: 'email', + render: (text) => text || '-', + }, + { + title: t('注册时间'), + dataIndex: 'created_at', + render: (text) => { + if (!text || text === 0) return t('未知'); + const date = new Date(text * 1000); + return date.toLocaleDateString(); + }, + }, { title: t('状态'), dataIndex: 'info',