servicecontext.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package svc
  2. import (
  3. "github.com/elastic/go-elasticsearch/v8"
  4. "github.com/zeromicro/go-zero/core/stores/redis"
  5. "github.com/zeromicro/go-zero/zrpc"
  6. "net/http"
  7. socialRpc "paopaoimrpc/apps/client/paopaosocial"
  8. userRpc "paopaoimrpc/apps/client/paopaouser"
  9. "paopaoimrpc/apps/pkg/constants"
  10. "paopaoimtask/internal/config"
  11. "paopaoimtask/pkg/es"
  12. "paopaoimws/immodels"
  13. "paopaoimws/websocket"
  14. )
  15. type ServiceContext struct {
  16. Config config.Config
  17. WsClient websocket.Client
  18. *redis.Redis
  19. immodels.ChatLogModel
  20. immodels.ConversationModel
  21. EsClient *elasticsearch.Client
  22. userRpc.PaoPaoUser
  23. socialRpc.PaoPaoSocial
  24. }
  25. func NewServiceContext(c config.Config) *ServiceContext {
  26. esClient, err := es.GetEsClient(c.ElasticSearchConf.Host, c.ElasticSearchConf.Port, c.ElasticSearchConf.Username, c.ElasticSearchConf.Password)
  27. if err != nil {
  28. panic(err)
  29. }
  30. userrpc, _ := zrpc.NewClient(c.UserRpc)
  31. socialrpc, _ := zrpc.NewClient(c.SocialRpc)
  32. svc := &ServiceContext{
  33. Config: c,
  34. Redis: redis.MustNewRedis(c.Redisx),
  35. ChatLogModel: immodels.MustChatLogModel(c.Mongo.Url, c.Mongo.Db),
  36. ConversationModel: immodels.MustConversationModel(c.Mongo.Url, c.Mongo.Db),
  37. PaoPaoUser: userRpc.NewPaoPaoUser(userrpc),
  38. PaoPaoSocial: socialRpc.NewPaoPaoSocial(socialrpc),
  39. EsClient: esClient,
  40. }
  41. token, err := svc.GetSystemToken()
  42. if err != nil {
  43. panic(err)
  44. }
  45. header := http.Header{}
  46. header.Set("Authorization", token)
  47. svc.WsClient = websocket.NewClient(c.Ws.Host, websocket.WithClientHeader(header))
  48. return svc
  49. }
  50. func (s *ServiceContext) GetSystemToken() (string, error) {
  51. get, err := s.Redis.Get(constants.REDIS_SYSTEM_ROOT_TOKEN)
  52. return get, err
  53. }