diff --git a/business/partner/partner_store.go b/business/partner/partner_store.go index ab964e1c6..48fcaaaaf 100644 --- a/business/partner/partner_store.go +++ b/business/partner/partner_store.go @@ -5,5 +5,5 @@ import "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" type IStoreHandler interface { UpdateStoreStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, status int) (err error) // opTime格式为整数1130代表11:30 - // ChangeStoreOptime(ctx *jxcontext.Context, opTimeList []int) (err error) + UpdateStoreOpTime(ctx *jxcontext.Context, storeID int, vendorStoreID string, opTimeList []int) (err error) } diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index 4309e591f..d44ae6816 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -335,25 +335,32 @@ func JxDeliveryRegion2Ebai(store *model.Store) (deliveryRegion interface{}) { return deliveryRegion } -func JxBusinessTime2Ebai(store *model.Store) interface{} { - bTime := make([]map[string]interface{}, 1) - bTime[0] = map[string]interface{}{ - "start": jxutils.JxOperationTime2StrTime(store.OpenTime1), - "end": jxutils.JxOperationTime2StrTime(store.CloseTime1), +func fillOpTimeParams(params map[string]interface{}, opTimeList []int16) map[string]interface{} { + if params == nil { + params = make(map[string]interface{}) } - if store.OpenTime2 != 0 { - bTime = append(bTime, map[string]interface{}{ - "start": jxutils.JxOperationTime2StrTime(store.OpenTime2), - "end": jxutils.JxOperationTime2StrTime(store.CloseTime2), - }) + var pairList []map[string]string + opTimeListLen := len(opTimeList) + if opTimeListLen > 4 { + opTimeListLen = 4 } - return bTime + opTimeListLen = opTimeListLen / 2 * 2 + for k := 0; k < len(opTimeList); k += 2 { + if opTimeList[k] != 0 { + pairList = append(pairList, map[string]string{ + "start": jxutils.JxOperationTime2StrTime(opTimeList[k]), + "end": jxutils.JxOperationTime2StrTime(opTimeList[k+1]), + }) + } else { + break + } + } + params["business_time"] = pairList + return params } func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} { - params := map[string]interface{}{ - "business_time": JxBusinessTime2Ebai(&store.Store), - } + params := fillOpTimeParams(nil, []int16{store.OpenTime1, store.CloseTime1, store.OpenTime2, store.CloseTime2}) // if store.Tel2 != "" { // params["ivr_phone"] = store.Tel2 // } @@ -447,3 +454,14 @@ func (c *PurchaseHandler) updateStoreStatus(userName string, storeID int, vendor } return err } + +func (c *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, storeID int, vendorStoreID string, opTimeList []int16) (err error) { + params := map[string]interface{}{ + ebaiapi.KeyBaiduShopID: vendorStoreID, + } + fillOpTimeParams(params, opTimeList) + if globals.EnableEbaiStoreWrite { + api.EbaiAPI.ShopUpdate(params) + } + return err +} diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 77bfb34fe..d934d16f9 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -1,6 +1,7 @@ package jd import ( + "fmt" "strings" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" @@ -113,12 +114,11 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin outSystemID = utils.Int2Str(int(store.ID)) } params := map[string]interface{}{ - "outSystemId": outSystemID, // todo 直接修改这个字段可能会有问题 - "serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1), - "serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1), - "phone": store.Tel1, - "mobile": store.Tel2, + "outSystemId": outSystemID, // todo 直接修改这个字段可能会有问题 + "phone": store.Tel1, + "mobile": store.Tel2, } + fillOpTimeParams(params, []int16{store.OpenTime1, store.CloseTime1, store.OpenTime2, store.CloseTime2}) if store.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 { params["stationName"] = jxutils.ComposeStoreName(store.Name, model.VendorIDJD) } @@ -140,11 +140,6 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin params["deliveryRangeRadius"] = utils.Str2Int64WithDefault(store.DeliveryRange, 0) } } - openTime2 := JxOperationTime2JdOperationTime(store.OpenTime2) - if openTime2 != 0 { - params["serviceTimeStart2"] = openTime2 - params["serviceTimeEnd2"] = JxOperationTime2JdOperationTime(store.CloseTime2) - } _, params["closeStatus"] = JxStoreStatus2JdStatus(jxutils.MergeStoreStatus(store.Status, store.JdStoreStatus)) globals.SugarLogger.Debug(utils.Format4Output(params, false)) if globals.EnableJdStoreWrite { @@ -328,3 +323,33 @@ func (c *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, storeID int, } return err } + +func fillOpTimeParams(params map[string]interface{}, opTimeList []int16) map[string]interface{} { + if params == nil { + params = make(map[string]interface{}) + } + index := 1 + opTimeListLen := len(opTimeList) + if opTimeListLen > 4 { + opTimeListLen = 4 + } + opTimeListLen = opTimeListLen / 2 * 2 + for k := 0; k < len(opTimeList); k += 2 { + if opTimeList[k] != 0 { + params[fmt.Sprintf("serviceTimeStart%d", index)] = JxOperationTime2JdOperationTime(int16(opTimeList[k])) + params[fmt.Sprintf("serviceTimeEnd%d", index)] = JxOperationTime2JdOperationTime(int16(opTimeList[k+1])) + } else { + break + } + index++ + } + return params +} + +func (c *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, storeID int, vendorStoreID string, opTimeList []int16) (err error) { + params := fillOpTimeParams(nil, opTimeList) + if globals.EnableJdStoreWrite { + err = api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, ctx.GetUserName(), params) + } + return err +} diff --git a/business/partner/purchase/mtwm/mtwm.go b/business/partner/purchase/mtwm/mtwm.go index 36184dc7c..9cb6751f7 100644 --- a/business/partner/purchase/mtwm/mtwm.go +++ b/business/partner/purchase/mtwm/mtwm.go @@ -124,10 +124,15 @@ func openTimeMtwm2JX(vendorOpenTime string) [][2]int16 { return jxOpenTimers } -func openTimeJX2Mtwm(times [][2]int16) string { - strPairs := make([]string, len(times)) - for k, v := range times { - strPairs[k] = jxutils.JxOperationTime2StrTime(v[0]) + "-" + jxutils.JxOperationTime2StrTime(v[1]) +func openTimeJX2Mtwm(times []int16) string { + timesLen := len(times) / 2 * 2 + var strPairs []string + for i := 0; i < timesLen; i += 2 { + if times[i] != 0 { + strPairs = append(strPairs, jxutils.JxOperationTime2StrTime(times[i])+"-"+jxutils.JxOperationTime2StrTime(times[i+1])) + } else { + break + } } return strings.Join(strPairs, ",") } diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index 580cea6e9..215d4e64d 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -5,6 +5,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -103,10 +104,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin if err != nil { return err } - openTime := [][2]int16{[2]int16{storeDetail.OpenTime1, storeDetail.CloseTime1}} - if storeDetail.OpenTime2 > 0 { - openTime = append(openTime, [2]int16{storeDetail.OpenTime2, storeDetail.CloseTime2}) - } + errList := errlist.New() // remoteStoreInfo, err := api.MtwmAPI.PoiGet(storeDetail.VendorStoreID) // if err != nil { // return err @@ -129,12 +127,9 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin // if globals.EnableMtwmStoreWrite { // err = api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params) // } - if err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)); err == nil { - if globals.EnableMtwmStoreWrite { - err = api.MtwmAPI.PoiShipTimeUpdate(storeDetail.VendorStoreID, openTimeJX2Mtwm(openTime)) - } - } - return err + errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus))) + errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, []int16{storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2})) + return errList.GetErrListAsOne() } func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) { @@ -195,3 +190,11 @@ func (c *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, storeID int, } return err } + +func (c *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, storeID int, vendorStoreID string, opTimeList []int16) (err error) { + shippingTime := openTimeJX2Mtwm(opTimeList) + if globals.EnableMtwmStoreWrite { + err = api.MtwmAPI.PoiShipTimeUpdate(vendorStoreID, shippingTime) + } + return err +}