- Go Gin 后端 (19个源文件): 认证、工单CRUD、GLM AI分析、状态流转、备注、操作日志 - Arco Design Vue 前端: 登录、工单列表/详情/创建、AI分析触发与确认 - MySQL 5表: ticket_user/ticket_info/ticket_ai_analysis/ticket_operation_log/ticket_note - 部署: tk.1216.top HTTPS, Nginx反代
47 lines
997 B
Go
47 lines
997 B
Go
package service
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"fmt"
|
|
|
|
"github.com/casehub/ticket-workbench/internal/model"
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var sessions = make(map[string]*model.TicketUser)
|
|
|
|
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()
|
|
sessions[sessionID] = &user
|
|
|
|
return &user, sessionID, nil
|
|
}
|
|
|
|
func Logout(sessionID string) {
|
|
delete(sessions, sessionID)
|
|
}
|
|
|
|
func GetUserBySession(sessionID string) *model.TicketUser {
|
|
return sessions[sessionID]
|
|
}
|