package svc import ( "github.com/go-redis/redis/v8" _ "github.com/go-sql-driver/mysql" "github.com/robfig/cron/v3" "github.com/zeromicro/go-zero/core/logx" "gitlink.org.cn/jcce-pcm/pcm-coordinator/rpc/internal/config" "gitlink.org.cn/jcce-pcm/utils/tool" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" ) type ServiceContext struct { Config config.Config DbEngin *gorm.DB Cron *cron.Cron RedisClient *redis.Client } func NewServiceContext(c config.Config) *ServiceContext { //启动Gorm支持 dbEngin, _ := gorm.Open(mysql.Open(c.DB.DataSource), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ SingularTable: true, // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `t_user` }, Logger: logger.Default.LogMode(logger.Info), }) //添加snowflake支持 err := tool.InitSnowflake(c.SnowflakeConf.MachineId) if err != nil { logx.Errorf("InitSnowflake err: ", err) panic("InitSnowflake err") } return &ServiceContext{ Cron: cron.New(cron.WithSeconds()), Config: c, DbEngin: dbEngin, RedisClient: redis.NewClient(&redis.Options{ Addr: c.RedisConf.Host, Password: c.RedisConf.Pass, DB: 0, // use default DB }), } }