From 07d988cc7eb0e66bb8174ffb0d613e51c2018d28 Mon Sep 17 00:00:00 2001 From: engigu Date: Sat, 20 Dec 2025 12:59:37 +0800 Subject: [PATCH] feat: add daily shichi --- internal/constant/sentence.go | 40 +++++++++++--------------- web/src/composables/useSiteSettings.ts | 23 +++++++++++++-- web/src/views/login/Login.vue | 18 +++++++++++- 3 files changed, 54 insertions(+), 27 deletions(-) diff --git a/internal/constant/sentence.go b/internal/constant/sentence.go index e67c55b..109c041 100644 --- a/internal/constant/sentence.go +++ b/internal/constant/sentence.go @@ -2,35 +2,35 @@ package constant import ( "bufio" + "bytes" + _ "embed" "encoding/json" "math/rand" - "os" "sync" ) +//go:embed sentence1-10000.json +var sentenceData []byte + type Sentence struct { Name string `json:"name"` From string `json:"from"` } -const sentenceFile = "internal/constant/sentence1-10000.json" - var ( lineCount int - lineCountOnce sync.Once + lineOffsets []int64 + sentenceOnce sync.Once ) -// countLines 统计文件行数(只执行一次) -func countLines() { - lineCountOnce.Do(func() { - file, err := os.Open(sentenceFile) - if err != nil { - return - } - defer file.Close() - - scanner := bufio.NewScanner(file) +// initSentences 初始化:统计行数和记录每行偏移 +func initSentences() { + sentenceOnce.Do(func() { + scanner := bufio.NewScanner(bytes.NewReader(sentenceData)) + var offset int64 = 0 for scanner.Scan() { + lineOffsets = append(lineOffsets, offset) + offset += int64(len(scanner.Bytes())) + 1 // +1 for newline lineCount++ } }) @@ -38,20 +38,14 @@ func countLines() { // GetRandomSentence 随机获取一条古诗词 func GetRandomSentence() string { - countLines() + initSentences() if lineCount == 0 { return "欢迎使用白虎面板" } targetLine := rand.Intn(lineCount) - - file, err := os.Open(sentenceFile) - if err != nil { - return "欢迎使用白虎面板" - } - defer file.Close() - - scanner := bufio.NewScanner(file) + + scanner := bufio.NewScanner(bytes.NewReader(sentenceData)) currentLine := 0 for scanner.Scan() { if currentLine == targetLine { diff --git a/web/src/composables/useSiteSettings.ts b/web/src/composables/useSiteSettings.ts index b703126..714e52a 100644 --- a/web/src/composables/useSiteSettings.ts +++ b/web/src/composables/useSiteSettings.ts @@ -4,14 +4,29 @@ import { api, type SiteSettings } from '@/api' const siteSettings = ref({ title: '白虎面板', subtitle: '轻量级定时任务管理系统', - icon: "", - + icon: '', page_size: '10', cookie_days: '7' }) let loaded = false +function updateFavicon(svgContent: string) { + if (!svgContent || !svgContent.trim().startsWith('