package cmd import ( "context" "fmt" "log" "net/http" _ "net/http/pprof" db "management/internal/db/sqlc" "management/internal/erpserver" "management/internal/erpserver/biz" "management/internal/erpserver/handler" "management/internal/pkg/binding" "management/internal/pkg/config" "management/internal/pkg/logger" "management/internal/pkg/middleware" "management/internal/pkg/redis" "management/internal/pkg/session" "management/internal/pkg/snowflake" "management/internal/pkg/tpl" "github.com/spf13/cobra" ) var erpCmd = &cobra.Command{ Use: "erp", Short: "Start erp management server", Long: `A Service to erp management`, Run: func(cmd *cobra.Command, args []string) { err := runErp(cmd.Context()) if err != nil { log.Fatalf("run erp failed: %v", err) } }, } func init() { erpCmd.Flags().StringVarP(&configPath, "config", "c", "", "Custom config file path") rootCmd.AddCommand(erpCmd) } func runErp(ctx context.Context) error { go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }() conf, err := config.New(configPath) checkError(err) logger.New(conf.App.Prod) store, err := db.NewIStore(ctx, conf.DB) checkError(err) // 初始化数据 // dbinit.InitSeed() // mustInit(redis.Init) redis, err := redis.New(conf.Redis) checkError(err) session := session.New(store.Pool(), conf.App.Prod) mustInit(snowflake.Init) biz := biz.NewBiz(store, redis, session) middleware := middleware.New(biz.SystemV1(), session) rander, err := tpl.New(session, biz.SystemV1().MenuBiz()) checkError(err) err = binding.SetValidatorTrans("zh") checkError(err) handler := handler.NewHandler(conf, rander, redis, session, biz, middleware) address := fmt.Sprintf("%s:%d", conf.App.Host, conf.App.Port) log.Printf("Starting erp manage server on %s", address) server := InitServer(address, erpserver.NewRouter(handler, middleware)) return server.ListenAndServe() } func checkError(err error) { if err != nil { log.Fatalf("init failed: %v", err) } }