劲创营---任务项目
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

124 satır
2.8 KiB

  1. package svc
  2. import (
  3. "applet/app/comm/db"
  4. "applet/app/comm/md"
  5. "applet/app/comm/utils"
  6. "applet/app/lib/auth"
  7. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models"
  8. "errors"
  9. "strings"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // 因为在mw_auth已经做完所有校验, 因此在此不再做任何校验
  13. // GetUser is get user model
  14. func GetUser(c *gin.Context) *md.User {
  15. user, _ := c.Get("user")
  16. return user.(*md.User)
  17. }
  18. func GetCampStore(c *gin.Context) *models.CampTaskStoreUser {
  19. user, _ := c.Get("camp_store")
  20. return user.(*models.CampTaskStoreUser)
  21. }
  22. func GetCampStoreId(c *gin.Context) int {
  23. user, _ := c.Get("camp_store")
  24. store := user.(*models.CampTaskStoreUser)
  25. if store != nil {
  26. id := store.Id
  27. if store.Pid > 0 {
  28. id = store.Pid
  29. }
  30. return id
  31. }
  32. return 0
  33. }
  34. func GetUid(c *gin.Context) string {
  35. user, _ := c.Get("user")
  36. u := user.(*md.User)
  37. return utils.IntToStr(u.Info.Uid)
  38. }
  39. func GetUserById(c *gin.Context, uid string) *md.User {
  40. // 获取user
  41. u, err := db.UserFindByID(db.DBs[c.GetString("mid")], uid)
  42. if err != nil {
  43. return nil
  44. }
  45. if u == nil {
  46. return nil
  47. }
  48. // 获取user profile
  49. up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], uid)
  50. if err != nil {
  51. return nil
  52. }
  53. // 获取user 等级
  54. ul, err := db.UserLevelByID(db.DBs[c.GetString("mid")], u.Level)
  55. if err != nil {
  56. return nil
  57. }
  58. user := &md.User{
  59. Info: u,
  60. Profile: up,
  61. Level: ul,
  62. }
  63. return user
  64. }
  65. func CheckUser(c *gin.Context) (*md.User, error) {
  66. requestType := c.Request.Header.Get("Request-Type")
  67. requestUid := c.Request.Header.Get("Request-uid")
  68. var mc = new(auth.JWTUser)
  69. var err error
  70. if requestType == "mq_consume" {
  71. mc.UID = utils.StrToInt(requestUid)
  72. } else {
  73. token := c.GetHeader("Authorization")
  74. if token == "" {
  75. return nil, errors.New("token not exist")
  76. }
  77. // 按空格分割
  78. parts := strings.SplitN(token, " ", 2)
  79. if !(len(parts) == 2 && parts[0] == "Bearer") {
  80. return nil, errors.New("token format error")
  81. }
  82. // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它
  83. mc, err = utils.ParseToken(parts[1])
  84. if err != nil {
  85. return nil, err
  86. }
  87. }
  88. // 获取user
  89. u, err := db.UserFindByID(db.DBs[c.GetString("mid")], mc.UID)
  90. if err != nil {
  91. return nil, err
  92. }
  93. if u == nil {
  94. return nil, errors.New("token can not find user")
  95. }
  96. // 获取user profile
  97. up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], mc.UID)
  98. if err != nil {
  99. return nil, err
  100. }
  101. // 获取user 等级
  102. ul, err := db.UserLevelByID(db.DBs[c.GetString("mid")], u.Level)
  103. if err != nil {
  104. return nil, err
  105. }
  106. // 获取用户标签
  107. tags, err := db.UserTagsByUid(db.DBs[c.GetString("mid")], mc.UID)
  108. if err != nil {
  109. return nil, err
  110. }
  111. user := &md.User{
  112. Info: u,
  113. Profile: up,
  114. Level: ul,
  115. Tags: tags,
  116. }
  117. return user, nil
  118. }