servicecontext.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Code scaffolded by goctl. Safe to edit.
  2. // goctl 1.10.2
  3. package svc
  4. import (
  5. "udeServer/internal/audit"
  6. "udeServer/internal/config"
  7. "udeServer/internal/model"
  8. "udeServer/internal/ws"
  9. "github.com/zeromicro/go-zero/core/logx"
  10. "github.com/zeromicro/go-zero/core/stores/sqlx"
  11. "github.com/zeromicro/go-zero/rest"
  12. )
  13. type ServiceContext struct {
  14. Config config.Config
  15. DB sqlx.SqlConn
  16. DirectoryModel model.TDirectoryModel
  17. KeyModel model.TKeyModel
  18. ServiceModel model.TServiceModel
  19. ApplicationCredModel model.TApplicationCredentialsModel
  20. // 审计日志(移植自 sdf-serve)
  21. SystemLogModel model.TSystemLogModel
  22. ConfigModel model.TConfigModel
  23. LogArchiveRecordModel model.TLogArchiveRecordModel
  24. LogRestoreRecordModel model.TLogRestoreRecordModel
  25. MinioClient *audit.MinioClient
  26. LogConfigManager *audit.LogConfigManager
  27. LogMiddleware rest.Middleware
  28. SpanRecorder *audit.SpanRecorder
  29. // 运维诊断 WebSocket(移植自 sdf-serve)
  30. WsServer *ws.Service
  31. }
  32. func NewServiceContext(c config.Config) *ServiceContext {
  33. conn := sqlx.MustNewConn(c.MySQL)
  34. configModel := model.NewTConfigModel(conn)
  35. systemLogModel := model.NewTSystemLogModel(conn)
  36. // 动态配置 + MinIO 客户端;t_config 未建/缺行时降级运行(client 保持 nil)
  37. minioClient, logConfig := audit.GetGlobalConfig(configModel)
  38. logx.Infof("audit logging initialized: minio=%t logLevel=%q hmacSecretSet=%t",
  39. minioClient != nil, logConfig.LogRecordLevel, logConfig.HmacSecret != "")
  40. logMiddleware := audit.NewLogMiddleware().Handle(systemLogModel, configModel, c.Name)
  41. // type=2 接口日志:四个远程外挂接口调用的 Recorder(见 internal/audit/span.go)
  42. spanRecorder := audit.NewSpanRecorder(systemLogModel, configModel, c.Name)
  43. return &ServiceContext{
  44. Config: c,
  45. DB: conn,
  46. DirectoryModel: model.NewTDirectoryModel(conn),
  47. KeyModel: model.NewTKeyModel(conn),
  48. ServiceModel: model.NewTServiceModel(conn),
  49. ApplicationCredModel: model.NewTApplicationCredentialsModel(conn),
  50. // 运维诊断 WebSocket(移植自 sdf-serve)
  51. WsServer: ws.NewService(),
  52. SystemLogModel: systemLogModel,
  53. ConfigModel: configModel,
  54. LogArchiveRecordModel: model.NewTLogArchiveRecordModel(conn),
  55. LogRestoreRecordModel: model.NewTLogRestoreRecordModel(conn),
  56. MinioClient: minioClient,
  57. LogConfigManager: logConfig,
  58. LogMiddleware: logMiddleware,
  59. SpanRecorder: spanRecorder,
  60. }
  61. }