package myservice import ( "time" "git.x2erp.com/qdy/go-base/ctx" "git.x2erp.com/qdy/go-base/logger" "git.x2erp.com/qdy/go-base/types" ) // CreateErrorResult 创建错误结果的泛型辅助函数 // // T 是 QueryResult 中 Data 字段的类型 func CreateErrorResult[T any](errorMsg string, startTime time.Time, reqCtx *ctx.RequestContext) *types.QueryResult[T] { // 使用 *new(T) 获取 T 类型的零值指针 var zeroValue T return createResult(zeroValue, false, errorMsg, startTime, reqCtx) } // CreateSuccessResult 建立返回成功对象 // // T 是 QueryResult 中 Data 字段的类型 func CreateSuccessResultData[T any](data T, startTime time.Time, reqCtx *ctx.RequestContext) *types.QueryResult[T] { return createResult(data, true, "", startTime, reqCtx) } func CreateSuccessResult[T any](startTime time.Time, reqCtx *ctx.RequestContext) *types.QueryResult[T] { var zeroValue T return createResult(zeroValue, true, "", startTime, reqCtx) } func createResult[T any](data T, success bool, msg string, startTime time.Time, reqCtx *ctx.RequestContext) *types.QueryResult[T] { if success { logger.DebugC(reqCtx, msg) } else { logger.ErrorC(reqCtx, msg) } return &types.QueryResult[T]{ Success: success, Error: msg, Time: time.Since(startTime).String(), Metadata: reqCtx, Data: data, } }