parent
e27dfb1b3f
commit
8fd1ecd4e8
@ -0,0 +1,85 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"git.oa00.com/supply-chain/service/client"
|
||||||
|
"git.oa00.com/supply-chain/service/lib/bean"
|
||||||
|
)
|
||||||
|
|
||||||
|
type address struct {
|
||||||
|
}
|
||||||
|
type AddressSearch struct {
|
||||||
|
AddressId int64
|
||||||
|
Mate int // 1=已匹配 2=未匹配
|
||||||
|
}
|
||||||
|
type ArgsAddressList struct {
|
||||||
|
Search AddressSearch
|
||||||
|
Page bean.Page
|
||||||
|
}
|
||||||
|
|
||||||
|
type AddressItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
ProvinceName string `json:"provinceName"`
|
||||||
|
CityName string `json:"cityName"`
|
||||||
|
CountyName string `json:"countyName"`
|
||||||
|
MateAddressId int64 `json:"mateAddressId"`
|
||||||
|
MateProvinceName string `json:"mateProvinceName"`
|
||||||
|
MateCityName string `json:"mateCityName"`
|
||||||
|
MateCountyName string `json:"mateCountyName"`
|
||||||
|
}
|
||||||
|
type ReplyAddressList struct {
|
||||||
|
Lists []AddressItem `json:"lists"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List @Title 地址列表
|
||||||
|
func (c *address) List(ctx context.Context, args ArgsAddressList) (reply ReplyAddressList, err error) {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "List", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsAddressMate struct {
|
||||||
|
AddressId int64 // 地址id
|
||||||
|
MateAddressID int64 // 修改匹配地址id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mate @Title 地址匹配
|
||||||
|
func (c *address) Mate(ctx context.Context, args ArgsAddressMate) error {
|
||||||
|
reply := 0
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return xClient.Call(ctx, "Mate", args, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// All @Title 地址
|
||||||
|
func (c *address) All(ctx context.Context, args AddressSearch) (reply []AddressItem, err error) {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "All", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type MateAddressItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
ProvinceName string `json:"provinceName"`
|
||||||
|
CityName string `json:"cityName"`
|
||||||
|
CountyName string `json:"countyName"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MateAll @Title 匹配地址
|
||||||
|
func (c *address) MateAll(ctx context.Context) (reply []MateAddressItem, err error) {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "MateAll", 0, &reply)
|
||||||
|
return
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"git.oa00.com/supply-chain/service/client"
|
||||||
|
"git.oa00.com/supply-chain/service/lib/bean"
|
||||||
|
)
|
||||||
|
|
||||||
|
type brand struct {
|
||||||
|
}
|
||||||
|
type BrandSearch struct {
|
||||||
|
Name string // 商品名称
|
||||||
|
}
|
||||||
|
type ArgsBrandList struct {
|
||||||
|
Search BrandSearch
|
||||||
|
Page bean.Page
|
||||||
|
}
|
||||||
|
|
||||||
|
type BrandItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
MateBrandID int64 `json:"mateBrandID"`
|
||||||
|
}
|
||||||
|
type ReplyBrandList struct {
|
||||||
|
Lists []BrandItem `json:"lists"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List @Title 品牌列表
|
||||||
|
func (b *brand) List(ctx context.Context, args ArgsBrandList) (reply ReplyBrandList, err error) {
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "List", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsBrandMate struct {
|
||||||
|
BrandId int64 // 品牌id
|
||||||
|
SupplyBrandId int64 // 修改匹配品牌id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mate @Title 品牌匹配
|
||||||
|
func (b *brand) Mate(ctx context.Context, args ArgsBrandMate) error {
|
||||||
|
reply := 0
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return xClient.Call(ctx, "Mate", args, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// All @Title 品牌
|
||||||
|
func (b *brand) All(ctx context.Context, args BrandSearch) (reply []BrandItem, err error) {
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "All", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"git.oa00.com/supply-chain/service/client"
|
||||||
|
)
|
||||||
|
|
||||||
|
type callback struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancel @TITLE 取消订单
|
||||||
|
func (c *callback) Cancel(ctx context.Context, sourceOrderSn string) error {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Cancel", sourceOrderSn, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StockOut @Title 出库
|
||||||
|
func (c *callback) StockOut(ctx context.Context, sourceOrderSn string) error {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "StockOut", sourceOrderSn, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delivered @Title 订单妥投
|
||||||
|
func (c *callback) Delivered(ctx context.Context, sourceOrderSn string) error {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Delivered", sourceOrderSn, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finish @Title 订单完成
|
||||||
|
func (c *callback) Finish(ctx context.Context, sourceOrderSn string) error {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Finish", sourceOrderSn, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Logistics @Title 更新包裹信息
|
||||||
|
func (c *callback) Logistics(ctx context.Context, sourceOrderSn string) error {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Logistics", sourceOrderSn, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsCallbackAfsStepResult struct {
|
||||||
|
ReturnOrderCode string
|
||||||
|
ReturnOrderStatus int64
|
||||||
|
}
|
||||||
|
|
||||||
|
// AfsStepResult @Title 售后处理
|
||||||
|
func (c *callback) AfsStepResult(ctx context.Context, args ArgsCallbackAfsStepResult) error {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "AfsStepResult", args, &reply)
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"git.oa00.com/supply-chain/service/client"
|
||||||
|
"git.oa00.com/supply-chain/service/lib/bean"
|
||||||
|
)
|
||||||
|
|
||||||
|
type category struct {
|
||||||
|
}
|
||||||
|
type CategorySearch struct {
|
||||||
|
CategoryId int64
|
||||||
|
Mate int // 1=已匹配 2=未匹配
|
||||||
|
}
|
||||||
|
type ArgsCategoryList struct {
|
||||||
|
Search CategorySearch
|
||||||
|
Page bean.Page
|
||||||
|
}
|
||||||
|
|
||||||
|
type CategoryItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
FirstCategoryName string `json:"firstCategoryName"`
|
||||||
|
SecondCategoryName string `json:"secondCategoryName"`
|
||||||
|
ThirdCategoryName string `json:"thirdCategoryName"`
|
||||||
|
MateCategoryID int64 `json:"mateCategoryID"`
|
||||||
|
}
|
||||||
|
type ReplyCategoryList struct {
|
||||||
|
Lists []CategoryItem `json:"lists"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List @Title 类目列表
|
||||||
|
func (c *category) List(ctx context.Context, args ArgsCategoryList) (reply ReplyCategoryList, err error) {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "List", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsCategoryMate struct {
|
||||||
|
CategoryId int64 // 类目id
|
||||||
|
SupplyCategoryId int64 // 修改匹配类目id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mate @Title 类目匹配
|
||||||
|
func (c *category) Mate(ctx context.Context, args ArgsCategoryMate) error {
|
||||||
|
reply := 0
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return xClient.Call(ctx, "Mate", args, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// All @Title 类目
|
||||||
|
func (c *category) All(ctx context.Context, args CategorySearch) (reply []CategoryItem, err error) {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "All", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
@ -0,0 +1,193 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"git.oa00.com/supply-chain/service/client"
|
||||||
|
"git.oa00.com/supply-chain/service/lib/bean"
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SkuStatusNone = 1 // 待处理
|
||||||
|
SkuStatusAdopt = 2 // 同步入库
|
||||||
|
SkuStatusReject = 3 // 废弃商品
|
||||||
|
)
|
||||||
|
|
||||||
|
type sku struct {
|
||||||
|
}
|
||||||
|
type SkuSearch struct {
|
||||||
|
Status int // 状态
|
||||||
|
Name string // 商品名称
|
||||||
|
Code string // sku编码
|
||||||
|
CategoryId int64 // 类目id
|
||||||
|
BrandName string // 品牌
|
||||||
|
MinSupplyPrice decimal.Decimal // 采购价最小
|
||||||
|
MaxSupplyPrice decimal.Decimal // 采购价最大
|
||||||
|
}
|
||||||
|
type ArgsSkuList struct {
|
||||||
|
Search SkuSearch
|
||||||
|
Page bean.Page
|
||||||
|
}
|
||||||
|
type SkuItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
MainPhoto string `json:"mainPhoto"`
|
||||||
|
BrandName string `json:"brandName"`
|
||||||
|
FirstCategoryName string `json:"firstCategoryName"`
|
||||||
|
SecondCategoryName string `json:"secondCategoryName"`
|
||||||
|
ThirdCategoryName string `json:"thirdCategoryName"`
|
||||||
|
SupplyPrice decimal.Decimal `json:"supplyPrice"`
|
||||||
|
GuidePrice decimal.Decimal `json:"guidePrice"`
|
||||||
|
ShelvesStatus int64 `json:"shelvesStatus"`
|
||||||
|
Status int64 `json:"status"`
|
||||||
|
CreatedAt int64 `json:"createdAt"`
|
||||||
|
UpdatedAt int64 `json:"updatedAt"`
|
||||||
|
MateSkuId int64 `json:"mateSkuId"`
|
||||||
|
MateBrandId int64 `json:"mateBrandId"`
|
||||||
|
MateCategoryId int64 `json:"mateCategoryId"`
|
||||||
|
}
|
||||||
|
type ReplySkuList struct {
|
||||||
|
Lists []SkuItem `json:"lists"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List @Title 商品列表
|
||||||
|
func (s *sku) List(ctx context.Context, args ArgsSkuList) (reply ReplySkuList, err error) {
|
||||||
|
xClient, err := client.GetClient(s)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
xClient.Call(ctx, "List", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type SkuImg struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
ReplacePath string `json:"replacePath"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Imgs @Title 获取预览图
|
||||||
|
func (s *sku) Imgs(ctx context.Context, skuId int64) (reply []SkuImg, err error) {
|
||||||
|
xClient, err := client.GetClient(s)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "Imgs", skuId, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReplySkuInfo struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
GoodsCode string `json:"goodsCode"`
|
||||||
|
GoodsName string `json:"goodsName"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
SellPrice decimal.Decimal `json:"sellPrice"`
|
||||||
|
MarketPrice decimal.Decimal `json:"marketPrice"`
|
||||||
|
StartQty int64 `json:"startQty"`
|
||||||
|
ShelvesStatus int64 `json:"shelvesStatus"`
|
||||||
|
TaxCode string `json:"taxCode"`
|
||||||
|
TaxRate decimal.Decimal `json:"taxRate"`
|
||||||
|
BarCode string `json:"barCode"`
|
||||||
|
IsDeleted int64 `json:"isDeleted"`
|
||||||
|
BrandId int64 `json:"brandId"`
|
||||||
|
BrandCode string `json:"brandCode"`
|
||||||
|
BrandName string `json:"brandName"`
|
||||||
|
CategoryId int64 `json:"categoryId"`
|
||||||
|
FirstCategoryCode string `json:"firstCategoryCode"`
|
||||||
|
FirstCategoryName string `json:"firstCategoryName"`
|
||||||
|
SecondCategoryCode string `json:"secondCategoryCode"`
|
||||||
|
SecondCategoryName string `json:"secondCategoryName"`
|
||||||
|
ThirdCategoryCode string `json:"thirdCategoryCode"`
|
||||||
|
ThirdCategoryName string `json:"thirdCategoryName"`
|
||||||
|
ReturnGoodsRules int64 `json:"returnGoodsRules"`
|
||||||
|
GoodsCharacteristic string `json:"goodsCharacteristic"`
|
||||||
|
GoodsUnit string `json:"goodsUnit"`
|
||||||
|
ModelNumber string `json:"modelNumber"`
|
||||||
|
ProductPlace string `json:"productPlace"`
|
||||||
|
HaveShelfLife int64 `json:"haveShelfLife"`
|
||||||
|
ShelfLife string `json:"shelfLife"`
|
||||||
|
FragileGoods int64 `json:"fragileGoods"`
|
||||||
|
GrossWeight decimal.Decimal `json:"grossWeight"`
|
||||||
|
GrossWeightUnit string `json:"grossWeightUnit"`
|
||||||
|
Density decimal.Decimal `json:"density"`
|
||||||
|
Extent decimal.Decimal `json:"extent"`
|
||||||
|
Width decimal.Decimal `json:"width"`
|
||||||
|
Height decimal.Decimal `json:"height"`
|
||||||
|
CreatedAt int64 `json:"createdAt"`
|
||||||
|
UpdatedAt int64 `json:"updatedAt"`
|
||||||
|
MateSkuId int64 `json:"mateSkuId"`
|
||||||
|
MateBrandId int64 `json:"mateBrandId"`
|
||||||
|
MateCategoryId int64 `json:"mateCategoryId"`
|
||||||
|
Content string `json:"content"`
|
||||||
|
Imgs []SkuImg `json:"imgs"`
|
||||||
|
Attributes []SkuAttribute `json:"attributes"`
|
||||||
|
Specs []SkuSpec `json:"specs"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SkuAttribute struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Value string `json:"value"`
|
||||||
|
}
|
||||||
|
type SkuSpec struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Value string `json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Info @Title 获取详情
|
||||||
|
func (s *sku) Info(ctx context.Context, skuId int64) (reply ReplySkuInfo, err error) {
|
||||||
|
xClient, err := client.GetClient(s)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "Info", skuId, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsSkuReplaceImg struct {
|
||||||
|
SkuId int64 // 商品id
|
||||||
|
ImgId int64 // 图片id
|
||||||
|
ImgPath string // 图片路径
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReplaceImg @Title 替换图片
|
||||||
|
func (s *sku) ReplaceImg(ctx context.Context, args ArgsSkuReplaceImg) error {
|
||||||
|
reply := 0
|
||||||
|
xClient, err := client.GetClient(s)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return xClient.Call(ctx, "ReplaceImg", args, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdoptItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adopt @Title 入库
|
||||||
|
func (s *sku) Adopt(ctx context.Context, skuIds []int64) (reply []AdoptItem, err error) {
|
||||||
|
xClient, err := client.GetClient(s)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "Adopt", skuIds, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Discard @Title 废弃
|
||||||
|
func (s *sku) Discard(ctx context.Context, skuIds []int64) error {
|
||||||
|
reply := 0
|
||||||
|
xClient, err := client.GetClient(s)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return xClient.Call(ctx, "Discard", skuIds, &reply)
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
type Skycrane struct {
|
||||||
|
Task task
|
||||||
|
Sku sku
|
||||||
|
Brand brand
|
||||||
|
Category category
|
||||||
|
Address address
|
||||||
|
Callback callback
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package skycrane
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"git.oa00.com/supply-chain/service/client"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TaskStatusIng = 1 // 进行中
|
||||||
|
TaskStatusFinish = 2 // 结束
|
||||||
|
)
|
||||||
|
|
||||||
|
type task struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pull @Title 拉取商品
|
||||||
|
func (t *task) Pull(ctx context.Context) error {
|
||||||
|
a := 0
|
||||||
|
xClient, err := client.GetClient(t)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return xClient.Call(ctx, "Pull", 0, &a)
|
||||||
|
}
|
||||||
|
|
||||||
|
type TaskStatus struct {
|
||||||
|
ScrollId string `json:"scrollId"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
Count int64 `json:"count"`
|
||||||
|
Status int `json:"status"` // 1=运行中 2=已完成
|
||||||
|
Msg string `json:"msg"`
|
||||||
|
StartTime time.Time `json:"startTime"`
|
||||||
|
LastTime time.Time `json:"lastTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPullStatus @Title 获取拉取状态
|
||||||
|
func (t *task) GetPullStatus(ctx context.Context) (reply TaskStatus, err error) {
|
||||||
|
xClient, err := client.GetClient(t)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "GetPullStatus", 0, &reply)
|
||||||
|
return
|
||||||
|
}
|
Loading…
Reference in new issue