添加文件: errors.go
This commit is contained in:
parent
a3da37d02a
commit
e93e80e2b7
|
|
@ -0,0 +1,72 @@
|
||||||
|
package sdk_LinkedMall
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// 业务错误码常量。
|
||||||
|
const (
|
||||||
|
// CodeShopTypeInvalid SKU 属于经销集采店铺,不可下单,应过滤该 SKU。
|
||||||
|
CodeShopTypeInvalid = "ShopTypeInvalid"
|
||||||
|
// CodeSkuPriceUnique SKU 价格非最新,需重新调用 RenderPurchaseOrder 获取最新价格后再下单。
|
||||||
|
CodeSkuPriceUnique = "SkuPriceUnique"
|
||||||
|
// CodePurchaseOrderNotFound 采购单号不存在,需核对入参 PurchaseOrderId。
|
||||||
|
CodePurchaseOrderNotFound = "PurchaseOrderNotFound"
|
||||||
|
// CodeRefundNumberMustLessThanOrder 退款数量大于订单商品数量,需修正退款数量。
|
||||||
|
CodeRefundNumberMustLessThanOrder = "RefundNumberMustLessThanOrder"
|
||||||
|
// CodeRefundAmountMustLessThanOrder 退款金额大于实付金额,需修正退款金额。
|
||||||
|
CodeRefundAmountMustLessThanOrder = "RefundAmountMustLessThanOrder"
|
||||||
|
// CodeHasNoPrivilege RAM 无接口权限,需检查 RAM 授权策略。
|
||||||
|
CodeHasNoPrivilege = "HasNoPrivilege"
|
||||||
|
// CodeOrderNotFound 订单 ID 不存在,需核对 OrderId。
|
||||||
|
CodeOrderNotFound = "OrderNotFound"
|
||||||
|
// CodeShopNotFind 店铺不存在,需核对 ShopId / PurchaserId。
|
||||||
|
CodeShopNotFind = "ShopNotFind"
|
||||||
|
// CodeSavePurchaseOrderError 保存采购单服务端异常,建议短间隔重试。
|
||||||
|
CodeSavePurchaseOrderError = "SavePurchaseOrderError"
|
||||||
|
// CodeOuterPurchaseOrderIdExist 外部业务单号重复,需更换 OuterPurchaseOrderId 并做好幂等。
|
||||||
|
CodeOuterPurchaseOrderIdExist = "OuterPurchaseOrderIdExist"
|
||||||
|
)
|
||||||
|
|
||||||
|
// APIError 表示业务侧返回的错误。
|
||||||
|
type APIError struct {
|
||||||
|
RequestId string
|
||||||
|
Code string
|
||||||
|
Message string
|
||||||
|
SubCode string
|
||||||
|
SubMessage string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error 实现 error 接口。
|
||||||
|
func (e *APIError) Error() string {
|
||||||
|
return fmt.Sprintf(
|
||||||
|
"linkedmall api error [requestId=%s code=%s subCode=%s]: %s %s",
|
||||||
|
e.RequestId, e.Code, e.SubCode, e.Message, e.SubMessage,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckSuccess 校验响应是否业务成功。
|
||||||
|
//
|
||||||
|
// 返回 nil 表示 Success 为 true(业务成功);
|
||||||
|
// 否则返回 *APIError,携带 Code / SubCode / SubMessage 便于定位原因。
|
||||||
|
func CheckSuccess(resp *CommonResponse) error {
|
||||||
|
if resp == nil {
|
||||||
|
return fmt.Errorf("linkedmall: empty response")
|
||||||
|
}
|
||||||
|
if resp.Success {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &APIError{
|
||||||
|
RequestId: resp.RequestId,
|
||||||
|
Code: resp.Code,
|
||||||
|
Message: resp.Message,
|
||||||
|
SubCode: resp.SubCode,
|
||||||
|
SubMessage: resp.SubMessage,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsCode 判断响应是否命中指定错误码。
|
||||||
|
func IsCode(resp *CommonResponse, code string) bool {
|
||||||
|
return resp != nil && resp.Code == code
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```go
|
||||||
Loading…
Reference in New Issue