Files
ticket-workbench/backend/internal/service/auth_service.go
绝尘 c5c2a64a48 优化: 前后端字段对齐、AI分析JSON解析修复、AutoMigrate
- 修复登录参数 username→account
- 修复前后端字段名不匹配 (ticketno/contactname/createtime等)
- 修复AI分析GLM返回markdown包裹和priority类型问题
- 添加AutoMigrate自动建表
- 统一API路由为 /api/auth/ 前缀
- 添加config.example.yaml,.gitignore排除config.yaml
2026-05-13 18:53:53 +08:00

57 lines
1.1 KiB
Go

package service
import (
"crypto/md5"
"encoding/hex"
"fmt"
"sync"
"github.com/casehub/ticket-workbench/internal/model"
"github.com/google/uuid"
"gorm.io/gorm"
)
var (
sessions = make(map[string]*model.TicketUser)
sessionMu sync.RWMutex
)
func MD5Hash(text string) string {
hash := md5.Sum([]byte(text))
return hex.EncodeToString(hash[:])
}
func Login(db *gorm.DB, account, password string) (*model.TicketUser, string, error) {
var user model.TicketUser
err := db.Where("account = ? AND status = 1", account).First(&user).Error
if err != nil {
if err == gorm.ErrRecordNotFound {
return nil, "", fmt.Errorf("账号或密码错误")
}
return nil, "", err
}
if user.Password != MD5Hash(password) {
return nil, "", fmt.Errorf("账号或密码错误")
}
sessionID := uuid.New().String()
sessionMu.Lock()
sessions[sessionID] = &user
sessionMu.Unlock()
return &user, sessionID, nil
}
func Logout(sessionID string) {
sessionMu.Lock()
delete(sessions, sessionID)
sessionMu.Unlock()
}
func GetUserBySession(sessionID string) *model.TicketUser {
sessionMu.RLock()
defer sessionMu.RUnlock()
return sessions[sessionID]
}