diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index 039bf05a1..b18c06a57 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -928,12 +928,41 @@ func StoreOpenAll(ctx *jxcontext.Context) { // globals.SugarLogger.Debug("StoreOpenAll skuID is Complete") //} -// 对比本地商品和平台商品差异(价格和规格),不同的重新同步 -func CheckSkuDiffBetweenJxAndVendor2(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) { - //db := dao.GetDB() +// CheckSkuDiffBetweenJxAndVendor2 对比本地商品和平台商品差异(价格和规格),不同的重新同步 +func CheckSkuDiffBetweenJxAndVendor2(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) error { + //var ( + // db = dao.GetDB() + // errList = make([]error, 0, 0) + //) //for _, v := range storeIDList { - // //storeMapList, err := dao.GetStoresMapList(db, vendorIDList, []int{v}, []int{model.StoreStatusOpened, model.StoreStatusHaveRest, model.StoreStatusClosed}, status, model.StoreIsSyncYes, "", "", "") + // // 1.判断本地门店是否开启了同步,未开启的跳过 + // storeMapList, err := dao.GetStoresMapList(db, vendorIDList, []int{v}, []int{model.StoreStatusOpened, model.StoreStatusHaveRest, model.StoreStatusClosed}, model.StoreStatusOpened, model.StoreIsSyncYes, "", "", "") + // if err != nil { + // errList = append(errList, fmt.Errorf("门店id[%d]查询异常:%v", v, err)) + // continue + // } + // if len(storeMapList) == model.NO { + // errList = append(errList, fmt.Errorf("门店id[%d],未绑定平台账号或者同步未打开", v)) + // continue + // } + // // 2.查询本地商品列表,存储sku_id,vendor_price,weight + // skuList, skuErr := dao.GetStoreSkuBindPriceAndWeight(db, v) + // if len(skuList) == model.NO || skuErr != nil { + // errList = append(errList, fmt.Errorf("门店id[%d],商品为空或错误:%v", v, skuErr)) + // continue + // } + // + // // 查询平台门店所有商品 + // for _, storeMap := range storeMapList { + // singleStoreHandler := partner.GetPurchasePlatformFromVendorID(storeMap.VendorID).(partner.ISingleStoreStoreSkuHandler) + // // 淘宝需要storeSkuList有值 + // vendorSkuInfoList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, v, storeMap.VendorStoreID, nil) + // + // } + // // 3.比对价格和规格重量,不同的以本地为基础开始重新同步 + // //} + return nil } //入口函数,校验本地商品京西和其他平台的差异 diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 05d37d034..8e03299ab 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -2105,3 +2105,35 @@ func GetStoresSkusForManageState(db *DaoDB, storeID, status int) (storeSkuList [ err = GetRows(db, &storeSkuList, sql, sqlParams...) return storeSkuList, err } + +type SkuPriceAndWeight struct { + SkuId int64 `orm:"column(sku_id)" json:"skuId"` // 商品本地id + MtwmPrice int64 `orm:"column(mtwm_price)" json:"mtwmPrice"` // 美团平台价 + JdPrice int64 `orm:"column(jd_price)" json:"jdPrice"` // 京东平台价 + EbaiPrice int64 `orm:"column(ebai_price)" json:"ebaiPrice"` // 饿百平台价 + TaoPrice int64 `orm:"column(tao_price)" json:"taoPrice"` // 淘宝平台价 + DdPrice int64 `orm:"column(dd_price)" json:"ddPrice"` // 抖店平台价 + Weight int64 `orm:"column(weight)" json:"weight"` // 商品规格重量 +} + +// GetStoreSkuBindPriceAndWeight 获取门店绑定商品平台价格和规格 +func GetStoreSkuBindPriceAndWeight(db *DaoDB, storeId int) (skuList map[string]*SkuPriceAndWeight, err error) { + sql := ` SELECT b.sku_id,b.mtwm_price,b.jd_price,b.ebai_price,b.tao_price,b.dd_price,s.weight FROM store_sku_bind b + INNER JOIN sku s ON s.id = b.sku_id + WHERE b.store_id = ? AND b.deleted_at = ? + ` + result := make([]*SkuPriceAndWeight, 0, 0) + sqlParams := []interface{}{storeId, utils.DefaultTimeValue} + if err = GetRows(db, &result, sql, sqlParams...); err != nil { + return nil, err + } + + if len(result) != model.NO { + skuMap := make(map[string]*SkuPriceAndWeight, 0) + for _, v := range result { + skuMap[utils.Int64ToStr(v.SkuId)] = v + } + return skuMap, nil + } + return nil, errors.New("门店不存在商品数据") +} diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index 622d011d0..67f84b141 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -149,17 +149,18 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) } } else { + // msg-status 1-已申请 10-初审已同意 11-初审已驳回 16-初审已申诉 17-初审申诉已同意 18-初审申诉已驳回 20-终审已发起(用户已发货) 21-终审已同意 22-终审已驳回 26-终审已申诉 27-终审申诉已同意 28-终审申诉已驳回 30-已取消 if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil { // 订单回调全额退款接口时,将订单状态修改为取消 refundData := msg.Data.(*mtwmapi.CallbackRefundInfo) - if refundData.NotifyType == mtwmapi.MsgTypeOrderAgree && msg.Cmd == mtwmapi.MsgTypeOrderRefund { + if (refundData.NotifyType == mtwmapi.MsgTypeOrderAgree && msg.Cmd == mtwmapi.MsgTypeOrderRefund) || refundData.Status == "21" { order, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDMTWM) order.Status = model.OrderStatusCanceled dao.UpdateEntity(dao.GetDB(), order, "Status") } // 新订单平台自动同意退单,某一些情况下产生的运单没退!这个处理一下! - if refundData.NotifyType == mtwmapi.MsgTypeOrderAgree && (msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderAgree) { + if (refundData.NotifyType == mtwmapi.MsgTypeOrderAgree && (msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderAgree)) || refundData.Status == "21" { wayBill, _ := dao.GetWaybills(dao.GetDB(), orderStatus.RefVendorOrderID, nil) for _, v := range wayBill { handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID) @@ -168,7 +169,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma } } } - + } } return mtwmapi.Err2CallbackResponse(err, "")