package cmd import ( "fmt" "github.com/codinl/go-logger" "github.com/gin-gonic/gin" "github.com/spf13/cobra" "mh-server/config" "mh-server/lib/auth" //"mh-server/lib/sms" "mh-server/lib/utils" "mh-server/model" "mh-server/router" ) func runServer() { server := gin.Default() gin.SetMode(gin.DebugMode) router.ConfigAppRouter(server) //OrderCancelId() err := server.Run(fmt.Sprintf(":%d", config.AppConfig.ServerPort)) if err != nil { logger.Error(err) return } } var serverCmd = &cobra.Command{ Use: "server", Short: "A brief description of your command", Long: `A longer description.`, Run: func(cmd *cobra.Command, args []string) { defer model.CloseDB() runServer() }, } func init() { rootCmd.AddCommand(serverCmd) auth.Init(config.AppConfig.JwtUserAccessKey, config.AppConfig.JwtUserRefreshKey, config.AppConfig.JwtUserAccessExpire, config.AppConfig.JwtUserRefreshExpire) //sms.Init(config.AppConfig.SmsAccessKeyID, config.AppConfig.SmsAccessKeySecret, // config.AppConfig.SmsSignName, config.AppConfig.SmsTemplateCode) utils.InitSnowFlakeByGo() } //func OrderCancelId() { // //ids := []uint32{8288, 8265} // ids := []uint32{8335} // for _, id := range ids { // //OrderCancel(id) // OrderCancel(id) // } // //} // //func OrderCancel(id uint32) { // InitDBProd() // model.DB = DBProd // var order model.Order // err := model.NewOrderQuerySet(model.DB).IDEq(id).One(&order) // if err != nil { // fmt.Println("err:", err) // } // // outTradeNo, err := model.GetWxPayExpressFeeRefundRecord(order.ID) // if err != nil { // logger.Error("err:", err) // return // } // // orderSn :=model.GetOrderSn() // err = model.UserOpenMemberRecord{Uid: uint32(order.Uid), OpenNo: orderSn, OrderId: order.ID, OrderType: 2}.Insert() // if err != nil { // logger.Error(errors.New("WebPay err")) // return // } // // orderRefund := wxpay.OrderRefund{ // OutTradeNo: outTradeNo, // OutRefundNo: orderSn, // NotifyUrl: "", // Amount: wxpay.OrderRefundAmount{ // Refund: order.PayPrice, // Total: order.PayPrice, // Currency: "CNY", // }, // } // bytes, _ := json.Marshal(order) // fmt.Println("订单取消:", string(bytes)) // orderRefundJson, _ := json.Marshal(&orderRefund) // fmt.Println("订单取消 orderRefundJson:", string(orderRefundJson)) // //err = wxpay.WxPayOrderRefund(orderRefund) // err = wxpay.TransactionOrderRefund(orderRefund) // if err != nil { // logger.Error("err:", err) // return // } //} // //var DBProd *gorm.DB // //func InitDBProd() { // var err error // dialect := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", // "mh_pro", "fLeytnBFCRB553ab", "39.108.188.218", "3306", // "mh_pro") // // DBProd, err = gorm.Open("mysql", dialect) // if err != nil { // fmt.Println("Connect Database Error, error = ", err) // panic(err) // } // DBProd.DB().SetMaxOpenConns(1000) // DBProd.DB().SetMaxIdleConns(500) // DBProd.DB().SetConnMaxLifetime(time.Second * 10) // //DBProd.LogMode(true) // DBProd.LogMode(false) // DBProd.SingularTable(true) // DBProd.AutoMigrate( // ) // // if err := DBProd.DB().Ping(); err != nil { // fmt.Println("Ping Database Fail, error = ", err) // panic(err) // } // fmt.Println("DB init success") //} //func main() { // // router := gin.Default() // // // v1 // r1 := router.Group("/test/v1.0") // { // r1.GET("/testrestart", controller.Testshutdown) // } //router.Run( utils.GlobalObject.ServiceHost + ":" + utils.GlobalObject.ServicePort) // srv := &http.Server{ // Addr: utils.GlobalObject.ServiceHost + ":" + utils.GlobalObject.ServicePort, // Handler: router, // } // go func() { // // service connections // if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { // log.Fatalf("listen: %s", err) // } // }() // // // Wait for interrupt signal to gracefully shutdown the server with // // a timeout of 5 seconds. // quit := make(chan os.Signal) // // kill (no param) default send syscanll.SIGTERM // // kill -2 is syscall.SIGINT // // kill -9 is syscall. SIGKILL but can"t be catch, so don't need add it // signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) // <-quit // log.Println("Shutdown Server ...") // // ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) // defer cancel() // if err := srv.Shutdown(ctx); err != nil { // log.Fatal("Server Shutdown:", err) // } // // catching ctx.Done(). timeout of 5 seconds. // select { // case <-ctx.Done(): // log.Println("timeout of 10 seconds.") // } // log.Println("Server exiting") //}