This commit is contained in:
苏尹岚
2021-04-02 11:03:01 +08:00
parent 0a92b20480
commit 8429a5a27c
16 changed files with 267 additions and 425 deletions

View File

@@ -10,14 +10,11 @@ import (
"git.rosy.net.cn/baseapi/platformapi/jdeclpapi"
"git.rosy.net.cn/jx-callback/business/jxstore/common"
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
"git.rosy.net.cn/baseapi/platformapi/jdshopapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
@@ -1191,155 +1188,6 @@ func GetOrderSimpleInfo(ctx *jxcontext.Context, vendorOrderID string) (getOrderS
return getOrderSimpleInfoResult, err
}
func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd time.Time) (err error) {
var (
pageSize = 20
)
orderResult, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd), 1, pageSize)
if err != nil {
noticeMsg := fmt.Sprintf("京东商城保存订单出错多半是cookie过期了,err :[%v]", err)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "cookie", noticeMsg)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "1439B3E07D3911EA881A525400E86DC0", "cookie", noticeMsg)
return err
}
orders, err := result2Orders(ctx, orderResult)
if orderResult.TotalCount > pageSize {
for pageNO := 2; pageNO < orderResult.TotalCount/pageSize+1; pageNO++ {
orderResult, _ := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd), pageNO, pageSize)
orders2, _ := result2Orders(ctx, orderResult)
orders = append(orders, orders2...)
}
}
for _, order := range orders {
order.StoreID = 102919
order.JxStoreID = 102919
order.StoreName = "商城模板(成都发货)"
order.VendorStoreID = model.JdShopMainVendorStoreID
partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
globals.SugarLogger.Debugf("SaveJdsOrders order: [%v]", utils.Format4Output(order, false))
noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v] ,将要发到的门店id[%v] , 门店名:[%v]", order.VendorOrderID, order.StoreID, order.StoreName)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "京东商城来新订单了!", noticeMsg)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "1439B3E07D3911EA881A525400E86DC0", "京东商城来新订单了!", noticeMsg)
}
return err
}
func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) {
for _, jdsOrder := range result.OrderList {
//等待付款的排除
if jdsOrder.OrderStatus != jdshopapi.JdsOrderStatusWaittingExport && jdsOrder.OrderStatus != jdshopapi.JdsOrderStatusPause {
continue
}
//有可能是库里已经有这个订单了
orderE, err := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(jdsOrder.OrderID)+"000001", model.VendorIDJDShop)
if orderE != nil {
continue
}
orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID))
if err != nil {
globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error())
continue
}
order := &model.GoodsOrder{
VendorOrderID2: utils.Int64ToStr(jdsOrder.OrderID),
VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID) + "000001",
VendorID: model.VendorIDJDShop,
BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight),
VendorStatus: utils.Int2Str(jdsOrder.OrderStatus),
VendorUserID: jdsOrder.UserPin,
BuyerComment: jdsOrder.UserRemark,
PickDeadline: utils.DefaultTimeValue,
OriginalData: string(utils.MustMarshal(jdsOrder)),
StoreName: jdsOrder.StoreName,
OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"),
ConsigneeAddress: orderDetail.ConsigneeAddress,
ConsigneeName: orderDetail.ConsigneeName,
ActualPayPrice: orderDetail.ActualPayPrice,
Status: model.OrderStatusNew,
TotalShopMoney: utils.Float64TwoInt64(math.Round(utils.Int64ToFloat64(orderDetail.ActualPayPrice) * jdshopapi.JdsPayPercentage)),
DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled,
DeliveryType: model.OrderDeliveryTypeStoreSelf,
StatusTime: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"),
OrderSeq: 0,
VendorOrgCode: "1",
}
//获取真实手机号
fakeMobile, err := api.JdShopAPI.PhoneSensltiveInfo(order.VendorOrderID2, orderDetail.MobileKey)
if err != nil {
globals.SugarLogger.Debugf("jds PhoneSensltiveInfo error: %v", err.Error())
continue
} else {
order.ConsigneeMobile = jxutils.DecryptDESECB([]byte(fakeMobile), []byte(jdshopapi.JdsMobileKey))
}
if order.TotalShopMoney < 100 {
order.TotalShopMoney = 100
}
if order.ConsigneeAddress != "" {
lng, lat, _ := api.AutonaviAPI.GetCoordinateFromAddress(order.ConsigneeAddress, "")
order.ConsigneeLng = jxutils.StandardCoordinate2Int(lng)
order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat)
}
storeList, err := common.GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false, true, 0)
if err != nil {
globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error())
continue
}
order.StoreID = storeList[0].ID
order.StoreName = storeList[0].Name
storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJDShop}, []int{order.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "")
if len(storeMaps) > 0 {
order.VendorStoreID = storeMaps[0].VendorStoreID
}
//如果是暂停,表示是预订单
if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause {
order.BusinessType = model.BusinessTypeDingshida
order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime)
order.PickDeadline = order.ExpectedDeliveredTime.Add(-time.Hour)
} else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport {
order.ExpectedDeliveredTime = order.OrderCreatedAt.Add(time.Hour)
order.BusinessType = model.BusinessTypeImmediate
} else {
globals.SugarLogger.Errorf("未知的京东商城订单状态status : %v", jdsOrder.OrderStatus)
}
//结算类型
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), order.StoreID, model.VendorIDJDShop, "")
if storeDetail != nil {
if storeDetail.PayPercentage < 50 {
order.EarningType = model.EarningTypePoints
} else {
order.EarningType = model.EarningTypeQuote
}
}
setJdsOrderSeq(order)
for _, v := range jdsOrder.OrderItems {
sku := &model.OrderSku{
VendorID: model.VendorIDJDShop,
VendorOrderID: order.VendorOrderID,
Count: v.SkuNum,
VendorSkuID: utils.Int64ToStr(v.SkuID),
SkuName: v.SkuName,
VendorPrice: jxutils.StandardPrice2Int(v.JdPrice),
SalePrice: jxutils.StandardPrice2Int(v.JdPrice),
}
var storeSku *model.StoreSkuBind
sql := `
SELECT * FROM store_sku_bind WHERE store_id = ? AND jds_id = ? AND deleted_at = ?
`
sqlParams := []interface{}{model.JdShopMainStoreID, v.SkuID, utils.DefaultTimeValue}
err = dao.GetRow(dao.GetDB(), &storeSku, sql, sqlParams)
if storeSku != nil {
sku.SkuID = storeSku.SkuID
}
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName)
sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit)
order.Skus = append(order.Skus, sku)
}
orders = append(orders, order)
}
return orders, err
}
func setJdsOrderSeq(order *model.GoodsOrder) (err error) {
type tCount struct {
Count int `json:"count"`

View File

@@ -1045,12 +1045,12 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
dao.Rollback(db, txDB)
return 0, err
}
if valid["jdsStockSwitch"] != nil {
if _, err = SetStoreSkuSyncStatus2(db, []int{model.JdShopMainStoreID}, []int{model.VendorIDJDShop}, skuIDs, model.SyncFlagSaleMask); err != nil {
dao.Rollback(db, txDB)
return 0, err
}
}
// if valid["jdsStockSwitch"] != nil {
// if _, err = SetStoreSkuSyncStatus2(db, []int{model.JdShopMainStoreID}, []int{model.VendorIDJDShop}, skuIDs, model.SyncFlagSaleMask); err != nil {
// dao.Rollback(db, txDB)
// return 0, err
// }
// }
}
dao.Commit(db, txDB)

View File

@@ -1168,7 +1168,7 @@ func SyncJdsStoreStock(ctx *jxcontext.Context, isAsync, isContinueWhenError bool
storeMaps []*model.StoreMap
)
sql := `
SELECT * FROM store_map WHERE vendor_id = ? AND vendor_store_id <> '' AND store_id <> ? AND vendor_org_code = 1
SELECT * FROM store_map WHERE vendor_id = ? AND vendor_store_id <> '' AND store_id <> ? AND vendor_org_code = 2
`
sqlParams := []interface{}{
model.VendorIDJDShop, model.JdShopMainStoreID,

View File

@@ -72,7 +72,7 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo
num := 0
db := dao.GetDB()
if configs, err := dao.QueryConfigs(dao.GetDB(), "jdsCookie2", model.ConfigTypeCookie, ""); err == nil {
api.JdShop2API.SetCookieWithStr(configs[0].Value)
api.JdShopAPI.SetCookieWithStr(configs[0].Value)
}
rootTask := tasksch.NewSeqTask(fmt.Sprintf("%s SyncStoreCategory step1", model.VendorChineseNames[vendorID]), ctx,
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
@@ -935,7 +935,7 @@ func amendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, v
for _, v := range localSkuList {
vendorSkuID := v.VendorSkuID
if vendorID == model.VendorIDJDShop {
if storeSkus, _ := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID2}, []int{v.SkuID}); len(storeSkus) > 0 {
if storeSkus, _ := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, []int{v.SkuID}); len(storeSkus) > 0 {
vendorSkuID = utils.Int64ToStr(storeSkus[0].JdsID)
}
}

View File

@@ -109,7 +109,7 @@ func isPushSMS(order *model.GoodsOrder) bool {
stores, _ := dao.GetStoresMapList(dao.GetDB(), []int{order.VendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "")
if len(stores) > 0 {
if stores[0].IsOrder == model.NO {
if storeID == model.MatterStoreID || storeID == model.JdShopMainStoreID || storeID == model.JdShopMainStoreID2 {
if storeID == model.MatterStoreID || storeID == model.JdShopMainStoreID {
return false
} else {
return true

View File

@@ -62,12 +62,12 @@ const (
)
const (
ExdStoreName = "饿鲜达"
MatterStoreID = 666666
JdShopMainVendorStoreID = "999999"
JdShopMainVendorStoreID2 = "9999999"
JdShopMainStoreID = 102919
JdShopMainStoreID2 = 100000
ExdStoreName = "饿鲜达"
MatterStoreID = 666666
JdShopMainVendorStoreID = "9999999"
// JdShopMainVendorStoreID2 = "9999999"
JdShopMainStoreID = 100000
// JdShopMainStoreID2 = 100000
VendorStoreTel = "18011597879"
)

View File

@@ -319,17 +319,17 @@ func result2Orders(msg *jdshopapi.CallBackResult) (order *model.GoodsOrder, err
}
func buildOrderTo102919(order *model.GoodsOrder) {
if order.VendorOrgCode == "1" {
order.StoreID = 102919
order.JxStoreID = 102919
order.StoreName = "商城模板(成都发货)"
order.VendorStoreID = model.JdShopMainVendorStoreID
} else {
order.StoreID = model.JdShopMainStoreID2
order.JxStoreID = model.JdShopMainStoreID2
order.StoreName = "商城模板店2"
order.VendorStoreID = model.JdShopMainVendorStoreID2
}
// if order.VendorOrgCode == "1" {
// order.StoreID = 102919
// order.JxStoreID = 102919
// order.StoreName = "商城模板(成都发货)"
// order.VendorStoreID = model.JdShopMainVendorStoreID
// } else {
order.StoreID = model.JdShopMainStoreID
order.JxStoreID = model.JdShopMainStoreID
order.StoreName = "商城模板店2"
order.VendorStoreID = model.JdShopMainVendorStoreID
// }
order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled
}

View File

@@ -66,7 +66,7 @@ func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, vendorOrgCode, imgUR
}
func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCats []*model.SkuVendorCategory, err error) {
result, err := api.JdShop2API.FindVendorCategories()
result, err := api.JdShopAPI.FindVendorCategories()
for _, v := range result {
cat := &model.SkuVendorCategory{
VendorID: model.VendorIDJDShop,

View File

@@ -11,8 +11,8 @@ import (
)
var (
KeyList []*Key
KeyList2 []*Key
KeyList []*Key
// KeyList2 []*Key
)
type Key struct {
@@ -37,35 +37,35 @@ func InitKey() {
err = json.Unmarshal(data, &vv)
KeyList = append(KeyList, vv)
}
keyResult2, err := api.JdShop2API.KeyGet()
if err != nil {
return
}
for _, v := range keyResult2.Response.ServiceKeyList[0].Keys {
data, _ := json.Marshal(v)
vv := &Key{}
err = json.Unmarshal(data, &vv)
KeyList2 = append(KeyList2, vv)
}
// keyResult2, err := api.JdShop2API.KeyGet()
// if err != nil {
// return
// }
// for _, v := range keyResult2.Response.ServiceKeyList[0].Keys {
// data, _ := json.Marshal(v)
// vv := &Key{}
// err = json.Unmarshal(data, &vv)
// KeyList2 = append(KeyList2, vv)
// }
globals.SugarLogger.Debugf("jdshop key refreshed..")
}
func GetKey(keySign, vendorOrgCode string) (key string) {
if vendorOrgCode == "1" {
for _, v := range KeyList {
data, _ := base64.StdEncoding.DecodeString(v.ID)
if keySign == hex.EncodeToString(data) {
return v.KeyString
}
}
} else {
for _, v := range KeyList2 {
data, _ := base64.StdEncoding.DecodeString(v.ID)
if keySign == hex.EncodeToString(data) {
return v.KeyString
}
// if vendorOrgCode == "1" {
for _, v := range KeyList {
data, _ := base64.StdEncoding.DecodeString(v.ID)
if keySign == hex.EncodeToString(data) {
return v.KeyString
}
}
// } else {
// for _, v := range KeyList2 {
// data, _ := base64.StdEncoding.DecodeString(v.ID)
// if keySign == hex.EncodeToString(data) {
// return v.KeyString
// }
// }
// }
globals.SugarLogger.Debugf("no key can equal..")
return key
}

View File

@@ -74,7 +74,7 @@ func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bo
if status == model.OrderStatusCanceled {
err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单在京东商城已被取消!")
} else {
if jxutils.GetSaleStoreIDFromOrder(order) != model.JdShopMainStoreID && jxutils.GetSaleStoreIDFromOrder(order) != model.JdShopMainStoreID2 {
if jxutils.GetSaleStoreIDFromOrder(order) != model.JdShopMainStoreID {
err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "自动拣货完成")
if status == model.OrderStatusAccepted {
err = p.OrderExport(jxcontext.AdminCtx, order.VendorOrderID, order.VendorOrderID, true)

View File

@@ -154,11 +154,11 @@ func (p *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
if storeDetail.IDCardFront != "" {
data2, _, _ := jxutils.DownloadFileByURL(storeDetail.IDCardFront)
fileName := storeDetail.IDCardFront[strings.LastIndex(storeDetail.IDCardFront, "/")+1 : len(storeDetail.IDCardFront)]
url3, _ = api.JdShop2API.UploadImageNew(data2, fileName)
url3, _ = api.JdShopAPI.UploadImageNew(data2, fileName)
} else {
data2, _, _ := jxutils.DownloadFileByURL("http://image.jxc4.com/image/a9bfc170a950ab9a4c76bd10b48b222b.tem.jpg")
fileName := "a9bfc170a950ab9a4c76bd10b48b222b.tem.jpg"
url3, _ = api.JdShop2API.UploadImageNew(data2, fileName)
url3, _ = api.JdShopAPI.UploadImageNew(data2, fileName)
}
if storeDetail.IDCode == "" {
idCode = "610126198012230014"

View File

@@ -34,7 +34,7 @@ var (
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
if globals.EnableJdShopWrite {
if vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2 {
if vendorStoreID == model.JdShopMainVendorStoreID {
for _, v := range storeSkuList {
//判断京东商城上是否有这个商品了,如果有就是添加规格而不是创建商品
//如果是京东商城2是下架的商品弄上架
@@ -56,7 +56,7 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
break
}
}
if v.VendorOrgCode == "2" && flag2 {
if flag2 {
err = getAPI(v.VendorOrgCode).WareDoUpdate("op", utils.Int64ToStr(v.JdsWareID))
} else {
if result.TotalItem > 0 && len(result.Data) > 0 && flag {
@@ -80,74 +80,74 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
}
var wareSaveSkus []*jdshopapi.WareSaveSkus
//先把已有的规格放进去
if v.VendorOrgCode == "2" {
wareResult, _ := getAPI(v.VendorOrgCode).FindWareById(wareSaveParam.WareID)
if wareResult != nil {
for _, v := range wareResult.Images {
wareSaveParam.ImageMap.Num0000000000 = append(wareSaveParam.ImageMap.Num0000000000, &jdshopapi.CreateSkuParamImages{
ColorID: v.ColorID,
ImgURL: v.ImgURL,
ImgIndex: v.ImgIndex,
})
}
}
skus, _, _ := getAPI(v.VendorOrgCode).SearchSkuList2([]int{int(wareSaveParam.WareID)})
if len(skus) > 0 {
for _, vv := range skus {
sku := &jdshopapi.WareSaveSkus{
SkuID: vv.SkuID,
JdPrice: utils.Float64ToStr(vv.JdPrice),
StockNum: vv.StockNum,
Props: []*jdshopapi.WareSaveSkusProp{
&jdshopapi.WareSaveSkusProp{
AttrID: utils.Str2Int(vv.SaleAttrs[0].AttrID),
AttrValues: utils.Str2Int64(vv.SaleAttrs[0].AttrValues[0]),
AttrValueAlias: vv.SaleAttrs[0].AttrValueAlias[0],
},
},
OuterID: vv.OuterID,
}
wareSaveSkus = append(wareSaveSkus, sku)
}
// if v.VendorOrgCode == "2" {
wareResult, _ := getAPI(v.VendorOrgCode).FindWareById(wareSaveParam.WareID)
if wareResult != nil {
for _, v := range wareResult.Images {
wareSaveParam.ImageMap.Num0000000000 = append(wareSaveParam.ImageMap.Num0000000000, &jdshopapi.CreateSkuParamImages{
ColorID: v.ColorID,
ImgURL: v.ImgURL,
ImgIndex: v.ImgIndex,
})
}
}
skus, _, _ := getAPI(v.VendorOrgCode).SearchSkuList2([]int{int(wareSaveParam.WareID)})
if len(skus) > 0 {
for _, vv := range skus {
sku := &jdshopapi.WareSaveSkus{
SkuID: vv.SkuID,
JdPrice: utils.Float64ToStr(vv.JdPrice),
StockNum: vv.StockNum,
Props: []*jdshopapi.WareSaveSkusProp{
&jdshopapi.WareSaveSkusProp{
AttrID: utils.Str2Int(vv.SaleAttrs[0].AttrID),
AttrValues: utils.Str2Int64(vv.SaleAttrs[0].AttrValues[0]),
AttrValueAlias: vv.SaleAttrs[0].AttrValueAlias[0],
},
},
OuterID: vv.OuterID,
}
wareSaveSkus = append(wareSaveSkus, sku)
}
}
// }
for _, vv := range v.StoreSkuSyncInfoJds {
v.JdsWareID = result.Data[0].WareID
vv.JdsWareID = result.Data[0].WareID
updateSkusParam, wareSaveSku, err := buildUpdateSkusParam(v, vv, true)
_, wareSaveSku, err := buildUpdateSkusParam(v, vv, true)
wareSaveSkus = append(wareSaveSkus, wareSaveSku)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
if v.VendorOrgCode == "1" {
vendorSkuID, err := getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam)
if strings.Contains(err.Error(), "cookie可能过期了") {
err = nil
}
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
vv.VendorSkuID = vendorSkuID
} else {
wareSaveParam.Skus = wareSaveSkus
if wareResult, err2 := getAPI(v.VendorOrgCode).WareSave(wareSaveParam); err2 == nil {
for _, vvv := range wareResult {
if vvv.OuterID == wareSaveSku.OuterID {
vv.VendorSkuID = utils.Int64ToStr(vvv.SkuID)
break
}
}
//创建商品后要上架,改价,库存,门店关注商品等
if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareSaveParam.WareID)); err == nil {
err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{vv.VendorSkuID}, nil)
// if v.VendorOrgCode == "1" {
// vendorSkuID, err := getAPI(v.VendorOrgCode).UpdateSkus(updateSkusParam)
// if strings.Contains(err.Error(), "cookie可能过期了") {
// err = nil
// }
// if err != nil {
// failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
// return failedList, err
// }
// vv.VendorSkuID = vendorSkuID
// } else {
wareSaveParam.Skus = wareSaveSkus
if wareResult, err2 := getAPI(v.VendorOrgCode).WareSave(wareSaveParam); err2 == nil {
for _, vvv := range wareResult {
if vvv.OuterID == wareSaveSku.OuterID {
vv.VendorSkuID = utils.Int64ToStr(vvv.SkuID)
break
}
}
//创建商品后要上架,改价,库存,门店关注商品等
if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareSaveParam.WareID)); err == nil {
err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{vv.VendorSkuID}, nil)
}
}
// }
}
} else {
createSkuParamWare, createSkuParamSkus, wareSaveParam, err := buildCreateWareParam(v)
_, _, wareSaveParam, err := buildCreateWareParam(v)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
@@ -156,72 +156,72 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
wareID int64
resultAttrs = make(map[string]int64)
)
if v.VendorOrgCode == "1" {
createSkuResult, err2 := getAPI(v.VendorOrgCode).CreateWare(createSkuParamWare, createSkuParamSkus)
err = err2
if strings.Contains(err.Error(), "cookie可能过期了") {
err = nil
}
wareID = createSkuResult.WareID
// if v.VendorOrgCode == "1" {
// createSkuResult, err2 := getAPI(v.VendorOrgCode).CreateWare(createSkuParamWare, createSkuParamSkus)
// err = err2
// if strings.Contains(err.Error(), "cookie可能过期了") {
// err = nil
// }
// wareID = createSkuResult.WareID
var paramAttrs = make(map[string]*jdshopapi.CreateSkuParamSkus)
for _, vv := range createSkuParamSkus {
for _, vvv := range vv.SaleAttrs {
paramAttrs[vvv.AttrValues[0]] = vv
}
// var paramAttrs = make(map[string]*jdshopapi.CreateSkuParamSkus)
// for _, vv := range createSkuParamSkus {
// for _, vvv := range vv.SaleAttrs {
// paramAttrs[vvv.AttrValues[0]] = vv
// }
// }
// for _, vv1 := range createSkuResult.Skus {
// for _, vvv1 := range vv1.SaleAttrs {
// if paramAttrs[vvv1.AttrValues[0]] != nil {
// resultAttrs[paramAttrs[vvv1.AttrValues[0]].OuterID] = vv1.SkuID
// }
// }
// }
// for _, vv2 := range v.StoreSkuSyncInfoJds {
// vv2.JdsWareID = createSkuResult.WareID
// if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 {
// vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])
// }
// }
// } else {
var createSkuResult []*jdshopapi.WareSaveResult
for i := 0; i < 10; i++ {
createSkuResult, err = getAPI(v.VendorOrgCode).WareSave(wareSaveParam)
if len(createSkuResult) > 0 {
break
}
for _, vv1 := range createSkuResult.Skus {
for _, vvv1 := range vv1.SaleAttrs {
if paramAttrs[vvv1.AttrValues[0]] != nil {
resultAttrs[paramAttrs[vvv1.AttrValues[0]].OuterID] = vv1.SkuID
}
}
}
for _, vv2 := range v.StoreSkuSyncInfoJds {
vv2.JdsWareID = createSkuResult.WareID
if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 {
vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])
}
}
} else {
var createSkuResult []*jdshopapi.WareSaveResult
for i := 0; i < 10; i++ {
createSkuResult, err = getAPI(v.VendorOrgCode).WareSave(wareSaveParam)
if len(createSkuResult) > 0 {
break
}
time.Sleep(time.Second)
}
wareID = createSkuResult[0].WareID
time.Sleep(time.Second)
}
wareID = createSkuResult[0].WareID
var paramAttrs = make(map[string]*jdshopapi.WareSaveSkus)
for _, vv := range wareSaveParam.Skus {
for _, vvv := range vv.Props {
paramAttrs[vvv.AttrValueAlias] = vv
}
var paramAttrs = make(map[string]*jdshopapi.WareSaveSkus)
for _, vv := range wareSaveParam.Skus {
for _, vvv := range vv.Props {
paramAttrs[vvv.AttrValueAlias] = vv
}
for _, vv1 := range createSkuResult {
for _, vvv1 := range vv1.Props {
if paramAttrs[vvv1.AttrValueAlias] != nil {
resultAttrs[paramAttrs[vvv1.AttrValueAlias].OuterID] = vv1.SkuID
}
}
}
for _, vv2 := range v.StoreSkuSyncInfoJds {
vv2.JdsWareID = createSkuResult[0].WareID
if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 {
vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])
}
}
//创建商品后要上架,改价,库存,门店关注商品等
if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareID)); err == nil {
for _, vv2 := range v.StoreSkuSyncInfoJds {
if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 {
err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])}, nil)
}
}
for _, vv1 := range createSkuResult {
for _, vvv1 := range vv1.Props {
if paramAttrs[vvv1.AttrValueAlias] != nil {
resultAttrs[paramAttrs[vvv1.AttrValueAlias].OuterID] = vv1.SkuID
}
}
}
for _, vv2 := range v.StoreSkuSyncInfoJds {
vv2.JdsWareID = createSkuResult[0].WareID
if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 {
vv2.VendorSkuID = utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])
}
}
//创建商品后要上架,改价,库存,门店关注商品等
if err = getAPI(v.VendorOrgCode).WareDoUpdate("up", utils.Int64ToStr(wareID)); err == nil {
for _, vv2 := range v.StoreSkuSyncInfoJds {
if resultAttrs[utils.Int2Str(vv2.SkuID)] != 0 {
err = getAPI(v.VendorOrgCode).StoreSkuBindStore(true, []string{utils.Int64ToStr(resultAttrs[utils.Int2Str(vv2.SkuID)])}, nil)
}
}
}
// }
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
@@ -255,38 +255,38 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
//如果是普通店关注商品
for _, v := range storeSkuList {
for _, vv := range v.StoreSkuSyncInfoJds {
if vv.VendorOrgCode == "2" {
storeSkus, _ := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID2}, []int{vv.SkuID})
if len(storeSkus) > 0 {
for _, storeSku := range storeSkus {
if storeSku.JdsID != 0 {
status := vv.Status
stock := vv.Stock
price := vv.VendorPrice
if status == model.StoreSkuBindStatusNormal {
err = getAPI(vv.VendorOrgCode).StoreWareDoUpdate(status, storeSku.JdsID, vendorStoreID)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
// if vv.VendorOrgCode == "2" {
storeSkus, _ := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, []int{vv.SkuID})
if len(storeSkus) > 0 {
for _, storeSku := range storeSkus {
if storeSku.JdsID != 0 {
status := vv.Status
stock := vv.Stock
price := vv.VendorPrice
if status == model.StoreSkuBindStatusNormal {
err = getAPI(vv.VendorOrgCode).StoreWareDoUpdate(status, storeSku.JdsID, vendorStoreID)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
if stock != 0 {
err = getAPI(vv.VendorOrgCode).StoreUpdateStock(stock, storeSku.JdsID, vendorStoreID)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
}
err = getAPI(v.VendorOrgCode).StoreUpdatePrice(utils.Float64ToStr(jxutils.IntPrice2Standard(int64(price))), storeSku.JdsID, vendorStoreID)
}
if stock != 0 {
err = getAPI(vv.VendorOrgCode).StoreUpdateStock(stock, storeSku.JdsID, vendorStoreID)
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
}
err = getAPI(v.VendorOrgCode).StoreUpdatePrice(utils.Float64ToStr(jxutils.IntPrice2Standard(int64(price))), storeSku.JdsID, vendorStoreID)
}
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
}
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品")
return failedList, err
}
}
}
// }
}
}
}
@@ -294,7 +294,7 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
}
func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) {
if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID {
if vendorStoreID == model.JdShopMainVendorStoreID {
for _, v := range storeSkuList {
name := filterSensitiveWord(v.Name)
@@ -456,7 +456,7 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v
}
func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) {
if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID {
for _, v := range storeSkuList {
if v.IsDeletedBySku {
err = getAPI(v.VendorOrgCode).DeleteSku(utils.Str2Int64(v.VendorSkuID))
@@ -483,9 +483,9 @@ func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTas
pageNo = 1
pageSize = 20
)
if result, totalCount, err := api.JdShop2API.StoreProductSearch(pageNo, pageSize, []string{vendorStoreID}); err == nil && result != nil {
if result, totalCount, err := api.JdShopAPI.StoreProductSearch(pageNo, pageSize, []string{vendorStoreID}); err == nil && result != nil {
for ; pageNo <= totalCount/pageSize+1; pageNo++ {
result2, _, err := api.JdShop2API.StoreProductSearch(pageNo, pageSize, []string{vendorStoreID})
result2, _, err := api.JdShopAPI.StoreProductSearch(pageNo, pageSize, []string{vendorStoreID})
if err == nil {
for _, v := range result2 {
if skuName := vendorSku2Jx2(v); skuName != nil {
@@ -522,36 +522,34 @@ func getMainStoreVendorSkuID(mainStoreID int, skuID int) (vendorSkuID int64, err
func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo, status int) (failedList []*partner.StoreSkuInfoWithErr, err error) {
if globals.EnableJdShopWrite {
var stock = 0
// var stock = 0
for _, v := range storeSkuList {
if storeID == model.JdShopMainStoreID {
if status == model.SkuStatusNormal {
stock = 9999
}
if v.JdsStockSwitch == model.NO {
stock = 0
}
err = getAPI(v.VendorOrgCode).UpdateSkuStock(utils.Str2Int(v.VendorSkuID), stock)
} else if storeID == model.JdShopMainStoreID2 {
} else {
if v.VendorOrgCode == "1" {
storeSkus, err2 := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, []int{v.SkuID})
err = err2
if len(storeSkus) > 0 {
if storeSkus[0].JdsID != 0 && vendorStoreID != "" {
if storeSkus[0].Status == model.SkuStatusNormal {
stock = 9999
}
err = getAPI(v.VendorOrgCode).UpdateSkuSiteStock(storeSkus[0].JdsID, stock, utils.Str2Int(vendorStoreID))
}
}
} else {
if vendorSkuID, err := getMainStoreVendorSkuID(model.JdShopMainStoreID2, v.SkuID); err == nil && vendorSkuID != 0 {
err = getAPI(v.VendorOrgCode).StoreWareDoUpdate(status, vendorSkuID, vendorStoreID)
}
}
// if storeID == model.JdShopMainStoreID {
// if status == model.SkuStatusNormal {
// stock = 9999
// }
// if v.JdsStockSwitch == model.NO {
// stock = 0
// }
// err = getAPI(v.VendorOrgCode).UpdateSkuStock(utils.Str2Int(v.VendorSkuID), stock)
// } else {
// if v.VendorOrgCode == "1" {
// storeSkus, err2 := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, []int{v.SkuID})
// err = err2
// if len(storeSkus) > 0 {
// if storeSkus[0].JdsID != 0 && vendorStoreID != "" {
// if storeSkus[0].Status == model.SkuStatusNormal {
// stock = 9999
// }
// err = getAPI(v.VendorOrgCode).UpdateSkuSiteStock(storeSkus[0].JdsID, stock, utils.Str2Int(vendorStoreID))
// }
// }
// } else {
if vendorSkuID, err := getMainStoreVendorSkuID(model.JdShopMainStoreID, v.SkuID); err == nil && vendorSkuID != 0 {
err = getAPI(v.VendorOrgCode).StoreWareDoUpdate(status, vendorSkuID, vendorStoreID)
}
// }
// }
}
if err != nil {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "修改商品库存")
@@ -563,19 +561,19 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
if globals.EnableJdShopWrite {
for _, v := range storeSkuList {
if storeID == model.JdShopMainStoreID {
err = getAPI(v.VendorOrgCode).UpdateSkuJdPrice(utils.Str2Int(v.VendorSkuID), jxutils.IntPrice2Standard(v.VendorPrice))
} else if storeID == model.JdShopMainStoreID2 {
//修改京东商城商品库价格
} else {
if v.VendorOrgCode == "1" {
// null
} else {
if vendorSkuID, err := getMainStoreVendorSkuID(model.JdShopMainStoreID2, v.SkuID); err == nil && vendorSkuID != 0 {
err = getAPI(v.VendorOrgCode).StoreUpdatePrice(utils.Float64ToStr(jxutils.IntPrice2Standard(v.VendorPrice)), vendorSkuID, vendorStoreID)
}
}
// if storeID == model.JdShopMainStoreID {
// err = getAPI(v.VendorOrgCode).UpdateSkuJdPrice(utils.Str2Int(v.VendorSkuID), jxutils.IntPrice2Standard(v.VendorPrice))
// } else if storeID == model.JdShopMainStoreID2 {
// //修改京东商城商品库价格
// } else {
// if v.VendorOrgCode == "1" {
// // null
// } else {
if vendorSkuID, err := getMainStoreVendorSkuID(model.JdShopMainStoreID, v.SkuID); err == nil && vendorSkuID != 0 {
err = getAPI(v.VendorOrgCode).StoreUpdatePrice(utils.Float64ToStr(jxutils.IntPrice2Standard(v.VendorPrice)), vendorSkuID, vendorStoreID)
}
// }
// }
if err != nil {
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "修改商品价格")...)
}
@@ -587,19 +585,19 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
if globals.EnableJdShopWrite {
for _, v := range storeSkuList {
if storeID == model.JdShopMainStoreID {
// if storeID == model.JdShopMainStoreID {
} else if storeID == model.JdShopMainStoreID2 {
// } else if storeID == model.JdShopMainStoreID2 {
} else {
if v.VendorOrgCode == "1" {
// } else {
// if v.VendorOrgCode == "1" {
} else {
if vendorSkuID, err := getMainStoreVendorSkuID(model.JdShopMainStoreID2, v.SkuID); err == nil && vendorSkuID != 0 {
err = getAPI(v.VendorOrgCode).StoreUpdateStock(v.Stock, vendorSkuID, vendorStoreID)
}
}
// } else {
if vendorSkuID, err := getMainStoreVendorSkuID(model.JdShopMainStoreID, v.SkuID); err == nil && vendorSkuID != 0 {
err = getAPI(v.VendorOrgCode).StoreUpdateStock(v.Stock, vendorSkuID, vendorStoreID)
}
// }
// }
}
if err != nil {
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "修改商品库存")...)
@@ -626,7 +624,7 @@ func (p *PurchaseHandler) GetStoreAllCategories(ctx *jxcontext.Context, storeID
}
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) {
if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID {
status, err2 := updateOrCreateCategories(storeCat, true)
err = err2
if status == -1 {
@@ -661,7 +659,7 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in
}
func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) {
if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID {
status, err2 := updateOrCreateCategories(storeCat, false)
err = err2
if status == -1 {
@@ -672,7 +670,7 @@ func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID in
}
func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (err error) {
if globals.EnableJdShopWrite && (vendorStoreID == model.JdShopMainVendorStoreID || vendorStoreID == model.JdShopMainVendorStoreID2) {
if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID {
_, err = api.JdShopAPI.DeleteShopCategory(utils.Str2Int64(vendorCatID))
}
return err