game.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package util
  2. import (
  3. "errors"
  4. "ordonnance/common/auth"
  5. "strconv"
  6. "strings"
  7. )
  8. type TokenDsta struct {
  9. UserId int `json:"userId"`
  10. MilliSecond int64 `json:"milliSecond"`
  11. AreaId int `json:"areaId"`
  12. AuthFlg int `json:"authFlg"`
  13. }
  14. func ParseToken(tokenStr string) (*TokenDsta, error) {
  15. retErr := errors.New("parse token err")
  16. if len(tokenStr) < 1 {
  17. return nil, retErr
  18. }
  19. srcToken := auth.AesDecrypt(tokenStr)
  20. if len(srcToken) < 10 {
  21. return nil, retErr
  22. }
  23. srcSplic := strings.Split(srcToken, "|")
  24. if len(srcSplic) != 3 && len(srcSplic) != 4 {
  25. return nil, retErr
  26. }
  27. userId, err := strconv.ParseInt(srcSplic[0], 10, 64)
  28. if err != nil || userId < 1 {
  29. return nil, retErr
  30. }
  31. milliSecond, err := strconv.ParseInt(srcSplic[1], 10, 64)
  32. if err != nil || milliSecond < 1 {
  33. return nil, retErr
  34. }
  35. areaId, err := strconv.ParseInt(srcSplic[2], 10, 64)
  36. if err != nil {
  37. return nil, retErr
  38. }
  39. tokenData := &TokenDsta{
  40. UserId: int(userId),
  41. MilliSecond: milliSecond,
  42. AreaId: int(areaId),
  43. }
  44. if len(srcSplic) == 4 {
  45. tokenData.AuthFlg, _ = strconv.Atoi(srcSplic[3])
  46. }
  47. return tokenData, nil
  48. }