重构: App拆分10域文件+并发安全+结构化日志+依赖升级

This commit is contained in:
lxy
2026-05-16 20:45:14 +08:00
parent d17c20c579
commit 767311fc04
27 changed files with 1457 additions and 1218 deletions
+17 -3
View File
@@ -8,6 +8,7 @@ import (
"math/big"
"os"
"path/filepath"
"sync"
"time"
)
@@ -23,9 +24,10 @@ type RecycleBinEntry struct {
// RecycleBin 回收站管理器
type RecycleBin struct {
binPath string
mu sync.Mutex
binPath string
metadataFile string
entries []RecycleBinEntry
entries []RecycleBinEntry
}
// NewRecycleBin 创建回收站管理器
@@ -57,6 +59,8 @@ func NewRecycleBin(binPath string) (*RecycleBin, error) {
// MoveToRecycleBin 移动文件到回收站
func (rb *RecycleBin) MoveToRecycleBin(path string) error {
rb.mu.Lock()
defer rb.mu.Unlock()
// 获取文件信息
info, err := os.Stat(path)
if err != nil {
@@ -111,6 +115,8 @@ func (rb *RecycleBin) MoveToRecycleBin(path string) error {
// RestoreFromRecycleBin 从回收站恢复文件
func (rb *RecycleBin) RestoreFromRecycleBin(recyclePath string) error {
rb.mu.Lock()
defer rb.mu.Unlock()
// 查找对应的元数据条目
var entry *RecycleBinEntry
for i := range rb.entries {
@@ -156,6 +162,8 @@ func (rb *RecycleBin) RestoreFromRecycleBin(recyclePath string) error {
// DeletePermanently 永久删除回收站中的文件
func (rb *RecycleBin) DeletePermanently(recyclePath string) error {
rb.mu.Lock()
defer rb.mu.Unlock()
// 查找元数据条目
for i, entry := range rb.entries {
if entry.DeletedPath == recyclePath {
@@ -180,11 +188,15 @@ func (rb *RecycleBin) DeletePermanently(recyclePath string) error {
// ListEntries 列出回收站中的所有条目
func (rb *RecycleBin) ListEntries() []RecycleBinEntry {
return rb.entries
rb.mu.Lock()
defer rb.mu.Unlock()
return append([]RecycleBinEntry(nil), rb.entries...)
}
// Empty 清空回收站
func (rb *RecycleBin) Empty() error {
rb.mu.Lock()
defer rb.mu.Unlock()
// 删除所有文件
for _, entry := range rb.entries {
if err := os.RemoveAll(entry.DeletedPath); err != nil {
@@ -215,6 +227,8 @@ func (rb *RecycleBin) autoCleanup() {
// cleanupExpiredEntries 清理过期的条目
func (rb *RecycleBin) cleanupExpiredEntries() {
rb.mu.Lock()
defer rb.mu.Unlock()
now := time.Now()
expiredEntries := make([]int, 0)