package main import ( "aps_crm/conf" "aps_crm/initialize" "aps_crm/middleware" "aps_crm/model" "aps_crm/model/grpc_init" "aps_crm/pkg/logx" "aps_crm/proto/client" "aps_crm/proto/crm_aps" "aps_crm/proto/product_inventory" "aps_crm/router" "fmt" "google.golang.org/grpc" "net" "net/http" "os" "os/signal" "syscall" "time" ) func main() { logx.Init(conf.Conf.Log) defer logx.Sync() //cont := service.NewContainer(service.Type_Container_Docker) //err := cont.Init("123456") //if err != nil { // logx.Errorf("NewContainer Init err:%v", err) // return //} if err := model.Init(); err != nil { logx.Errorf("model Init err:%v", err) return } if err := initialize.Init(); err != nil { logx.Errorf("initialize Init err:%v", err) return } go shutdown() logx.Infof("aps-crm start serve...") server := &http.Server{ Addr: fmt.Sprintf(":%d", conf.Conf.System.Port), Handler: router.InitRouter(), ReadTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second, } //启动grpc客户端 go middleware.InitUserConn() go grpc_init.InitProductInventoryServiceConn() go grpc_init.InitCrmApsGrpcServiceConn() go grpc_init.InitCrmSrmGrpcServiceConn() //启动grpc服务 go func() { ln, err := net.Listen("tcp", ":"+conf.Conf.System.GrpcPort) if err != nil { logx.Errorf("grpc server init error: %v", err.Error()) panic(fmt.Sprintf("grpc server init error: %v", err.Error())) } s := grpc.NewServer() //todo 添加具体服务 product_inventory.RegisterProductInventoryServiceServer(s, &product_inventory.Server{}) crm_aps.RegisterCrmAndApsGrpcServiceServer(s, &crm_aps.Server{}) client.RegisterClientServiceServer(s, &client.Server{}) err = s.Serve(ln) if err != nil { logx.Errorf("grpc server init error: %v", err.Error()) panic(fmt.Sprintf("grpc server init error: %v", err.Error())) } }() middleware.InitRefreshUserManager(5, 5, 3600) middleware.RunRefreshUser() ///定时对活跃用户更新用户详情 logx.Error(server.ListenAndServe().Error()) } func shutdown() { quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGKILL, syscall.SIGQUIT, syscall.SIGINT, syscall.SIGTERM) <-quit middleware.StopRefreshUser() grpc_init.CloseProductInventoryServiceConn() middleware.CloseUserConn() grpc_init.CloseCrmApsGrpcServiceConn() grpc_init.CloseCrmSrmGrpcServiceConn() logx.Infof("aps-crm exited...") os.Exit(0) }