github.com/infraboard/keyauth@v0.8.1/apps/user/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/department"
    14  	"github.com/infraboard/keyauth/apps/domain"
    15  	"github.com/infraboard/keyauth/apps/policy"
    16  	"github.com/infraboard/keyauth/apps/user"
    17  	"github.com/infraboard/keyauth/conf"
    18  )
    19  
    20  var (
    21  	// Service 服务实例
    22  	svr = &service{}
    23  )
    24  
    25  type service struct {
    26  	log    logger.Logger
    27  	col    *mongo.Collection
    28  	policy policy.ServiceServer
    29  	depart department.ServiceServer
    30  	domain domain.ServiceServer
    31  
    32  	user.UnimplementedServiceServer
    33  }
    34  
    35  func (s *service) Config() error {
    36  	s.policy = app.GetGrpcApp(policy.AppName).(policy.ServiceServer)
    37  	s.depart = app.GetGrpcApp(department.AppName).(department.ServiceServer)
    38  	s.domain = app.GetGrpcApp(domain.AppName).(domain.ServiceServer)
    39  
    40  	db := conf.C().Mongo.GetDB()
    41  	uc := db.Collection("user")
    42  
    43  	indexs := []mongo.IndexModel{
    44  		{
    45  			Keys: bsonx.Doc{{Key: "create_at", Value: bsonx.Int32(-1)}},
    46  		},
    47  		{
    48  			Keys: bsonx.Doc{{Key: "department_id", Value: bsonx.Int32(-1)}},
    49  		},
    50  	}
    51  
    52  	_, err := uc.Indexes().CreateMany(context.Background(), indexs)
    53  	if err != nil {
    54  		return err
    55  	}
    56  
    57  	s.col = uc
    58  	s.log = zap.L().Named("User")
    59  	return nil
    60  }
    61  
    62  func (s *service) Name() string {
    63  	return user.AppName
    64  }
    65  
    66  func (s *service) Registry(server *grpc.Server) {
    67  	user.RegisterServiceServer(server, svr)
    68  }
    69  
    70  func init() {
    71  	app.RegistryGrpcApp(svr)
    72  }