summary.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package service
  2. import (
  3. "context"
  4. "go-common/app/job/main/account-summary/model"
  5. "go-common/library/log"
  6. )
  7. // Syncable is
  8. type Syncable interface {
  9. Key() (string, error)
  10. Marshal() (map[string][]byte, error)
  11. }
  12. // SyncToHBase is
  13. func (s *Service) SyncToHBase(ctx context.Context, body Syncable) error {
  14. key, err := body.Key()
  15. if err != nil {
  16. log.Error("Failed to struct key with body: %+v: %+v", body, err)
  17. return err
  18. }
  19. data, err := body.Marshal()
  20. if err != nil {
  21. log.Error("Failed to sync to hbase with key: %s, body: %+v: %+v", key, body, err)
  22. return err
  23. }
  24. defer s.logging(ctx, key)
  25. return s.dao.Save(ctx, key, data)
  26. }
  27. func (s *Service) logging(ctx context.Context, key string) {
  28. sum, _ := s.dao.GetByKey(ctx, key)
  29. log.Info("Sync to hbase result: key: %s, summary: %+v", key, sum)
  30. }
  31. // SyncOne is
  32. func (s *Service) SyncOne(ctx context.Context, mid int64) error {
  33. // member
  34. if err := s.syncMember(ctx, mid); err != nil {
  35. log.Error("Failed to sync member with mid: %d: %+v", mid, err)
  36. }
  37. // relation
  38. if err := s.syncRelationStat(ctx, mid); err != nil {
  39. log.Error("Failed to sync relation stat with mid: %d: %+v", mid, err)
  40. }
  41. // block
  42. if err := s.syncBlock(ctx, mid); err != nil {
  43. log.Error("Failed to sync block with mid: %d: %+v", mid, err)
  44. }
  45. // passport
  46. if err := s.syncPassportSummary(ctx, mid); err != nil {
  47. log.Error("Failed to sync passport summary with mid: %d: %+v", mid, err)
  48. }
  49. return nil
  50. }
  51. // GetOne is
  52. func (s *Service) GetOne(ctx context.Context, mid int64) (*model.AccountSummary, error) {
  53. return s.dao.GetByKey(ctx, model.MidKey(mid))
  54. }