Files
jx-callback/main.go
suyl c2c9f99c68 aa
2021-06-24 14:34:14 +08:00

216 lines
5.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"flag"
"fmt"
"io"
"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)
}
}()
if globals.IsProductEnv() {
l, err := net.Listen("tcp", ":8000")
if err != nil {
fmt.Println("listen error:", err)
return
}
for {
c, err := l.Accept()
if err != nil {
fmt.Println("accept error:", err)
break
}
go handleConn(c)
}
}
beego.Run()
}
}
func handleConn(c net.Conn) {
if c == nil {
fmt.Println("conn is nil")
return
}
defer c.Close()
//reader := bufio.NewReader(c)
buffer := make([]byte, 1024)
for {
n, err := c.Read(buffer)
//ReadString阻塞直到读到\n
//msg, err := reader.ReadString('\n')
if err != nil {
if err == io.EOF {
fmt.Println("connection close 1")
} else {
fmt.Println("ReadString err", err)
}
return
}
fmt.Println("read data", string(buffer[:n]))
b := []byte("ok")
c.Write(b)
}
}
//func handleConn(c net.Conn) {
// if c == nil {
// fmt.Println("conn is nil")
// return
// }
// defer c.Close()
// //reader := bufio.NewReader(c)
// buffer := make([]byte, 1024)
// for {
// n, err := c.Read(buffer)
// if err != nil {
// if err == io.EOF {
// fmt.Println("connection close")
// } else {
// fmt.Println("ReadString err", err)
// }
// return
// }
// fmt.Println("read data", buffer[:n])
// b := []byte("ok")
// c.Write(b)
// }
//}