You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

notify.go 1.6 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package reward
  2. import (
  3. "code.gitea.io/gitea/models"
  4. "code.gitea.io/gitea/modules/log"
  5. "code.gitea.io/gitea/modules/redis/redis_client"
  6. "code.gitea.io/gitea/modules/redis/redis_key"
  7. "code.gitea.io/gitea/modules/timeutil"
  8. "encoding/json"
  9. "fmt"
  10. "time"
  11. )
  12. func NotifyRewardOperation(userId, amount int64, sourceType models.SourceType, rewardType models.RewardType, operateType models.RewardOperateType) {
  13. switch sourceType {
  14. case models.SourceTypeRunCloudbrainTask:
  15. return
  16. }
  17. data := &models.UserRewardOperationRedis{
  18. UserId: userId,
  19. Amount: amount,
  20. RewardType: rewardType,
  21. OperateType: operateType,
  22. }
  23. b, _ := json.Marshal(data)
  24. redis_client.ZAdd(redis_key.RewardOperateNotification(), string(b), float64(time.Now().Unix()))
  25. }
  26. func GetRewardOperation(since, until timeutil.TimeStamp) []models.UserRewardOperation {
  27. list, err := redis_client.ZRangeByScore(redis_key.RewardOperateNotification(), float64(since), float64(until))
  28. if err != nil {
  29. log.Error("GetRewardOperation ZRangeByScore error. %v", err)
  30. return nil
  31. }
  32. if len(list) == 0 {
  33. log.Debug("GetRewardOperation list length = 0")
  34. return nil
  35. }
  36. r := make([]models.UserRewardOperation, len(list))
  37. for _, v := range list {
  38. t := models.UserRewardOperationRedis{}
  39. json.Unmarshal([]byte(v), &t)
  40. r = append(r, models.UserRewardOperation{
  41. UserId: t.UserId,
  42. Msg: v,
  43. })
  44. }
  45. redis_client.ZRemRangeByScore(redis_key.RewardOperateNotification(), float64(since), float64(until))
  46. return r
  47. }
  48. func GetRewardOperateMsg(u models.UserRewardOperationRedis) string {
  49. return u.OperateType.Show() + fmt.Sprint(u.Amount) + u.RewardType.Show()
  50. }