提交 c62a007e authored 作者: zhanglibo's avatar zhanglibo

国美

上级 c15ac41b
package gome
import (
"context"
"errors"
"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/text/gstr"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/gutil"
"gitlab.jxhh.com/stbz/library.git/logs"
"time"
)
type Config struct {
ApiUrl string
AppKey string
AppSecret string
Version string
}
type Client struct {
*Config
AccessToken string
RefreshToken string
}
type CommonReq struct {
AppKey string `json:"app_key"`
Version string `json:"version"`
Method string `json:"method"`
AccessToken string `json:"access_token"`
Timestamp string `json:"timestamp"`
Param interface{} `json:"param"`
Sign string `json:"sign,omitempty"`
}
type CommonPageReq struct {
PageNo int `json:"pageNo"`
PageSize int `json:"pageSize"`
}
type CommonPageRes struct {
PageSize int `json:"pageSize"`
PageNo int `json:"pageNo"`
TotalPage int `json:"totalPage"`
TotalCount int `json:"totalCount"`
}
type CommonRes struct {
Code string `json:"code"`
Message string `json:"message"`
SubCode string `json:"sub_code"`
SubMsg string `json:"sub_msg"`
}
var server *Client
const pkgName = "gome"
const CacheKey = "gome:token"
func New(config *Config) {
_ = gconv.Struct(config, &server)
return
}
func (s *Client) sign(req g.Map) string {
data := gjson.New(req)
_ = data.Remove("sign")
return gstr.ToUpper(gmd5.MustEncryptString(server.AppSecret + data.MustToJsonString() + server.AppSecret))
}
func (s *Client) post(ctx context.Context, method string, req interface{}) (str string, err error) {
Start := gtime.TimestampMilli()
allparams := &CommonReq{
AppKey: server.AppKey,
Version: server.Version,
Method: method,
AccessToken: server.AccessToken,
Timestamp: gtime.Now().String(),
Param: req,
}
allparams.Sign = s.sign(gconv.Map(allparams))
Request := g.Client()
Request.SetHeader("Content-Type", "application/json")
resp, err := Request.Timeout(time.Second*5).Post(server.ApiUrl, allparams)
defer func() {
paramStr := gjson.New(req).MustToJsonString()
ctx = context.WithValue(ctx, "Method", "POST")
ctx = context.WithValue(ctx, "URI", method)
if err != nil {
logs.Errorf(ctx, pkgName, logs.FormatErr, paramStr, err.Error(), gtime.TimestampMilli()-Start)
} else {
logs.Infof(ctx, pkgName, logs.FormatSuc, paramStr, str, gtime.TimestampMilli()-Start)
}
}()
str = resp.ReadAllString()
return
}
func (s *Client) requestApi(ctx context.Context, method string, req interface{}) (str string, err error) {
err = s.getAccessToken(ctx)
if err != nil {
return
}
str, err = s.post(ctx, method, req)
return
}
type accessToken struct {
AppKey string `json:"appKey"`
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresInSeconds int64 `json:"expiresInSeconds"`
CreateTime string `json:"createTime"`
}
//getAccessToken 获取token
func (s *Client) getAccessToken(ctx context.Context) (err error) {
var token *accessToken
cache, _ := g.Redis().DoVar("HGETALL", CacheKey)
if !cache.IsEmpty() {
_ = cache.Scan(&token)
if gtime.NewFromStr(token.CreateTime).Timestamp()+token.ExpiresInSeconds > gtime.Timestamp()-3600 {
s.AccessToken = token.AccessToken
return
}
return s.refreshToken(ctx, token)
}
res, err := Token.Get(ctx)
if err != nil {
return
}
if res.Code != "4000" {
err = errors.New(res.Message)
return
}
_, _ = g.Redis().Do("HMSET", append(g.Slice{CacheKey}, gutil.MapToSlice(gconv.Map(res.Data))...)...)
s.AccessToken = res.Data.AccessToken
return
}
//refreshToken 刷新token
func (s *Client) refreshToken(ctx context.Context, req *accessToken) (err error) {
if gtime.NewFromStr(req.CreateTime).Timestamp()+req.ExpiresInSeconds < gtime.Timestamp() {
_, err = g.Redis().DoVar("DEL", CacheKey)
return s.getAccessToken(ctx)
}
res, err := Token.Refresh(ctx, req.RefreshToken)
if err != nil {
return
}
if res.Code != "4000" {
err = errors.New(res.Message)
return
}
_, _ = g.Redis().Do("HMSET", append(g.Slice{CacheKey}, gutil.MapToSlice(gconv.Map(res.Data))...)...)
s.AccessToken = res.Data.AccessToken
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
type addressGome struct {
}
var Address = addressGome{}
type AddressCommonRes struct {
*CommonRes
Data struct {
AreaDtoList []struct {
AreaCode string `json:"areaCode"`
AreaLevel int `json:"areaLevel"`
ParentCode string `json:"parentCode"`
AreaName string `json:"areaName"`
Status int `json:"status"`
} `json:"areaDtoList"`
} `json:"data"`
}
//Province 省
func (addressGome) Province(ctx context.Context) (res *AddressCommonRes, err error) {
method := "alamein.basic.get.province"
req := g.Map{}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (addressGome) City(ctx context.Context, pid string) (res *AddressCommonRes, err error) {
method := "alamein.basic.get.city"
req := g.Map{
"parentCode": pid,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (addressGome) County(ctx context.Context, pid string) (res *AddressCommonRes, err error) {
method := "alamein.basic.get.county"
req := g.Map{
"parentCode": pid,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (addressGome) Town(ctx context.Context, pid string) (res *AddressCommonRes, err error) {
method := "alamein.basic.get.town"
req := g.Map{
"parentCode": pid,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
)
type brandGome struct {
}
var Brand = brandGome{}
type BrandRes struct {
*CommonRes
Data struct {
*CommonPageRes
Result []struct {
Code string `json:"code"`
Name string `json:"name"`
} `json:"result"`
} `json:"data"`
}
//Get 品牌列表
func (brandGome) Get(ctx context.Context, req *CommonPageReq) (res *BrandRes, err error) {
method := "alemein.basic.get.brand"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
type categoryGome struct {
}
var Category = categoryGome{}
type CategoryRes struct {
*CommonRes
Data []struct {
Code string `json:"code"`
Level int `json:"level"`
ParentCode string `json:"parentCode"`
Name string `json:"name"`
} `json:"data"`
}
type CategoryPropertyRes struct {
*CommonRes
Data struct {
SaleProperties []struct {
PropertyID int `json:"propertyId"`
PropertyName string `json:"propertyName"`
PropertyType string `json:"propertyType"`
Required int `json:"required"`
} `json:"saleProperties"`
PropertyGroups []struct {
GroupID int `json:"groupId"`
GroupName string `json:"groupName"`
SpecProperties []struct {
PropertyID int `json:"propertyId"`
PropertyName string `json:"propertyName"`
PropertyType string `json:"propertyType"`
} `json:"specProperties"`
} `json:"propertyGroups"`
} `json:"data"`
}
//Get 分类列表
func (categoryGome) Get(ctx context.Context, pid ...interface{}) (res *CategoryRes, err error) {
method := "alemein.basic.get.category"
req := g.Map{}
if len(pid) > 0 {
req["parentCode"] = pid[0]
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Property 获取品类商品属性
//`categoryId` 平台三级分类代码
func (goodsGome) Property(ctx context.Context, categoryId string) (res *CategoryPropertyRes, err error) {
method := "alamein.supplier.product.cat.get.property"
req := g.Map{
"categoryId": categoryId,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/container/garray"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gconv"
)
type goodsGome struct {
}
var Goods = goodsGome{}
type GetSkuRes struct {
*CommonRes
Data struct {
Cat1Id string `json:"cat1Id"`
Cat1Name string `json:"cat1Name"`
Cat2Id string `json:"cat2Id"`
Cat2Name string `json:"cat2Name"`
Cat3Id string `json:"cat3Id"`
Cat3Name string `json:"cat3Name"`
SkuName string `json:"skuName"`
SkuShortName string `json:"skuShortName"`
BarCode string `json:"barCode"`
MchSkuId string `json:"mchSkuId"`
SkuWeight interface{} `json:"skuWeight"`
ItemNo string `json:"itemNo"`
OriginalPrice string `json:"originalPrice"`
CostPrice string `json:"costPrice"`
SellPoint interface{} `json:"sellPoint"`
AfterSaleAllowDays int `json:"afterSaleAllowDays"`
Valid int `json:"valid"`
SkuImgs []struct {
Type int `json:"type"`
Url string `json:"url"`
} `json:"skuImgs"`
Props []struct {
Pname string `json:"pname"`
Pvalue string `json:"pvalue"`
} `json:"props"`
Attrs []struct {
Aname string `json:"aname"`
Avalue string `json:"avalue"`
} `json:"attrs"`
} `json:"data"`
}
type SkuListReq struct {
PageNo int `json:"pageNo"`
PageSize int `json:"pageSize"`
BeginUpdateTime string `json:"beginUpdateTime,omitempty"`
EndUpdateTime string `json:"endUpdateTime,omitempty"`
}
type SkuListRes struct {
*CommonRes
Data struct {
*CommonPageRes
Data []struct {
Cat3Name string `json:"cat3Name"`
SkuName string `json:"skuName"`
SkuShortName string `json:"skuShortName"`
BarCode string `json:"barCode"`
MchSkuId string `json:"mchSkuId"`
SkuWeight int64 `json:"skuWeight"`
ItemNo string `json:"itemNo"`
OriginalPrice string `json:"originalPrice"`
CostPrice string `json:"costPrice"`
SellPoint string `json:"sellPoint"`
AfterSaleAllowDays int `json:"afterSaleAllowDays"`
SkuImgs []struct {
Type int `json:"type"`
Url string `json:"url"`
} `json:"skuImgs"`
Props []struct {
Pname string `json:"pname"`
Pvalue string `json:"pvalue"`
} `json:"props"`
Attrs []struct {
Aname string `json:"aname"`
Avalue string `json:"avalue"`
} `json:"attrs"`
} `json:"data"`
} `json:"data"`
}
type GetGoodsRes struct {
*CommonRes
}
type GoodsListReq struct {
PageNo int `json:"pageNo"`
PageSize int `json:"pageSize"`
BeginUpdateTime string `json:"beginUpdateTime,omitempty"`
EndUpdateTime string `json:"endUpdateTime,omitempty"`
}
type GoodsListRes struct {
*CommonRes
//todo
}
type GoodsPriceRes struct {
*CommonRes
Data []struct {
MchSkuId string `json:"mchSkuId"`
CostPrice int64 `json:"costPrice"`
} `json:"data"`
}
func (goodsGome) GetSku(ctx context.Context, sku interface{}) (res *GetSkuRes, err error) {
method := "alamein.product.read.querySingleSku"
req := g.Map{
"mchSkuId": gconv.String(sku),
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (goodsGome) SkuList(ctx context.Context, req *SkuListReq) (res *SkuListRes, err error) {
method := "alamein.product.read.pageQuerySku"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
// GetGoods todo
func (goodsGome) GetGoods(ctx context.Context, GoodsID interface{}) (res *GetGoodsRes, err error) {
method := "alamein.product.read.querySingleSpu"
var req = g.Map{
"mchSpuId": gconv.String(GoodsID),
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//GoodsList todo
func (goodsGome) GoodsList(ctx context.Context, req *GoodsListReq) (res *GoodsListRes, err error) {
method := "alamein.product.read.pageQuerySpu"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Price 商品价格批量查询
func (goodsGome) Price(ctx context.Context, sku *garray.Array) (res *GoodsPriceRes, err error) {
method := "alamein.price.read.querySkuPrice"
var req = g.Map{
"mchSkuIds": sku.Slice(),
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
type logisticsGome struct {
}
var Logistics = logisticsGome{}
type GetLogisticsRes struct {
*CommonRes
Data struct {
LogisticsDtoList []struct {
LogisticsCode string `json:"logisticsCode"`
LogisticsName string `json:"logisticsName"`
} `json:"logisticsDtoList"`
} `json:"data"`
}
func (logisticsGome) Get(ctx context.Context) (res *GetLogisticsRes, err error) {
method := "alemein.basic.get.logistics"
req := g.Map{}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
type orderGome struct {
}
var Order = orderGome{}
type CreateOrderReq struct {
OuterOrderId string `json:"outerOrderId"`
OnlinePayAmount int `json:"onlinePayAmount"`
ConsigneeInfo struct {
ReceiverName string `json:"receiverName"`
ReceiverMobile int64 `json:"receiverMobile"`
County int `json:"county"`
Town int `json:"town"`
StateName string `json:"stateName"`
CityName string `json:"cityName"`
CountyName string `json:"countyName"`
TownName string `json:"townName"`
DetailAddress string `json:"detailAddress"`
} `json:"consigneeInfo"`
SkuItems []struct {
OuterSkuItemId string `json:"outerSkuItemId"`
MchSkuId int `json:"mchSkuId"`
Quantity int `json:"quantity"`
DealPrice int `json:"dealPrice"`
MchWhseCode string `json:"mchWhseCode"`
} `json:"skuItems"`
}
type CreateOrderRes struct {
*CommonRes
Data bool `json:"data"`
}
type OrderInfoRes struct {
*CommonRes
Data struct {
OuterOrderId string `json:"outerOrderId"`
Finished string `json:"finished"`
DeliveryOrderList []struct {
DeliveryId string `json:"deliveryId"`
DeliveryStatus string `json:"deliveryStatus"`
SkuItemList []struct {
SkuItemId string `json:"skuItemId"`
OuterSkuItemId string `json:"outerSkuItemId"`
MchSkuId string `json:"mchSkuId"`
Quantity int `json:"quantity"`
} `json:"skuItemList"`
} `json:"deliveryOrderList"`
} `json:"data"`
}
type OrderStatusRes struct {
*CommonRes
Data struct {
DeliveryId string `json:"deliveryId"`
CurrentStatus string `json:"currentStatus"`
CurrentStatusTime string `json:"currentStatusTime"`
PastStatuses []struct {
Status string `json:"status"`
StatusTime string `json:"statusTime"`
} `json:"pastStatuses"`
} `json:"data"`
}
type OrderLogisticsRes struct {
*CommonRes
Data struct {
DeliveryId string `json:"deliveryId"`
CompanyCode string `json:"companyCode"`
CompanyName string `json:"companyName"`
CompanyPhone string `json:"companyPhone"`
WaybillCode string `json:"waybillCode"`
CourierName string `json:"courierName"`
CourierPhone string `json:"courierPhone"`
Tracks []struct {
TrackTime string `json:"trackTime"`
Description string `json:"description"`
} `json:"tracks"`
} `json:"data"`
}
type OrderCancelReq struct {
DeliveryId string `json:"deliveryId"`
OuterOrderId string `json:"outerOrderId"`
CancelTime string `json:"cancelTime"`
}
//Create 提交订单
func (orderGome) Create(ctx context.Context, req *CreateOrderReq) (res *CreateOrderRes, err error) {
method := "alamein.order.write.submitAndConfirm"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Info 订单详情
func (orderGome) Info(ctx context.Context, sn string) (res *OrderInfoRes, err error) {
method := "alamein.order.read.querySubmitAndConfirmResult"
var req = g.Map{
"outerOrderId": sn,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Status 订单关键状态查询
func (orderGome) Status(ctx context.Context, deliveryId string) (res *OrderStatusRes, err error) {
method := "alamein.order.read.queryKeyStatus"
var req = g.Map{
"deliveryId": deliveryId,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Logistics 物流
func (orderGome) Logistics(ctx context.Context, deliveryId string) (res *OrderLogisticsRes, err error) {
method := "alamein.order.read.queryLogisticsTrack"
var req = g.Map{
"deliveryId": deliveryId,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Cancel 支付后取消申请
func (orderGome) Cancel(ctx context.Context, req *OrderCancelReq) (res *CommonRes, err error) {
method := "alamein.order.read.queryLogisticsTrack"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
type refundGome struct {
}
var Refund = refundGome{}
type ReturnCountReq struct {
DeliveryId string `json:"deliveryId"`
OuterOrderId string `json:"outerOrderId"`
SkuItemId string `json:"skuItemId"`
MchSkuId string `json:"mchSkuId"`
}
type ReturnCountRes struct {
*CommonRes
Data struct {
ReturnableQuantity int `json:"returnableQuantity"`
} `json:"data"`
}
type ServiceTypeReq struct {
DeliveryId string `json:"deliveryId"`
AddrCode string `json:"addrCode"`
SkuItemId string `json:"skuItemId"`
MchSkuId string `json:"mchSkuId"`
OuterOrderId string `json:"outerOrderId"`
}
type ServiceTypeRes struct {
*CommonRes
Data struct {
AfterServiceTypes []struct {
Code int `json:"code"`
Name string `json:"name"`
} `json:"afterServiceTypes"`
ReturnWareTypes []struct {
Code int `json:"code"`
Name string `json:"name"`
} `json:"returnWareTypes"`
} `json:"data"`
}
type RefundCreateReq struct {
AfterServiceType string `json:"afterServiceType"`
OuterAfterServiceId string `json:"outerAfterServiceId"`
SubmitTime string `json:"submitTime"`
OriginalOuterOrderId string `json:"originalOuterOrderId"`
OuterOrderId string `json:"outerOrderId"`
OriginalDeliveryId string `json:"originalDeliveryId"`
ReturnType string `json:"returnType"`
ReturnWareType string `json:"returnWareType"`
RefundAmount string `json:"refundAmount"`
PickWareInfo string `json:"pickWareInfo"`
PickWareTime string `json:"pickWareTime"`
Name string `json:"name"`
Phone string `json:"phone"`
Address string `json:"address"`
AddressCode string `json:"addressCode"`
AddressDetail string `json:"addressDetail"`
Address1 string `json:"address1"`
Address2 string `json:"address2"`
Address3 string `json:"address3"`
Address4 string `json:"address4"`
SkuItems struct {
OuterSkuItemId string `json:"outerSkuItemId"`
OriginalSkuItemId string `json:"originalSkuItemId"`
MchSkuId string `json:"mchSkuId"`
SkuQuantity string `json:"skuQuantity"`
SkuName string `json:"skuName"`
DealPrice string `json:"dealPrice"`
} `json:"skuItems"`
AfterSaleImages struct {
ImageInx string `json:"imageInx"`
ImageType string `json:"imageType"`
ImageUrl string `json:"imageUrl"`
} `json:"afterSaleImages"`
}
type RefundCreateRes struct {
*CommonRes
Data struct {
AfterServiceId string `json:"afterServiceId"`
} `json:"data"`
}
type RefundCancelReq struct {
AfterServiceType string `json:"afterServiceType"`
OutOrderId string `json:"outOrderId"`
CancelTime string `json:"cancelTime"`
CancelReasonType string `json:"cancelReasonType"`
CancelReasonDesc string `json:"cancelReasonDesc"`
}
type RefundAuditResultReq struct {
}
type RefundAuditResultRes struct {
*CommonRes
Data struct {
GomeAfterServiceId string `json:"gomeAfterServiceId"`
AuditPassed int `json:"auditPassed"`
AuditTime string `json:"auditTime"`
RejectedReasonType string `json:"rejectedReasonType"`
RejectedReasonDesc string `json:"rejectedReasonDesc"`
ReturnWareType string `json:"returnWareType"`
ServiceAddressInfo struct {
Address string `json:"address"`
Linkman string `json:"linkman"`
Phone string `json:"phone"`
} `json:"serviceAddressInfo"`
} `json:"data"`
}
type RefundSendReq struct {
AfterServiceId string `json:"afterServiceId"`
OuterOrderId string `json:"outerOrderId"`
DeliveryCompanyCode string `json:"deliveryCompanyCode"`
DeliveryCompanyName string `json:"deliveryCompanyName"`
WaybillCode string `json:"waybillCode"`
}
type RefundStatusRes struct {
*CommonRes
Data struct {
AfterServiceId string `json:"afterServiceId"`
CurrentStatus string `json:"currentStatus"`
CurrentStatusTime interface{} `json:"currentStatusTime"`
PastStatuses []struct {
Status string `json:"status"`
StatusTime string `json:"statusTime"`
} `json:"pastStatuses"`
} `json:"data"`
}
type RefundLogisticsRes struct {
*CommonRes
Data struct {
AfterServiceId string `json:"afterServiceId"`
CompanyCode string `json:"companyCode"`
CompanyName string `json:"companyName"`
CompanyPhone string `json:"companyPhone"`
WaybillCode string `json:"waybillCode"`
CourierName string `json:"courierName"`
CourierPhone string `json:"courierPhone"`
Tracks []struct {
TrackTime string `json:"trackTime"`
Description string `json:"description"`
} `json:"tracks"`
} `json:"data"`
}
//ReturnCount 商品可退货数量
func (refundGome) ReturnCount(ctx context.Context, req *ReturnCountReq) (res *ReturnCountRes, err error) {
method := "alamein.afterSale.read.queryCanReturnCount"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//ServiceType 查询可服务类型及退回方式
func (refundGome) ServiceType(ctx context.Context, req *ServiceTypeReq) (res *ServiceTypeRes, err error) {
method := "alamein.afterSale.read.queryCanServiceTypeAndReturnType"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Create 申请
func (refundGome) Create(ctx context.Context, req *RefundCreateReq) (res *RefundCreateRes, err error) {
method := "alamein.afterSale.write.submit"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Cancel 取消售后订单
func (refundGome) Cancel(ctx context.Context, req *RefundCancelReq) (res *CommonRes, err error) {
method := "alamein.afterSale.write.cancel"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (refundGome) AuditResult(ctx context.Context, refundSn string) (res *RefundAuditResultRes, err error) {
method := "alamein.afterSale.read.queryAuditResult"
var req = g.Map{
"afterServiceId": refundSn,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Send 顾客邮寄运单信息填写
func (refundGome) Send(ctx context.Context, req *RefundSendReq) (res *RefundSendReq, err error) {
method := "alamein.afterSale.write.deliveryByCustomer"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Status 状态查询
func (refundGome) Status(ctx context.Context, refundSn string) (res *RefundStatusRes, err error) {
method := "alamein.afterSale.read.queryKeyStatus"
var req = g.Map{
"afterServiceId": refundSn,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//Logistics 接收售后订单商品验货信息
func (refundGome) Logistics(ctx context.Context, refundSn string) (res *RefundLogisticsRes, err error) {
method := "alamein.afterSale.read.queryLogisticsTrack"
var req = g.Map{
"afterServiceId": refundSn,
}
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
)
type stockGome struct {
}
var Stock = stockGome{}
type GetWarehouseRes struct {
*CommonRes
Data struct {
*CommonPageRes
Data []struct {
MchWhseCode string `json:"mchWhseCode"`
MchWhseName string `json:"mchWhseName"`
IsNationWide int `json:"isNationWide"`
Status int `json:"status"`
LastUpateTime string `json:"lastUpateTime"`
} `json:"data"`
} `json:"data"`
}
type CoverAreaReq struct {
MchWhseCode string `json:"mchWhseCode"`
PageNo int `json:"pageNo"`
PageSize int `json:"pageSize"`
}
type SaleAbleReq struct {
WhseSkuList []*SaleAbleItem `json:"whseSkuList"`
}
type SaleAbleItem struct {
MchWhseCode string `json:"mchWhseCode"`
MchSkuId string `json:"mchSkuId"`
}
type SaleAbleRes struct {
*CommonRes
Data []struct {
MchWhseCode string `json:"mchWhseCode"`
MchSkuId string `json:"mchSkuId"`
SaleableQty string `json:"saleableQty"`
} `json:"data"`
}
//GetWarehouse 分页查询商户仓库信息
func (stockGome) GetWarehouse(ctx context.Context, req *CommonPageReq) (res *GetWarehouseRes, err error) {
method := "alamein.stock.read.pageQueryWarehouse"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//CoverArea 分页查询仓市关系列表-按仓 todo
func (stockGome) CoverArea(ctx context.Context, req *CoverAreaReq) (res *CommonRes, err error) {
method := "alamein.stock.read.queryCoverArea"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//ForbidCoverArea todo
func (stockGome) ForbidCoverArea(ctx context.Context, req *CoverAreaReq) (res *CommonRes, err error) {
method := "alamein.stock.read.queryForbidCoverArea"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
//SaleAble 查询可卖数列表
func (stockGome) SaleAble(ctx context.Context, req *SaleAbleReq) (res *SaleAbleRes, err error) {
method := "alamein.stock.read.querySaleableQty"
result, err := server.requestApi(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
package gome
import (
"context"
"github.com/gogf/gf/encoding/gjson"
)
type tokenGome struct {
}
var Token = tokenGome{}
type GetTokenReq struct {
GrantType string `json:"grant_type"`
}
type TokenCommonRes struct {
*CommonRes
Data struct {
AppKey string `json:"appKey"`
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresInSeconds int64 `json:"expiresInSeconds"`
CreateTime string `json:"createTime"`
} `json:"data"`
}
type RefreshTokenReq struct {
GrantType string `json:"grant_type"`
RefreshToken string `json:"refresh_token"`
}
func (tokenGome) Get(ctx context.Context) (res *TokenCommonRes, err error) {
method := "token.create"
req := &GetTokenReq{GrantType: "authorization_secret"}
result, err := server.post(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (tokenGome) Refresh(ctx context.Context, refreshToken string) (res *TokenCommonRes, err error) {
method := "token.refresh"
req := &RefreshTokenReq{
GrantType: "authorization_code",
RefreshToken: refreshToken,
}
result, err := server.post(ctx, method, req)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论