mailmgr.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package mail
  2. import (
  3. "bet24.com/log"
  4. "bet24.com/servers/common"
  5. inventory "bet24.com/servers/micros/item_inventory/proto"
  6. item "bet24.com/servers/micros/item_inventory/proto"
  7. pb "bet24.com/servers/micros/userservices/proto"
  8. )
  9. type mailmgr struct {
  10. }
  11. func newMailMgr() *mailmgr {
  12. log.Debug("mail manager running")
  13. return &mailmgr{}
  14. }
  15. // 发送用户邮件(客服留言)
  16. func (this *mailmgr) sendUserMail(userId int, title, content, img string) (int, []*pb.UserMail) {
  17. var mails []*pb.UserMail
  18. msgId, sendImgCount := sendUserMail(userId, title, content, img)
  19. if msgId <= 0 {
  20. return sendImgCount, mails
  21. }
  22. mails = append(mails, &pb.UserMail{
  23. Id: msgId,
  24. Title: title,
  25. FromUserId: userId,
  26. ToUserId: -1,
  27. Content: content,
  28. IsRead: false,
  29. Crdate: common.GetTimeStamp(),
  30. OpUserId: -1,
  31. OpUserName: "",
  32. })
  33. return sendImgCount, mails
  34. }
  35. // 获取用户邮件(客服留言)
  36. func (this *mailmgr) getUserMails(userId, mailId int) (int, []*pb.UserMail) {
  37. return getUserMails(userId, mailId)
  38. }
  39. // 获取用户邮件提示
  40. func (this *mailmgr) getUserMailTip(userId int) bool {
  41. return getUserMailTip(userId)
  42. }
  43. // 发送系统邮件(含附件)
  44. func (this *mailmgr) sendSysMail(userId int, sm *pb.SysMail) bool {
  45. return sendSysMail(userId, sm)
  46. }
  47. // 获取系统邮件(含附件)
  48. func (this *mailmgr) getSysMails(userId, sysMsgId int) []*pb.SysMail {
  49. return getSysMails(userId, sysMsgId)
  50. }
  51. // 获取系统邮件信息(含附件)
  52. func (this *mailmgr) getSysMail(userId, sysMsgId int) *pb.SysMail {
  53. return getSysMail(userId, sysMsgId)
  54. }
  55. // 领取所有邮件
  56. func (this *mailmgr) updateAllSysMail(userId int) (int, []item.ItemPack) {
  57. //领取邮件附件
  58. mails := getGiftMails(userId)
  59. if mails == nil {
  60. log.Debug("updateAllSysMail userId=%d not exist", userId)
  61. return 0, nil
  62. }
  63. var items []item.ItemPack
  64. for _, v := range mails {
  65. // 2=领取、3=删除状态
  66. if v.Status == pb.SysMail_Status_Gift || v.Status == pb.SysMail_Status_Del {
  67. continue
  68. }
  69. // 没有附件的邮件
  70. if v.Tools == nil {
  71. // 未读
  72. if v.Status == pb.SysMail_Status_UnRead {
  73. updateSysMail(userId, v.Id, pb.SysMail_Status_Read)
  74. }
  75. continue
  76. }
  77. //修改为已领取状态
  78. if retCode := updateSysMail(userId, v.Id, pb.SysMail_Status_Gift); retCode != 1 {
  79. log.Debug("updateAllSysMail fail userId=%d sysMsgId=%d status=%d", userId, v.Id, pb.SysMail_Status_Gift)
  80. continue
  81. }
  82. //发送道具
  83. if success := inventory.AddItems(userId, v.Tools, "领取系统邮件附件", common.LOGTYPE_ATTACHMENT_GIFT); !success {
  84. log.Debug("updateAllSysMail AddItems fail userId=%d sysMsgId=%d status=%d", userId, v.Id, pb.SysMail_Status_Gift)
  85. continue
  86. }
  87. items = append(items, v.Tools...)
  88. }
  89. return 1, item.GroupItems(items)
  90. }
  91. // 修改系统邮件
  92. func (this *mailmgr) updateSysMail(userId, sysMsgId, status int) (int, []item.ItemPack) {
  93. //领取邮件附件
  94. m := this.getSysMail(userId, sysMsgId)
  95. if m == nil {
  96. log.Debug("updateSysMail userId=%d sysMsgId=%d status=%d not exist", userId, sysMsgId, status)
  97. return 0, nil
  98. }
  99. //读系统邮件
  100. if status == pb.SysMail_Status_Read {
  101. //不是未读状态
  102. if m.Status != pb.SysMail_Status_UnRead {
  103. return 0, nil
  104. }
  105. //置为读状态
  106. ret := updateSysMail(userId, sysMsgId, status)
  107. return ret, nil
  108. }
  109. //已领取
  110. if m.Status == pb.SysMail_Status_Gift {
  111. log.Debug("updateSysMail 不能重复领取, userId=%d sysMsgId=%d status=%d", userId, sysMsgId, status)
  112. return 0, nil
  113. }
  114. //邮件附件
  115. if m.Tools == nil {
  116. log.Debug("updateSysMail 没有附件, userId=%d sysMsgId=%d status=%d", userId, sysMsgId, status)
  117. return 0, nil
  118. }
  119. //修改为已领取状态
  120. if ret := updateSysMail(userId, sysMsgId, status); ret != 1 {
  121. log.Debug("updateSysMail fail userId=%d sysMsgId=%d status=%d", userId, sysMsgId, status)
  122. return 0, nil
  123. }
  124. //发送道具
  125. if success := inventory.AddItems(userId, m.Tools, "领取系统邮件附件", common.LOGTYPE_ATTACHMENT_GIFT); !success {
  126. log.Debug("updateSysMail AddItems fail userId=%d sysMsgId=%d status=%d", userId, sysMsgId, status)
  127. return 0, nil
  128. }
  129. return 1, m.Tools
  130. }
  131. // 删除系统邮件
  132. func (this *mailmgr) delSysMail(userId, sysMsgId int) int {
  133. return delSysMail(userId, sysMsgId)
  134. }