package main import ( "flag" "fmt" "net/http" _ "net/http/pprof" "os" "time" "github.com/astaxie/beego" "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/utils" _ "git.rosy.net.cn/jx-callback/globals/api/apimanager" "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch" // 导入缺省订单调度器 "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxstore/misc" "git.rosy.net.cn/jx-callback/business/jxutils/tasks" "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai" "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api2" "git.rosy.net.cn/jx-callback/globals/beegodb" _ "git.rosy.net.cn/jx-callback/business/partner/printer/feie" _ "git.rosy.net.cn/jx-callback/business/partner/printer/xiaowm" _ "git.rosy.net.cn/jx-callback/business/partner/printer/yilianyun" _ "git.rosy.net.cn/jx-callback/business/partner/printer/zhongwu" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/jx" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm" _ "git.rosy.net.cn/jx-callback/business/partner/purchase/weimob/wsc" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/alipay" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/dingding" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/mobile" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/password" _ "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" _ "git.rosy.net.cn/jx-callback/business/jxstore/act" _ "git.rosy.net.cn/jx-callback/routers" ) var ( GitCommit string GitBranch string GitState string GitSummary string BuildDate string Version string ) func Init() { beegodb.Init() if globals.EnableWXAuth2 { api2.Init() } defsch.Init() buildTime, err := time.ParseInLocation(time.RFC3339, BuildDate, time.UTC) if err == nil { buildTime = buildTime.Local() } cms.InitServiceInfo(Version, buildTime, GitCommit) if globals.IsProductEnv() { ebai.CurPurchaseHandler.StartRefreshComment() mtwm.CurPurchaseHandler.StartRefreshComment() } misc.Init() } // 返回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 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() { Init() if err := tasks.RefreshWeixinToken(); err != nil { globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) return } // if err := tasks.RefreshWeimobToken(); err != nil { // globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err) // return // } if err := tasks.RefreshYilianyunToken(); err != nil { globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err) return } orderman.LoadPendingOrders() // 延时的原因是等回调准备好 if globals.IsProductEnv() || beego.BConfig.RunMode == "beta" { utils.AfterFuncWithRecover(2*time.Second, func() { if err := tasks.RefreshDingDingToken(); err != nil { globals.SugarLogger.Errorf("RefreshDingDingToken failed with error:%s", err) return } if globals.IsProductEnv() { api.DingDingAPI.DeleteCallback() if err := api.DingDingAPI.RegisterCallback([]string{dingdingapi.CBTagUserAddOrg, dingdingapi.CBTagUserModifyOrg, dingdingapi.CBTagUserLeaveOrg}, beego.AppConfig.DefaultString("dingdingCallbackToken", ""), beego.AppConfig.DefaultString("dingdingCallbackAESKey", ""), beego.AppConfig.DefaultString("dingdingCallbackURL", "")); err != nil { globals.SugarLogger.Warnf("dingding RegisterCallback failed with error:%v", err) } } }) } if beego.BConfig.RunMode != "prod" { beego.BConfig.WebConfig.DirectoryIndex = true beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" } go func() { if globals.IsMainProductEnv() { http.ListenAndServe("0.0.0.0:6061", nil) } else { http.ListenAndServe("0.0.0.0:6060", nil) } }() beego.Run() } }