Initial commit

This commit is contained in:
Donny
2019-04-22 20:46:32 +08:00
commit 49ab8aadd1
25441 changed files with 4055000 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"http.go",
"local.go",
"mail.go",
"manager.go",
"mng_auth.go",
"mng_role.go",
"mng_user.go",
"package.go",
"publish.go",
],
importpath = "go-common/app/admin/main/macross/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/macross/conf:go_default_library",
"//app/admin/main/macross/model/mail:go_default_library",
"//app/admin/main/macross/model/package:go_default_library",
"//app/admin/main/macross/model/publish:go_default_library",
"//app/admin/main/macross/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/permit:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,77 @@
package http
import (
"go-common/app/admin/main/macross/conf"
"go-common/app/admin/main/macross/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
verifySvc *verify.Verify
authSvc *permit.Permit
svr *service.Service
)
// Init int http service
func Init(c *conf.Config) {
verifySvc = verify.New(nil)
authSvc = permit.New(c.Auth)
svr = service.New(conf.Conf)
// init internal router
engineInner := bm.DefaultServer(c.BM.Inner)
innerRouter(engineInner)
// init internal server
if err := engineInner.Start(); err != nil {
log.Error("engineInner.Start() error(%v) | config(%v)", err, c)
panic(err)
}
// init external router
engineLocal := bm.DefaultServer(c.BM.Local)
localRouter(engineLocal)
// init external server
if err := engineLocal.Start(); err != nil {
log.Error("engineLocal.Start() error(%v) | config(%v)", err, c)
panic(err)
}
}
// innerRouter init outer router api path.
func innerRouter(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
rs := e.Group("/api/v2/macross")
// MANAGER
mng := rs.Group("/manager")
// auth init.
mng.GET("/getAuths", authSvc.Verify(), getAuths)
// user.
mng.GET("/user", user)
mng.POST("/user/save", saveUser)
mng.POST("/user/del", delUser)
// role.
mng.GET("/role", role)
mng.POST("/role/save", saveRole)
mng.POST("/role/del", DelRole)
// auth.
mng.GET("/auth", auth)
mng.POST("/auth/save", saveAuth)
mng.POST("/auth/del", delAuth)
// relation
mng.POST("/setRelation", authRelation)
// dashboard
rs.POST("/dashboard", dashboard)
// sendmail
rs.POST("/sendmail", sendmail)
// package upload
rs.POST("/upload", packageUpload)
// get package list
rs.GET("/archive", packageList)
}
// localRouter init local router api path.
func localRouter(e *bm.Engine) {
e.GET("/x/macross/version", version)
}

View File

@@ -0,0 +1,30 @@
package http
import (
"net/http"
"go-common/app/admin/main/macross/conf"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// ping check server ok.
func ping(c *bm.Context) {
if err := svr.Ping(c); err != nil {
log.Error("resource service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
// version check server version.
func version(c *bm.Context) {
data := map[string]interface{}{
"version": conf.Conf.Version,
}
c.JSONMap(data, nil)
}
// register for discovery
func register(c *bm.Context) {
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,70 @@
package http
import (
"encoding/json"
"fmt"
"go-common/app/admin/main/macross/model/mail"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"io/ioutil"
)
// sendMail send mail
func sendmail(c *bm.Context) {
req := c.Request
res := map[string]interface{}{}
res["message"] = "success"
var attach *mail.Attach
// 附件
file, header, err := c.Request.FormFile("file")
if err == nil {
defer file.Close()
attach = &mail.Attach{}
attach.Name = header.Filename
attach.File = file
unzip := c.Request.Form.Get("unzip")
if unzip != "" && unzip != "0" {
attach.ShouldUnzip = true
} else {
attach.ShouldUnzip = false
}
}
var bs []byte
if attach == nil {
bs, err = ioutil.ReadAll(req.Body)
} else {
// 使用 multipart 上传附件时body 并不是 json因此原来的 json 放在 form 的 json_body 中
jsonBody := c.Request.Form.Get("json_body")
bs = []byte(jsonBody)
}
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, ecode.RequestErr)
return
}
req.Body.Close()
// params
var m = &mail.Mail{}
if err = json.Unmarshal(bs, m); err != nil {
log.Error("http sendmail() json.Unmarshal(%s) error(%v)", string(bs), err)
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, ecode.RequestErr)
return
}
if m.Subject == "" || m.Body == "" || len(m.ToAddresses) == 0 {
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, ecode.RequestErr)
return
}
if err = svr.SendMail(c, m, attach); err != nil {
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, err)
return
}
c.JSONMap(res, nil)
}

View File

@@ -0,0 +1,18 @@
package http
import (
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// getAuths get user.
func getAuths(c *bm.Context) {
var userName string
username, _ := c.Get("username")
userName, ok := username.(string)
if !ok || userName == "" {
c.JSON(nil, ecode.NoLogin)
return
}
c.JSON(svr.GetAuths(c, userName))
}

View File

@@ -0,0 +1,88 @@
package http
import (
"strconv"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// auth get auth by sysid.
func auth(c *bm.Context) {
var (
params = c.Request.Form
system string
)
if system = params.Get("system"); system == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Auth(c, system), nil)
}
// saveAuth save auth.
func saveAuth(c *bm.Context) {
var (
params = c.Request.Form
authID int64
authName, authFlag string
)
if authName = params.Get("auth_name"); authName == "" {
c.JSON(nil, ecode.RequestErr)
return
}
authIDStr := params.Get("auth_id")
authID, _ = strconv.ParseInt(authIDStr, 10, 64)
system := params.Get("system")
if authID == 0 && system == "" {
c.JSON(nil, ecode.RequestErr)
return
}
authFlag = params.Get("auth_flag")
if authID == 0 && system != "" && authFlag == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.SaveAuth(c, authID, system, authName, authFlag))
}
// delAuth del auth.
func delAuth(c *bm.Context) {
var (
params = c.Request.Form
authID int64
err error
)
authIDStr := params.Get("auth_id")
if authID, err = strconv.ParseInt(authIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.DelAuth(c, authID))
}
// authRelation update authRelation.
func authRelation(c *bm.Context) {
var (
params = c.Request.Form
roleID, authID int64
state int
err error
)
roleIDStr := params.Get("role_id")
if roleID, err = strconv.ParseInt(roleIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
authIDStr := params.Get("auth_id")
if authID, err = strconv.ParseInt(authIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
stateStr := params.Get("state")
if state, err = strconv.Atoi(stateStr); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.AuthRelation(c, roleID, authID, state))
}

View File

@@ -0,0 +1,57 @@
package http
import (
"strconv"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// role get role by sysid.
func role(c *bm.Context) {
var (
params = c.Request.Form
system string
)
if system = params.Get("system"); system == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.Role(c, system), nil)
}
// saveRole save role.
func saveRole(c *bm.Context) {
var (
params = c.Request.Form
roleID int64
roleName string
)
if roleName = params.Get("role_name"); roleName == "" {
c.JSON(nil, ecode.RequestErr)
return
}
roleIDStr := params.Get("role_id")
roleID, _ = strconv.ParseInt(roleIDStr, 10, 64)
system := params.Get("system")
if roleID == 0 && system == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.SaveRole(c, roleID, system, roleName))
}
// DelRole del role.
func DelRole(c *bm.Context) {
var (
params = c.Request.Form
roleID int64
err error
)
roleIDStr := params.Get("role_id")
if roleID, err = strconv.ParseInt(roleIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.DelRole(c, roleID))
}

View File

@@ -0,0 +1,63 @@
package http
import (
"strconv"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// user get user by sysid.
func user(c *bm.Context) {
var (
params = c.Request.Form
system string
)
if system = params.Get("system"); system == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(svr.User(c, system), nil)
}
// saveUser save user.
func saveUser(c *bm.Context) {
var (
params = c.Request.Form
roleID, userID int64
name string
err error
)
if name = params.Get("user_name"); name == "" {
c.JSON(nil, ecode.RequestErr)
return
}
roleIDStr := params.Get("role_id")
if roleID, err = strconv.ParseInt(roleIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
userIDStr := params.Get("user_id")
userID, _ = strconv.ParseInt(userIDStr, 10, 64)
system := params.Get("system")
if userID == 0 && system == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.SaveUser(c, roleID, userID, system, name))
}
// delUser del user.
func delUser(c *bm.Context) {
var (
params = c.Request.Form
userID int64
err error
)
userIDStr := params.Get("user_id")
if userID, err = strconv.ParseInt(userIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.DelUser(c, userID))
}

View File

@@ -0,0 +1,108 @@
package http
import (
"fmt"
"go-common/app/admin/main/macross/conf"
"go-common/app/admin/main/macross/model/package"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"path/filepath"
"strings"
)
func packageUpload(c *bm.Context) {
var err = c.Request.ParseMultipartForm(1 << 30)
res := map[string]interface{}{}
res["message"] = "success"
if err != nil {
log.Error("c.Request.ParseMultipartForm() error(%v)", err)
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, err)
return
}
file, header, err := c.Request.FormFile("file")
if err != nil {
log.Error("c.Request.FormFile() error(%v)", err)
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, err)
return
}
defer file.Close()
var (
clientType = strings.ToLower(c.Request.FormValue("client_type"))
appName = c.Request.FormValue("app_name")
pipelineID = c.Request.FormValue("pipeline_id")
apkName = c.Request.FormValue("apk_name")
channel = c.Request.FormValue("channel")
saveDir = filepath.Join(clientType, appName, pipelineID)
pkgInfo upload.PkgInfo
)
if clientType == "" || appName == "" || pipelineID == "" {
errMsg := "client_type, app_name, pipeline_id can not be null"
log.Error(errMsg)
res["message"] = errMsg
c.JSONMap(res, ecode.RequestErr)
return
}
if clientType != "ios" && clientType != "android" {
errMsg := "client_type must be 'ios' or 'android'"
log.Error(errMsg)
res["message"] = errMsg
c.JSONMap(res, ecode.RequestErr)
return
}
pkgInfo.FileName = header.Filename
pkgInfo.SaveDir = filepath.Join(conf.Conf.Property.Package.SavePath, saveDir)
pkgInfo.ClientType = clientType
pkgInfo.Channel = channel
pkgInfo.ApkName = apkName
err = svr.PackageUpload(file, pkgInfo)
if err != nil {
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, err)
return
}
c.JSONMap(res, nil)
}
func packageList(c *bm.Context) {
var (
clientType = strings.ToLower(c.Request.FormValue("client_type"))
appName = c.Request.Form.Get("app_name")
pipelineID = c.Request.Form.Get("pipeline_id")
saveDir = filepath.Join(clientType, appName, pipelineID)
)
res := map[string]interface{}{}
res["message"] = "success"
saveDir = filepath.Join(conf.Conf.Property.Package.SavePath, saveDir)
if clientType == "" || appName == "" || pipelineID == "" {
errMsg := "client_type, app_name, pipeline_id can not be null"
log.Error(errMsg)
res["message"] = errMsg
c.JSONMap(res, ecode.RequestErr)
return
}
if clientType != "ios" && clientType != "android" {
errMsg := "client_type must be 'ios' or 'android'"
log.Error(errMsg)
res["message"] = errMsg
c.JSONMap(res, ecode.RequestErr)
return
}
fileList, err := svr.PackageList(saveDir)
if err != nil {
res["message"] = fmt.Sprintf("%v", err)
c.JSONMap(res, err)
return
}
c.JSON(fileList, nil)
}

View File

@@ -0,0 +1,35 @@
package http
import (
"encoding/json"
"io/ioutil"
"go-common/app/admin/main/macross/model/publish"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// dashboard get user.
func dashboard(c *bm.Context) {
req := c.Request
bs, err := ioutil.ReadAll(req.Body)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
c.JSON(nil, ecode.RequestErr)
return
}
req.Body.Close()
// params
var d = &publish.Dashboard{}
if err = json.Unmarshal(bs, d); err != nil {
log.Error("http dashboard() json.Unmarshal(%s) error(%v)", string(bs), err)
c.JSON(nil, ecode.RequestErr)
return
}
if d.Name == "" || d.Label == "" || d.Commit == "" || d.TextSizeArm64 == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, svr.Dashborad(c, d))
}