91 lines
2.0 KiB
Go
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)
|
|
}
|
|
}
|