projectx/cmd/erp.go
2025-04-09 16:16:56 +08:00

91 lines
2.0 KiB
Go

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)
}
}