github.com/infraboard/keyauth@v0.8.1/apps/verifycode/impl/impl.go (about)

     1  package impl
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/infraboard/mcube/app"
     7  	"github.com/infraboard/mcube/logger"
     8  	"github.com/infraboard/mcube/logger/zap"
     9  	"go.mongodb.org/mongo-driver/mongo"
    10  	"go.mongodb.org/mongo-driver/x/bsonx"
    11  	"google.golang.org/grpc"
    12  
    13  	"github.com/infraboard/keyauth/apps/system"
    14  	"github.com/infraboard/keyauth/apps/token"
    15  	"github.com/infraboard/keyauth/apps/token/issuer"
    16  	"github.com/infraboard/keyauth/apps/user"
    17  	"github.com/infraboard/keyauth/apps/verifycode"
    18  	"github.com/infraboard/keyauth/conf"
    19  )
    20  
    21  var (
    22  	// Service 服务实例
    23  	svr = &service{}
    24  )
    25  
    26  type service struct {
    27  	col    *mongo.Collection
    28  	issuer issuer.Issuer
    29  	system system.Service
    30  	log    logger.Logger
    31  	user   user.ServiceServer
    32  	token  token.ServiceServer
    33  
    34  	verifycode.UnimplementedServiceServer
    35  }
    36  
    37  func (s *service) Config() error {
    38  	db := conf.C().Mongo.GetDB()
    39  	col := db.Collection("verify_code")
    40  
    41  	indexs := []mongo.IndexModel{
    42  		{
    43  			Keys: bsonx.Doc{{Key: "create_at", Value: bsonx.Int32(-1)}},
    44  		},
    45  	}
    46  
    47  	_, err := col.Indexes().CreateMany(context.Background(), indexs)
    48  	if err != nil {
    49  		return err
    50  	}
    51  	s.col = col
    52  
    53  	s.system = app.GetInternalApp(system.AppName).(system.Service)
    54  	s.user = app.GetGrpcApp(user.AppName).(user.ServiceServer)
    55  	s.token = app.GetGrpcApp(token.AppName).(token.ServiceServer)
    56  
    57  	is, err := issuer.NewTokenIssuer()
    58  	if err != nil {
    59  		return err
    60  	}
    61  	s.issuer = is
    62  	s.log = zap.L().Named("Verify Code")
    63  	return nil
    64  }
    65  
    66  func (s *service) Name() string {
    67  	return verifycode.AppName
    68  }
    69  
    70  func (s *service) Registry(server *grpc.Server) {
    71  	verifycode.RegisterServiceServer(server, svr)
    72  }
    73  
    74  func init() {
    75  	app.RegistryGrpcApp(svr)
    76  }