增加webssh及数据库查询

This commit is contained in:
meilin.huang
2021-01-08 15:37:32 +08:00
parent 111612b7f2
commit 4c2e6b6155
60 changed files with 4347 additions and 2222 deletions

View File

@@ -2,25 +2,30 @@ package base
import (
"encoding/json"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/validation"
"fmt"
"mayfly-go/base/ctx"
"mayfly-go/base/model"
"mayfly-go/base/token"
"github.com/beego/beego/v2/core/logs"
"github.com/beego/beego/v2/core/validation"
"github.com/beego/beego/v2/server/web"
)
type Controller struct {
beego.Controller
web.Controller
}
// 获取数据函数
type getDataFunc func(loginAccount *LoginAccount) interface{}
type getDataFunc func(loginAccount *ctx.LoginAccount) interface{}
// 操作函数,无返回数据
type operationFunc func(loginAccount *LoginAccount)
type operationFunc func(loginAccount *ctx.LoginAccount)
// 将请求体的json赋值给指定的结构体
func (c *Controller) UnmarshalBody(data interface{}) {
err := json.Unmarshal(c.Ctx.Input.RequestBody, data)
BizErrIsNil(err, "request body解析错误")
model.BizErrIsNil(err, "request body解析错误")
}
// 校验表单数据
@@ -32,7 +37,7 @@ func (c *Controller) validForm(form interface{}) {
}
if !b {
e := valid.Errors[0]
panic(NewBizErr(e.Field + " " + e.Message))
panic(model.NewBizErr(e.Field + " " + e.Message))
}
}
@@ -51,13 +56,32 @@ func (c *Controller) ReturnData(checkToken bool, getData getDataFunc) {
c.parseErr(err)
}
}()
var loginAccount *LoginAccount
var loginAccount *ctx.LoginAccount
if checkToken {
loginAccount = c.CheckToken()
}
c.Success(getData(loginAccount))
}
// 返回数据
// @param checkToken 是否校验token
// @param getData 获取数据的回调函数
func (c *Controller) ReturnDataWithPermisison(permission ctx.Permission, getData getDataFunc) {
defer func() {
if err := recover(); err != nil {
c.parseErr(err)
}
}()
var logMsg string
var loginAccount *ctx.LoginAccount
if permission.CheckToken {
loginAccount = c.CheckToken()
logMsg = fmt.Sprintf("[uid=%d, uname=%s]\n", loginAccount.Id, loginAccount.Username)
}
c.Success(getData(loginAccount))
logs.Info(logMsg)
}
// 无返回数据的操作,如新增修改等无需返回数据的操作
// @param checkToken 是否校验token
func (c *Controller) Operation(checkToken bool, operation operationFunc) {
@@ -66,7 +90,7 @@ func (c *Controller) Operation(checkToken bool, operation operationFunc) {
c.parseErr(err)
}
}()
var loginAccount *LoginAccount
var loginAccount *ctx.LoginAccount
if checkToken {
loginAccount = c.CheckToken()
}
@@ -75,54 +99,54 @@ func (c *Controller) Operation(checkToken bool, operation operationFunc) {
}
// 校验token并返回登录者账号信息
func (c *Controller) CheckToken() *LoginAccount {
func (c *Controller) CheckToken() *ctx.LoginAccount {
tokenStr := c.Ctx.Input.Header("Authorization")
loginAccount, err := ParseToken(tokenStr)
loginAccount, err := token.ParseToken(tokenStr)
if err != nil || loginAccount == nil {
panic(NewBizErrCode(TokenErrorCode, TokenErrorMsg))
panic(model.NewBizErrCode(model.TokenErrorCode, model.TokenErrorMsg))
}
return loginAccount
}
// 获取分页参数
func (c *Controller) GetPageParam() *PageParam {
func (c *Controller) GetPageParam() *model.PageParam {
pn, err := c.GetInt("pageNum", 1)
BizErrIsNil(err, "pageNum参数错误")
model.BizErrIsNil(err, "pageNum参数错误")
ps, serr := c.GetInt("pageSize", 10)
BizErrIsNil(serr, "pageSize参数错误")
return &PageParam{PageNum: pn, PageSize: ps}
model.BizErrIsNil(serr, "pageSize参数错误")
return &model.PageParam{PageNum: pn, PageSize: ps}
}
// 统一返回Result json对象
func (c *Controller) Result(result *Result) {
func (c *Controller) Result(result *model.Result) {
c.Data["json"] = result
c.ServeJSON()
}
// 返回成功结果
func (c *Controller) Success(data interface{}) {
c.Result(Success(data))
c.Result(model.Success(data))
}
// 返回成功结果
func (c *Controller) SuccessNoData() {
c.Result(SuccessNoData())
c.Result(model.SuccessNoData())
}
// 返回业务错误
func (c *Controller) BizError(bizError BizError) {
c.Result(Error(bizError.Code(), bizError.Error()))
func (c *Controller) BizError(bizError model.BizError) {
c.Result(model.Error(bizError.Code(), bizError.Error()))
}
// 返回服务器错误结果
func (c *Controller) ServerError() {
c.Result(ServerError())
c.Result(model.ServerError())
}
// 解析error并对不同error返回不同result
func (c *Controller) parseErr(err interface{}) {
switch t := err.(type) {
case BizError:
case model.BizError:
c.BizError(t)
break
case error: