2023-01-13 20:36:44 +08:00

47 行
1.3 KiB
Go

package service
import (
"integrity-checkin/pkg/app"
"integrity-checkin/pkg/httpclient"
"integrity-checkin/pkg/util"
)
type UserService struct {
}
func (u UserService) Login(aw *app.Wrapper) app.Result {
type LoginReq struct {
Username string `form:"username" binding:"required"`
Password string `form:"password" binding:"required"`
}
var req LoginReq
if err := aw.Ctx.ShouldBind(&req); err != nil {
return aw.Error(err.Error())
}
sduLoginData, err := httpclient.SDULogin(req.Username, req.Password)
if err != nil {
return aw.Error(err.Error())
}
user := userDAO.FindUserByUsername(sduLoginData.Username)
if user == nil {
user = userDAO.CreateUser(sduLoginData.Username, sduLoginData.RealName)
}
return aw.Success(util.GenerateJWT(user.ID, user.RoleID))
}
func (u UserService) Me(aw *app.Wrapper) app.Result {
return aw.Success(userDAO.FindUserByID(aw.ExtractUserClaims().UserID))
}
func (u UserService) SetType(aw *app.Wrapper) app.Result {
type TypeReq struct {
Type int `form:"type" binding:"required,gte=1,lte=2"`
}
var req TypeReq
if err := aw.Ctx.ShouldBind(&req); err != nil {
return aw.Error(err.Error())
}
user := userDAO.FindUserByID(aw.ExtractUserClaims().UserID)
user.Type = req.Type
userDAO.SaveUser(user)
return aw.Success(user)
}