package _interface

import (
	"context"
)

type AfterServiceInterface interface {
	// Type 获取可发起的售后类型
	Type(ctx context.Context, args ArgsAfterServiceType, reply *[]ReplyAfterServiceType) error
	// Reason 获取售后原因
	Reason(ctx context.Context, args ArgsAfterServiceReason, reply *ReplyAfterServiceReason) error
	// Apply @Title 发起售后
	Apply(ctx context.Context, args ArgsAfterServiceApply, reply *ReplyAfterServiceApply) error
	// LogisticsAddress @Title 寄回地址
	LogisticsAddress(ctx context.Context, afterServiceSn string, reply *ReplyAfterServiceLogisticsAddress) error
	// BackLogisticsBill @Title 回传物流信息
	BackLogisticsBill(ctx context.Context, args ArgsAfterServiceBackLogisticsBill, reply *int) error
	// Cancel @Title 取消售后
	Cancel(ctx context.Context, afterServiceSn string, reply *int) error
}
type ArgsAfterServiceType struct {
	OrderSn string // 订单编号
	SkuId   string // skuId
}
type ReplyAfterServiceType struct {
	Type     string `json:"type"`     // 类型
	TypeName string `json:"typeName"` // 类型名称
}

type ArgsAfterServiceReason struct {
	OrderSn string // 订单编号
	SkuId   string // skuId
	Type    string // 售后类型
}
type ReplyAfterServiceReason struct {
	ReasonCode  string `json:"reasonCode"`  // 售后原因编码
	ReasonName  string `json:"reasonName"`  // 售后原因描述
	NeedPicture uint   `json:"needPicture"` // 是否需要上传图片 1=需要上传 2=不需要上传
}

type ArgsAfterServiceApply struct {
	Type                  string   // 售后类型
	TypeName              string   // 售后名称
	ReasonCode            string   // 售后原因编码
	ReasonName            string   // 售后原因描述
	ChannelAfterServiceSn string   // 渠道售后单号
	OrderSn               string   // 订单编号
	SkuId                 string   // skuId
	Pictures              []string // 图片地址数组
	Quantity              uint     // 售后申请数量
}
type ReplyAfterServiceApply struct {
	AfterServiceSn        string `json:"afterServiceSn"`        // 渠道售后单号
	ChannelAfterServiceSn string `json:"channelAfterServiceSn"` // 渠道售后单号
}

type ReplyAfterServiceLogisticsAddress struct {
	Name    string `json:"name"`    // 姓名
	Mobile  string `json:"mobile"`  // 手机号
	ZipCode string `json:"zipCode"` // 邮编
	Address string `json:"address"` // 地址
}

type ArgsAfterServiceBackLogisticsBill struct {
	AfterServiceSn   string // 售后单号
	LogisticsCompany string // 物流公司
	WaybillCode      string // 运单号
	SendGoodsDate    int64  // 运单发货日期
}