package svc import ( "github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/zrpc" "tianyuan-api/apps/sentinel/sentinel" "tianyuan-api/apps/user/internal/config" "tianyuan-api/apps/user/internal/model" ) type ServiceContext struct { Config config.Config Redis *redis.Redis UserModel model.UsersModel // 用户表的模型 EnterpriseModel model.EnterpriseInfoModel EnterpriseAuthModel model.EnterpriseAuthModel SecretRpc sentinel.SecretClient } func NewServiceContext(c config.Config) *ServiceContext { db := sqlx.NewMysql(c.DataSource) // 创建数据库连接 redisConf := redis.RedisConf{ Host: c.CacheRedis[0].Host, Pass: c.CacheRedis[0].Pass, Type: c.CacheRedis[0].Type, // Redis 节点类型,如 "node" } // 使用 MustNewRedis 来初始化 Redis 客户端 rds := redis.MustNewRedis(redisConf) return &ServiceContext{ Config: c, Redis: rds, // 单独使用的 Redis 客户端 UserModel: model.NewUsersModel(db, c.CacheRedis), // 注入UserModel EnterpriseModel: model.NewEnterpriseInfoModel(db, c.CacheRedis), EnterpriseAuthModel: model.NewEnterpriseAuthModel(db, c.CacheRedis), SecretRpc: sentinel.NewSecretClient(zrpc.MustNewClient(c.SentinelRpc).Conn()), } }