package channel import ( "context" "git.oa00.com/supply-chain/service/client" "github.com/smallnest/rpcx/share" ) const ( AfterServiceStatusApply = 1 // 售后申请中 AfterServiceStatusDeliver = 2 // 客户发货 AfterServiceStatusHandle = 3 // 收货处理中 AfterServiceStatusFinal = 4 // 售后完成 AfterServiceStatusClose = 5 // 售后关闭 ) type afterService struct { } type ArgsAfterServiceCan struct { OrderSn string // 订单编号 SkuId uint // skuId } type ReplyAfterServiceCan struct { CanApply uint `json:"canApply"` // 是否可申请售后 1=可申请 2=不可申请 SkuId uint `json:"skuId"` // skuId AppliedNum uint `json:"appliedNum"` // 已申请售后商品数量 CannotApplyTip string `json:"cannotApplyTip"` // 不可申请原因 Types []AfterServiceType `json:"types"` } type AfterServiceType struct { TypeId string `json:"typeId"` // 类型 TypeName string `json:"typeName"` // 类型名称 } // Can @Title 获取是否可发起售后 func (a *afterService) Can(ctx context.Context, channelId string, args ArgsAfterServiceCan) (reply []ReplyAfterServiceCan, err error) { xClient, err := client.GetClient(a) if err != nil { return } err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Can", args, &reply) return } type ArgsAfterServiceReason struct { OrderSn string // 订单编号 SkuId uint // skuId Type string // 售后类型 } type ReplyAfterServiceReason struct { ReasonCode string `json:"reasonCode"` // 售后原因编码 ReasonName string `json:"reasonName"` // 售后原因描述 NeedPicture uint `json:"needPicture"` // 是否需要上传图片 1=需要上传 2=不需要上传 } // Reason @Title 获取售后原因 func (a *afterService) Reason(ctx context.Context, channelId string, args ArgsAfterServiceReason) (reply []ReplyAfterServiceReason, err error) { xClient, err := client.GetClient(a) if err != nil { return } err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Reason", args, &reply) return } type ArgsAfterServiceApply struct { TypeId string // 售后类型 TypeName string // 售后名称 ReasonCode string // 售后原因编码 ReasonName string // 售后原因描述 ChannelAfterServiceSn string // 渠道售后单号 OrderSn string // 订单编号 SkuId uint // skuId Pictures []string // 图片地址数组 Quantity uint // 售后申请数量 } type ReplyAfterServiceApply struct { AfterServiceSn string `json:"afterServiceSn"` // 渠道售后单号 ChannelAfterServiceSn string `json:"channelAfterServiceSn"` // 渠道售后单号 } // Apply @Title 发起售后 func (a *afterService) Apply(ctx context.Context, channelId string, args ArgsAfterServiceApply) (reply ReplyAfterServiceApply, err error) { xClient, err := client.GetClient(a) if err != nil { return } err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Apply", args, &reply) return } type ReplyAfterServiceLogisticsAddress struct { Name string `json:"name"` // 姓名 Mobile string `json:"mobile"` // 手机号 ZipCode string `json:"zipCode"` // 邮编 Address string `json:"address"` // 地址 } // LogisticsAddress @Title 寄回地址 func (a *afterService) LogisticsAddress(ctx context.Context, channelId string, afterServiceSn string) (reply ReplyAfterServiceLogisticsAddress, err error) { xClient, err := client.GetClient(a) if err != nil { return } err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "LogisticsAddress", afterServiceSn, &reply) return } type ArgsAfterServiceBackLogisticsBill struct { AfterServiceSn string // 售后单号 LogisticsCompany string // 物流公司 WaybillCode string // 运单号 SendGoodsDate int64 // 运单发货日期 } // BackLogisticsBill @Title 回传物流信息 func (a *afterService) BackLogisticsBill(ctx context.Context, channelId string, args ArgsAfterServiceBackLogisticsBill) (err error) { xClient, err := client.GetClient(a) if err != nil { return } reply := 0 err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "BackLogisticsBill", args, &reply) return } // Cancel @Title 取消售后 func (a *afterService) Cancel(ctx context.Context, channelId string, afterServiceSn string) (err error) { xClient, err := client.GetClient(a) if err != nil { return } reply := 0 err = xClient.Call(context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{"channelId": channelId}), "Cancel", afterServiceSn, &reply) return }