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,40 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"http.go",
"task.go",
"template.go",
],
importpath = "go-common/app/admin/main/sms/server/http",
tags = ["automanaged"],
deps = [
"//app/admin/main/sms/conf:go_default_library",
"//app/admin/main/sms/service:go_default_library",
"//app/service/main/sms/api: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",
],
)
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,56 @@
package http
import (
"net/http"
"go-common/app/admin/main/sms/conf"
"go-common/app/admin/main/sms/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
)
var (
authSrv *permit.Permit
svc *service.Service
)
// Init http server
func Init(c *conf.Config, s *service.Service) {
svc = s
authSrv = permit.New(c.Auth)
engine := bm.DefaultServer(c.HTTPServer)
route(engine)
if err := engine.Start(); err != nil {
panic(err)
}
}
func route(e *bm.Engine) {
e.Ping(ping)
g := e.Group("/x/admin/sms")
{
tplg := g.Group("/template", authSrv.Permit("SMS_TEMPLATE"))
{
tplg.POST("/add", addTemplate)
tplg.POST("/update", updateTemplate)
tplg.GET("/list", templateList)
}
taskg := g.Group("/task", authSrv.Permit("SMS_TASK"))
{
taskg.POST("/add", addTask)
taskg.POST("/update", updateTask)
taskg.POST("/delete", deleteTask)
taskg.GET("/info", taskInfo)
taskg.GET("/list", taskList)
taskg.POST("/upload", upload)
}
}
}
func ping(ctx *bm.Context) {
if err := svc.Ping(ctx); err != nil {
log.Error("sms-admin ping error(%v)", err)
ctx.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@@ -0,0 +1,119 @@
package http
import (
"crypto/md5"
"fmt"
"io/ioutil"
"strings"
"time"
"go-common/app/admin/main/sms/conf"
pb "go-common/app/service/main/sms/api"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func addTask(ctx *bm.Context) {
req := new(pb.AddTaskReq)
if err := ctx.Bind(req); err != nil {
return
}
ctx.JSON(svc.AddTask(ctx, req))
}
func updateTask(ctx *bm.Context) {
req := new(pb.UpdateTaskReq)
if err := ctx.Bind(req); err != nil {
return
}
ctx.JSON(svc.UpdateTask(ctx, req))
}
func deleteTask(ctx *bm.Context) {
req := new(pb.DeleteTaskReq)
if err := ctx.Bind(req); err != nil {
return
}
ctx.JSON(svc.DeleteTask(ctx, req))
}
func taskInfo(ctx *bm.Context) {
req := new(pb.TaskInfoReq)
if err := ctx.Bind(req); err != nil {
return
}
res, err := svc.TaskInfo(ctx, req)
ctx.JSON(res.Info, err)
}
func taskList(ctx *bm.Context) {
req := new(pb.TaskListReq)
if err := ctx.Bind(req); err != nil {
return
}
res, err := svc.TaskList(ctx, req)
if err != nil {
ctx.JSON(nil, err)
return
}
pager := struct {
Pn int32 `json:"page"`
Ps int32 `json:"pagesize"`
Total int32 `json:"total"`
}{
Pn: req.Pn,
Ps: req.Ps,
Total: res.Total,
}
data := map[string]interface{}{
"data": res.List,
"pager": pager,
}
ctx.JSONMap(data, nil)
}
func upload(ctx *bm.Context) {
var (
err error
req = ctx.Request
)
req.ParseMultipartForm(1024 * 1024 * 1024) // 1G
fileName := req.FormValue("filename")
if fileName == "" {
log.Error("filename is empty")
ctx.JSON(nil, ecode.RequestErr)
return
}
file, header, err := req.FormFile("file")
if err != nil {
log.Error("req.FormFile() error(%v)", err)
ctx.JSON(nil, err)
return
}
defer file.Close()
bs, err := ioutil.ReadAll(file)
if err != nil {
log.Error("ioutil.ReadAll() error(%v)", err)
ctx.JSON(nil, err)
return
}
if err = svc.CheckUploadFile(bs); err != nil {
ctx.JSON(nil, err)
return
}
dir := fmt.Sprintf("%s/%s", strings.TrimSuffix(conf.Conf.Sms.MountDir, "/"), time.Now().Format("20060102"))
path := fmt.Sprintf("%s/%x", dir, md5.Sum([]byte(fileName)))
if err = svc.Upload(dir, path, bs); err != nil {
log.Error("upload file file(%s) error(%v)", path, err)
ctx.JSON(nil, err)
return
}
ctx.JSON(struct {
Name string `json:"name"`
Path string `json:"path"`
}{
Name: header.Filename,
Path: path,
}, nil)
}

View File

@@ -0,0 +1,48 @@
package http
import (
pb "go-common/app/service/main/sms/api"
bm "go-common/library/net/http/blademaster"
)
func addTemplate(ctx *bm.Context) {
req := new(pb.AddTemplateReq)
if err := ctx.Bind(req); err != nil {
return
}
ctx.JSON(svc.AddTemplate(ctx, req))
}
func updateTemplate(ctx *bm.Context) {
req := new(pb.UpdateTemplateReq)
if err := ctx.Bind(req); err != nil {
return
}
ctx.JSON(svc.UpdateTemplate(ctx, req))
}
func templateList(ctx *bm.Context) {
req := new(pb.TemplateListReq)
if err := ctx.Bind(req); err != nil {
return
}
res, err := svc.TemplateList(ctx, req)
if err != nil {
ctx.JSON(nil, err)
return
}
pager := struct {
Pn int32 `json:"page"`
Ps int32 `json:"pagesize"`
Total int32 `json:"total"`
}{
Pn: req.Pn,
Ps: req.Ps,
Total: res.Total,
}
data := map[string]interface{}{
"data": res.List,
"pager": pager,
}
ctx.JSONMap(data, nil)
}