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, })) } }