base.go 1.42 KB
package controllers

import (
	"apigame/middleware/sign"
	"apigame/service/code-msg"
	"encoding/json"
	"github.com/astaxie/beego"
)

type BaseController struct {
	beego.Controller
}

// RetData 返回封装
func (c *BaseController) RetData(resp map[string]any) {
	c.Data["json"] = resp
	c.ServeJSON()
}

// RetRspData 返回封装
func (c *BaseController) RetRspData(rspData any) {
	resp := make(map[string]any)
	resp["data"] = rspData
	c.RetData(resp)
}

// RetRspCodeData 返回封装
func (c *BaseController) RetRspCodeData(code string, rspData any) {
	resp := make(map[string]any)
	resp = code_msg.CodeMsg(resp, code)
	resp["data"] = rspData
	c.RetData(resp)
}

// RetCode 返回错误封装
func (c *BaseController) RetCode(code string) {
	resp := make(map[string]any)
	resp = code_msg.CodeMsg(resp, code)
	c.RetData(resp)
}

// GetPostData 获取 PostData
func (c *BaseController) GetPostData(postData any) bool {

	req := c.Ctx.Input.RequestBody

	// 本机调试不加密解密
	if checkLocal() {
		err := json.Unmarshal(req, &postData)
		if err != nil {
			c.RetCode(code_msg.RECODE_PARAMERROR)
			return false
		}
		return true
	}

	// 接收参数,验证签名登录
	code, err := sign.Check(req, postData, true, true)
	if err != nil {
		resp := make(map[string]interface{})
		resp = code_msg.CodeMsg(resp, code)
		c.RetData(resp)
		return false
	}
	return true
}

func checkLocal() bool {
	return beego.AppConfig.String("env") == "local"
}