service.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package api
  2. import (
  3. "encoding/base64"
  4. "fmt"
  5. "gadmin/config"
  6. "gadmin/internal/admin/forms"
  7. "gadmin/internal/admin/service"
  8. "gadmin/utility/serializer"
  9. "gadmin/utility/token"
  10. "github.com/gin-gonic/gin"
  11. jsoniter "github.com/json-iterator/go"
  12. "time"
  13. )
  14. // ServiceList 获取系统列表
  15. func ServiceList(c *gin.Context) {
  16. services, err := service.Service.ServiceList(c)
  17. if err != nil {
  18. c.JSON(200, ErrorResponse(err))
  19. return
  20. }
  21. c.JSON(200, serializer.Suc(services, "获取成功"))
  22. }
  23. // ServiceSelect 选择系统
  24. func ServiceSelect(c *gin.Context) {
  25. req := new(forms.ServiceSelectReq)
  26. if err := c.ShouldBind(req); err != nil {
  27. c.JSON(200, ErrorResponse(err))
  28. return
  29. }
  30. res, ok := c.Get("user")
  31. if !ok {
  32. c.JSON(200, ErrorResponse(fmt.Errorf("获取用户信息失败")))
  33. return
  34. }
  35. user := res.(*token.UserClaims)
  36. //user.SystemId = req.SystemId
  37. //userStr, err := jsoniter.MarshalToString(user)
  38. //if err != nil {
  39. // c.JSON(200, ErrorResponse(err))
  40. // return
  41. //}
  42. //
  43. //config.TokenRedis.Set(config.GetTokenKey(user.AccessToken), userStr, config.TokenExpireTime)
  44. //c.JSON(200, serializer.Suc("ok"))
  45. // 重新生成新的token,解决浏览器回退问题
  46. t := token.GenerateTokenUsingUUID()
  47. // 记录登录token
  48. key := config.GetUserTokenKey(user.ID)
  49. config.TokenRedis.HSet(key, t, time.Now().Unix())
  50. config.TokenRedis.Expire(key, time.Hour*12)
  51. tokenKey := config.GetTokenKey(t)
  52. u := &token.UserClaims{
  53. ID: user.ID,
  54. UserName: user.UserName,
  55. RoleId: user.RoleId,
  56. Avatar: user.Avatar,
  57. Nickname: user.Nickname,
  58. AccessToken: t,
  59. SystemId: req.SystemId,
  60. }
  61. userStr, err := jsoniter.MarshalToString(u)
  62. if err != nil {
  63. c.JSON(200, ErrorResponse(err))
  64. }
  65. config.TokenRedis.Set(tokenKey, userStr, time.Hour*12)
  66. c.JSON(200, serializer.Suc(map[string]string{"token": base64.URLEncoding.EncodeToString([]byte(t))}))
  67. }