- build version, git info added.

This commit is contained in:
gazebo
2018-07-29 20:43:25 +08:00
parent 58e91a8f5c
commit 5c4d34554f
3 changed files with 123 additions and 64 deletions

1
VERSION Normal file
View File

@@ -0,0 +1 @@
0.0.1

View File

@@ -81,55 +81,57 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
func LoadPendingOrders() { func LoadPendingOrders() {
orders := OrderManager.LoadPendingOrders() orders := OrderManager.LoadPendingOrders()
globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders)) globals.SugarLogger.Infof("LoadPendingOrders orders count:%d", len(orders))
bills := WaybillManager.LoadPendingWaybills()
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
var sortOrders StatusTimerSlice ordersCount := len(orders)
for _, order := range orders { if ordersCount > 0 {
if order.Status > model.OrderStatusNew { bills := WaybillManager.LoadPendingWaybills()
status := model.Order2Status(order) globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
sortOrders = append(sortOrders, status) 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 for _, bill := range bills {
order.StatusTime = order.OrderCreatedAt if bill.Status > model.WaybillStatusNew {
sortOrders = append(sortOrders, order) bill2 := *bill
} sortOrders = append(sortOrders, &bill2)
for _, bill := range bills { }
if bill.Status > model.WaybillStatusNew { bill.Status = model.WaybillStatusNew
bill2 := *bill bill.StatusTime = bill.WaybillCreatedAt
sortOrders = append(sortOrders, &bill2) sortOrders = append(sortOrders, bill)
} }
bill.Status = model.WaybillStatusNew sort.Sort(sortOrders)
bill.StatusTime = bill.WaybillCreatedAt sleepGap := maxTimeHandlePendingOrder / time.Duration(ordersCount)
sortOrders = append(sortOrders, bill) if sleepGap > maxSleepGapHandlePendingOrder {
} sleepGap = maxSleepGapHandlePendingOrder
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)
} }
curTime := time.Now() lastTime := time.Now()
timeout := sleepGap - curTime.Sub(lastTime) for _, item := range sortOrders {
if timeout > 0 { if order, ok := item.(*model.GoodsOrder); ok {
time.Sleep(timeout) 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
} }
} }

94
main.go
View File

@@ -1,6 +1,10 @@
package main package main
import ( import (
"flag"
"fmt"
"os"
bzcon "git.rosy.net.cn/jx-callback/business/controller" bzcon "git.rosy.net.cn/jx-callback/business/controller"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
@@ -11,31 +15,83 @@ import (
"github.com/astaxie/beego" "github.com/astaxie/beego"
) )
var (
GitCommit string
GitBranch string
GitState string
GitSummary string
BuildDate string
Version string
)
func init() { func init() {
// globals.Init() // globals.Init()
db.Init() db.Init()
api.Init() api.Init()
} }
func main() { // 返回true表示非运行服务
if beego.BConfig.RunMode == "prod" { func checkCmdFlags() bool {
if err := tasks.RefreshWeixinToken(); err != nil { var flagGitCommit bool
globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) var flagGitBranch bool
return var flagGitState bool
} var flagGitSummary bool
if err := tasks.RefreshElmToken(); err != nil { var flagBuildDate bool
globals.SugarLogger.Errorf("RefreshElmToken failed with error:%s", err) var flagVersion bool
return var flagFullInfo bool
}
if globals.CallLegacyMsgHandler {
controller.InitOrder()
}
}
bzcon.LoadPendingOrders()
if beego.BConfig.RunMode == "dev" { flag.BoolVar(&flagGitCommit, "gitcommit", false, "get gitcommit info")
beego.BConfig.WebConfig.DirectoryIndex = true flag.BoolVar(&flagGitBranch, "gitbranch", false, "get gitbranch info")
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" 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()
} }