package api import ( "encoding/base64" "fmt" "gadmin/config" "gadmin/internal/admin/forms" "gadmin/internal/admin/service" "gadmin/utility/serializer" "gadmin/utility/token" "github.com/gin-gonic/gin" jsoniter "github.com/json-iterator/go" "time" ) // ServiceList 获取系统列表 func ServiceList(c *gin.Context) { services, err := service.Service.ServiceList(c) if err != nil { c.JSON(200, ErrorResponse(err)) return } c.JSON(200, serializer.Suc(services, "获取成功")) } // ServiceSelect 选择系统 func ServiceSelect(c *gin.Context) { req := new(forms.ServiceSelectReq) if err := c.ShouldBind(req); err != nil { c.JSON(200, ErrorResponse(err)) return } res, ok := c.Get("user") if !ok { c.JSON(200, ErrorResponse(fmt.Errorf("获取用户信息失败"))) return } user := res.(*token.UserClaims) //user.SystemId = req.SystemId //userStr, err := jsoniter.MarshalToString(user) //if err != nil { // c.JSON(200, ErrorResponse(err)) // return //} // //config.TokenRedis.Set(config.GetTokenKey(user.AccessToken), userStr, config.TokenExpireTime) //c.JSON(200, serializer.Suc("ok")) // 重新生成新的token,解决浏览器回退问题 t := token.GenerateTokenUsingUUID() // 记录登录token key := config.GetUserTokenKey(user.ID) config.TokenRedis.HSet(key, t, time.Now().Unix()) config.TokenRedis.Expire(key, time.Hour*12) tokenKey := config.GetTokenKey(t) u := &token.UserClaims{ ID: user.ID, UserName: user.UserName, RoleId: user.RoleId, Avatar: user.Avatar, Nickname: user.Nickname, AccessToken: t, SystemId: req.SystemId, } userStr, err := jsoniter.MarshalToString(u) if err != nil { c.JSON(200, ErrorResponse(err)) } config.TokenRedis.Set(tokenKey, userStr, time.Hour*12) c.JSON(200, serializer.Suc(map[string]string{"token": base64.URLEncoding.EncodeToString([]byte(t))})) }