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) }