Files
lone-services/bff/internal/response/response.go
T
2026-08-05 17:37:32 +08:00

55 lines
1.2 KiB
Go

package response
import (
"encoding/json"
"net/http"
)
type BaseController struct{}
// Ok 成功输出结果 加密
func (b *BaseController) Ok(w http.ResponseWriter, data any) {
isDebug := GetConfigBool("base.is_debug")
if !isDebug {
jsonData, err := json.Marshal(data)
if err != nil {
b.Fail(w)
return
}
encryptKey := GetEncrypt("encrypt.encrypt_key", 15, 28, 18)
res, enErr := Crypto{}.EncryptKey(jsonData, encryptKey)
if enErr != nil {
b.Fail(w)
return
}
b.Out(w, res, OK)
return
}
b.Out(w, data, OK)
}
// Ok2 成功输出结果 不加密
func (b *BaseController) Ok2(w http.ResponseWriter, data any) {
b.Out(w, data, OK)
}
// Fail 基础错误的输出结果
func (b *BaseController) Fail(w http.ResponseWriter) {
b.Out(w, nil, Fail)
}
// Error 错误的输出结果
func (b *BaseController) Error(w http.ResponseWriter, cm Error) {
b.Out(w, nil, cm)
}
// Out 输出结果
func (b *BaseController) Out(w http.ResponseWriter, data any, cm Error) {
// 复制一份,避免并发请求改到包级 OK/Fail 单例
out := NewError(cm.GetCode(), cm.GetMsg()).WithData(data)
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
_ = json.NewEncoder(w).Encode(out)
}