tm_refund_before.go 1.7 KB
package tmv3

import (
	"context"
	"github.com/alibabacloud-go/linkedmall-20230930/v2/client"
	"github.com/gogf/gf/encoding/gjson"
	"github.com/gogf/gf/os/gtime"
)

type RefundBeforeReq struct {
	BizClaimType int32  //退款类型 1 仅退款,3 退货退款
	GoodsStatus  int32  //货物状态 4: 未发货, 1: 未收到货, 2: 已收到货
	OrderLineId  string //子分销订单 ID
}

type RefundBeforeRes struct {
	RequestId        string `json:"requestId"`
	OrderLineId      string `json:"orderLineId"`  //子分销订单号
	BizClaimType     int    `json:"bizClaimType"` //支持的订单退货方式
	MaxRefundFeeData struct {
		MaxRefundFee int `json:"maxRefundFee"`
		MinRefundFee int `json:"minRefundFee"`
	} `json:"maxRefundFeeData"`
	RefundReasonList []struct { //退款理由
		ReasonTextId       string `json:"reasonTextId"`       //理由文本 id
		ProofRequired      bool   `json:"proofRequired"`      //是否要求上传凭证
		ReasonTips         string `json:"reasonTips"`         //理由文本
		RefundDescRequired bool   `json:"refundDescRequired"` //是否要求留言
	} `json:"refundReasonList"`
}

// Before 售后单渲染
func (s refundTm) Before(ctx context.Context, req RefundBeforeReq) (res *RefundBeforeRes, err error) {
	Start := gtime.TimestampMilli()
	ctx = context.WithValue(ctx, "URI", "RenderRefundOrder")
	defer func() {
		Log(ctx, req, res, err, Start)
	}()
	Request := &client.RenderRefundOrderRequest{}
	var Body = new(client.RefundRenderCmd)

	Body.SetBizClaimType(req.BizClaimType)
	Body.SetGoodsStatus(req.GoodsStatus)
	Body.SetOrderLineId(req.OrderLineId)

	Request.SetBody(Body)

	r, err := server.RenderRefundOrder(Request)
	if err != nil {
		return
	}

	err = gjson.New(r.Body).Scan(&res)
	return
}