feat(admin): 添加用户管理和Linux.do登录功能

- 新增AdminUser类型定义及用户管理API接口
- 实现用户列表查询、保存和删除功能
- 添加Linux.do第三方登录支持
- 集成Linux.do OAuth认证流程
- 在系统设置中添加Linux.do登录配置选项
- 实现算力点余额调整记录功能
- 优化搜索组件关键词状态管理
- 更新数据库迁移添加credit_logs表
- 完善用户状态和信用等级验证逻辑
This commit is contained in:
HouYunFei
2026-05-25 11:21:09 +08:00
parent f871a5d015
commit b2cae2471d
25 changed files with 1023 additions and 117 deletions
+23
View File
@@ -2,6 +2,7 @@ package repository
import (
"errors"
"strings"
"github.com/basketikun/infinite-canvas/model"
"gorm.io/gorm"
@@ -15,6 +16,10 @@ func ListUsers(q model.Query) ([]model.User, int64, error) {
}
q.Normalize()
tx := db.Model(&model.User{})
if keyword := strings.TrimSpace(q.Keyword); keyword != "" {
like := "%" + keyword + "%"
tx = tx.Where("username LIKE ? OR display_name LIKE ? OR email LIKE ? OR linux_do_id LIKE ?", like, like, like, like)
}
var total int64
if err := tx.Count(&total).Error; err != nil {
@@ -74,6 +79,15 @@ func SaveUser(user model.User) (model.User, error) {
return user, db.Save(&user).Error
}
// SaveCreditLog 保存算力点变更流水。
func SaveCreditLog(log model.CreditLog) (model.CreditLog, error) {
db, err := DB()
if err != nil {
return log, err
}
return log, db.Save(&log).Error
}
// DeleteUser 删除指定用户。
func DeleteUser(id string) error {
db, err := DB()
@@ -83,6 +97,15 @@ func DeleteUser(id string) error {
return db.Delete(&model.User{}, "id = ?", id).Error
}
// GetUserByLinuxDoID 根据 Linux.do ID 查询用户。
func GetUserByLinuxDoID(id string) (model.User, bool, error) {
db, err := DB()
if err != nil {
return model.User{}, false, err
}
return findUser(db, "linux_do_id = ?", id)
}
// findUser 查询单个用户,并将未命中转换为 ok=false。
func findUser(db *gorm.DB, query string, args ...any) (model.User, bool, error) {
user := model.User{}