package controllers import ( "encoding/json" "errors" logger "eta_mini_ht_api/common/component/log" "eta_mini_ht_api/common/exception" "eta_mini_ht_api/common/http" "github.com/beego/beego/v2/server/web" ) type WrapData struct { Msg string Data interface{} } type BaseResponse struct { Ret int `description:"返回状态码"` Msg string ErrMsg string ErrCode int Data interface{} Success bool `description:"true 执行成功,false 执行失败"` //IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"` //IsAddLog bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" ` } type BaseController struct { web.Controller } func (b *BaseController) FailResponse(errInfo error, msg string) { var retData BaseResponse var etaError *exception.EtaError if !errors.As(errInfo, &etaError) { etaError = exception.New(exception.UnknownError) } retData = BaseResponse{ Ret: 200, Msg: msg, ErrMsg: etaError.ErrorMsg, ErrCode: etaError.ErrorCode, Data: nil} b.Data["json"] = retData b.ServeJSON() } // JsonResult /* func (b *BaseController) JsonResult(status int, errCode int, errMsg string, msg string, success bool, data interface{}) { retData := BaseResponse{ Ret: status, Msg: msg, ErrMsg: errMsg, ErrCode: errCode, Data: data, Success: success} b.Ctx.Output.SetStatus(status) b.Data["json"] = retData b.ServeJSON() } func (b *BaseController) GetPostParams(data interface{}) { err := json.Unmarshal(b.Ctx.Input.RequestBody, data) if err != nil { logger.Error("解析请求参数失败:%v", err) data = nil } } // Wrap ControllerWrap 是一个用于封装控制器方法的函数 func Wrap(a *BaseController, fn func() (*WrapData, error)) { result, err := fn() if err != nil { logger.Error("%v", err) a.FailResponse(err, result.Msg) return } a.JsonResult(http.GetHttpStatusByAlias("ok"), http.ErrOK, "", result.Msg, http.Success, result.Data) } func (b *BaseController) InitWrapData(msg string) *WrapData { return &WrapData{Msg: msg} } func (b *BaseController) SuccessResult(msg string, data interface{}, wrapData *WrapData) { wrapData.Msg = msg wrapData.Data = data } func (b *BaseController) FailedResult(msg string, wrapData *WrapData) { wrapData.Msg = msg }