tianyuan-api-server/apps/user/internal/svc/servicecontext.go
2024-10-12 20:41:55 +08:00

48 lines
1.8 KiB
Go

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
WalletsModel model.WalletsModel
DeductionsModel model.DeductionsModel
ApiRequestsModel model.ApiRequestsModel
SecretRpc sentinel.SecretClient
ProductRpc sentinel.ProductClient
}
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),
WalletsModel: model.NewWalletsModel(db, c.CacheRedis),
DeductionsModel: model.NewDeductionsModel(db, c.CacheRedis),
ApiRequestsModel: model.NewApiRequestsModel(db, c.CacheRedis),
SecretRpc: sentinel.NewSecretClient(zrpc.MustNewClient(c.SentinelRpc).Conn()),
ProductRpc: sentinel.NewProductClient(zrpc.MustNewClient(c.SentinelRpc).Conn()),
}
}