rai_serve_count.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package services
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hongze_cygx/models/rai_serve"
  6. "hongze/hongze_cygx/utils"
  7. "time"
  8. )
  9. //权益服务统计
  10. // Redis对列消息中的结构体
  11. type RaiServeBillRedis struct {
  12. Content string `comment:"服务内容说明"`
  13. UserId int `comment:"用户ID"`
  14. ComapnyId int `comment:"公司ID"`
  15. SourceId int `comment:"来源ID"`
  16. Source string `comment:"来源"`
  17. RegisterPlatform int `comment:"来源 1小程序,2:网页"`
  18. ViewTime time.Time `comment:"浏览时间"`
  19. }
  20. // 权益服务统计添加到Redis队列中
  21. func CygxRaiServeBillRedisAdd(content, source string, userId, comapnyId, sourceId, registerPlatform int, viewTime time.Time) (err error) {
  22. defer func() {
  23. if err != nil {
  24. fmt.Println(err)
  25. msg := fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId)
  26. go utils.SendAlarmMsg("权益服务统计添加到Redis队列中,写入Redis队列消息失败 CygxRaiServeBillRedisAdd:"+err.Error()+msg, 2)
  27. }
  28. }()
  29. log := &rai_serve.RaiServeBillRedis{Content: content, Source: source, UserId: userId, ComapnyId: comapnyId, SourceId: sourceId, RegisterPlatform: registerPlatform, ViewTime: viewTime}
  30. if utils.Re == nil {
  31. err := utils.Rc.LPush(utils.CYGX_RAI_SERVE_BILL_KEY, log)
  32. if err != nil {
  33. fmt.Println("RaiServeBillRedis LPush Err:" + err.Error())
  34. }
  35. }
  36. return
  37. }
  38. //func init() {
  39. // CygxRaiServeBillRedisAddReduce()
  40. //}
  41. // CygxRaiServeBillRedisAddReduce 处理权益服务统计
  42. func CygxRaiServeBillRedisAddReduce() (err error) {
  43. for {
  44. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  45. utils.Rc.Brpop(utils.CYGX_RAI_SERVE_BILL_KEY, func(b []byte) {
  46. var log rai_serve.RaiServeBillRedis
  47. if err := json.Unmarshal(b, &log); err != nil {
  48. fmt.Println("json unmarshal wrong!")
  49. go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+err.Error()+string(b), 2)
  50. }
  51. switch log.Source {
  52. case utils.CYGX_OBJ_YANXUANSPECIAL: //研选专栏阅读记录处理
  53. go RaiServeBillRedisAddReduceByYanxuanspecial(log)
  54. fmt.Println("研选专栏阅读记录处理")
  55. break
  56. default:
  57. fmt.Println(string(b))
  58. go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
  59. }
  60. })
  61. }
  62. }
  63. // 处理权益服务统计->研选阅读记录
  64. func RaiServeBillRedisAddReduceByYanxuanspecial(log rai_serve.RaiServeBillRedis) (err error) {
  65. source := log.Source
  66. userId := log.UserId
  67. sourceId := log.SourceId
  68. defer func() {
  69. if err != nil {
  70. fmt.Println(err)
  71. go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId), 2)
  72. }
  73. }()
  74. //activityId := log.ActivityId
  75. //userId := log.UserId
  76. //
  77. //activtyPayTotal := GetCygxOrderVirtualAssetdCountTotal(userId, activityId) // 单场付费活动不处理扣点明细
  78. //if activtyPayTotal > 0 {
  79. // return
  80. //}
  81. //
  82. ////获取活动是否扣点以及扣点规则明细
  83. //activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  84. //if e != nil && e.Error() != utils.ErrNoRow() {
  85. // err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  86. // return
  87. //}
  88. //if activityPointsSetDetail == nil {
  89. // return
  90. //}
  91. //if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
  92. // return // 如果不是报名即扣点的这种形式,那么就不做任何处理
  93. //}
  94. //
  95. //activityInfo, e := models.GetAddActivityInfoById(activityId)
  96. //if e != nil {
  97. // err = errors.New("GetAddActivityInfoById" + e.Error())
  98. // return
  99. //}
  100. //user, e := models.GetWxUserItemByUserId(userId)
  101. //if e != nil {
  102. // err = errors.New("GetWxUserItemByUserId" + e.Error())
  103. // return
  104. //}
  105. //companyId := user.CompanyId
  106. ////判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  107. //total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(companyId)
  108. //if e != nil {
  109. // err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  110. // return
  111. //}
  112. //var companyPointsNum float64
  113. //if total == 0 {
  114. // companyPointsNum = 0
  115. // itemPointsCompany := new(models.CygxActivityPointsCompany)
  116. //
  117. // itemPointsCompany.CompanyId = companyId
  118. // itemPointsCompany.CompanyName = user.CompanyName
  119. // itemPointsCompany.CreateTime = time.Now()
  120. // itemPointsCompany.ModifyTime = time.Now()
  121. //
  122. // e = models.AddCygxActivityPointsCompany(itemPointsCompany)
  123. // if e != nil {
  124. // err = errors.New("AddCygxActivityPointsCompany, Err: " + e.Error())
  125. // return
  126. // }
  127. //} else {
  128. // // 获取用户所在公司剩余的点
  129. // companyPointsNum, e = models.GetCompanyPoints(user.CompanyId)
  130. // if e != nil && e.Error() != utils.ErrNoRow() {
  131. // err = errors.New("GetCompanyPoints, Err: " + e.Error())
  132. // return
  133. // }
  134. //
  135. //}
  136. //
  137. ////获取需要添加的流水信息
  138. //var items []*models.CygxActivityPointsBill
  139. //item := new(models.CygxActivityPointsBill)
  140. //item.UserId = user.UserId
  141. //item.ActivityId = activityId
  142. //item.CreateTime = time.Now()
  143. //item.Mobile = user.Mobile
  144. //item.Email = user.Email
  145. //item.CompanyId = user.CompanyId
  146. //item.CompanyName = user.CompanyName
  147. //item.RealName = user.RealName
  148. //item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  149. //item.RegisterPlatform = log.RegisterPlatform
  150. //item.AdminId = log.AdminId
  151. //item.Source = log.Source
  152. //item.ChartPermissionId = activityInfo.ChartPermissionId
  153. //item.DoType = 1
  154. //item.Content = activityInfo.ActivityName + "--报名"
  155. //item.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
  156. //items = append(items, item)
  157. //
  158. ////更新对应机构的剩余点数
  159. //var itemCompanys []*models.CygxActivityPointsCompany
  160. //itemCompany := new(models.CygxActivityPointsCompany)
  161. //itemCompany.CompanyId = user.CompanyId
  162. //itemCompany.Points = item.Points
  163. //itemCompany.ModifyTime = time.Now()
  164. //itemCompanys = append(itemCompanys, itemCompany)
  165. //
  166. //err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  167. return
  168. }