提交 1be4539e authored 作者: 张立波's avatar 张立波

好食期

上级 56ad5bd9
package dwd
import (
"context"
"github.com/gogf/gf/container/garray"
"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"
)
type Config struct {
AppKey string
AppSecret string
API string
}
var server *Config
const PkgName = "dwd"
const CacheKey = "dwd:token"
func New(req *Config) {
server = req
return
}
func sign(req interface{}) *string {
var res string
param := gconv.MapStrStr(req)
var keys = garray.NewStrArray()
for key := range param {
keys.Append(key)
}
for _, key := range keys.Sort().Slice() {
res += key
res += param[key]
}
res = gmd5.MustEncryptString(server.AppKey + res + server.AppSecret)
return &res
}
type CommonReq struct {
Action string `json:"action"`
Appid string `json:"appid"`
Timestamp int64 `json:"timestamp"`
AccessToken string `json:"access_token"`
Biz string `json:"biz"`
}
type CommonRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data string `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
func post(ctx context.Context, method string, req interface{}) (res *CommonRes, err error) {
Start := gtime.TimestampMilli()
AccessToken, err := Token.Access(ctx)
if err != nil {
return
}
var params = CommonReq{
Action: method,
Appid: server.AppKey,
Timestamp: gtime.Timestamp(),
AccessToken: AccessToken,
Biz: gjson.New(req).MustToJsonString(),
}
var request = gjson.New(params)
_ = request.Set("signature", sign(params))
Request := g.Client().ContentType("application/x-www-form-urlencoded; charset=utf-8")
Request.Timeout(3 * time.Second)
var str string
resp, err := Request.Post(server.API, request.Map())
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】", request.MustToJsonString(), err.Error(), gtime.TimestampMilli()-Start)
} else {
g.Log().Ctx(ctx).Cat(PkgName).Infof("参数【%v】响应【%v】响应时间【%v】", request.MustToJsonString(), str, gtime.TimestampMilli()-Start)
}
}()
str = resp.ReadAllString()
_ = gjson.New(str).Scan(&res)
return
}
package dwd
import (
"context"
"github.com/gogf/gf/encoding/gjson"
)
//类目
type categoryDwd struct {
}
var Category = &categoryDwd{}
type CategoryListReq struct {
Pid string `json:"pid"`
Depth string `json:"depth"`
}
type CategoryListRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *CategoryListData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type CategoryListData struct {
List []struct {
Id int `json:"id"`
Pid int `json:"pid"`
Depth int `json:"depth"`
CategoryName string `json:"categoryName"`
} `json:"list"`
}
func (*categoryDwd) List(ctx context.Context, req CategoryListReq) (res *CategoryListRes, err error) {
var method = "common.categoryBackList"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &CategoryListRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
package dwd
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
//物流
type deliveryDwd struct {
}
var Delivery = &deliveryDwd{}
type DeliveryListRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *DeliveryListData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type DeliveryListData struct {
List []struct {
Name string `json:"name"`
Code string `json:"code"`
} `json:"list"`
}
func (*deliveryDwd) List(ctx context.Context) (res *DeliveryListRes, err error) {
var method = "common.deliveryList"
result, err := post(ctx, method, g.Map{})
if err != nil {
return
}
res = &DeliveryListRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
package dwd
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 goodsDwd struct {
}
var Goods = &goodsDwd{}
type GoodsListReq struct {
ScrollId *int `json:"scroll_id,omitempty"`
PageNum int `json:"page_num"`
PageSize int `json:"page_size"`
}
type GoodsListRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *GoodsListData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type GoodsListData struct {
List []struct {
ProductId int `json:"product_id"`
CategoryId string `json:"category_id"`
CategoryName string `json:"category_name"`
Title string `json:"title"`
BrandName string `json:"brand_name"`
Desc string `json:"desc"`
Tags string `json:"tags"`
PlaceOfProduction string `json:"place_of_production"`
ItemImgs []string `json:"item_imgs"`
MainSkuId int `json:"main_sku_id"`
Enabled int `json:"enabled"`
MainSkuPrice int `json:"main_sku_price"`
MainSkuPic string `json:"main_sku_pic"`
Thumbnail string `json:"thumbnail"`
Type int `json:"type"`
IsInvoice int `json:"is_invoice"`
IsNotExpiredDate int `json:"is_not_expired_date"`
TaxCode string `json:"tax_code"`
TaxRate int `json:"tax_rate"`
Skus []struct {
SkuId int `json:"sku_id"`
Stock int `json:"stock"`
ManufacturedDate int `json:"manufactured_date"`
ExpiredDate int `json:"expired_date"`
MarketPrice int `json:"market_price"`
Price int `json:"price"`
OutId string `json:"out_id"`
ProductId int `json:"product_id"`
SkuName string `json:"sku_name"`
Thumbnail string `json:"thumbnail"`
Enabled int `json:"enabled"`
DeliveryFee int `json:"delivery_fee"`
SkuImgs []string `json:"sku_imgs"`
SaleAttribute []struct {
AttributeName string `json:"attribute_name"`
AttributeValue string `json:"attribute_value"`
} `json:"sale_attribute"`
} `json:"skus"`
} `json:"list"`
PageSize int `json:"page_size"`
TotalCnt int `json:"total_cnt"`
ScrollId int `json:"scroll_id"`
}
func (*goodsDwd) List(ctx context.Context, req GoodsListReq) (res *GoodsListRes, err error) {
var method = "goods.list"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &GoodsListRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type GoodsDetailRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *GoodsDetailData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type GoodsDetailData struct {
ProductId int `json:"product_id"`
CategoryId string `json:"category_id"`
CategoryName string `json:"category_name"`
Title string `json:"title"`
BrandName string `json:"brand_name"`
Desc string `json:"desc"`
Tags string `json:"tags"`
PlaceOfProduction string `json:"place_of_production"`
ItemImgs []string `json:"item_imgs"`
MainSkuId int `json:"main_sku_id"`
Enabled int `json:"enabled"`
MainSkuPrice int `json:"main_sku_price"`
MainSkuPic string `json:"main_sku_pic"`
Thumbnail string `json:"thumbnail"`
Type int `json:"type"`
IsInvoice int `json:"is_invoice"`
IsNotExpiredDate int `json:"is_not_expired_date"`
TaxCode string `json:"tax_code"`
TaxRate int `json:"tax_rate"`
Skus []struct {
SkuId int `json:"sku_id"`
Stock int `json:"stock"`
ManufacturedDate int `json:"manufactured_date"`
ExpiredDate int `json:"expired_date"`
MarketPrice int `json:"market_price"`
Price int `json:"price"`
OutId string `json:"out_id"`
ProductId int `json:"product_id"`
SkuName string `json:"sku_name"`
Thumbnail string `json:"thumbnail"`
Enabled int `json:"enabled"`
DeliveryFee int `json:"delivery_fee"`
SkuImgs []string `json:"sku_imgs"`
SaleAttribute []struct {
AttributeName string `json:"attribute_name"`
AttributeValue string `json:"attribute_value"`
} `json:"sale_attribute"`
} `json:"skus"`
}
//Detail 详情
func (*goodsDwd) Detail(ctx context.Context, GoodsID interface{}) (res *GoodsDetailRes, err error) {
var method = "goods.detail"
result, err := post(ctx, method, g.Map{
"product_id": gconv.Int64(GoodsID),
})
if err != nil {
return
}
//g.Log().Info(result.Data)
res = &GoodsDetailRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type GoodsStockRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data []*GoodsStockData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type GoodsStockData struct {
SkuId int `json:"sku_id"`
Stock int `json:"stock"`
Enabled int `json:"enabled"`
}
//Stock 详情
func (*goodsDwd) Stock(ctx context.Context, skus *garray.Array) (res *GoodsStockRes, err error) {
var method = "goods.stock"
result, err := post(ctx, method, g.Map{
"sku_ids": skus.Join(","),
})
if err != nil {
return
}
//g.Log().Info(result.Data)
res = &GoodsStockRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type GoodsAreaRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data []*GoodsAreaData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type GoodsAreaData struct {
SkuId string `json:"sku_id"`
DeliveryList []struct {
ProvinceId int `json:"province_id,omitempty"`
ProvinceName string `json:"province_name,omitempty"`
CityList []struct {
CityId string `json:"city_id"`
CityName string `json:"city_name"`
DistrictList []struct {
DistrictId int `json:"district_id"`
DistrictName string `json:"district_name"`
} `json:"district_list"`
} `json:"city_list,omitempty"`
SkuId int `json:"sku_id,omitempty"`
DeliveryList []interface{} `json:"delivery_list,omitempty"`
} `json:"delivery_list"`
}
//Area 可配送区域
func (*goodsDwd) Area(ctx context.Context, sku interface{}) (res *GoodsAreaRes, err error) {
var method = "goods.deliveryAreaList"
result, err := post(ctx, method, g.Map{
"sku_id": gconv.Int64(sku),
})
if err != nil {
return
}
//g.Log().Info(result.Data)
res = &GoodsAreaRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
package dwd
import (
"context"
"github.com/gogf/gf/encoding/gjson"
)
//订单
type orderDwd struct {
}
var Order = &orderDwd{}
type OrderCreateReq struct {
OrderSn string `json:"out_order_id"` //外部关联主订单号
Consignee string `json:"consignee_name"` //收件人
Phone string `json:"consignee_phone"` //收件人电话
Province string `json:"province"` //省份
City string `json:"city"` //城市
District string `json:"district"` //区县
Address string `json:"address"` //详细地址
List []OrderCreateItem `json:"sub_orders"` //子订单
}
type OrderCreateItem struct {
SkuID int `json:"sku_id"` //sku_id
Amount int `json:"amount"` //数量
Remark string `json:"user_mem"` //订单备注
}
type OrderCreateRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *OrderCreateData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type OrderCreateData struct {
BatchNo string `json:"batch_no"`
OutOrderId string `json:"out_order_id"`
TotalPrice int `json:"total_price"`
PayPrice int `json:"pay_price"`
ConsigneeName string `json:"consignee_name"`
ConsigneePhone string `json:"consignee_phone"`
Province string `json:"province"`
City string `json:"city"`
District string `json:"district"`
Address string `json:"address"`
DeliveryPrice int `json:"delivery_price"`
Orders []struct {
OrderId int64 `json:"order_id"`
TotalPrice int `json:"total_price"`
PayPrice int `json:"pay_price"`
Amount int `json:"amount"`
DeliveryPrice int `json:"delivery_price"`
UserMem string `json:"user_mem"`
SubOrders []struct {
SubOrderId int `json:"sub_order_id"`
SkuId int `json:"sku_id"`
SkuName string `json:"sku_name"`
UnitPrice int `json:"unit_price"`
Amount int `json:"amount"`
TotalPrice int `json:"total_price"`
PayPrice int `json:"pay_price"`
ProductId int `json:"product_id"`
Thumbnail string `json:"thumbnail"`
} `json:"sub_orders"`
} `json:"orders"`
}
//Create 下单
func (*orderDwd) Create(ctx context.Context, req OrderCreateReq) (res *OrderCreateRes, err error) {
var method = "order.create"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &OrderCreateRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type OrderCommonReq struct {
BatchNo string `json:"batch_no"`
OrderSn string `json:"out_order_id,omitempty"`
}
type OrderPayRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *OrderPayData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type OrderPayData struct {
Res string `json:"res"`
}
//Pay 下单
func (*orderDwd) Pay(ctx context.Context, req OrderCommonReq) (res *OrderPayRes, err error) {
var method = "order.pay"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &OrderPayRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type OrderCancelReq struct {
BatchNo string `json:"batch_no"`
OrderSn string `json:"out_order_id,omitempty"`
}
type OrderCancelRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *OrderCancelData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type OrderCancelData struct {
Res string `json:"res"`
}
//Cancel 取消(未支付订单)
func (*orderDwd) Cancel(ctx context.Context, req OrderCommonReq) (res *OrderCancelRes, err error) {
var method = "order.cancel"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &OrderCancelRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type OrderDetailRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *OrderDetailData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type OrderDetailData struct {
OutOrderId int `json:"out_order_id "`
BatchNo string `json:"batch_no"`
TotalPrice int `json:"total_price"`
PayPrice int `json:"pay_price"`
ConsigneeName string `json:"consignee_name"`
ConsigneePhone string `json:"consignee_phone"`
Province string `json:"province"`
City string `json:"city"`
District string `json:"district"`
Address string `json:"address"`
DeliveryPrice int `json:"delivery_price"`
UserMem string `json:"user_mem"`
Orders []struct {
OrderId int64 `json:"order_id"`
TotalPrice int `json:"total_price"`
PayPrice int `json:"pay_price"`
Amount int `json:"amount"`
Status int `json:"status"`
DeliveryPrice int `json:"delivery_price"`
DeliveryStatus int `json:"delivery_status"`
DeliveryNo string `json:"delivery_no"`
DeliveryCode string `json:"delivery_code"`
DeliveryTime int `json:"delivery_time"`
ConfirmTime int `json:"confirm_time"`
UserMem string `json:"user_mem"`
CreatedAt int `json:"created_at"`
SubOrders []struct {
SubOrderId int `json:"sub_order_id"`
SkuId int `json:"sku_id"`
SkuName string `json:"sku_name"`
UnitPrice int `json:"unit_price"`
Amount int `json:"amount"`
TotalPrice int `json:"total_price"`
PayPrice int `json:"pay_price"`
ProductId int `json:"product_id"`
Thumbnail string `json:"thumbnail"`
SaleAttribute []struct {
AttributeName string `json:"attribute_name"`
AttributeValue string `json:"attribute_value"`
} `json:"sale_attribute"`
} `json:"sub_orders"`
} `json:"orders"`
}
//Detail 详情
func (*orderDwd) Detail(ctx context.Context, req OrderCommonReq) (res *OrderDetailRes, err error) {
var method = "order.detail"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &OrderDetailRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
package dwd
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gconv"
)
//售后
type refundDwd struct {
}
var Refund = refundDwd{}
type RefundApplyReq struct {
OrderID int64 `json:"order_id"`
Money int64 `json:"refund_money"`
Pics string `json:"pics,omitempty"`
ReasonID int `json:"reason_id"`
ReasonDesc string `json:"refund_reason_detail"`
}
type RefundApplyRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *RefundApplyData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type RefundApplyData struct {
BatchNo string `json:"batch_no"`
OrderId int64 `json:"order_id"`
RefundOrderId int64 `json:"refund_order_id"`
}
//Apply 申请退款
func (*refundDwd) Apply(ctx context.Context, req RefundApplyReq) (res *RefundApplyRes, err error) {
var method = "refund.apply"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &RefundApplyRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type RefundArbitrateReq struct {
OrderId string `json:"order_id"`
RefundOrderId int64 `json:"refund_order_id"`
}
type RefundArbitrateRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *RefundArbitrateData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type RefundArbitrateData struct {
BatchNo string `json:"batch_no"`
OrderId int `json:"order_id"`
RefundOrderId int `json:"refund_order_id"`
}
//Arbitrate 申述
func (*refundDwd) Arbitrate(ctx context.Context, req RefundArbitrateReq) (res *RefundArbitrateRes, err error) {
var method = "refund.arbitrate"
result, err := post(ctx, method, req)
if err != nil {
return
}
res = &RefundArbitrateRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
type RefundDetailRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data *RefundDetailData `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
type RefundDetailData struct {
BatchNo string `json:"batch_no"`
OrderId int64 `json:"order_id"`
RefundOrderId int `json:"refund_order_id"`
RefundStatus int `json:"refund_status"`
Type int `json:"type"`
Address string `json:"address"`
Remarks string `json:"remarks"`
RefundMoney int `json:"refund_money"`
AuditStatus int `json:"audit_status"`
AuditTime int `json:"audit_time"`
}
//Detail 详情
func (*refundDwd) Detail(ctx context.Context, OrderID interface{}) (res *RefundDetailRes, err error) {
var method = "refund.info"
result, err := post(ctx, method, g.Map{
"order_id": gconv.Int64(OrderID),
})
if err != nil {
return
}
res = &RefundDetailRes{
Errno: result.Errno,
Errmsg: result.Errmsg,
RequestId: result.RequestId,
Timestamp: result.Timestamp,
Signature: result.Signature,
}
_ = gjson.New(result.Data).Scan(&res.Data)
return
}
package dwd
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/errors/gerror"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/gutil"
"time"
)
type tokenDwd struct {
AccessToken string
ExpiresIn int64
}
var Token = &tokenDwd{}
type TokenGetReq struct {
Key string `json:"appid"`
Secret string `json:"appsecret"`
Timestamp int64 `json:"timestamp"`
}
type TokenGetRes struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data string `json:"data"`
RequestId string `json:"request_id"`
Timestamp int `json:"timestamp"`
Signature string `json:"signature"`
}
func (s *tokenDwd) Get(ctx context.Context) (res *TokenGetRes, err error) {
var request = TokenGetReq{
Key: server.AppKey,
Secret: server.AppSecret,
Timestamp: gtime.Timestamp(),
}
result, err := s.post(ctx, request)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
func (s *tokenDwd) Access(ctx context.Context) (res string, err error) {
cache, _ := g.Redis().DoVar("HGETALL", CacheKey)
if !cache.IsEmpty() {
_ = cache.Scan(&s)
if s.ExpiresIn > gtime.Timestamp() {
res = s.AccessToken
return
}
_, err = g.Redis().DoVar("DEL", CacheKey)
}
result, err := s.Get(ctx)
if err != nil {
return
}
if result.Errno != 0 {
err = gerror.New("获取token 失败")
return
}
_ = gjson.New(result.Data).Scan(&s)
s.ExpiresIn += gtime.Timestamp()
res = s.AccessToken
_, _ = g.Redis().Do("HMSET", append(g.Slice{CacheKey}, gutil.MapToSlice(gconv.Map(s))...)...)
return
}
func (s *tokenDwd) post(ctx context.Context, req interface{}) (res string, err error) {
//Start := gtime.TimestampMilli()
var request = gjson.New(req)
_ = request.Set("signature", sign(req))
Request := g.Client().ContentType("application/x-www-form-urlencoded; charset=utf-8")
Request.Timeout(3 * time.Second)
resp, err := Request.Post(server.API+"/token", request.Map())
defer func() {
_ = resp.Close()
ctx = context.WithValue(ctx, "Method", "POST")
ctx = context.WithValue(ctx, "URI", "token")
if err != nil {
//g.Log().Ctx(ctx).Infof("参数【%v】错误【%v】响应时间【%v】", request.MustToJsonString(), err.Error(), gtime.TimestampMilli()-Start)
} else {
//g.Log().Ctx(ctx).Cat(PkgName).Infof("参数【%v】响应【%v】响应时间【%v】", request.MustToJsonString(), res, gtime.TimestampMilli()-Start)
}
}()
res = resp.ReadAllString()
return
}
...@@ -14,6 +14,7 @@ const ( ...@@ -14,6 +14,7 @@ const (
Schl = 11 //盛创汇联 Schl = 11 //盛创汇联
Wpc = 12 //唯品会 Wpc = 12 //唯品会
Ikc = 13 //爱库存 Ikc = 13 //爱库存
Dwd = 14 //好食期
) )
var ( var (
...@@ -70,6 +71,10 @@ func GetUpstreamList() (res interface{}, err error) { ...@@ -70,6 +71,10 @@ func GetUpstreamList() (res interface{}, err error) {
"key": Ikc, "key": Ikc,
"name": GetUpstreamName(Ikc), "name": GetUpstreamName(Ikc),
}, },
g.Map{
"key": Dwd,
"name": GetUpstreamName(Dwd),
},
} }
return return
} }
...@@ -94,6 +99,8 @@ func GetUpstreamName(source int) string { ...@@ -94,6 +99,8 @@ func GetUpstreamName(source int) string {
return "特卖一仓" return "特卖一仓"
case Ikc: case Ikc:
return "特卖二仓" return "特卖二仓"
case Dwd:
return "好食期"
default: default:
return "未知来源" return "未知来源"
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论