hdh_order.go 3.6 KB
package hdh

import (
	"context"
	"encoding/json"
	"github.com/gogf/gf/net/ghttp"
)

type OerCreateReq struct {
	Address      string         `json:"address"`      //具体地址
	AppID        string         `json:"appId"`        //
	City         string         `json:"city"`         //城市
	District     string         `json:"district"`     //地区
	IDCardNumber string         `json:"idCardNumber"` //身份证号码  非必传
	Name         string         `json:"name"`         //收件人名称
	Phone        string         `json:"phone"`        //收件人手机
	Price        float64        `json:"price"`        //商品总金额 用于校验创建订单时候 商品价格是否发生变动
	Province     string         `json:"province"`     //省份
	Desc         string         `json:"desc"`         //购买商品的备注
	SkuList      []OrderSkuList `json:"skuList"`      //购买商品的信息
	UserOrderNum string         `json:"userOrderNum"` //用户自定义订单号 非必传
}

type OrderSkuList struct {
	BuyNum      int     `json:"buyNum"`      //购买数量
	ChannelType int     `json:"channelType"` //商品渠道类型
	ItemID      int64   `json:"itemId"`      //商品id
	SkuID       int64   `json:"skuId"`       //商品skuId
	ItemCode    int64   `json:"itemCode"`    //商品编码与(itemId,skuId,channelType)必填一项,以上三个参数指定的商品优先
	Price       float64 `json:"price"`       //(当前商品sku的总价)该选项为非必填项 如果填写了 校验出商品金额发生变化 则会返回当前商品的金额发生变化的提示
}

type OerCreateRes struct {
	Code string `json:"code"`
	Data struct {
		OrderNum     string `json:"orderNum"`
		UserOrderNum string `json:"userOrderNum"`
	} `json:"data"`
	Message string `json:"message"`
	Success int    `json:"success"`
}

//订单回调信息
type OrderNotifyRes struct {
	OrderNum        string    `json:"orderNum"`        //订单号
	OrderStatus     string    `json:"orderStatus"`     //订单状态
	OrderStatusCode int       `json:"orderStatusCode"` //订单状态code 参考订单状态字典
	PkgList         []PkgList `json:"pkgList"`         //包裹信息情况
	UserOrderNum    string    `json:"userOrderNum"`    //用户订单号
}

//该包裹下商品信息
type ItemList struct {
	ChannelName string `json:"channelName"` //渠道名称
	ChannelType string `json:"channelType"` //渠道类型
	ItemID      string `json:"itemId"`      //商品id
	Number      int    `json:"number"`      //商品数量
	SkuID       string `json:"skuId"`       //商品skuId
}

//包裹信息情况
type PkgList struct {
	ExpressCompany  string     `json:"expressCompany"`  //物流公司
	ExpressNum      string     `json:"expressNum"`      //物流单号
	ItemList        []ItemList `json:"itemList"`        //该包裹下商品信息
	OrderStatus     string     `json:"orderStatus"`     //子订单状态 由于包裹存在分包情况 所有不同子订单状态可能不同
	OrderStatusCode int        `json:"orderStatusCode"` //订单状态code参考订单状态字典
	PkgNo           string     `json:"pkgNo"`           //包裹号
}

//创建订单
func OrderCreate(ctx context.Context, req *OerCreateReq) (res *OerCreateRes, err error) {

	result, err := post(ctx, "/order/create_order.do", req)
	if nil != err {
		return
	}
	err = json.Unmarshal([]byte(result), &res)
	return
}

//订单回调
func OrderCallBack(r *ghttp.Request) (res *OrderNotifyRes, err error) {
	//body, err := CheckSign(r)
	//if nil != err {
	//	return
	//}
	body := r.GetBodyString()
	if body == "" {
		return
	}
	err = json.Unmarshal([]byte(body), &res)
	return
}