From 5c4d34554f9ea509e2cd1f67d2dc211e84811ea3 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 29 Jul 2018 20:43:25 +0800 Subject: [PATCH] - build version, git info added. --- VERSION | 1 + business/controller/controller.go | 92 +++++++++++++++--------------- main.go | 94 ++++++++++++++++++++++++------- 3 files changed, 123 insertions(+), 64 deletions(-) create mode 100644 VERSION diff --git a/VERSION b/VERSION new file mode 100644 index 000000000..8acdd82b7 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.1 diff --git a/business/controller/controller.go b/business/controller/controller.go index 2ed4155b0..6edca7dc6 100644 --- a/business/controller/controller.go +++ b/business/controller/controller.go @@ -81,55 +81,57 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica func LoadPendingOrders() { orders := OrderManager.LoadPendingOrders() globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders)) - bills := WaybillManager.LoadPendingWaybills() - globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills)) - var sortOrders StatusTimerSlice - for _, order := range orders { - if order.Status > model.OrderStatusNew { - status := model.Order2Status(order) - sortOrders = append(sortOrders, status) + ordersCount := len(orders) + if ordersCount > 0 { + bills := WaybillManager.LoadPendingWaybills() + globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills)) + var sortOrders StatusTimerSlice + for _, order := range orders { + if order.Status > model.OrderStatusNew { + status := model.Order2Status(order) + sortOrders = append(sortOrders, status) + } + // order.Status = model.OrderStatusNew // 就是要以实际order状态来调用scheduler.OnOrderNew + order.StatusTime = order.OrderCreatedAt + sortOrders = append(sortOrders, order) } - // order.Status = model.OrderStatusNew // 就是要以实际order状态来调用scheduler.OnOrderNew - order.StatusTime = order.OrderCreatedAt - sortOrders = append(sortOrders, order) - } - for _, bill := range bills { - if bill.Status > model.WaybillStatusNew { - bill2 := *bill - sortOrders = append(sortOrders, &bill2) + for _, bill := range bills { + if bill.Status > model.WaybillStatusNew { + bill2 := *bill + sortOrders = append(sortOrders, &bill2) + } + bill.Status = model.WaybillStatusNew + bill.StatusTime = bill.WaybillCreatedAt + sortOrders = append(sortOrders, bill) } - bill.Status = model.WaybillStatusNew - bill.StatusTime = bill.WaybillCreatedAt - sortOrders = append(sortOrders, bill) - } - sort.Sort(sortOrders) - - sleepGap := maxTimeHandlePendingOrder / time.Duration(len(sortOrders)) - if sleepGap > maxSleepGapHandlePendingOrder { - sleepGap = maxSleepGapHandlePendingOrder - } - lastTime := time.Now() - for _, item := range sortOrders { - if order, ok := item.(*model.GoodsOrder); ok { - jxutils.CallMsgHandlerAsync(func() { - scheduler.CurrentScheduler.OnOrderNew(order, true) - }, order.VendorOrderID) - } else if status, ok := item.(*model.OrderStatus); ok { - jxutils.CallMsgHandlerAsync(func() { - scheduler.CurrentScheduler.OnOrderStatusChanged(status, true) - }, status.VendorOrderID) - } else { - bill := item.(*model.Waybill) - jxutils.CallMsgHandlerAsync(func() { - scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, true) - }, bill.VendorOrderID) + sort.Sort(sortOrders) + sleepGap := maxTimeHandlePendingOrder / time.Duration(ordersCount) + if sleepGap > maxSleepGapHandlePendingOrder { + sleepGap = maxSleepGapHandlePendingOrder } - curTime := time.Now() - timeout := sleepGap - curTime.Sub(lastTime) - if timeout > 0 { - time.Sleep(timeout) + lastTime := time.Now() + for _, item := range sortOrders { + if order, ok := item.(*model.GoodsOrder); ok { + jxutils.CallMsgHandlerAsync(func() { + scheduler.CurrentScheduler.OnOrderNew(order, true) + }, order.VendorOrderID) + } else if status, ok := item.(*model.OrderStatus); ok { + jxutils.CallMsgHandlerAsync(func() { + scheduler.CurrentScheduler.OnOrderStatusChanged(status, true) + }, status.VendorOrderID) + } else { + bill := item.(*model.Waybill) + jxutils.CallMsgHandlerAsync(func() { + scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, true) + }, bill.VendorOrderID) + } + curTime := time.Now() + timeout := sleepGap - curTime.Sub(lastTime) + if timeout > 0 { + time.Sleep(timeout) + } + lastTime = curTime } - lastTime = curTime } } diff --git a/main.go b/main.go index 03c12e8e4..70a0a08cb 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,10 @@ package main import ( + "flag" + "fmt" + "os" + bzcon "git.rosy.net.cn/jx-callback/business/controller" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" @@ -11,31 +15,83 @@ import ( "github.com/astaxie/beego" ) +var ( + GitCommit string + GitBranch string + GitState string + GitSummary string + BuildDate string + Version string +) + func init() { // globals.Init() db.Init() api.Init() } -func main() { - if beego.BConfig.RunMode == "prod" { - if err := tasks.RefreshWeixinToken(); err != nil { - globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) - return - } - if err := tasks.RefreshElmToken(); err != nil { - globals.SugarLogger.Errorf("RefreshElmToken failed with error:%s", err) - return - } - if globals.CallLegacyMsgHandler { - controller.InitOrder() - } - } - bzcon.LoadPendingOrders() +// 返回true表示非运行服务 +func checkCmdFlags() bool { + var flagGitCommit bool + var flagGitBranch bool + var flagGitState bool + var flagGitSummary bool + var flagBuildDate bool + var flagVersion bool + var flagFullInfo bool - if beego.BConfig.RunMode == "dev" { - beego.BConfig.WebConfig.DirectoryIndex = true - beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" + flag.BoolVar(&flagGitCommit, "gitcommit", false, "get gitcommit info") + flag.BoolVar(&flagGitBranch, "gitbranch", false, "get gitbranch info") + flag.BoolVar(&flagGitState, "gitstate", false, "get gitstate info") + flag.BoolVar(&flagGitSummary, "gitsummary", false, "get gitsummary info") + flag.BoolVar(&flagBuildDate, "builddate", false, "get builddate info") + flag.BoolVar(&flagVersion, "version", false, "get version info") + flag.BoolVar(&flagFullInfo, "fullinfo", false, "get fullinfo info") + flag.Parse() + + if flagGitCommit || flagFullInfo { + fmt.Println(GitCommit) + } + if flagGitBranch || flagFullInfo { + fmt.Println(GitBranch) + } + if flagGitState || flagFullInfo { + fmt.Println(GitState) + } + if flagGitSummary || flagFullInfo { + fmt.Println(GitSummary) + } + if flagBuildDate || flagFullInfo { + fmt.Println(BuildDate) + } + if flagVersion || flagFullInfo { + fmt.Println(Version) + } + + return len(os.Args) > 1 +} + +func main() { + if !checkCmdFlags() { + if beego.BConfig.RunMode == "prod" { + if err := tasks.RefreshWeixinToken(); err != nil { + globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) + return + } + if err := tasks.RefreshElmToken(); err != nil { + globals.SugarLogger.Errorf("RefreshElmToken failed with error:%s", err) + return + } + if globals.CallLegacyMsgHandler { + controller.InitOrder() + } + } + bzcon.LoadPendingOrders() + + if beego.BConfig.RunMode == "dev" { + beego.BConfig.WebConfig.DirectoryIndex = true + beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" + } + beego.Run() } - beego.Run() }