servicecontext.go 2.2 KB

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