提交 41745c87 authored 作者: 屈传平's avatar 屈传平

hdh

上级 6e661735
package hdh
//会订货
import (
"context"
"github.com/gogf/gf/crypto/gmd5"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"time"
)
var server *Config
const pkgName = "hdh"
type Config struct {
AppId string
AppSecret string
ApiUrl string
}
func New(req *Config) {
server = req
return
}
func sign(req string) string {
res := gmd5.MustEncryptString(req + server.AppSecret)
return res
}
func post(ctx context.Context, method string, req interface{}) (res string, err error) {
Start := gtime.TimestampMilli()
reqMap := gconv.Map(req)
reqMap["appId"] = server.AppId
param := gjson.New(req)
Url := server.ApiUrl + method
Request := g.Client()
Request.SetHeader("Content-Type", "application/json")
Request.SetHeader("sign", sign(param.MustToJsonString()))
resp, err := Request.Timeout(time.Second*5).Post(Url, param.MustToJsonString())
defer func() {
_ = resp.Close()
ctx = context.WithValue(ctx, "Method", "POST")
ctx = context.WithValue(ctx, "URI", method)
if err != nil {
g.Log().Ctx(ctx).Infof("参数【%v】错误【%v】响应时间【%v】", param.MustToJsonString(), err.Error(), gtime.TimestampMilli()-Start)
} else {
g.Log().Ctx(ctx).Cat(pkgName).Infof("参数【%v】响应【%v】响应时间【%v】", param.MustToJsonString(), res, gtime.TimestampMilli()-Start)
}
}()
res = resp.ReadAllString()
return
}
package hdh
import (
"context"
"encoding/json"
)
//品牌
type BrandListReq struct {
AppID string `json:"appId"`
Page int `json:"page"`
Limit int `json:"limit"`
}
//品牌列表
type BrandListRes struct {
Code string `json:"code"`
Data struct {
DataList []struct {
ID string `json:"id"`
Name string `json:"name"` //品牌名称
Desc string `json:"desc,omitempty"` //品牌描述
LogoURL string `json:"logoUrl,omitempty"` //logo
PosterURL string `json:"posterUrl,omitempty"` //海报
} `json:"dataList"`
NextPage int `json:"nextPage"`
Total int `json:"total"`
TotalPage int `json:"totalPage"`
} `json:"data"`
Message string `json:"message"`
Success int `json:"success"`
}
type BrandInfoReq struct {
AppID string `json:"appId"`
Ids []string `json:"ids"`
}
type BrandInfoRes struct {
Code string `json:"code"`
Data []struct {
Desc string `json:"desc,omitempty"` //品牌描述
ID string `json:"id"` //
LogoURL string `json:"logoUrl,omitempty"` //logo
Name string `json:"name"` //品牌名称
PosterURL string `json:"posterUrl,omitempty"` //海报
} `json:"data"`
Message string `json:"message"`
Success int `json:"success"`
}
//获取品牌列表
func GetBrandList(ctx context.Context, page, limit int) (res *BrandListRes, err error) {
params := BrandListReq{
AppID: "",
Page: page,
Limit: limit,
}
result, err := post(ctx, "/brand/get_brand_list.do", params)
if nil != err {
return
}
err = json.Unmarshal([]byte(result), &res)
return
}
//获取品牌
func GetBrandInfo(ctx context.Context, ids []string) (res *BrandInfoRes, err error) {
params := BrandInfoReq{
AppID: "",
Ids: ids,
}
result, err := post(ctx, "/brand/get_brands.do", params)
if nil != err {
return
}
err = json.Unmarshal([]byte(result), &res)
return
}
package hdh
import (
"context"
"encoding/json"
"github.com/gogf/gf/frame/g"
)
//分类列表
type CategoryListRes struct {
Code string `json:"code"`
Data []struct {
ID int `json:"id"` //类目id
LogoURL string `json:"logoUrl"` //类目logo图片地址
Name string `json:"name"` //类目名称
SubCategoryList []struct {
ID int `json:"id"` //类目id
LogoURL string `json:"logoUrl"` //类目logo图片地址
Name string `json:"name"` //类目名称
SubCategoryList []struct {
ID int `json:"id"` //
LogoURL string `json:"logoUrl"` //
Name string `json:"name"` //
} `json:"subCategoryList"` //
} `json:"subCategoryList"` //
} `json:"data"`
Message string `json:"message"`
Success int `json:"success"`
}
//获取分类列表
func GetCategoryList(ctx context.Context) (res *CategoryListRes, err error) {
params := g.Map{}
result, err := post(ctx, "/item/get_item_list.do", params)
if nil != err {
return
}
err = json.Unmarshal([]byte(result), &res)
return
}
差异被折叠。
package hdh
import (
"context"
"encoding/json"
)
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 []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的总价)该选项为非必填项 如果填写了 校验出商品金额发生变化 则会返回当前商品的金额发生变化的提示
} `json:"skuList"` //购买商品的信息
UserOrderNum string `json:"userOrderNum"` //用户自定义订单号 非必传
}
type OerCreateRes struct {
Code string `json:"code"`
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"` //包裹号
}
//物流轨迹回调接口
type ExpressNotifyRes struct {
OrderNum string `json:"orderNum"` //订单号
PkgList []struct {
ExpressCode int `json:"expressCode"` //物流状态code
ExpressList []struct {
ExpressCompany string `json:"expressCompany"` //物流公司
ExpressDetail []struct {
Express string `json:"express"` //物流节点
Time string `json:"time"` //时间
} `json:"expressDetail"` //物流详情
ExpressNum string `json:"expressNum"` //物流单号
} `json:"expressList"` //物流轨迹信息
OrderStatus string `json:"orderStatus"` //子订单状态
OrderStatusCode int `json:"orderStatusCode"` //订单状态code参考订单状态字典
PkgNo string `json:"pkgNo"` //包裹号(一笔订单可能被拆分为多个包裹)
Status string `json:"status"` //包裹物流轨迹状态 参考物流状态字典
} `json:"pkgList"` //包裹信息
UserOrderNum string `json:"userOrderNum"` //用户订单号
}
//创建订单
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
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论