You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
service/supply/channel/afterService.go

137 lines
4.8 KiB

2 years ago
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 // 售后关闭
)
2 years ago
type afterService struct {
}
type ArgsAfterServiceCan struct {
2 years ago
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"` // 类型
2 years ago
TypeName string `json:"typeName"` // 类型名称
}
// Can @Title 获取是否可发起售后
2 years ago
func (a *afterService) Can(ctx context.Context, channelId string, args ArgsAfterServiceCan) (reply ReplyAfterServiceCan, err error) {
2 years ago
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)
2 years ago
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 {
2 years ago
TypeId string // 售后类型
2 years ago
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
}