userbillTransfer.go 1012 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package userBillTransfer
  2. import (
  3. "context"
  4. "encoding/json"
  5. "github.com/zeromicro/go-zero/core/logx"
  6. "paopaoimrpc/apps/client/paopaouser"
  7. "paopaoimtask/internal/svc"
  8. "paopaoimtask/mq"
  9. )
  10. /**
  11. 从kafka中读取数据写入到es中和redis中
  12. */
  13. type UserBillTransfer struct {
  14. svcCtx *svc.ServiceContext
  15. logx.Logger
  16. }
  17. func NewUserBillTransfer(svc *svc.ServiceContext) *UserBillTransfer {
  18. return &UserBillTransfer{
  19. svcCtx: svc,
  20. Logger: logx.WithContext(context.Background()),
  21. }
  22. }
  23. func (b *UserBillTransfer) Consume(ctx context.Context, key, value string) error {
  24. var (
  25. data mq.UserBillContentData
  26. )
  27. if err := json.Unmarshal([]byte(value), &data); err != nil {
  28. return err
  29. }
  30. _, err := b.svcCtx.PaoPaoUser.AttachmentProfit(context.Background(), &paopaouser.AttachmentProfitReq{
  31. TweetId: data.PostID,
  32. UserId: data.UserID,
  33. ProfitUserId: data.ProfitUserID,
  34. Price: data.Price,
  35. })
  36. if err != nil {
  37. // 如果消费失败了回滚用户的
  38. return err
  39. }
  40. return nil
  41. }