- 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反代
65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/casehub/ticket-workbench/internal/dto"
|
|
"github.com/casehub/ticket-workbench/internal/service"
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func Login(db *gorm.DB) gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
var req dto.LoginRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
c.JSON(200, dto.Fail("参数错误"))
|
|
return
|
|
}
|
|
|
|
user, sessionID, err := service.Login(db, req.Account, req.Password)
|
|
if err != nil {
|
|
c.JSON(200, dto.Fail(err.Error()))
|
|
return
|
|
}
|
|
|
|
c.JSON(200, dto.Success(map[string]interface{}{
|
|
"token": sessionID,
|
|
"user": map[string]interface{}{
|
|
"userid": user.Userid,
|
|
"username": user.Username,
|
|
"account": user.Account,
|
|
"role": user.Role,
|
|
"team": user.Team,
|
|
},
|
|
}))
|
|
}
|
|
}
|
|
|
|
func Logout() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
sessionID := c.GetHeader("Authorization")
|
|
if sessionID == "" {
|
|
sessionID = c.GetHeader("jsessionid")
|
|
}
|
|
service.Logout(sessionID)
|
|
c.JSON(200, dto.Success(nil))
|
|
}
|
|
}
|
|
|
|
func UserInfo() gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
userid, _ := c.Get("userid")
|
|
username, _ := c.Get("username")
|
|
account := c.GetString("account")
|
|
role, _ := c.Get("role")
|
|
team, _ := c.Get("team")
|
|
|
|
c.JSON(200, dto.Success(map[string]interface{}{
|
|
"userid": userid,
|
|
"username": username,
|
|
"account": account,
|
|
"role": role,
|
|
"team": team,
|
|
}))
|
|
}
|
|
}
|