base.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package service
  2. import (
  3. "encoding/json"
  4. "math"
  5. "math/rand"
  6. "runtime"
  7. pb "sportfitness/base/api/grpc/base"
  8. "sportfitness/base/errors"
  9. "sportfitness/base/repository/grpc/bsw/im"
  10. im2 "sportfitness/base/repository/grpc/bsw/im/im"
  11. "strings"
  12. "time"
  13. "git.beswell.com/gframe/application"
  14. "github.com/sirupsen/logrus"
  15. )
  16. type base struct {
  17. }
  18. func RegisterServices() {
  19. application.GetApp().SetServiceRegisterHandler(func(servicePathList []string) {
  20. logrus.Info("同步服务权限")
  21. im.RegisterServiceList(servicePathList)
  22. })
  23. err := application.GetApp().RegisterService("",
  24. User{})
  25. if err != nil {
  26. logrus.Fatalf("服务保存失败: \n%s", err)
  27. }
  28. }
  29. func GetFuncName() string {
  30. pc := make([]uintptr, 1)
  31. runtime.Callers(2, pc)
  32. f := runtime.FuncForPC(pc[0]).Name()
  33. println(f)
  34. l := strings.Split(f, ".")
  35. serviceName := l[1] + "/" + l[2]
  36. return serviceName
  37. }
  38. func (base) checkPermission(token string, shopId int64) (optId int64) {
  39. // 用token获取用户ID
  40. optId = User{}.SubSessionCheck(token)
  41. pc := make([]uintptr, 1)
  42. runtime.Callers(2, pc)
  43. f := runtime.FuncForPC(pc[0]).Name()
  44. println(f)
  45. l := strings.Split(f, ".")
  46. serviceName := l[1] + "/" + l[2]
  47. // 目标商家是否有操作权限
  48. rs := im.SubPermissionListCheck(token, shopId, []string{serviceName}).ResultList[0]
  49. if !rs {
  50. // todo 暂时忽略权限校验
  51. //panic(errors.PmsnError)
  52. }
  53. return
  54. }
  55. func (base) JSONToMap(str string) (map[string]interface{}, bool) {
  56. b := false
  57. var rsMap map[string]interface{}
  58. err := json.Unmarshal([]byte(str), &rsMap)
  59. if err != nil {
  60. panic(errors.J2MError)
  61. }
  62. code := int(rsMap["code"].(float64))
  63. if code == 0 {
  64. b = true
  65. } else {
  66. b = false
  67. }
  68. return rsMap, b
  69. }
  70. func (base) WebStatusCheck(s pb.WebStatus) pb.WebStatus {
  71. var ws pb.WebStatus
  72. switch s {
  73. case 0:
  74. ws = pb.WebStatus_Ban
  75. case 1:
  76. ws = pb.WebStatus_On
  77. case 9:
  78. ws = pb.WebStatus_Delete
  79. case 99:
  80. ws = pb.WebStatus_All
  81. default:
  82. panic(errors.WebStatusError)
  83. }
  84. return ws
  85. }
  86. func (b base) WebStatusToManageStatus(s pb.WebStatus) im2.Status {
  87. var status im2.Status
  88. ws := b.WebStatusCheck(s)
  89. switch ws {
  90. case 99:
  91. status = im2.Status_Null
  92. case 0:
  93. status = im2.Status_Ban
  94. case 1:
  95. status = im2.Status_On
  96. case 9:
  97. status = im2.Status_Delete
  98. default:
  99. panic(errors.WebToImStatusError)
  100. }
  101. return status
  102. }
  103. func (base) ManageStatusToWebStatus(s im2.Status) (status pb.WebStatus) {
  104. switch s {
  105. case 1:
  106. status = pb.WebStatus_Ban
  107. case 2:
  108. status = pb.WebStatus_On
  109. case 9:
  110. status = pb.WebStatus_Delete
  111. default:
  112. panic(errors.ImToWebtatusError)
  113. }
  114. return status
  115. }
  116. func RandomInt(n int) int {
  117. min := int(math.Pow(10, float64(n-1)))
  118. max := min*9 - 1
  119. rand1 := rand.New(rand.NewSource(time.Now().UnixNano()))
  120. code := rand1.Intn(max) + min
  121. return code
  122. }
  123. func (base) checkRs(rs string) bool {
  124. b := false
  125. rsMap := make(map[string]interface{})
  126. err := json.Unmarshal([]byte(rs), &rsMap)
  127. if err != nil {
  128. panic(errors.J2MError)
  129. }
  130. code := int(rsMap["code"].(float64))
  131. if code == 0 {
  132. b = true
  133. } else {
  134. b = false
  135. }
  136. return b
  137. }