diff --git a/business/jxutils/jxutils_cms.go b/business/jxutils/jxutils_cms.go index 292f7a1c5..52815e9d7 100644 --- a/business/jxutils/jxutils_cms.go +++ b/business/jxutils/jxutils_cms.go @@ -4,6 +4,7 @@ import ( "fmt" "math" "reflect" + "regexp" "strings" "time" @@ -11,6 +12,10 @@ import ( "git.rosy.net.cn/jx-callback/business/model" ) +var ( + storeNamePat = regexp.MustCompile(`([^(\[(【)\])】\-\s]*)[(\[(【\-\s]+([^(\[(【)\])】\-]*)[)\])】]*`) +) + // 合并得到最终的门店状态 func MergeStoreStatus(status int, vendorStatus int) int { if status < vendorStatus { @@ -58,15 +63,26 @@ func SplitStoreName(fullName, separator, defaultPrefix string) (prefix, bareName prefix = names[0] bareName = names[1] } else { - prefix = defaultPrefix - bareName = strings.Trim(strings.Trim(fullName, defaultPrefix), separator) - + searchResult := storeNamePat.FindStringSubmatch(fullName) + if searchResult != nil { + prefix = searchResult[1] + bareName = strings.Trim(strings.Trim(searchResult[2], defaultPrefix), separator) + } else { + prefix = defaultPrefix + bareName = strings.Trim(strings.Trim(fullName, defaultPrefix), separator) + } } - return TrimDecorationChar(defaultPrefix), TrimDecorationChar(bareName) + return TrimDecorationChar(prefix), TrimDecorationChar(bareName) } -func ComposeStoreName(bareName, separator, prefix string) (fullName string) { - return prefix + separator + TrimDecorationChar(strings.Trim(bareName, separator)) +func ComposeStoreName(bareName string, vendorID int) (fullName string) { + bareName = TrimDecorationChar(strings.Trim(bareName, "-")) + if vendorID == model.VendorIDJD { + fullName = "京西菜市-" + bareName + } else { + fullName = "京西菜市(" + bareName + ")" + } + return fullName } func StrTime2JxOperationTime(strTime string, defValue int16) int16 { diff --git a/business/jxutils/jxutils_cms_test.go b/business/jxutils/jxutils_cms_test.go index 67ee2ac7b..1373a079f 100644 --- a/business/jxutils/jxutils_cms_test.go +++ b/business/jxutils/jxutils_cms_test.go @@ -61,3 +61,43 @@ func TestIsMobileFake(t *testing.T) { t.Fatal("wrong 4") } } + +func TestSplitStoreName(t *testing.T) { + for _, v := range [][]string{ + []string{ + "京西菜市 站北店", + "京西菜市", + "站北店", + }, + []string{ + "京西菜市(站北店)", + "京西菜市", + "站北店", + }, + []string{ + "京西菜市[(站北店", + "京西菜市", + "站北店", + }, + []string{ + "京西菜市 站北店)", + "京西菜市", + "站北店", + }, + []string{ + "京西菜市-站北店", + "京西菜市", + "站北店", + }, + []string{ + "站北店", + "京西菜市", + "站北店", + }, + } { + prefix, bareName := SplitStoreName(v[0], "-", "京西菜市") + if prefix != v[1] || bareName != v[2] { + t.Fatalf("SplitStoreName(%s) is wrong, %s, %s", v[0], prefix, bareName) + } + } +} diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 949019b76..1764852eb 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -155,7 +155,6 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store sql = fmt.Sprintf(sql, tableName, fieldPrefix, fieldPrefix, vendorSkuNameField, imgField, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix) // globals.SugarLogger.Debug(sql) if err = GetRows(db, &skus, sql, sqlParams...); err != nil { - globals.SugarLogger.Debug("fuck") return nil, err } return skus, err diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index f921035b0..a0ff05982 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -357,7 +357,7 @@ func JxBusinessTime2Ebai(store *model.Store) interface{} { func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} { params := map[string]interface{}{ - "name": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix), + "name": jxutils.ComposeStoreName(store.Name, model.VendorIDEBAI), "phone": store.Tel1, "longitude": jxutils.IntCoordinate2Standard(store.Lng), "latitude": jxutils.IntCoordinate2Standard(store.Lat), diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index 9b2dcb9ab..9afc8f744 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -84,7 +84,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [ t4p.id parent_cat_id, t5p.ebai_id parent_cat_ebai_id, t5p.ebai_sync_status parent_cat_ebai_sync_status, cat1.vendor_category_id ebai_cat3_id, cat2.vendor_category_id ebai_cat2_id, cat2.parent_id ebai_cat1_id FROM store_sku_bind t1 - JOIN sku t2 ON t1.sku_id = t2.id AND t2.status = ? + JOIN sku t2 ON t1.sku_id = t2.id/* AND t2.status = ?*/ JOIN sku_name t3 ON t2.name_id = t3.id JOIN sku_category t4 ON t3.category_id = t4.id LEFT JOIN sku_category t4p ON t4p.id = t4.parent_id @@ -96,7 +96,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [ WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0) ` sqlParams := []interface{}{ - model.SkuStatusNormal, + // model.SkuStatusNormal, utils.DefaultTimeValue, utils.DefaultTimeValue, model.VendorIDEBAI, diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 1720d4c00..8d833717f 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -112,7 +112,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin } params := map[string]interface{}{ "outSystemId": outSystemID, // todo 直接修改这个字段可能会有问题 - "stationName": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix), + "stationName": jxutils.ComposeStoreName(store.Name, model.VendorIDJD), "stationAddress": store.Address, "serviceTimeStart1": JxOperationTime2JdOperationTime(store.OpenTime1), "serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1), diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index d7bf319b0..760f51b93 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -107,7 +107,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin openTime = append(openTime, [2]int16{storeDetail.OpenTime2, storeDetail.CloseTime2}) } params := map[string]interface{}{ - "name": storeDetail.Store.Name, + "name": jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM), "address": storeDetail.Address, "longitude": jxutils.IntCoordinate2Standard(storeDetail.Lng), "latitude": jxutils.IntCoordinate2Standard(storeDetail.Lat),