From db307732c67a666c8de664ad9419f5d4556ca3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=98=AD?= <81747598+lan-yonghui@users.noreply.github.com> Date: Mon, 3 Mar 2025 22:32:56 +0800 Subject: [PATCH] feat: Adjust license (#8056) --- backend/app/dto/setting.go | 1 + backend/configs/system.go | 1 + backend/init/hook/hook.go | 15 +++++++++++++++ backend/init/migration/migrate.go | 1 + backend/init/migration/migrations/v_1_10.go | 11 +++++++++++ backend/init/viper/viper.go | 2 ++ backend/server/server.go | 2 +- frontend/src/api/interface/setting.ts | 1 + frontend/src/store/interface/index.ts | 1 + frontend/src/store/modules/global.ts | 1 + .../src/views/login/components/login-form.vue | 1 + frontend/src/views/setting/license/index.vue | 2 +- go.mod | 3 ++- go.sum | 4 ++++ 14 files changed, 43 insertions(+), 3 deletions(-) diff --git a/backend/app/dto/setting.go b/backend/app/dto/setting.go index 254c83803..a4232dd5b 100644 --- a/backend/app/dto/setting.go +++ b/backend/app/dto/setting.go @@ -71,6 +71,7 @@ type SettingInfo struct { ApiKey string `json:"apiKey"` IpWhiteList string `json:"ipWhiteList"` ApiKeyValidityTime string `json:"apiKeyValidityTime"` + LicenseVerify string `json:"licenseVerify"` } type SettingUpdate struct { diff --git a/backend/configs/system.go b/backend/configs/system.go index c603d8cbb..af91dc17d 100644 --- a/backend/configs/system.go +++ b/backend/configs/system.go @@ -23,6 +23,7 @@ type System struct { Language string `mapstructure:"language"` IsDemo bool `mapstructure:"is_demo"` IsIntl bool `mapstructure:"is_intl"` + LicenseVerify string `mapstructure:"license_verify"` AppRepo string `mapstructure:"app_repo"` ChangeUserInfo string `mapstructure:"change_user_info"` OneDriveID string `mapstructure:"one_drive_id"` diff --git a/backend/init/hook/hook.go b/backend/init/hook/hook.go index f2f5aab32..d8f21ceaf 100644 --- a/backend/init/hook/hook.go +++ b/backend/init/hook/hook.go @@ -84,6 +84,15 @@ func Init() { global.CONF.System.ApiKeyValidityTime = apiKeyValidityTimeSetting.Value } + if global.CONF.System.LicenseVerify == "" { + licenseVerify, err := settingRepo.Get(settingRepo.WithByKey("LicenseVerify")) + if err != nil { + global.LOG.Errorf("load service license verify from setting failed, err: %v", err) + } + global.CONF.System.LicenseVerify = licenseVerify.Value + } + handleLicenseVerify(global.CONF.System.LicenseVerify, settingRepo) + handleUserInfo(global.CONF.System.ChangeUserInfo, settingRepo) handleCronjobStatus() @@ -207,6 +216,12 @@ func loadLocalDir() { global.LOG.Errorf("error type dir: %T", varMap["dir"]) } +func handleLicenseVerify(licenseVerify string, settingRepo repo.ISettingRepo) { + if err := settingRepo.Update("LicenseVerify", licenseVerify); err != nil { + global.LOG.Fatalf("init license verify before start failed, err: %v", err) + } +} + func handleUserInfo(tags string, settingRepo repo.ISettingRepo) { if len(tags) == 0 { return diff --git a/backend/init/migration/migrate.go b/backend/init/migration/migrate.go index 76b361107..01874d677 100644 --- a/backend/init/migration/migrate.go +++ b/backend/init/migration/migrate.go @@ -105,6 +105,7 @@ func Init() { migrations.AddOllamaModel, migrations.AddAppMenu, migrations.AddAppPanelName, + migrations.AddLicenseVerify, }) if err := m.Migrate(); err != nil { global.LOG.Error(err) diff --git a/backend/init/migration/migrations/v_1_10.go b/backend/init/migration/migrations/v_1_10.go index 81690a5a0..823deb9d8 100644 --- a/backend/init/migration/migrations/v_1_10.go +++ b/backend/init/migration/migrations/v_1_10.go @@ -448,3 +448,14 @@ var AddAppPanelName = &gormigrate.Migration{ return nil }, } + +var AddLicenseVerify = &gormigrate.Migration{ + ID: "20250226-add-license-verify", + Migrate: func(tx *gorm.DB) error { + + if err := tx.Create(&model.Setting{Key: "LicenseVerify", Value: "LX"}).Error; err != nil { + return err + } + return nil + }, +} diff --git a/backend/init/viper/viper.go b/backend/init/viper/viper.go index 479e6f2df..660538397 100644 --- a/backend/init/viper/viper.go +++ b/backend/init/viper/viper.go @@ -3,6 +3,7 @@ package viper import ( "bytes" "fmt" + "os" "path" "strings" @@ -103,6 +104,7 @@ func Init() { global.CONF.System.Entrance = entrance global.CONF.System.Language = language global.CONF.System.ChangeUserInfo = loadChangeInfo() + global.CONF.System.LicenseVerify = os.Getenv("LXWARE_LICENSE_VERIFY") global.Viper = v } diff --git a/backend/server/server.go b/backend/server/server.go index 5035fdfd2..f7ff2919d 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -47,9 +47,9 @@ func Start() { session.Init() gin.SetMode(gin.DebugMode) cron.Run() + hook.Init() InitOthers() business.Init() - hook.Init() rootRouter := router.Routers() diff --git a/frontend/src/api/interface/setting.ts b/frontend/src/api/interface/setting.ts index 5f264f221..2e590e727 100644 --- a/frontend/src/api/interface/setting.ts +++ b/frontend/src/api/interface/setting.ts @@ -62,6 +62,7 @@ export namespace Setting { apiKey: string; ipWhiteList: string; apiKeyValidityTime: number; + licenseVerify: string; } export interface SettingUpdate { key: string; diff --git a/frontend/src/store/interface/index.ts b/frontend/src/store/interface/index.ts index 9e6b28f8a..d48588d3b 100644 --- a/frontend/src/store/interface/index.ts +++ b/frontend/src/store/interface/index.ts @@ -37,6 +37,7 @@ export interface GlobalState { isIntl: boolean; isTrial: boolean; productProExpires: number; + licenseVerify: string; errStatus: string; } diff --git a/frontend/src/store/modules/global.ts b/frontend/src/store/modules/global.ts index f41242f12..76b65d7f2 100644 --- a/frontend/src/store/modules/global.ts +++ b/frontend/src/store/modules/global.ts @@ -40,6 +40,7 @@ const GlobalStore = defineStore({ isIntl: false, isTrial: false, productProExpires: 0, + licenseVerify: '', errStatus: '', }), diff --git a/frontend/src/views/login/components/login-form.vue b/frontend/src/views/login/components/login-form.vue index 3fef2b5dc..d3aebf0e4 100644 --- a/frontend/src/views/login/components/login-form.vue +++ b/frontend/src/views/login/components/login-form.vue @@ -412,6 +412,7 @@ const loadDataFromDB = async () => { i18n.locale.value = res.data.language; i18n.warnHtmlMessage = false; globalStore.entrance = res.data.securityEntrance; + globalStore.licenseVerify = res.data.licenseVerify; globalStore.setDefaultNetwork(res.data.defaultNetwork); globalStore.setOpenMenuTabs(res.data.menuTabs === 'enable'); globalStore.updateLanguage(res.data.language); diff --git a/frontend/src/views/setting/license/index.vue b/frontend/src/views/setting/license/index.vue index 5aa0c95e7..bcfbaedf6 100644 --- a/frontend/src/views/setting/license/index.vue +++ b/frontend/src/views/setting/license/index.vue @@ -77,7 +77,7 @@