Files
lone-services/bff/internal/response/response.go
T
gjs 6c20427b0a
CI / changes (push) Successful in 2s
CI / docker-bff (push) Successful in 3m7s
CI / docker-product (push) Has been skipped
CI / docker-admin (push) Successful in 3m26s
bff config to nacos
2026-08-13 16:27:18 +08:00

58 lines
1.5 KiB
Go

package response
import (
"encoding/json"
"fmt"
"net/http"
"pkg.local/utils"
)
type BaseController struct{}
// 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)
}
func (b *BaseController) OutPut(w http.ResponseWriter, code int32, data any, msg string) {
if code == utils.Ok.Code && !utils.GetConfigBool("encrypt.debug") {
jsonData, err := json.Marshal(data)
if err != nil {
msg = utils.ErrorEncryptAesError.Msg
code = utils.ErrorEncryptAesError.Code
} else {
res, enErr := utils.Crypto{}.Encrypt(jsonData)
fmt.Printf("res: %v\n", res)
if enErr != nil {
msg = utils.ErrorEncryptAesError.Msg
code = utils.ErrorEncryptAesError.Code
} else {
data = res
}
}
}
// 复制一份,避免并发请求改到包级 OK/Fail 单例
out := NewError(int(code), msg).WithData(data)
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
_ = json.NewEncoder(w).Encode(out)
}