service.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package whitelist
  2. import (
  3. "context"
  4. "go-common/app/interface/main/creative/conf"
  5. "go-common/app/interface/main/creative/dao/whitelist"
  6. accmdl "go-common/app/interface/main/creative/model/account"
  7. "go-common/app/interface/main/creative/service"
  8. "go-common/library/log"
  9. "time"
  10. )
  11. const (
  12. _creator = 0
  13. _playerAttention = 2
  14. _taskMiddleUp = 3
  15. _taskSmallUp = 4
  16. _taskNotUp = 5
  17. )
  18. //Service struct
  19. type Service struct {
  20. c *conf.Config
  21. Creator map[int64]int64
  22. PlayerAttention map[int64]int64
  23. list map[int]map[int64]int64
  24. wl *whitelist.Dao
  25. }
  26. //New get service
  27. func New(c *conf.Config, rpcdaos *service.RPCDaos) *Service {
  28. s := &Service{
  29. c: c,
  30. wl: whitelist.New(c),
  31. }
  32. s.loadAll()
  33. s.loadCreator()
  34. s.loadSwitch()
  35. go s.loadproc()
  36. return s
  37. }
  38. func (s *Service) loadCreator() {
  39. s.Creator = s.list[_creator]
  40. }
  41. func (s *Service) loadSwitch() {
  42. s.PlayerAttention = s.list[_playerAttention]
  43. }
  44. func (s *Service) loadAll() {
  45. wlList, err := s.wl.List(context.TODO())
  46. if err != nil {
  47. return
  48. }
  49. temp := make(map[int]map[int64]int64)
  50. for _, v := range wlList {
  51. if _, ok := temp[v.Tp]; !ok {
  52. temp[v.Tp] = make(map[int64]int64)
  53. }
  54. temp[v.Tp][v.Mid] = v.Mid
  55. }
  56. s.list = temp
  57. }
  58. // loadproc
  59. func (s *Service) loadproc() {
  60. for {
  61. time.Sleep(5 * time.Minute)
  62. s.loadAll()
  63. s.loadCreator()
  64. s.loadSwitch()
  65. }
  66. }
  67. // UploadInfoForCreator fn, 判断创作姬的能否进入app投稿的权限
  68. func (s *Service) UploadInfoForCreator(mf *accmdl.MyInfo, mid int64) (uploadinfo map[string]interface{}) {
  69. uploadinfo = make(map[string]interface{})
  70. uploadinfo["info"] = 1
  71. uploadinfo["reason"] = "账号已经过校验,可以投稿。"
  72. if mf == nil {
  73. log.Error("accmdl.MyInfo is nil mid(%d)", mid)
  74. return
  75. }
  76. if mf.Banned {
  77. uploadinfo["info"] = 0
  78. uploadinfo["reason"] = "您的账号已被禁用,无法投稿。"
  79. }
  80. if !mf.Activated {
  81. uploadinfo["info"] = 0
  82. uploadinfo["reason"] = "您的账号尚未激活,无法投稿。"
  83. }
  84. if mf.IdentifyInfo.Code != 0 {
  85. uploadinfo["info"] = 0
  86. uploadinfo["reason"] = "投稿需要进行实名制登记,请先在PC上进行登记。"
  87. }
  88. var ok bool
  89. if _, ok = s.Creator[mf.Mid]; !ok && (mf.Level < 4) {
  90. uploadinfo["info"] = 0
  91. uploadinfo["reason"] = "亲爱的用户,应用内测期间仅开放给部分用户。敬请谅解。"
  92. }
  93. return
  94. }
  95. // Viewinfo fn, 判断创作姬的能否进入app查看的权限
  96. func (s *Service) Viewinfo(mf *accmdl.MyInfo) (uploadinfo map[string]interface{}) {
  97. uploadinfo = make(map[string]interface{})
  98. var ok bool
  99. uploadinfo["info"] = 0
  100. uploadinfo["reason"] = "亲爱的用户,应用内测期间仅开放给部分用户。敬请谅解。"
  101. if _, ok = s.Creator[mf.Mid]; ok {
  102. uploadinfo["info"] = 1
  103. uploadinfo["reason"] = ""
  104. }
  105. return
  106. }
  107. // UploadInfoForMainApp fn, 判断主APP的能否进入app投稿的权限
  108. func (s *Service) UploadInfoForMainApp(mf *accmdl.MyInfo, plat string, mid int64) (uploadinfo map[string]interface{}, white int) {
  109. uploadinfo = make(map[string]interface{})
  110. uploadinfo["info"] = 1
  111. uploadinfo["reason"] = "账号已经过校验,可以投稿。"
  112. uploadinfo["url"] = ""
  113. if mf == nil {
  114. log.Error("accmdl.MyInfo is nil mid(%d)", mid)
  115. return
  116. }
  117. if mf.Banned {
  118. uploadinfo["info"] = 0
  119. uploadinfo["reason"] = "您的账号已被禁用,无法投稿。"
  120. }
  121. if !mf.Activated {
  122. uploadinfo["info"] = 0
  123. uploadinfo["reason"] = "您的账号尚未激活,无法投稿。"
  124. }
  125. if mf.IdentifyInfo.Code != 0 {
  126. uploadinfo["info"] = 0
  127. if plat == "android" {
  128. uploadinfo["reason"] = "投稿需要进行实名认证,请前往“设置”-“账号与隐私”中进行认证"
  129. } else if plat == "ios" {
  130. uploadinfo["reason"] = "投稿需要进行实名认证,请前往“设置”-“安全隐私”中进行认证"
  131. } else {
  132. uploadinfo["reason"] = "投稿需要进行实名制登记,请先在PC上进行登记。"
  133. }
  134. uploadinfo["url"] = s.c.H5Page.Passport
  135. }
  136. if mf.Level < 1 {
  137. uploadinfo["info"] = 0
  138. uploadinfo["reason"] = "LV1以上用户才能投稿哦,请在头像下方进入答题升级吧~"
  139. }
  140. white, _ = uploadinfo["info"].(int)
  141. return
  142. }
  143. //TaskWhiteList 任务系统白名单 0-关闭 1-开启
  144. func (s *Service) TaskWhiteList(mid int64) (res int8) {
  145. blackList := []int64{208259, 2, 9099524}
  146. for _, v := range blackList {
  147. if v == mid {
  148. return 0
  149. }
  150. }
  151. // internal whiteList
  152. if s.c.Whitelist.DataMids != nil {
  153. for _, m := range s.c.Whitelist.DataMids {
  154. if m == mid {
  155. return 1
  156. }
  157. }
  158. }
  159. if s.c.TaskCondition.WhiteSwitch {
  160. if s.list != nil {
  161. if _, ok := s.list[_taskNotUp][mid]; ok {
  162. return 1
  163. }
  164. if _, ok := s.list[_taskSmallUp][mid]; ok {
  165. return 1
  166. }
  167. if _, ok := s.list[_taskMiddleUp][mid]; ok {
  168. return 1
  169. }
  170. }
  171. } else {
  172. return 0
  173. }
  174. return 0
  175. }