This commit is contained in:
richboo111
2023-06-28 11:40:10 +08:00
15 changed files with 556 additions and 36 deletions

View File

@@ -70,7 +70,7 @@ func TestCancel(t *testing.T) {
//
func TestQueryOrderInfo(t *testing.T) {
dadaapi = New("dada154e2a41fd6cef3", "7f97d8f258b70b450f04e7ab274ed8f8", "6660", "http://callback.jxc4.com/dadadelivery/msg", true)
result, err := dadaapi.QueryOrderInfo("1100568013516213472")
result, err := dadaapi.QueryOrderInfo("1100599580388710489")
if err != nil {
t.Fatal(err)
}

View File

@@ -57,7 +57,7 @@ func TestOrderListAll(t *testing.T) {
}
func TestOrderPartRefundGet(t *testing.T) {
result, err := api.OrderPartRefundGet("4071470101033382467")
result, err := api.OrderPartRefundGet("4056950043422699136")
if err != nil {
t.Fatal(err)
} else {

View File

@@ -410,6 +410,7 @@ func (a *API) OrderLogisticsChange2Self(orderID int64) (err error) {
return err
}
// OrderDelivering 订单自配送中不支持骑手信息
func (a *API) OrderDelivering(orderID int64) (err error) {
retval, err := a.AccessAPI("order/delivering", true, map[string]interface{}{
KeyOrderID: orderID,

View File

@@ -15,3 +15,33 @@ type StoreTokenInfo struct {
RefreshTokenValidTime int64 `json:"refresh_token_valid_time"`
AccessToken string `json:"access_token"`
}
// VegetableResultList 创建更新时,同意返回结构
type VegetableResultList struct {
ProductID string `json:"product_id"`
SkuID string `json:"sku_id"`
ErrMsg string `json:"err_msg"`
}
// CallBackResult 回调函数同意返回结构
type CallBackResult struct {
Success bool `json:"success"`
ErrCode string `json:"errCode"` // SUCCESS/Fail
ErrMsg string `json:"errMsg"` // 文字说明
}
// CallBackResultInfo 失败回调返回
func CallBackResultInfo(err error) *CallBackResult {
if err == nil {
return &CallBackResult{
Success: true,
ErrCode: "SUCCESS",
ErrMsg: "",
}
}
return &CallBackResult{
Success: false,
ErrCode: "FAIL",
ErrMsg: err.Error(),
}
}

View File

@@ -33,6 +33,10 @@ func (a *API) GetVendorOrgCode() string {
return a.client.AppKey
}
func (a *API) GetAppSecret() string {
return a.client.AppSecret
}
func (a *API) SetToken(token string) {
a.token = token
}

View File

@@ -9,10 +9,12 @@ import (
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591"
domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain"
request591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/request"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/util"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
"io/ioutil"
"net/http"
"time"
)
// AgreeUserCancel 同意用户售后申请
@@ -113,6 +115,17 @@ func (a *API) UserCancelRefundApply(c *http.Request) (*UserCancelRefundApply, er
return result, nil
}
// OnSaleRefundOrder 用户售中取消
func (a *API) OnSaleRefundOrder(c *http.Request) (*OnSaleCancel, error) {
body, _ := ioutil.ReadAll(c.Body)
var onSaleOrder *OnSaleCancel
if err := json.Unmarshal(body, &onSaleOrder); err != nil {
return nil, err
}
return onSaleOrder, nil
}
// RefundOrderFinish 同城零售逆向订单状态完成接口(退款完成)
func (a *API) RefundOrderFinish(c *http.Request) (*RefundOrderFinish, error) {
data, err := ioutil.ReadAll(c.Body)
@@ -162,6 +175,46 @@ func (a *API) QueryAfsOrderDetailList(req *request591.AlibabaWdkOrderRefundListR
return &data.Result, nil
}
// GetTransactionOrderListByTime 获取门店当天订单
func (a *API) GetTransactionOrderListByTime(storeId string, queryData time.Time) ([]string, error) {
createTime := util.LocalTime(time.Date(queryData.Year(), queryData.Month(), queryData.Day(), 0, 0, 0, 0, queryData.Location()))
endTime := util.LocalTime(time.Date(queryData.Year(), queryData.Month(), queryData.Day(), 23, 59, 59, 59, queryData.Location()))
var pageIndex int64 = 0
var PageSize int64 = 200
param := &request591.AlibabaWdkOrderListRequest{
BatchQueryRequest: &domain591.AlibabaWdkOrderListBatchQueryRequest{
StoreIds: &[]string{storeId},
StartTime: &createTime,
EndTime: &endTime,
OrderFrom: utils.Int64ToPointer(ChannelCome),
ShopId: nil,
StoreId: nil,
BizType: nil,
},
}
vendorOrderList := make([]string, 0, 0)
for {
param.BatchQueryRequest.SetPageSize(PageSize)
param.BatchQueryRequest.SetPageIndex(pageIndex)
result, err := a.GetTransactionOrderList(param)
if err != nil {
return nil, err
}
for _, v := range *result.Orders {
vendorOrderList = append(vendorOrderList, utils.Int64ToStr(*v.BizOrderId))
}
if *result.NextIndex != -1 {
pageIndex += 1
} else {
break
}
}
return vendorOrderList, nil
}
// GetTransactionOrderList 实时拉取交易列表
func (a *API) GetTransactionOrderList(req *request591.AlibabaWdkOrderListRequest) (*domain591.AlibabaWdkOrderListResult, error) {
client := ability591.NewAbility591(&a.client)

View File

@@ -24,16 +24,6 @@ func (a *API) ReaderOrderInfo(c *http.Request) (*CallbackOrder, error) {
return callbackOrder, nil
}
func (a *API) OnSaleRefundOrder(c *http.Request) (*OnSaleCancel, error) {
body, _ := ioutil.ReadAll(c.Body)
var onSaleOrder *OnSaleCancel
if err := json.Unmarshal(body, &onSaleOrder); err != nil {
return nil, err
}
return onSaleOrder, nil
}
// QueryOrderDetail 自配送查询订单详情
func (a *API) QueryOrderDetail(req *request2.AlibabaAelophyOrderGetRequest) (*domain.AlibabaAelophyOrderGetOrderResponse, error) {
client := ability591.NewAbility591(&a.client)

View File

@@ -0,0 +1,7 @@
package tao_vegetable
import "testing"
func TestName(t *testing.T) {
}

View File

@@ -10,6 +10,34 @@ import (
)
// GetStoreAllCategory 获取门店所有分类
func (a *API) GetStoreAllCategory() ([]*CategoryInfo, error) {
// 获取所有的父分类
parent, err := a.GetStoreCategoryInfo("")
if err != nil {
return nil, err
}
result := make([]*CategoryInfo, 0)
for _, v := range parent.ChildCategorys {
childNode, err := a.GetStoreCategoryInfo(v.Code)
if err != nil || len(childNode.ChildCategorys) == 0 {
result = append(result, &CategoryInfo{
ChildCategorys: nil,
Code: v.Code,
Desc: v.Desc,
ForestId: v.ForestId,
Leaf: v.Leaf,
Name: v.Name,
ParentForestId: v.ParentForestId,
Status: v.Status,
})
continue
}
result = append(result, childNode)
}
return result, nil
}
// GetStoreCategoryInfo 获取门店指定分类
func (a *API) GetStoreCategoryInfo(code string) (*CategoryInfo, error) {
@@ -29,15 +57,44 @@ func (a *API) GetStoreCategoryInfo(code string) (*CategoryInfo, error) {
return info, nil
}
// AddStoreCategoryInfo 添加门店分类
func (a *API) AddStoreCategoryInfo(param *request.AlibabaWdkSkuCategoryAddRequest) (string, error) {
storeCategory := ability587.NewAbility587(&a.client)
resp, err := storeCategory.AlibabaWdkSkuCategoryAdd(param, a.token)
if err != nil {
return "", err
}
if resp.Result.ErrMsg != nil {
return "", fmt.Errorf("requestId:" + resp.RequestId + "msg:" + *resp.Result.ErrMsg)
if !*resp.Result.Success {
return "", fmt.Errorf(*resp.Result.ErrMsg)
}
return *resp.Result.Model, nil
}
// DeleteStoreCategoryInfo 删除门店分类
func (a *API) DeleteStoreCategoryInfo(param *request.AlibabaWdkSkuCategoryDeleteRequest) error {
storeCategory := ability587.NewAbility587(&a.client)
resp, err := storeCategory.AlibabaWdkSkuCategoryDelete(param, a.token)
if err != nil {
return err
}
if !*resp.Result.Success {
return fmt.Errorf(*resp.Result.ErrMsg)
}
return nil
}
// UpdateStoreCategoryInfo 修改门店分类
func (a *API) UpdateStoreCategoryInfo(param *request.AlibabaWdkSkuCategoryUpdateRequest) error {
storeCategory := ability587.NewAbility587(&a.client)
resp, err := storeCategory.AlibabaWdkSkuCategoryUpdate(param, a.token)
if err != nil {
return err
}
if !*resp.Result.Success {
return fmt.Errorf(*resp.Result.ErrMsg)
}
return nil
}

View File

@@ -13,20 +13,12 @@ type Points struct {
/*商品分类*/
type CategoryInfo struct {
ChildCategorys []struct {
Code string `json:"code"` // 类目编码
Desc string `json:"desc"` // 详细描述
ForestId int `json:"forestId"` // 类目id
Leaf bool `json:"leaf"` // 是否叶子结点
Name string `json:"name"` // 类目名称
ParentForestId int `json:"parentForestId"` // 父节点id
Status int `json:"status"`
} `json:"childCategorys"`
Code string `json:"code"`
Desc string `json:"desc"`
ForestId int `json:"forestId"`
Leaf bool `json:"leaf"`
Name string `json:"name"`
ParentForestId int `json:"parentForestId"`
Status int `json:"status"`
ChildCategorys []*CategoryInfo `json:"childCategorys"`
Code string `json:"code"` // 类目编码
Desc string `json:"desc"` // 详细描述
ForestId int `json:"forestId"` // 类目id
Leaf bool `json:"leaf"` // 是否叶子结点
Name string `json:"name"` // 类目名称
ParentForestId int `json:"parentForestId"` // 父节点id
Status int `json:"status"`
}

View File

@@ -15,7 +15,7 @@ import (
)
// AddStoreSku 新增门店商品
func (a *API) AddStoreSku(param *request.AlibabaWdkSkuAddRequest) (*[]domain.AlibabaWdkSkuAddApiResult, error) {
func (a *API) AddStoreSku(param *request.AlibabaWdkSkuAddRequest) (*[]VegetableResultList, error) {
client := ability585.NewAbility585(&a.client)
data, err := client.AlibabaWdkSkuAdd(param, a.token)
@@ -29,11 +29,20 @@ func (a *API) AddStoreSku(param *request.AlibabaWdkSkuAddRequest) (*[]domain.Ali
return nil, fmt.Errorf(*data.Result.ErrMsg)
}
return data.Result.Models, nil
var foodList = make([]VegetableResultList, 0, len(*data.Result.Models))
for _, v := range *data.Result.Models {
foodList = append(foodList, VegetableResultList{
ProductID: *v.ProductId,
SkuID: *v.Model,
ErrMsg: *v.ErrMsg,
})
}
return &foodList, nil
}
// UpdateStoreSku 更新门店商品
func (a *API) UpdateStoreSku(param *request.AlibabaWdkSkuUpdateRequest) (*[]domain.AlibabaWdkSkuUpdateApiResult, error) {
func (a *API) UpdateStoreSku(param *request.AlibabaWdkSkuUpdateRequest) (*[]VegetableResultList, error) {
client := ability585.NewAbility585(&a.client)
data, err := client.AlibabaWdkSkuUpdate(param, a.token)
@@ -47,7 +56,19 @@ func (a *API) UpdateStoreSku(param *request.AlibabaWdkSkuUpdateRequest) (*[]doma
return nil, fmt.Errorf(*data.Result.ErrMsg)
}
return data.Result.Models, nil
var foodList = make([]VegetableResultList, 0, len(*data.Result.Models))
for _, v := range *data.Result.Models {
model := VegetableResultList{
ProductID: *v.Model,
SkuID: *v.Model,
}
if !*v.Success {
model.ErrMsg = *v.ErrMsg
}
foodList = append(foodList, model)
}
return &foodList, nil
}
// QueryStoreSKu 查询门店商品
@@ -68,8 +89,13 @@ func (a *API) QueryStoreSKu(param *request.AlibabaWdkSkuQueryRequest) (*[]domain
return data.Result.Models, nil
}
// StoreSkuUpdate 门店商品上下架
func (a *API) StoreSkuUpdate(param *request2.AlibabaAxChannelSkuStatusUpdateRequest) error {
// DeleteStoreSku 删除门店商品
func (a *API) DeleteStoreSku() {
}
// StoreSkuUpdateOffShelf 门店商品上下架
func (a *API) StoreSkuUpdateOffShelf(param *request2.AlibabaAxChannelSkuStatusUpdateRequest) error {
client := ability587.NewAbility587(&a.client)
data, err := client.AlibabaAxChannelSkuStatusUpdate(param, a.token)

View File

@@ -0,0 +1,233 @@
package tao_vegetable
import (
"fmt"
request1475 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability1475/request"
domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain"
request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request"
domain585 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/domain"
request585 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/request"
domain587 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587/domain"
request587 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587/request"
domain589 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability589/domain"
request589 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability589/request"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
"io/ioutil"
"net/http"
"strings"
"testing"
"time"
)
// 上传图片
func TestUploadImg(t *testing.T) {
responseImg, err := http.Get("http://image.jxc4.com/8b7e117eb51bda162ea7fd249086d2e0.png")
if err != nil {
globals.SugarLogger.Debugf("img err := %s", err.Error())
return
}
imgByte, _ := ioutil.ReadAll(responseImg.Body)
globals.SugarLogger.Debugf("=======imgByte := %s", utils.Format4Output(len(imgByte), false))
data, err := apiTao.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{
PictureCategoryId: utils.Int64ToPointer(0),
Img: &imgByte,
ImgInputTitle: utils.String2Pointer("059c91725ee08443a4aaa204d1f54032.png"),
Title: utils.String2Pointer("059c91725ee08443a4aaa204d1f54032"),
})
globals.SugarLogger.Debugf("=======data := %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("=======err2 := %s", utils.Format4Output(err, false))
}
func TestAddStoreSku(t *testing.T) {
param1 := &request585.AlibabaWdkSkuAddRequest{}
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
sku1 := domain585.AlibabaWdkSkuAddSkuDo{
Barcodes: utils.String2Pointer("19930827"),
BrandName: utils.String2Pointer("京西菜场"),
//CategoryCode: utils.String2Pointer("222201"),
OuCode: utils.String2Pointer("JX668594"),
InventoryUnit: utils.String2Pointer("份"),
//MainPicUrls: utils.String2Pointer("https://img.alicdn.com/imgextra/i1/2680068332/O1CN01nXtVt92BQ6ryMXDpS_!!2680068332.png"), // 多图逗号
//DetailPicUrls: utils.String2Pointer("https://img.alicdn.com/imgextra/i1/2680068332/O1CN01nXtVt92BQ6ryMXDpS_!!2680068332.png"), // 多图逗号
ProducerPlace: utils.String2Pointer("中国"),
//ShelfLife: utils.Int64ToPointer(7),
SkuCode: utils.String2Pointer("19930827"),
SkuName: utils.String2Pointer("西兰花 500g/份"),
//SkuType: utils.Int64ToPointer(13),
StorageType: utils.Int64ToPointer(242),
SuggestedPrice: utils.String2Pointer("9"),
Weight: utils.String2Pointer("500"),
WeightFlag: utils.Int64ToPointer(0),
ShortTitle: utils.String2Pointer("美味西兰花"),
TxtDesc: utils.String2Pointer("美味西兰花"),
NetContent: utils.String2Pointer("500"),
SaleUnit: utils.String2Pointer("份"),
LifeStatus: utils.String2Pointer("A"),
SaleSpec: utils.String2Pointer("1*1份"),
AvgWeight: utils.String2Pointer("1"), // 每个虾饺重量
PreMinusWeight: utils.String2Pointer("1"), // 每个购买单位重量,预扣重量
StepQuantity: utils.Int64ToPointer(1), // 每次购买至少增加一个购买单位
PurchaseQuantity: utils.Int64ToPointer(1), // 起购单位
SubTitle: utils.String2Pointer("同城包邮"),
SubTitle1: utils.String2Pointer("一小时速达"),
OnlineSaleFlag: utils.Int64ToPointer(1), // 门店控制是否可见
DeliveryUnit: utils.String2Pointer("份"),
DeliverySpec: utils.String2Pointer("1"),
MemberPrice: utils.String2Pointer("9"),
Storage: utils.String2Pointer("冷藏"),
PickFloatRate: utils.String2Pointer("0"), // ? 0
ForbidReceiveDays: utils.Int64ToPointer(0), // ? 7
ForbidSalesDays: utils.Int64ToPointer(0), // ? 0
OverloadRate: utils.String2Pointer("0"), // ? 0
WarnDays: utils.Int64ToPointer(0), // ? 0
FixedFlag: utils.Int64ToPointer(0), // ? 0
PurchaseSpec: utils.String2Pointer("1"), // ? 1
PurchaseUnit: utils.String2Pointer("份"), // ? 同上
LabelStyleType: utils.String2Pointer("无价签"), // 库存单位
RichText: utils.String2Pointer("优先使用这个(txt_desc)"),
//BackCatCode: , // 优先使用BackCatCode HmCategoryCode靠后
//HmCategoryCode: ,
SkuPrice: utils.String2Pointer("9"), // 优先使用skuPrice 靠后SalePrice
Period: utils.Int64ToPointer(7), // 优先使用period 靠后shelf_life
ItemTypeNew: utils.Int64ToPointer(1), // 优先使用 靠后 sku_type
MerchantCatCode: utils.String2Pointer("222201"), // 优先使用 靠后 category_code
SkuPicUrls: utils.String2Pointer("https://image.jxc4.com/image/af9501e559555d062f2bba830adcd04a.jpg,https://image.jxc4.com/image/26d4f62c006180050df1237b92a007de.jpg"), // 第一张主图,后面是详情 优先使用本字段 靠后 同字段main_pic_urls和detail_pic_urls
FragileFlag: utils.Int64ToPointer(1),
DeliveryStorage: utils.String2Pointer("常温"),
TemporaryFlag: utils.Int64ToPointer(0),
IsOnline: utils.Int64ToPointer(1),
}
sku1.SkuSuppliers = &[]domain585.AlibabaWdkSkuAddSkuSupplierDo{
domain585.AlibabaWdkSkuAddSkuSupplierDo{
ReturnFlag: utils.Int64ToPointer(0),
Minimum: utils.String2Pointer("1"),
PurchasePrice: utils.String2Pointer(""),
SupplierNo: nil,
SupplierName: nil,
MainFlag: nil,
},
}
sku1.ChannelProps = &[]domain585.AlibabaWdkSkuAddChannelProp{
domain585.AlibabaWdkSkuAddChannelProp{
ChannelType: utils.String2Pointer("txd"),
Props: &[]domain585.AlibabaWdkSkuAddPropField{
domain585.AlibabaWdkSkuAddPropField{
Value: utils.String2Pointer("1"),
Key: utils.String2Pointer("ONE_HOUR_STATUS"),
},
},
},
}
param = append(param, sku1)
param1.ParamList = &param
result, err := apiTao.AddStoreSku(param1)
globals.SugarLogger.Debugf("result = %s", utils.Format4Output(result, false))
globals.SugarLogger.Debugf("err = %s", utils.Format4Output(err, false))
}
func TestUpdateSku(t *testing.T) {
param := &request585.AlibabaWdkSkuUpdateRequest{}
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
OuCode: utils.String2Pointer("JX668594"),
SkuCode: utils.String2Pointer("19930827"),
AvgWeight: utils.String2Pointer("1"),
ItemTypeNew: utils.Int64ToPointer(1),
OnlineSaleFlag: utils.Int64ToPointer(1),
}
updateSkuList = append(updateSkuList, updateSku)
param.ParamList = &updateSkuList
data, err := apiTao.UpdateStoreSku(param)
globals.SugarLogger.Debugf("data = %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("err = %s", utils.Format4Output(err, false))
}
// 商品上下架
func TestStoreSkuUpdateOffShelf(t *testing.T) {
param := &request587.AlibabaAxChannelSkuStatusUpdateRequest{ChannelSkuUpdateStatusReq: &domain587.AlibabaAxChannelSkuStatusUpdateChannelSkuUpdateStatusReq{
SkuCode: utils.String2Pointer("19930827"),
StoreId: utils.String2Pointer("JX668594"),
ChannelCode: utils.String2Pointer("31"),
OnlineSaleFlag: utils.Int64ToPointer(0),
}}
err := apiTao.StoreSkuUpdateOffShelf(param)
globals.SugarLogger.Debugf("err := %s ", utils.Format4Output(err, false))
}
// 商品库存修改
func TestStoreSkuStock(t *testing.T) {
param := request589.AlibabaWdkStockPublishRequest{}
batchStockPublishDto := &domain589.AlibabaWdkStockPublishBatchStockPublishDto{
UpdateType: utils.Int64ToPointer(1),
BillNo: utils.String2Pointer(utils.Int64ToStr(time.Now().UnixNano())),
BillType: utils.Int64ToPointer(9064),
PublishSource: utils.String2Pointer("JX668594"),
ShopCode: utils.String2Pointer("JX668594"),
Operator: utils.String2Pointer("liulei"),
StockPublishDtos: nil,
}
stockPublishDtos := make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0)
stockPublishDtos = append(stockPublishDtos, domain589.AlibabaWdkStockPublishStockPublishDto{
SkuCode: utils.String2Pointer("19930827"),
Quantity: utils.String2Pointer("99"),
OrderNo: utils.String2Pointer(fmt.Sprintf("%s_%d_%d", "JX668594", time.Now().UnixNano(), 84671)),
OrderType: utils.String2Pointer("10006800"),
})
batchStockPublishDto.StockPublishDtos = &stockPublishDtos
param.BatchStockPublishDto = batchStockPublishDto
if err := apiTao.StoreSkuStock(&param); err != nil {
globals.SugarLogger.Debugf("err := %s", err.Error())
}
}
func TestGetSkuDetaul(t *testing.T) {
result, err := apiTao.QueryStoreSKu(&request585.AlibabaWdkSkuQueryRequest{Param: &domain585.AlibabaWdkSkuQuerySkuQueryDo{
SkuCodes: &[]string{"84671"},
OuCode: utils.String2Pointer("JX668998"),
}})
globals.SugarLogger.Debugf("err := %s ", utils.Format4Output(err, false))
globals.SugarLogger.Debugf("result := %s ", utils.Format4Output(result, false))
}
func TestPartialRefundReason(t *testing.T) {
param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{
RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{
OutOrderId: nil,
StoreId: utils.String2Pointer("JX668998"),
OutSubOrderIds: nil,
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(TaoVegetableChannelCode)),
},
}
apiTao.PartialRefundReason(param)
}
func uploadImg(api *API, imgs []string) *string {
result := make([]string, 0, 0)
for _, v := range imgs {
if v == "" {
continue
}
inputTitle := strings.LastIndex(v, "/")
title := strings.LastIndex(v, ".")
resp, err := http.Get(v)
if err != nil {
continue
}
body, _ := ioutil.ReadAll(resp.Body)
if newImg, _ := api.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{
PictureCategoryId: utils.Int64ToPointer(0),
Img: &body,
ImgInputTitle: utils.String2Pointer(v[inputTitle:]),
Title: utils.String2Pointer(v[inputTitle:title]),
}); newImg != "" {
result = append(result, newImg)
}
}
return utils.String2Pointer(strings.Join(result, ","))
}

View File

@@ -1,6 +1,7 @@
package tao_vegetable
import (
"fmt"
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587/domain"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587/request"
@@ -43,6 +44,12 @@ func TestGetStoreCategory(t *testing.T) {
globals.SugarLogger.Debugf("err := %s", utils.Format4Output(err, false))
}
func TestGetStoreAllCategory(t *testing.T) {
data, err := apiTao.GetStoreAllCategory()
globals.SugarLogger.Debugf("data := %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("err := %s", utils.Format4Output(err, false))
}
func TestAddCategory(t *testing.T) {
data, err := apiTao.AddStoreCategoryInfo(&request.AlibabaWdkSkuCategoryAddRequest{Param: &domain.AlibabaWdkSkuCategoryAddCategoryDo{
Code: utils.String2Pointer("222201"),
@@ -55,3 +62,24 @@ func TestAddCategory(t *testing.T) {
globals.SugarLogger.Debugf("data := %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("err := %s", utils.Format4Output(err, false))
}
func TestDeleteCategory(t *testing.T) {
code := "2222"
err := apiTao.DeleteStoreCategoryInfo(&request.AlibabaWdkSkuCategoryDeleteRequest{Param: &domain.AlibabaWdkSkuCategoryDeleteCategoryDo{Code: &code}})
globals.SugarLogger.Debugf("err := %v", err)
}
func TestUpdateCategory(t *testing.T) {
err := apiTao.UpdateStoreCategoryInfo(&request.AlibabaWdkSkuCategoryUpdateRequest{Param: &domain.AlibabaWdkSkuCategoryUpdateCategoryDo{
Code: utils.String2Pointer("5522225555"),
Name: utils.String2Pointer("冰淇淋2"),
Status: utils.Int64ToPointer(0),
}})
globals.SugarLogger.Debugf("err := %v", err)
}
func TestAbc(t *testing.T) {
a := 1001
c := float64(a) / float64(100)
fmt.Println(c)
}

View File

@@ -1,5 +1,100 @@
package tao_vegetable
import "git.rosy.net.cn/baseapi/utils"
const (
AddStoreCategoryApi = "alibaba.wdk.sku.category.add"
)
const (
GeneralMaxLimit = 200 // 大多数的API的批处理最大条数
)
const (
ErrCodeSuccess = 0
ErrCodeSysErr = 700 // 系统错误,按美团外卖技术支持的说法,可当成需重试的错误
ErrCodeParameterFormatWrong = 705 // 参数格式错误
ErrCodeAccessLimited = 711 // 接口调用过于频繁,触发流控,请降低调用频率
ErrCodeNoAppFood = 805 // 不存在此菜品
ErrCodeNoSuchOrder = 806 // 不存在此订单
ErrCodeOpFailed = 808 // 操作失败(如订单在操作时,状态已变更等情况)
ErrCodeSkuCategoryNotExist = "类目不存在" // 菜品分类不存在
ErrCodeSkuCategoryExist = "类目已存在" // 菜品分类已存在
ErrCodeCanNotModifyStoreDeliveryInfo = 3018 // 商家已接入美团配送,不可修改门店配送相关信息
)
const (
CreateItemTypeNewVegetable = 1 // ( 商品类型同字段sku_type1:普通商品、2:加工半成品、3:加工成品、4:原材料、5:耗材;优先使用本字段)
CreateIsOnline = 1 // 1是/0否上线
CreateSkuStorageType = 242 // 存储条件类型 241=常温,242=冷藏,243=冷冻,635=热链,636=室温,637=鲜活
CreateSkuWeightFlagYes = 1 // 1称重商品
CreateSkuWeightFlagNo = 0 // 0标品
CreateShelfLife = 7 // 保质期7天
CreateOfflineSaleFlag = 0 // 门店来控制本门店是否在app上让该商品可见? 1可见? 0不可见
CreateOnlineSaleFlag = 1 // 门店来控制本门店是否在app上让该商品可见? 1可见? 0不可见
UpdateTypeStoke = 1 // 1-全量/2-增量
UpdateTypeStokeBillType = 9064 // 外部单据类型9001大润发 9002欧尚 9003三江 9005 文峰 9007美特好(后面会给个京西的)
CreateItemDeliveryStorage = "常温" // 常温、冷藏、冷冻
CreateChannelType = "txd" // 渠道类型
CreateChannelTypeKey = "ONE_HOUR_STATUS" // 渠道属性key, 取值为"ONE_HOUR_STATUS" 代表小时达value=0表示不可售, value=1表示可售"WAVE_ARRIVE_STATUS" 代表波次达value=0表示不可售,value=1表示可售 */
CreateSkuBrandName = "京西菜场" // 品牌名称
CreateSkuProducerPlace = "中国" // 产地,默认中国
CreateSkuInventoryUnit = "kg" // 库存单位,所有商品默认为kg
CreateSkuLeafStatus = "A" // A-正常、T-暂时停购、C-淘汰出清、R-清退、D-删除封挡
CreateStorage = "冷藏" // 填常温、冷藏、冷冻、热链、鲜活
CreateLabelStyleType = "无价签" // 保质期7天
OrderDeliveryTypeTime = 1 // 定时配送
OrderDeliveryTypeSelf = 3 // 用户自提
ChannelCome = 4 // 3饿了么 4盒马&淘鲜达 18:大润发飞牛 19:欧尚外卖 20商家自有渠道
)
const (
TaoVegetableChannelCode = "31" // 渠道编码2 美团3 饿了么26 京东到家31 翱象淘鲜达32 翱象共享库存
)
const (
ActivityTypeChannel = "1" // 渠道活动
ActivityTypeBiz = "2" // 业务活动
ActivityTypeMerchant = "3" // 商家erp活动
)
const MAXHandleCount = 20 // 批量处理一次最大数据量
// 订单状态通知
const (
OrderStatusNew = "ACCEPTED" // 商户接单
OrderStatusPayFinsh = "PAID" // 订单支付完成
OrderStatusPickedUp = "PICKED" // 拣货完成
OrderStatusCallRider = "PACKAGED" // 打包出库(呼叫骑手,骑手到店,骑手取货)
OrderStatusDelivery = "SHIPPING" // 配送中
OrderStatusDeliveryOver = "SIGN" // 配送结束
OrderStatusUserRejection = "REFUSED" // 用户拒收
OrderStatusMerchantCancel = "REJECTED" // 商户取消订单
OrderStatusSuccess = "SUCCESS" // 交易完成
OrderStatusRefundClose = "CLOSE" // 订单取消
)
// 售后订单通知状态
const (
OrderStatusApplyAfs = "userApplyAfs" // 用户申请售后
OrderStatusCancelAfs = "userCancelAfs" // 用户取消售后
// 业务上规定的是打包之后不能取消但是如果配送超过了预计送达时间1-2小时c端的取消按钮会自动打开让用户操作取消但是如果你没接这个接口用户申请取消了你这边没有响应那么就不会退钱给用户就会造成客诉。为什么不接售中取消呢
OrderStatusOnSaleCancel = "userCancelOnSale" // 用户售中取消
OrderStatusRefundSuccess = "refundSuccess" // 用户售后成功(退款成功)
OrderStatusChange = "orderStatusChange" // 订单状态变化
)
func IsErrCategoryExist(err error) (isExist bool) {
return utils.IsErrMatch(err, ErrCodeSkuCategoryExist, nil)
}
func IsErrCategoryNotExist(err error) (isNotExist bool) {
return utils.IsErrMatch(err, ErrCodeSkuCategoryNotExist, nil) ||
utils.IsErrMatch(err, utils.Int2Str(ErrCodeParameterFormatWrong), []string{
"门店内不存在该分类",
})
}
func IsErrSkuNotExist(err error) (isExist bool) {
return utils.IsErrMatch(err, utils.Int2Str(ErrCodeNoAppFood), nil)
}

View File

@@ -282,6 +282,10 @@ func Float64ToStr(data float64) string {
return fmt.Sprint(data)
}
func Float32ToStr(data float32) string {
return fmt.Sprint(data)
}
// timestamp is in second
func Timestamp2Str(timestamp int64) string {
return Time2Str(Timestamp2Time(timestamp))