diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 3ce1f6071..734b8c2da 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -11,6 +11,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" "github.com/360EntSecGroup-Skylar/excelize" @@ -1149,6 +1150,13 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor if valid["status"] != nil { syncStatus |= model.SyncFlagStoreStatus } + if valid["vendorStoreName"] != nil { + vendorStoreName := valid["vendorStoreName"].(string) + if utf8.RuneCountInString(vendorStoreName) > 13 && vendorID == model.VendorIDJD { + return 0, fmt.Errorf("门店名称不允许超过13位!") + } + syncStatus |= model.SyncFlagStoreName + } for _, v := range [][]string{ []string{ "pricePercentagePack", @@ -1189,7 +1197,7 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor panic(r) } }() - if valid["status"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商 + if valid["status"] != nil || valid["vendorStoreName"] != nil { // 对于store vendor map,只有Status改变才需要同步到厂商 num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeMap, valid, userName, map[string]interface{}{ model.FieldStoreID: storeID, model.FieldVendorID: vendorID, @@ -1222,7 +1230,7 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor } } dao.Commit(db) - if vendorID != model.VendorIDJX && (valid["status"] != nil || valid["freightDeductionPack"] != nil) { + if vendorID != model.VendorIDJX && (valid["status"] != nil || valid["freightDeductionPack"] != nil || valid["vendorStoreName"] != nil) { _, err = CurVendorSync.SyncStore(ctx, db, vendorID, storeID, false, userName) } } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index c1900b253..40c35c240 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -14,10 +14,11 @@ type StoreDetail struct { VendorOrgCode string `orm:"size(32)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空 - VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` - VendorStatus int `json:"vendor_status"` // 取值同Store.Status - DeliveryFee int `json:"deliveryFee"` - SyncStatus int8 `orm:"default(2)" json:"syncStatus"` + VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` + VendorStoreName string `json:"vendorStoreName"` + VendorStatus int `json:"vendor_status"` // 取值同Store.Status + DeliveryFee int `json:"deliveryFee"` + SyncStatus int8 `orm:"default(2)" json:"syncStatus"` PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格 PricePercentagePackStr string `orm:"size(4096)" json:"-"` // @@ -81,7 +82,7 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID string) (sto sql := ` SELECT t1.*, t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee, t2.sync_status, t2.vendor_org_code, - t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, + t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, t2.vendor_store_name, t3.value price_percentage_pack_str, t4.value freight_deduction_pack_str, district.name district_name, diff --git a/business/model/store.go b/business/model/store.go index 9deb91007..83467b027 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -388,9 +388,10 @@ type StoreMap struct { VendorID int `orm:"column(vendor_id)" json:"vendorID"` VendorOrgCode string `orm:"size(32)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空 - VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` - Status int `json:"status"` // 取值同Store.Status - StoreName string `orm:"size(255)" json:"storeName"` // 平台门店的名字 + VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` + Status int `json:"status"` // 取值同Store.Status + StoreName string `orm:"size(255)" json:"storeName"` // 平台门店的名字,由平台到京西 + VendorStoreName string `orm:"size(255)" json:"vendorStoreName"` //平台门店名,由京西到平台 PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格 PricePercentagePack string `orm:"size(32)" json:"pricePercentagePack"` // diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index ea5b75170..3d36ed191 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -30,9 +30,10 @@ type tEbaiStoreInfo struct { EbaiStoreStatus int SyncStatus int - ProvinceID int `orm:"column(province_id)"` - CityID int `orm:"column(city_id)"` - DistrictID int `orm:"column(district_id)"` + ProvinceID int `orm:"column(province_id)"` + CityID int `orm:"column(city_id)"` + DistrictID int `orm:"column(district_id)"` + VendorStoreName string } func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (vendorStoreID string, err error) { @@ -156,7 +157,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin SELECT t1.*, t2.status ebai_store_status, t2.vendor_store_id, t2.vendor_org_code, - IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, t2.sync_status + IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, t2.sync_status, t2.vendor_store_name FROM store t1 JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ?) WHERE t1.id = ? @@ -392,8 +393,12 @@ func genStoreMapFromStore(store *tEbaiStoreInfo) map[string]interface{} { if store.VendorStoreID != "" { params["baidu_shop_id"] = store.VendorStoreID } - if store.SyncStatus&(model.SyncFlagNewMask /*|model.SyncFlagStoreName*/) != 0 { - params["name"] = jxutils.ComposeStoreName(store.Name, model.VendorIDEBAI) + if store.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 { + if store.VendorStoreName != "" { + params["name"] = store.VendorStoreName + } else { + params["name"] = jxutils.ComposeStoreName(store.Name, model.VendorIDEBAI) + } } params["address"] = store.Address // todo 饿百 开店审核通过后不允许修改商户信息 diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 41a913437..40c97678b 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -36,6 +36,7 @@ type tJdStoreInfo struct { VendorStoreID string `orm:"column(vendor_store_id)"` RealLastOperator string SyncStatus int + VendorStoreName string } var ( @@ -123,7 +124,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin t1.*, city.jd_code jd_city_code, district.jd_code jd_district_code, t2.status jd_store_status, t2.vendor_store_id, IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, - t2.sync_status, t2.freight_deduction_pack, t2.vendor_org_code + t2.sync_status, t2.freight_deduction_pack, t2.vendor_org_code, t2.vendor_store_name FROM store t1 JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ?) LEFT JOIN place city ON t1.city_code = city.code @@ -146,7 +147,11 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin storeParams.OutSystemID = store.VendorStoreID } if store.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 { - storeParams.StationName = jxutils.ComposeStoreName(store.Name, model.VendorIDJD) + if store.VendorStoreName != "" { + storeParams.StationName = store.VendorStoreName + } else { + storeParams.StationName = jxutils.ComposeStoreName(store.Name, model.VendorIDJD) + } } if store.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreAddress) != 0 { storeParams.StationAddress = store.Address diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index 27f4c1bff..f0538aa3a 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -101,6 +101,7 @@ func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName strin } func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { + var name string if db == nil { db = dao.GetDB() } @@ -115,10 +116,16 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin return err } mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus) + name = remoteStoreInfo.Name + if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 { + if storeDetail.VendorStoreName != "" { + name = storeDetail.VendorStoreName + } + } // openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus) params := map[string]interface{}{ - "name": remoteStoreInfo.Name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM), - "address": storeDetail.Address, // 美团好像地址也不能改的? + "name": name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM), + "address": storeDetail.Address, // 美团好像地址也不能改的? "longitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Longitude)), "latitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Latitude)), "phone": storeDetail.Tel1,