teachermgr.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package teacher
  2. import (
  3. "fmt"
  4. "sync"
  5. "bet24.com/log"
  6. "bet24.com/servers/common"
  7. "bet24.com/servers/coreservice/friend"
  8. "bet24.com/servers/coreservice/serviceconfig"
  9. inventory "bet24.com/servers/micros/item_inventory/proto"
  10. item "bet24.com/servers/micros/item_inventory/proto"
  11. mail "bet24.com/servers/micros/userservices/proto"
  12. user "bet24.com/servers/micros/userservices/proto"
  13. )
  14. type teachermgr struct {
  15. sysAwards []*bindAward
  16. lock *sync.RWMutex
  17. }
  18. func newTeacherMgr() *teachermgr {
  19. obj := new(teachermgr)
  20. obj.lock = &sync.RWMutex{}
  21. obj.loadAward()
  22. log.Debug("teacher manager running")
  23. return obj
  24. }
  25. func (t *teachermgr) loadAward() {
  26. list := sysBindAward()
  27. t.lock.Lock()
  28. defer t.lock.Unlock()
  29. t.sysAwards = list
  30. return
  31. }
  32. // 注册
  33. func (t *teachermgr) register(userId int) int {
  34. return register(userId)
  35. }
  36. // 师父信息
  37. func (t *teachermgr) info(teacherId int) *teacher {
  38. myInfo := info(teacherId)
  39. t.lock.RLock()
  40. defer t.lock.RUnlock()
  41. myInfo.Withdraw = serviceconfig.Server.MinWithdraw
  42. myInfo.BindAwards = t.sysAwards
  43. return myInfo
  44. }
  45. // 绑定
  46. func (t *teachermgr) bind(studentId, teacherId, isSendMail int) (int, []item.ItemPack) {
  47. retCode, amount := bind(studentId, teacherId)
  48. if retCode != 1 {
  49. return retCode, nil
  50. }
  51. var items []item.ItemPack
  52. items = append(items, item.ItemPack{
  53. ItemId: item.Item_Chip,
  54. Count: amount,
  55. })
  56. // 发邮件
  57. if isSendMail == 1 {
  58. mail.SendSysMail(studentId, &mail.SysMail{
  59. Id: 0,
  60. Title: "Hadiah agen pengikat",
  61. Content: fmt.Sprintf("Selamat, Anda telah berhasil mengikat agen %d dan mendapatkan hadiah mengikat. Harap terima hadiah lampiran tepat waktu.", teacherId),
  62. Status: 0,
  63. SourceName: "绑定代理",
  64. Crdate: common.GetTimeStamp(),
  65. Tools: items,
  66. })
  67. } else if isSendMail == 0 { // 直接发送奖励
  68. // 发送道具
  69. if success := inventory.AddItems(studentId, items, "绑定代理", common.LOGTYPE_BIND_TEACHER); !success {
  70. log.Error("teachermgr.bind AddItems fail studentId=%d teacherId=%d items=%+v", studentId, teacherId, items)
  71. }
  72. }
  73. return retCode, items
  74. }
  75. // 徒弟列表
  76. func (t *teachermgr) students(teacherId int) []*student {
  77. list := students(teacherId)
  78. for _, v := range list {
  79. u := user.GetUserInfo(v.StudentID)
  80. if u == nil {
  81. log.Error("teacher.students userId=%d ==> %+v", v.StudentID, v)
  82. continue
  83. }
  84. v.NickName = u.NickName
  85. v.Sex = u.Sex
  86. v.FaceId = u.FaceId
  87. v.FaceUrl = u.FaceUrl
  88. v.VipLevel = u.Vip
  89. v.IsFriend = friend.IfFriend(teacherId, v.StudentID)
  90. }
  91. return list
  92. }
  93. // 收益列表
  94. func (t *teachermgr) profitList(teacherId, days, pageIndex, pageSize int) (int, []*profit) {
  95. recordCount, list := profitList(teacherId, days, pageIndex, pageSize)
  96. for _, v := range list {
  97. u := user.GetUserInfo(v.StudentID)
  98. if u == nil {
  99. log.Error("teacher.profitList userId=%d ==> %+v", v.StudentID, v)
  100. continue
  101. }
  102. v.NickName = u.NickName
  103. v.Sex = u.Sex
  104. v.FaceId = u.FaceId
  105. v.FaceUrl = u.FaceUrl
  106. v.VipLevel = u.Vip
  107. v.IsFriend = friend.IfFriend(teacherId, v.StudentID)
  108. }
  109. return recordCount, list
  110. }
  111. // 扣减收益
  112. func (t *teachermgr) reduceProfit(userId, profit, profitType int) int {
  113. return reduceProfit(userId, profit, profitType)
  114. }