generated from pkg/go-template
146 lines
4.1 KiB
Go
146 lines
4.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"fmt"
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/error_process"
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/model"
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/pkg"
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/service"
|
|
"git.icechen.cn/monorepo/backend/pkg/api"
|
|
"git.icechen.cn/monorepo/backend/pkg/proto/brahma/murders"
|
|
"git.icechen.cn/monorepo/backend/pkg/rpc"
|
|
validator "github.com/go-playground/validator/v10"
|
|
"github.com/gofiber/fiber/v2"
|
|
ctxLogger "github.com/luizsuper/ctxLoggers"
|
|
"github.com/pkg/errors"
|
|
"go.uber.org/zap"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
pageIsNotInt = api.WarpFError(errors.New("page 参数错误"))
|
|
limitIsNotInt = api.WarpFError(errors.New("limit 参数错误"))
|
|
validate *validator.Validate
|
|
)
|
|
|
|
func init() {
|
|
validate = validator.New()
|
|
}
|
|
|
|
func GetScriptsH(ctx *fiber.Ctx) error {
|
|
page := ctx.Query("page", "1")
|
|
limit := ctx.Query("size", "10")
|
|
iPage, _ := strconv.Atoi(page)
|
|
iLimit, _ := strconv.Atoi(limit)
|
|
s := ctx.Query("query", "")
|
|
query := model.GetQuery{Query: s}
|
|
processMap, err := query.ProcessMap()
|
|
if err != nil {
|
|
ctxLogger.FError(ctx, error_process.GrammerError, zap.String("", fmt.Sprintf("%+v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
m, num, err := service.GetScripts(iPage, iLimit, processMap, ctx)
|
|
if err != nil {
|
|
ctxLogger.FError(ctx, error_process.ServiceErr, zap.String("", fmt.Sprintf("%+v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
return ctx.JSON(success(&Data{
|
|
Elements: m,
|
|
Total: num,
|
|
}))
|
|
}
|
|
|
|
func UpdateScriptsH(ctx *fiber.Ctx) error {
|
|
m := new(model.Scripts)
|
|
if err := checkParam(m, ctx); err != nil {
|
|
ctxLogger.FError(ctx, error_process.BodyParserErr, zap.String("", fmt.Sprintf("%v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
err := service.UpdateScripts(m, ctx)
|
|
if err != nil {
|
|
ctxLogger.FError(ctx, error_process.ServiceErr, zap.String("", fmt.Sprintf("%+v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
return ctx.JSON(success(nil))
|
|
}
|
|
|
|
func CreateScriptsH(ctx *fiber.Ctx) error {
|
|
m := new(model.Scripts)
|
|
if err := createScriptParamCheck(m, ctx); err != nil {
|
|
ctxLogger.FError(ctx, error_process.BodyParserErr, zap.String("", fmt.Sprintf("%v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
err := service.CreateScripts(m, ctx)
|
|
if err != nil {
|
|
ctxLogger.FError(ctx, error_process.ServiceErr, zap.String("", fmt.Sprintf("%+v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
return ctx.JSON(success(nil))
|
|
}
|
|
|
|
func DeleteScriptsH(ctx *fiber.Ctx) error {
|
|
m := new(model.Scripts)
|
|
if err := checkParam(m, ctx); err != nil {
|
|
ctxLogger.FError(ctx, error_process.BodyParserErr, zap.String("", fmt.Sprintf("%v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
err := service.DeleteScripts(m, ctx)
|
|
if err != nil {
|
|
ctxLogger.FError(ctx, error_process.ServiceErr, zap.String("", fmt.Sprintf("%+v", err)))
|
|
return ctx.JSON(fail(nil))
|
|
}
|
|
return ctx.JSON(success(nil))
|
|
}
|
|
|
|
func GetScriptApi(ctx *fiber.Ctx) error {
|
|
//
|
|
outgoingContext, cancelFunc := pkg.TransFiberCtx2NewOutgoingContext(ctx, 3*time.Second)
|
|
defer cancelFunc()
|
|
c := murders.NewMurdersClient(rpc.GetServiceConn("token"))
|
|
|
|
page := ctx.Query("page", "1")
|
|
limit := ctx.Query("size", "10")
|
|
query := ctx.Query("query", "")
|
|
|
|
p, err := strconv.Atoi(page)
|
|
if err != nil {
|
|
ctxLogger.Error(ctx.UserContext(), pageIsNotInt.Error(), zap.String("page", page))
|
|
return pageIsNotInt
|
|
}
|
|
|
|
l, err := strconv.Atoi(limit)
|
|
if err != nil {
|
|
ctxLogger.Error(ctx.UserContext(), limitIsNotInt.Error(), zap.String("limit", limit))
|
|
return pageIsNotInt
|
|
}
|
|
|
|
err = validate.Var(p, "gte=0")
|
|
if err != nil {
|
|
ctxLogger.Error(ctx.UserContext(), limitIsNotInt.Error(), zap.String("limit", limit))
|
|
return api.WarpFError(err)
|
|
}
|
|
|
|
err = validate.Var(l, "gte=-1")
|
|
if err != nil {
|
|
ctxLogger.Error(ctx.UserContext(), limitIsNotInt.Error(), zap.String("limit", limit))
|
|
return api.WarpFError(err)
|
|
}
|
|
|
|
p64 := int64(p)
|
|
l64 := int64(l)
|
|
|
|
condition := murders.QueryCondition{
|
|
Page: &p64,
|
|
Size: &l64,
|
|
Query: &query,
|
|
}
|
|
|
|
scripts, err := c.GetScripts(outgoingContext, &condition)
|
|
if err != nil {
|
|
return api.WarpFError(err)
|
|
}
|
|
|
|
return ctx.JSON(scripts)
|
|
}
|