Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@ -0,0 +1,41 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"card.go",
"http.go",
],
importpath = "go-common/app/admin/main/card/server/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/card/conf:go_default_library",
"//app/admin/main/card/model:go_default_library",
"//app/admin/main/card/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/binding:go_default_library",
"//library/net/http/blademaster/middleware/permit: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,230 @@
package http
import (
"io/ioutil"
"mime/multipart"
"net/http"
"go-common/app/admin/main/card/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/binding"
)
func groups(c *bm.Context) {
var err error
arg := new(model.ArgQueryGroup)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(srv.GroupList(c, arg))
}
func cards(c *bm.Context) {
var err error
arg := new(model.ArgQueryCards)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(srv.CardsByGid(c, arg.GroupID))
}
func addGroup(c *bm.Context) {
var err error
username, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
arg := new(model.AddGroup)
arg.Operator = username.(string)
if err = c.Bind(arg); err != nil {
return
}
if len(arg.Name) > _maxnamelen {
c.JSON(nil, ecode.CardNameTooLongErr)
return
}
c.JSON(nil, srv.AddGroup(c, arg))
}
func updateGroup(c *bm.Context) {
var err error
username, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
arg := new(model.UpdateGroup)
arg.Operator = username.(string)
if err = c.Bind(arg); err != nil {
return
}
if len(arg.Name) > _maxnamelen {
c.JSON(nil, ecode.CardNameTooLongErr)
return
}
c.JSON(nil, srv.UpdateGroup(c, arg))
}
func addCard(c *bm.Context) {
var err error
username, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
arg := new(model.AddCard)
arg.Operator = username.(string)
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
return
}
if len(arg.Name) > _maxnamelen {
c.JSON(nil, ecode.CardNameTooLongErr)
return
}
if arg.CardBody, arg.CardFileType, err = file(c, "card_url"); err != nil {
c.JSON(nil, err)
return
}
if arg.CardFileType == "" {
c.JSON(nil, ecode.CardImageEmptyErr)
return
}
if arg.BigCardBody, arg.BigCardFileType, err = file(c, "big_crad_url"); err != nil {
c.JSON(nil, err)
return
}
if arg.BigCardFileType == "" {
c.JSON(nil, ecode.CardImageEmptyErr)
return
}
c.JSON(nil, srv.AddCard(c, arg))
}
func updateCard(c *bm.Context) {
var err error
username, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
arg := new(model.UpdateCard)
arg.Operator = username.(string)
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
return
}
if len(arg.Name) > _maxnamelen {
c.JSON(nil, ecode.CardNameTooLongErr)
return
}
if arg.CardBody, arg.CardFileType, err = file(c, "card_url"); err != nil {
c.JSON(nil, err)
return
}
if arg.BigCardBody, arg.BigCardFileType, err = file(c, "big_crad_url"); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, srv.UpdateCard(c, arg))
}
func cardStateChange(c *bm.Context) {
var err error
arg := new(model.ArgState)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, srv.UpdateCardState(c, arg))
}
func deleteCard(c *bm.Context) {
var err error
arg := new(model.ArgID)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, srv.DeleteCard(c, arg.ID))
}
func groupStateChange(c *bm.Context) {
var err error
arg := new(model.ArgState)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, srv.UpdateGroupState(c, arg))
}
func deleteGroup(c *bm.Context) {
var err error
arg := new(model.ArgID)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, srv.DeleteGroup(c, arg.ID))
}
func cardOrderChange(c *bm.Context) {
var err error
arg := new(model.ArgIds)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, srv.CardOrderChange(c, arg))
}
func groupOrderChange(c *bm.Context) {
var err error
arg := new(model.ArgIds)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, srv.GroupOrderChange(c, arg))
}
func file(c *bm.Context, name string) (body []byte, filetype string, err error) {
var file multipart.File
if file, _, err = c.Request.FormFile(name); err != nil {
if err == http.ErrMissingFile {
err = nil
return
}
err = ecode.RequestErr
return
}
if file == nil {
return
}
defer file.Close()
if body, err = ioutil.ReadAll(file); err != nil {
err = ecode.RequestErr
return
}
filetype = http.DetectContentType(body)
if err = checkImgFileType(filetype); err != nil {
return
}
err = checkFileBody(body)
return
}
func checkImgFileType(filetype string) error {
switch filetype {
case "image/jpeg", "image/jpg":
case "image/png":
default:
return ecode.VipFileTypeErr
}
return nil
}
func checkFileBody(body []byte) error {
if len(body) == 0 {
return ecode.FileNotExists
}
if len(body) > cf.Bfs.MaxFileSize {
return ecode.FileTooLarge
}
return nil
}

View File

@ -0,0 +1,61 @@
package http
import (
"net/http"
"go-common/app/admin/main/card/conf"
"go-common/app/admin/main/card/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
)
const _maxnamelen = 18
var (
srv *service.Service
cf *conf.Config
permitSvc *permit.Permit
)
// Init init
func Init(c *conf.Config, svc *service.Service) {
srv = svc
permitSvc = permit.New2(nil)
cf = c
engine := bm.DefaultServer(c.BM)
route(engine)
if err := engine.Start(); err != nil {
log.Error("bm Start error(%v)", err)
panic(err)
}
}
func route(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
group := e.Group("/x/admin/card", permitSvc.Permit2("CARD"))
group.GET("/group/list", groups)
group.POST("/group/add", addGroup)
group.POST("/group/modify", updateGroup)
group.POST("/group/state/change", groupStateChange)
group.POST("/group/delete", deleteGroup)
group.POST("/group/order", groupOrderChange)
group.POST("/order", cardOrderChange)
group.POST("/add", addCard)
group.POST("/modify", updateCard)
group.GET("/list", cards)
group.POST("/state/change", cardStateChange)
group.POST("/delete", deleteCard)
}
func ping(c *bm.Context) {
if err := srv.Ping(c); err != nil {
log.Error("ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
func register(c *bm.Context) {
c.JSON(map[string]interface{}{}, nil)
}