You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
5.0 KiB
160 lines
5.0 KiB
package http |
|
|
|
import ( |
|
"net/http" |
|
|
|
"go-common/app/interface/main/app-wall/conf" |
|
"go-common/app/interface/main/app-wall/service/mobile" |
|
"go-common/app/interface/main/app-wall/service/offer" |
|
"go-common/app/interface/main/app-wall/service/operator" |
|
pingSvr "go-common/app/interface/main/app-wall/service/ping" |
|
"go-common/app/interface/main/app-wall/service/telecom" |
|
"go-common/app/interface/main/app-wall/service/unicom" |
|
"go-common/app/interface/main/app-wall/service/wall" |
|
"go-common/library/ecode" |
|
log "go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/net/http/blademaster/middleware/auth" |
|
"go-common/library/net/http/blademaster/middleware/proxy" |
|
"go-common/library/net/http/blademaster/middleware/verify" |
|
"go-common/library/net/http/blademaster/render" |
|
) |
|
|
|
var ( |
|
// depend service |
|
verifySvc *verify.Verify |
|
authSvc *auth.Auth |
|
// self service |
|
wallSvc *wall.Service |
|
offerSvc *offer.Service |
|
unicomSvc *unicom.Service |
|
mobileSvc *mobile.Service |
|
pingSvc *pingSvr.Service |
|
telecomSvc *telecom.Service |
|
operatorSvc *operator.Service |
|
) |
|
|
|
func Init(c *conf.Config) { |
|
initService(c) |
|
// init external router |
|
engineOut := bm.DefaultServer(c.BM.Outer) |
|
outerRouter(engineOut) |
|
// init Outer server |
|
if err := engineOut.Start(); err != nil { |
|
log.Error("engineOut.Start() error(%v)", err) |
|
panic(err) |
|
} |
|
} |
|
|
|
// initService init services. |
|
func initService(c *conf.Config) { |
|
verifySvc = verify.New(nil) |
|
authSvc = auth.New(&auth.Config{DisableCSRF: true}) |
|
// init self service |
|
wallSvc = wall.New(c) |
|
offerSvc = offer.New(c) |
|
unicomSvc = unicom.New(c) |
|
mobileSvc = mobile.New(c) |
|
pingSvc = pingSvr.New(c) |
|
telecomSvc = telecom.New(c) |
|
operatorSvc = operator.New(c) |
|
} |
|
|
|
func outerRouter(e *bm.Engine) { |
|
e.Ping(ping) |
|
// formal api |
|
proxyHandler := proxy.NewZoneProxy("sh004", "http://sh001-app.bilibili.com") |
|
w := e.Group("/x/wall") |
|
{ |
|
w.GET("/get", walls) |
|
op := w.Group("/operator", authSvc.Guest) |
|
{ |
|
op.GET("/ip", userOperatorIP) |
|
op.GET("/m/ip", mOperatorIP) |
|
op.GET("/reddot", reddot) |
|
} |
|
of := w.Group("/offer") |
|
{ |
|
of.GET("/exist", wallExist) |
|
of.POST("/click/shike", proxyHandler, wallShikeClick) |
|
of.GET("/click/dotinapp", wallDotinappClick) |
|
of.GET("/click/gdt", wallGdtClick) |
|
of.GET("/click/toutiao", wallToutiaoClick) |
|
of.POST("/active", proxyHandler, verifySvc.Verify, wallActive) |
|
of.GET("/active/test", wallTestActive) |
|
of.POST("/active2", proxyHandler, verifySvc.Verify, wallActive2) |
|
} |
|
uc := w.Group("/unicom", proxyHandler) |
|
{ |
|
// unicomSync |
|
uc.POST("/orders", ordersSync) |
|
uc.POST("/advance", advanceSync) |
|
uc.POST("/flow", flowSync) |
|
uc.POST("/ip", inIPSync) |
|
// unicom |
|
uc.GET("/userflow", verifySvc.Verify, userFlow) |
|
uc.GET("/user/userflow", bm.CORS(), userFlowState) |
|
uc.GET("/userstate", verifySvc.Verify, userState) |
|
uc.GET("/state", verifySvc.Verify, unicomState) |
|
uc.GET("/m/state", unicomStateM) |
|
uc.POST("/pack", authSvc.User, bm.CORS(), pack) |
|
uc.GET("/userip", bm.CORS(), isUnciomIP) |
|
uc.GET("/user/ip", bm.CORS(), userUnciomIP) |
|
uc.POST("/order/pay", bm.CORS(), orderPay) |
|
uc.POST("/order/cancel", bm.CORS(), orderCancel) |
|
uc.POST("/order/smscode", authSvc.Guest, bm.CORS(), smsCode) |
|
uc.POST("/order/bind", authSvc.Guest, bm.CORS(), addUnicomBind) |
|
uc.POST("/order/untie", authSvc.Guest, bm.CORS(), releaseUnicomBind) |
|
uc.GET("/bind/info", authSvc.Guest, bm.CORS(), userBind) |
|
uc.GET("/pack/list", authSvc.Guest, bm.CORS(), packList) |
|
uc.POST("/order/pack/receive", authSvc.Guest, bm.CORS(), packReceive) |
|
uc.POST("/order/pack/flow", authSvc.Guest, bm.CORS(), flowPack) |
|
uc.GET("/order/userlog", authSvc.User, bm.CORS(), userBindLog) |
|
uc.GET("/pack/log", userPacksLog) |
|
uc.GET("/bind/state", verifySvc.Verify, welfareBindState) |
|
} |
|
mb := w.Group("/mobile", proxyHandler) |
|
{ |
|
mb.POST("/orders.so", ordersMobileSync) |
|
mb.GET("/activation", verifySvc.Verify, mobileActivation) |
|
mb.GET("/status", verifySvc.Verify, mobileState) |
|
mb.GET("/user/status", bm.CORS(), userMobileState) |
|
} |
|
tl := w.Group("/telecom", proxyHandler) |
|
{ |
|
tl.POST("/orders.so", bm.CORS(), telecomOrdersSync) |
|
tl.POST("/flow.so", bm.CORS(), telecomMsgSync) |
|
tl.POST("/order/pay", bm.CORS(), telecomPay) |
|
tl.POST("/order/pay/cancel", bm.CORS(), cancelRepeatOrder) |
|
tl.GET("/order/consent", verifySvc.Verify, orderConsent) |
|
tl.GET("/order/list", verifySvc.Verify, orderList) |
|
tl.GET("/order/user/flow", bm.CORS(), phoneFlow) |
|
tl.POST("/send/sms", verifySvc.Verify, phoneSendSMS) |
|
tl.GET("/verification", verifySvc.Verify, phoneVerification) |
|
tl.GET("/order/state", bm.CORS(), orderState) |
|
} |
|
} |
|
} |
|
|
|
//returnDataJSON return json no message |
|
func returnDataJSON(c *bm.Context, data map[string]interface{}, err error) { |
|
code := http.StatusOK |
|
if data == nil { |
|
c.JSON(data, err) |
|
return |
|
} |
|
if _, ok := data["message"]; !ok { |
|
data["message"] = "" |
|
} |
|
if err != nil { |
|
c.Error = err |
|
bcode := ecode.Cause(err) |
|
data["code"] = bcode.Code() |
|
} else { |
|
if _, ok := data["code"]; !ok { |
|
data["code"] = ecode.OK |
|
} |
|
data["ttl"] = 1 |
|
} |
|
c.Render(code, render.MapJSON(data)) |
|
}
|
|
|