package basic // StatusResponse 公司自定义状态码 type StatusResponse struct { Code int // 状态码 Message string // 状态码相关解析 } var ( CodeOK = &StatusResponse{200, "success"} // 成功 CodeApiErr = &StatusResponse{500, "api error"} // API错误 CodeSaveErr = &StatusResponse{501, "failed to save"} // 保存失败 CodeServiceErr = &StatusResponse{510, "server logic error"} // 服务逻辑错误 CodeUnAuth = &StatusResponse{401, "unauthorized"} // 未授权 CodeEmailNotFoundErr = &StatusResponse{5050, "email not found"} // 未找到email CodeUserIdNotFoundErr = &StatusResponse{5051, "user not found"} // 未找到用户 CodePasswordErr = &StatusResponse{5052, "invalid password"} // 无效密码 CodeSafeValueRangeErr = &StatusResponse{5040, "value not in range"} // 值不在范围内 CodeOrderNotFoundErr = &StatusResponse{5030, "order not found"} //未找到订单 CodeOrderNotCancelledErr = &StatusResponse{5031, "current order cannot be cancelled"} // 当前订单无法取消 CodePayNotFoundErr = &StatusResponse{5020, "pay info not found"} // 支付信息无法查询 CodePayCancelOk = &StatusResponse{5021, "cancellation successful"} // 支付取消成功 CodePayCancelNotOk = &StatusResponse{5022, "cancellation failed"} // 支付取消失败 CodeGuestDupErr = &StatusResponse{5010, "user is already guest and does not need to reapply"} // 用户已经是访客用户,无需重复申请 CodeGuestGenErr = &StatusResponse{5011, "serialization failed for guest ID"} // 访客ID序列化失败 CodeDbUpdateErr = &StatusResponse{5000, "database update error"} // 数据库更新错误 CodeRequestParamsErr = &StatusResponse{5002, "invalid request parameters"} // 请求参数无效 CodeDbRecordNotFoundErr = &StatusResponse{5003, "database record not found"} //数据库中未找到记录 CodeDbCreateErr = &StatusResponse{5004, "failed to create record in database"} // 数据库中创建记录失败 CodeDbSqlErr = &StatusResponse{5005, "database error"} // 数据库错误 CodeJsonErr = &StatusResponse{5006, "JSON error"} // JSON解析错误 ) type Response struct { Code int `json:"code"` Message string `json:"msg"` Data interface{} `json:"data"` } // Set 设置Response的Code和Message值 func (resp *Response) Set(Code int, Message string) *Response { return &Response{ Code: Code, Message: Message, } } // Set 设置整个Response func (resp *Response) SetWithData(Code int, Message string, Data interface{}) *Response { return &Response{ Code: Code, Message: Message, Data: Data, } } // SetStatus 设置默认StatusResponse(内部自定义) 默认msg, 可以带data, data只使用一个参数 func (resp *Response) SetStatus(sr *StatusResponse, data ...interface{}) *Response { newResp := &Response{ Code: sr.Code, Message: sr.Message, } switch len(data) { case 0: // 0 直接返回 case 1: if err, ok := data[0].(error); ok { newResp.Message = err.Error() } else { newResp.Data = data[0] } case 2: var dataIndex = 0 if err, ok := data[dataIndex].(error); ok { newResp.Message = err.Error() dataIndex++ } else { panic("data只接收1或2个 data 或 error.Error() 和 data ") } newResp.Data = data[1] default: panic("data只接收1或2个 data, error.Error() 和 data ") } return newResp } // SetStatusWithMessage 设置默认StatusResponse(内部自定义) 非默认msg, 可以带data, data只使用一个参数 func (resp *Response) SetStatusWithMessage(sr *StatusResponse, msg string, data ...interface{}) *Response { newResp := &Response{ Code: sr.Code, Message: msg, } switch len(data) { case 0: // 0 直接返回 case 1: newResp.Data = data[0] default: panic("data只接收一个 data") } return newResp } func (resp *Response) SetStatusAddMessage(sr *StatusResponse, msg string, data ...interface{}) *Response { newResp := &Response{ Code: sr.Code, Message: sr.Message + ":" + msg, } switch len(data) { case 0: // 0 直接返回 case 1: newResp.Data = data[0] default: panic("data只接收一个 data") } return newResp }