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

淘特

上级 6a4135a2
......@@ -34,7 +34,7 @@ func New(req *Config) {
server = req
gtimer.Add(time.Hour, func() {
var ctx = gctx.New()
_ = server.accessToken(ctx)
_, _ = server.accessToken(ctx)
})
return
}
......@@ -101,7 +101,7 @@ func Post(ctx context.Context, method string, params g.Map) (str string, err err
defer func() {
_ = resp.Close()
paramStr := gjson.New(params).MustToJsonString()
ctx = context.WithValue(ctx, "Method", "GET")
ctx = context.WithValue(ctx, "Method", "POST")
ctx = context.WithValue(ctx, "URI", Url)
if err != nil {
g.Log().Cat(PkgName).Ctx(ctx).Infof("参数【%v】错误【%v】响应时间【%vms】", paramStr, err.Error(), gtime.TimestampMilli()-Start)
......@@ -170,16 +170,22 @@ func (s *Config) GetAccessToken(ctx context.Context) (res string, err error) {
}
var result *AuthTokenRes
_ = gjson.New(cache).Scan(&result)
if result == nil || result.AccessToken == "" || result.AccessTokenExpireTime < gtime.TimestampMilli() {
if result == nil || result.AccessToken == "" {
err = gerror.New("获取token 失败")
return
}
if result.AccessTokenExpireTime < gtime.TimestampMilli() {
result, err = s.accessToken(ctx)
if err != nil {
return
}
}
res = result.AccessToken
return
}
//accessToken 刷新
func (s *Config) accessToken(ctx context.Context) (err error) {
func (s *Config) accessToken(ctx context.Context) (res *AuthTokenRes, err error) {
var conn = g.Redis().Conn()
defer func() {
_ = conn.Close()
......@@ -190,19 +196,18 @@ func (s *Config) accessToken(ctx context.Context) (err error) {
err = gerror.New("获取token 失败")
return
}
var result *AuthTokenRes
_ = gjson.New(cache).Scan(&result)
if result.AccessTokenExpireTime > gtime.Now().Add(time.Hour).TimestampMilli() {
_ = gjson.New(cache).Scan(&res)
if res.AccessTokenExpireTime > gtime.Now().Add(time.Hour).TimestampMilli() {
return
}
result, err = Auth.Token(ctx, result.RefreshToken, 2)
res, err = Auth.Token(ctx, res.RefreshToken, 2)
if err != nil {
return
}
if result.Code != "success" {
if res.Code != "success" {
err = gerror.New("获取token 失败")
return
}
_, _ = conn.Do("HMSET", CacheKey, "accessToken", result.AccessToken, "accessTokenExpireTime", result.AccessTokenExpireTime)
_, _ = conn.Do("HMSET", CacheKey, "accessToken", res.AccessToken, "accessTokenExpireTime", res.AccessTokenExpireTime)
return
}
......@@ -7,10 +7,10 @@ import (
"github.com/gogf/gf/util/gconv"
)
type goodsItao struct {
type goods struct {
}
var Goods = goodsItao{}
var Goods = goods{}
type GoodsListReq struct {
Q string `json:"q,omitempty"` //关键词
......@@ -40,7 +40,7 @@ type GoodsListRes struct {
} `json:"auctions"`
}
func (goodsItao) List(ctx context.Context, req GoodsListReq) (res *GoodsListRes, err error) {
func (goods) List(ctx context.Context, req GoodsListReq) (res *GoodsListRes, err error) {
method := "tt.item.list"
result, err := server.Get(ctx, method, gconv.Map(req))
......@@ -121,7 +121,7 @@ type GoodsItem struct {
}
//Detail 详情
func (goodsItao) Detail(ctx context.Context, GoodsID string) (res *GoodsDetailRes, err error) {
func (goods) Detail(ctx context.Context, GoodsID string) (res *GoodsDetailRes, err error) {
method := "tt.item.detail.v2"
var request = GoodsDetailReq{
AppKey: gconv.Int(server.AppKey),
......@@ -317,7 +317,7 @@ type GoodsDescItem struct {
}
//Desc 详情描述
func (goodsItao) Desc(ctx context.Context, GoodsID string) (res *GoodsDescRes, err error) {
func (goods) Desc(ctx context.Context, GoodsID string) (res *GoodsDescRes, err error) {
method := "tt.item.desc"
result, err := server.Get(ctx, method, g.Map{
......@@ -348,7 +348,7 @@ type GoodsCategoryRes struct {
}
//Category 商品类目
func (goodsItao) Category(ctx context.Context, GoodsID string) (res *GoodsCategoryRes, err error) {
func (goods) Category(ctx context.Context, GoodsID string) (res *GoodsCategoryRes, err error) {
method := "tt.item.cateInfo"
result, err := server.Get(ctx, method, g.Map{
......
......@@ -57,8 +57,25 @@ func (logistics) Trace(ctx context.Context, req string) (res *LogisticsTraceRes,
return
}
type LogisticsCompanyRes struct {
Result []LogisticsCompanyItem `json:"result"`
Success bool `json:"success"`
}
type LogisticsCompanyItem struct {
Code string `json:"code"`
Name string `json:"name"`
Id int64 `json:"id"`
Type int `json:"type"`
}
type LogisticsCompany struct {
Result map[string][]interface{} `json:"result"`
Success bool `json:"success"`
}
//Company 物流公司
func (logistics) Company(ctx context.Context, req string) (res *LogisticsTraceRes, err error) {
func (logistics) Company(ctx context.Context, req string) (res *LogisticsCompanyRes, err error) {
method := "tt.refund.queryLogisticList"
result, err := server.Post(ctx, method, g.Map{
......@@ -66,6 +83,16 @@ func (logistics) Company(ctx context.Context, req string) (res *LogisticsTraceRe
"bizOrderId": req,
},
})
_ = gjson.New(result).Scan(&res)
var data *LogisticsCompany
_ = gjson.New(result).Scan(&data)
res = new(LogisticsCompanyRes)
res.Success = data.Success
for _, item := range data.Result {
for _, val := range item {
var value []LogisticsCompanyItem
_ = gjson.New(val).Scan(&value)
res.Result = append(res.Result, value...)
}
}
return
}
......@@ -9,10 +9,10 @@ import (
"github.com/gogf/gf/util/gconv"
)
type orderItao struct {
type order struct {
}
var Order = orderItao{}
var Order = order{}
type OrderBeforeReq struct {
Address OrderAddress `json:"deliveryAddressInfo"`
......@@ -98,16 +98,16 @@ type OrderBeforeRes struct {
ItemId int64 `json:"itemId"`
Pic string `json:"pic"`
Price string `json:"price"`
SkuId int64 `json:"skuId"`
SkuId string `json:"skuId"`
SkuInfoList []struct {
Name string `json:"name"`
Value string `json:"value"`
} `json:"skuInfoList"`
Title string `json:"title"`
} `json:"itemInfo"`
ItemPayPrice uint `json:"itemPayPrice"`
OrderLineId int `json:"orderLineId"`
Quantity uint `json:"quantity"`
ItemPayPrice uint `json:"itemPayPrice"`
OrderLineId int64 `json:"orderLineId"`
Quantity uint `json:"quantity"`
} `json:"orderLineRenders"`
OrderPayPrice int `json:"orderPayPrice"`
PostFee int `json:"postFee"`
......@@ -147,7 +147,7 @@ type OrderPromotion struct {
}
//Before 前置校验
func (s orderItao) Before(ctx context.Context, req OrderBeforeReq) (res *OrderBeforeRes, err error) {
func (s order) Before(ctx context.Context, req OrderBeforeReq) (res *OrderBeforeRes, err error) {
method := "tt.order.render"
result, err := server.Post(ctx, method, g.Map{
......@@ -201,7 +201,7 @@ type OrderCreateRes struct {
}
//Create 下单
func (s orderItao) Create(ctx context.Context, req OrderCreateReq) (res *OrderCreateRes, err error) {
func (s order) Create(ctx context.Context, req OrderCreateReq) (res *OrderCreateRes, err error) {
method := "tt.order.create"
for k, item := range req.List {
......@@ -216,7 +216,7 @@ func (s orderItao) Create(ctx context.Context, req OrderCreateReq) (res *OrderCr
return
}
func (s orderItao) outId(req string) (res string) {
func (s order) outId(req string) (res string) {
res = gstr.SubStr(req, 2, -1)
res = gstr.Replace(res, "_15_", "_")
return fmt.Sprintf("%s_%s", server.AppKey, res)
......@@ -226,12 +226,12 @@ type OrderDetailRes struct {
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
Result struct {
BizOrderId int64 `json:"bizOrderId"`
BizOrderId string `json:"bizOrderId"`
BuyAmount int `json:"buyAmount"`
BuyerToken string `json:"buyerToken"`
Detail int `json:"detail"`
DetailOrderList []struct {
BizOrderId int64 `json:"bizOrderId"`
BizOrderId string `json:"bizOrderId"`
BuyAmount int `json:"buyAmount"`
BuyerToken string `json:"buyerToken"`
Detail int `json:"detail"`
......@@ -316,7 +316,7 @@ type OrderDetailRes struct {
}
//Detail 详情
func (s orderItao) Detail(ctx context.Context, req interface{}) (res *OrderDetailRes, err error) {
func (s order) Detail(ctx context.Context, req interface{}) (res *OrderDetailRes, err error) {
method := "tt.order.detail"
result, err := server.Post(ctx, method, g.Map{
......@@ -331,7 +331,10 @@ func (s orderItao) Detail(ctx context.Context, req interface{}) (res *OrderDetai
}
type OrderReflectRes struct {
Result struct {
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
ErrCode string `json:"errCode"`
Result struct {
BizOrderId string `json:"bizOrderId"`
BuyAmount uint `json:"buyAmount"`
BuyerToken string `json:"buyerToken"`
......@@ -343,12 +346,15 @@ type OrderReflectRes struct {
Detail int `json:"detail"`
GmtCreate string `json:"gmtCreate"`
ItemInfo struct {
ItemId string `json:"itemId"`
Pic string `json:"pic"`
Price uint `json:"price"`
SkuId string `json:"skuId"`
SkuInfoList []interface{} `json:"skuInfoList"`
Title string `json:"title"`
ItemId string `json:"itemId"`
Pic string `json:"pic"`
Price uint `json:"price"`
SkuId string `json:"skuId"`
SkuInfoList []struct {
Name string `json:"name"`
Value string `json:"value"`
} `json:"skuInfoList"`
Title string `json:"title"`
} `json:"itemInfo"`
LogisticsOrderId int64 `json:"logisticsOrderId"`
LogisticsStatus int `json:"logisticsStatus"`
......@@ -378,12 +384,15 @@ type OrderReflectRes struct {
} `json:"detailOrderList"`
GmtCreate string `json:"gmtCreate"`
ItemInfo struct {
ItemId string `json:"itemId"`
Pic string `json:"pic"`
Price uint `json:"price"`
SkuId string `json:"skuId"`
SkuInfoList []interface{} `json:"skuInfoList"`
Title string `json:"title"`
ItemId string `json:"itemId"`
Pic string `json:"pic"`
Price uint `json:"price"`
SkuId string `json:"skuId"`
SkuInfoList []struct {
Name string `json:"name"`
Value string `json:"value"`
} `json:"skuInfoList"`
Title string `json:"title"`
} `json:"itemInfo"`
LogisticsOrderId int64 `json:"logisticsOrderId"`
LogisticsStatus int `json:"logisticsStatus"`
......@@ -411,13 +420,10 @@ type OrderReflectRes struct {
SellerToken string `json:"sellerToken"`
Status int `json:"status"`
} `json:"result"`
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
ErrCode string `json:"errCode"`
}
//Reflect 详情[反查]
func (s orderItao) Reflect(ctx context.Context, req string) (res *OrderReflectRes, err error) {
func (s order) Reflect(ctx context.Context, req string) (res *OrderReflectRes, err error) {
method := "tt.order.detail.outid"
result, err := server.Post(ctx, method, g.Map{
......@@ -433,12 +439,25 @@ func (s orderItao) Reflect(ctx context.Context, req string) (res *OrderReflectRe
type OrderPayRes struct {
Result struct {
ErrCode string `json:"errCode"`
ErrMsg string `json:"errMsg"`
Success bool `json:"success"`
Result struct {
Result string `json:"result"`
Success bool `json:"success"`
ErrCode string `json:"errCode"`
ErrMsg string `json:"errMsg"`
} `json:"result"`
} `json:"result"`
}
func (s orderItao) Pay(ctx context.Context, req string) (res *OrderPayRes, err error) {
func (s order) Pay(ctx context.Context, req string) (res *OrderPayRes, err error) {
method := "tt.agreementpay.dopay"
result, err := server.Post(ctx, method, g.Map{
"request": g.Map{
"bizOrderId": gconv.Int64(req),
},
})
_ = gjson.NewWithOptions(result, gjson.Options{
StrNumber: true,
}).Scan(&res)
return
}
......@@ -16,9 +16,8 @@ type RefundPic struct {
}
type RefundBeforeRes struct {
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
Result struct {
CommonRes
Result struct {
BizClaimTypeVOList []struct {
BizClaimType string `json:"bizClaimType"` //refund 仅退款 return_and_refund 退货退款
RefundTypeTitle string `json:"refundTypeTitle"`
......@@ -44,13 +43,12 @@ func (s refund) Before(ctx context.Context, req string) (res *RefundBeforeRes, e
type RefundReasonReq struct {
BizOrderId string `json:"bizOrderId"`
BizClaimType string `json:"bizClaimType"`
GoodsStatus string `json:"goodsStatus"`
GoodsStatus string `json:"goodsStatus,omitempty"`
}
type RefundReasonRes struct {
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
Result struct {
CommonRes
Result struct {
MaxRefundFee int `json:"maxRefundFee"`
MinRefundFee int `json:"minRefundFee"`
MustProof bool `json:"mustProof"`
......@@ -84,8 +82,15 @@ type RefundCreateReq struct {
LeaveMessagePics []RefundPic `json:"leaveMessagePics,omitempty"`
}
type RefundCreateRess struct {
CommonRes
Result struct {
DisputeId string `json:"disputeId"`
} `json:"result"`
}
//Create 申请
func (s refund) Create(ctx context.Context, req RefundCreateReq, image ...string) (res *RefundBeforeRes, err error) {
func (s refund) Create(ctx context.Context, req RefundCreateReq, image ...string) (res *RefundCreateRess, err error) {
method := "tt.refund.refundSubmit"
if len(image) > 0 {
for _, item := range image {
......@@ -108,7 +113,7 @@ func (s refund) Create(ctx context.Context, req RefundCreateReq, image ...string
//`bizOrderId` 子订单号
//`disputeId` 售后单号
func (s refund) Cancle(ctx context.Context, bizOrderId, disputeId string) (res *CommonRes, err error) {
method := "tt.refund.refundSubmit"
method := "tt.refund.refundRevoke"
result, err := server.Post(ctx, method, g.Map{
"request": g.Map{
......@@ -134,8 +139,8 @@ type RefundSubmitReq struct {
}
type RefundSubmitRes struct {
Success bool `json:"success"`
Result struct {
CommonRes
Result struct {
DisputeStatus string `json:"disputeStatus"`
//REFUND_WAIT_SELLER_AGREE:"买家已经申请退款,等待卖家同意";
//REFUND_WAIT_BUYER_RETURN_GOODS:"卖家已经同意退款,等待买家退货";
......@@ -166,9 +171,8 @@ func (s refund) Submit(ctx context.Context, req RefundSubmitReq, image ...string
}
type RefundDetailRes struct {
Success bool `json:"success"`
ErrMsg string `json:"errMsg"`
Result struct {
CommonRes
Result struct {
DisputeId int64 `json:"disputeId"` //退款编号
DisputeStatus string `json:"disputeStatus"`
//退款状态
......
package itao
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"net/url"
"time"
)
type upload struct {
}
var Upload = upload{}
type UploadImageReq struct {
FileName string `json:"fileName"`
FileContent string `json:"fileContent"`
ImageData string `json:"imageData"`
}
type UploadImageRes struct {
Code string `json:"code"`
Message string `json:"message"`
FileUrl string `json:"fileUrl"`
}
func (s upload) Image(ctx context.Context, req UploadImageReq) (res *UploadImageRes, err error) {
method := "tt.upload.image"
req.FileContent = "base64"
var request = g.Map{}
request["access_token"], err = server.GetAccessToken(ctx)
if err != nil {
return
}
result, err := s.post(ctx, method, request, req)
_ = gjson.New(result).Scan(&res)
return
}
func (upload) post(ctx context.Context, method string, params g.Map, req UploadImageReq) (str string, err error) {
Start := gtime.TimestampMilli()
err = sign(method, params)
if err != nil {
return
}
Url := Host + method + "/" + server.AppKey
Request := g.Client()
Values := url.Values{}
for k, v := range params {
Values.Add(k, gconv.String(v))
}
Request.SetHeader("Content-Type", "application/x-www-form-urlencoded")
resp, err := Request.Timeout(time.Second*5).Post(Url+"?"+Values.Encode(), req)
defer func() {
_ = resp.Close()
paramStr := gjson.New(params).MustToJsonString()
ctx = context.WithValue(ctx, "Method", "POST")
ctx = context.WithValue(ctx, "URI", Url)
if err != nil {
g.Log().Cat(PkgName).Ctx(ctx).Infof("参数【%v】错误【%v】响应时间【%vms】", paramStr, err.Error(), gtime.TimestampMilli()-Start)
} else {
g.Log().Cat(PkgName).Ctx(ctx).Infof("参数【%v】响应【%v】响应时间【%vms】", paramStr, str, gtime.TimestampMilli()-Start)
}
}()
str = resp.ReadAllString()
return
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论