Files
jx-callback/main.go
suyl 81c11062f2 aa
2021-06-15 15:12:22 +08:00

171 lines
5.0 KiB
Go

package main
import (
"flag"
"fmt"
"net"
"net/http"
_ "net/http/pprof"
"os"
"time"
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
"git.rosy.net.cn/baseapi/utils"
"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"
beego "github.com/astaxie/beego/server/web"
// 导入缺省订单调度器
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/jx-callback/globals/beegodb"
_ "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/partner/jds"
_ "git.rosy.net.cn/jx-callback/business/jxstore/partner/mt"
_ "git.rosy.net.cn/jx-callback/business/jxstore/partner/pdd"
_ "git.rosy.net.cn/jx-callback/business/jxstore/partner/taobao"
_ "git.rosy.net.cn/jx-callback/globals/api"
_ "git.rosy.net.cn/jx-callback/routers"
)
var (
GitCommit string
GitBranch string
GitState string
GitSummary string
BuildDate string
Version string
)
func Init() {
beegodb.Init()
buildTime, err := time.ParseInLocation(time.RFC3339, BuildDate, time.UTC)
if err == nil {
buildTime = buildTime.Local()
}
cms.InitServiceInfo(Version, buildTime, GitCommit)
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.RefreshWeixin2Token(); err != nil {
// globals.SugarLogger.Errorf("RefreshWeixin2Token failed with error:%s", err)
// return
// }
// if err := tasks.RefreshWeixin3Token(); err != nil {
// globals.SugarLogger.Errorf("RefreshWeixin3Token failed with error:%s", err)
// return
// }
// if err := tasks.RefreshPushToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshPushToken failed with error:%s", err)
// return
// }
// 延时的原因是等回调准备好
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)
}
}
})
}
cms.ResetJobTimers()
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)
}
}()
l, err := net.Listen("tcp", "http://print.jxcs.net:8000")
if err != nil {
fmt.Println("listen error:", err)
return
}
for {
c, err := l.Accept()
if err != nil {
fmt.Println("accept error:", err)
break
}
globals.SugarLogger.Debugf("tcp socket:", utils.Format4Output(c, true))
go handleConn(c)
}
beego.Run()
}
}
func handleConn(c net.Conn) {
defer c.Close()
for {
globals.SugarLogger.Debugf("tcp socket read:", utils.Format4Output(c, true))
}
}