Files
lone-services/bff/internal/response/response.go
T
gjs 38e040af07
CI / changes (push) Successful in 37s
CI / ad (push) Successful in 29s
CI / admin (push) Successful in 17s
CI / bff (push) Successful in 13s
CI / chore (push) Successful in 15s
CI / equipment (push) Successful in 14s
CI / express (push) Successful in 14s
CI / product (push) Successful in 13s
CI / record (push) Successful in 13s
CI / sale (push) Successful in 13s
CI / task (push) Successful in 13s
CI / user (push) Successful in 14s
CI / wecom (push) Successful in 13s
订单下载。jd下单。。
2026-09-09 17:52:07 +08:00

74 lines
2.2 KiB
Go

package response
import (
"fmt"
"lone-services/pkg/utils"
"net/http"
"net/url"
jsoniter "github.com/json-iterator/go"
)
type BaseController struct{}
func (b *BaseController) Fail(w http.ResponseWriter) {
b.Out(w, nil, Fail)
}
func (b *BaseController) Error(w http.ResponseWriter, cm Error) {
b.Out(w, nil, cm)
}
func (b *BaseController) Out(w http.ResponseWriter, data any, cm Error) {
out := NewError(cm.GetCode(), cm.GetMsg()).WithData(data)
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
_ = jsoniter.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 := jsoniter.Marshal(data)
if err != nil {
fmt.Printf("response encrypt: json.Marshal failed: %v\n", err)
msg = utils.ErrorEncryptAesError.Msg
code = utils.ErrorEncryptAesError.Code
} else {
key := utils.GetConfigString("encrypt.encrypt_key")
res, enErr := utils.Crypto{}.Encrypt(jsonData)
if enErr != nil {
fmt.Printf("response encrypt failed: keyLen=%d keyEmpty=%v errCode=%d errMsg=%s\n",
len(key), key == "", enErr.GetCode(), enErr.GetMsg())
msg = utils.ErrorEncryptAesError.Msg
code = utils.ErrorEncryptAesError.Code
} else {
data = res
}
}
}
out := NewError(int(code), msg).WithData(data)
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
_ = jsoniter.NewEncoder(w).Encode(out)
}
func (b *BaseController) OutPutBack(w http.ResponseWriter, back responseDataBack) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
_ = jsoniter.NewEncoder(w).Encode(back)
}
func (b *BaseController) OutPutDown(w http.ResponseWriter, back responseDataDown) {
// 下载头,二进制流
w.Header().Set("Content-Type", "application/octet-stream")
// 文件名 urlencode,防止中文乱码
w.Header().Set("Content-Disposition", `attachment; filename="`+url.QueryEscape(back.Name)+`"`)
w.Header().Set("Content-Transfer-Encoding", "binary")
w.WriteHeader(http.StatusOK)
// back.Data 是 []byte excel二进制
_, _ = w.Write([]byte(back.Data))
}