diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index b03c8113d..f4bc96f71 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6002,7 +6002,7 @@ func FilterByB2B(locationList []*common.Store4User) (retVal []*common.Store4User } //首页信息展示 -func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDistance bool) (interface{}, string, error) { +func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDistance bool, brandId int) (interface{}, string, error) { //获取门店信息 var ( storeID []int @@ -6014,7 +6014,7 @@ func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDis StoreSkuInfos []StoreSkuInfo homePages []HomePageInfos ) - locationList, err := common.GetStoreListByLocation(ctx, lng, lat, 20000, needWalkDistance, false, 0) + locationList, err := common.GetStoreListByLocation(ctx, lng, lat, 50000, needWalkDistance, false, brandId) if err != nil { return nil, "经纬度获取推荐门店失败", err } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 1a4fb5385..e076a2e43 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1937,6 +1937,9 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs scaleFactor = 100 / float64(jxutils.ConstrainPayPercentage(storeDetail.PayPercentage)) } for _, skuBindInfo := range skuBindInfos { + if skuBindInfo.StoreID == 668470 { + globals.SugarLogger.Debugf("---------skuBindInfo := %s", utils.Format4Output(skuBindInfo, false)) + } // 关注且没有给价时,需要尝试从store_sku_bind中得到已有的单价 needGetExistingUnitPrice := skuBindInfo.UnitPrice == 0 && skuBindInfo.IsFocus == 1 inSkuBinds := skuBindInfo.Skus @@ -2018,6 +2021,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs } } unitPrice = int(math.Floor(float64(unitPrice)*scaleFactor/10+0.5)) * 10 //四舍五入 价格为100倍 角分为十位个位 除以10 + 0.5对分位向下取整(完成四舍五入的方法) + globals.SugarLogger.Debugf("-----------allBinds := %s", utils.Format4Output(allBinds, false)) for _, v := range allBinds { if v.Stock == 0 { v.Stock = model.MaxStoreSkuStockQty @@ -3728,19 +3732,20 @@ func ReCalculateJxPriceLight(db *dao.DaoDB, ctx *jxcontext.Context, storeID int) func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (storeSkuNameExt2 []*dao.StoreSkuNameExt, err error) { var ( - db = dao.GetDB() - skuMap = make(map[int]*dao.StoreSkuNameExt) + db = dao.GetDB() + skuMap = make(map[int]*dao.StoreSkuNameExt) + storeSkuNameExt = make([]*dao.StoreSkuNameExt, 0, 0) ) if len(storeIDs) == 0 { return storeSkuNameExt2, err } - globals.SugarLogger.Debugf("---storeIds := %s", utils.Format4Output(storeIDs, false)) - storeSkuNameExt, err := dao.GetTopSkusByStoreIDs(db, storeIDs) - if err != nil { - return nil, err - } - for _, v := range storeSkuNameExt { - globals.SugarLogger.Debugf("----------------storeSkuNameExtv := %d,%d", v.StoreID, v.SkuID) + + for _, storeId := range storeIDs { + storeSkuName, err := dao.GetTopSkusByStoreIDs(db, []int{storeId}) + if err != nil { + return nil, err + } + storeSkuNameExt = append(storeSkuNameExt, storeSkuName...) } for _, v := range storeSkuNameExt { @@ -3762,9 +3767,6 @@ func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (storeSkuNameE } } } - for _, v := range storeSkuNameExt2 { - globals.SugarLogger.Debugf("---------------- storeSkuNameExt 2 v := %d,%d", v.StoreID, v.SkuID) - } return storeSkuNameExt2, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index ba78fb441..dcf7b9128 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1171,8 +1171,7 @@ func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*St } func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSkuNameExt, err error) { - for _, storeId := range storeIDs { - sql := ` + sql := ` SELECT t1.count, t2.id sku_id, t3.*, t1.store_id, t1.store_name FROM( SELECT SUM(b.count) count,c.id,a.store_id,d.name store_name @@ -1185,18 +1184,18 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk WHERE 1=1 AND a.order_created_at BETWEEN ? and NOW() ` - sqlParams := []interface{}{ - utils.DefaultTimeValue, - utils.DefaultTimeValue, - model.SkuStatusNormal, - utils.DefaultTimeValue, - time.Now().AddDate(0, -1, 0), - } - if storeId > 0 { - sql += " AND a.store_id = ? " - sqlParams = append(sqlParams, storeId) - } - sql += ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + model.SkuStatusNormal, + utils.DefaultTimeValue, + time.Now().AddDate(0, -1, 0), + } + if len(storeIDs) > 0 { + sql += " AND a.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) + } + sql += ` AND b.sale_price > ? GROUP BY 2,3,4 LIMIT 0, 1000 )t1 JOIN sku t2 ON t2.id = t1.id @@ -1212,13 +1211,13 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk JOIN sku_name g ON g.id = f.name_id AND g.deleted_at = ? WHERE 1=1 ` - sqlParams = append(sqlParams, salePriceLimit, utils.DefaultTimeValue, utils.DefaultTimeValue) - if storeId > 0 { - sql += " AND a.store_id = ?" - sqlParams = append(sqlParams, storeId) - } - sql += - ` + sqlParams = append(sqlParams, salePriceLimit, utils.DefaultTimeValue, utils.DefaultTimeValue) + if len(storeIDs) > 0 { + sql += " AND a.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) + } + sql += + ` AND NOW() BETWEEN d.begin_at AND d.end_at AND a.status = ? AND a.deleted_at = ? @@ -1229,25 +1228,20 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk JOIN sku b ON a.sku_id = b.id AND b.deleted_at = ? AND b.status = ? JOIN sku_name c ON b.name_id = c.id AND c.deleted_at = ? AND c.status = ? JOIN store d ON d.id = a.store_id AND d.deleted_at = ? AND d.status <> ? - WHERE a.store_id = ? + WHERE a.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `) AND a.deleted_at = ? AND a.status = ? ORDER BY 1 DESC LIMIT ? ` - sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, - utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.StoreStatusDisabled, - storeId, utils.DefaultTimeValue, model.StoreSkuBindStatusNormal, 30) - - storeSkuName := make([]*StoreSkuNameExt, 0, 0) - err = GetRows(db, &storeSkuName, sql, sqlParams...) - var skuNamesInfo = &StoreSkuNamesInfo{ - SkuNames: storeSkuName, - } - if len(storeSkuName) != 0 { - storeSkuNameExt = append(storeSkuNameExt, storeSkuName...) - } - var skuIdList = make([]int, 0, 0) - sql2 := ` + sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, + utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.StoreStatusDisabled, + storeIDs, utils.DefaultTimeValue, model.StoreSkuBindStatusNormal, 30) + err = GetRows(db, &storeSkuNameExt, sql, sqlParams...) + var skuNamesInfo = &StoreSkuNamesInfo{ + SkuNames: storeSkuNameExt, + } + var skuIdList = make([]int, 0, 0) + sql2 := ` SELECT a.id sku_id,a.*,t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at, t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at, t4.ebai_id, t4.mtwm_id,t4.dd_id,t4.tao_id, @@ -1260,26 +1254,24 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk WHERE a.id = ? AND a.deleted_at = ? ` - for _, v := range storeSkuName { - var skus []*StoreSkuExt - sqlParams2 := []interface{}{ - utils.DefaultTimeValue, - utils.DefaultTimeValue, - v.SkuID, - utils.DefaultTimeValue, - } - if storeId > 0 { - sql2 += " AND t4.store_id = ? " - sqlParams2 = append(sqlParams2, storeId) - } - if err = GetRows(db, &skus, sql2, sqlParams2...); err == nil { - v.Skus = skus - skuIdList = append(skuIdList, v.SkuID) - } + for _, v := range storeSkuNameExt { + var skus []*StoreSkuExt + sqlParams2 := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + v.SkuID, + utils.DefaultTimeValue, + } + if len(storeIDs) > 0 { + sql2 += " AND t4.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams2 = append(sqlParams2, storeIDs) + } + if err = GetRows(db, &skus, sql2, sqlParams2...); err == nil { + v.Skus = skus + skuIdList = append(skuIdList, v.SkuID) } - err = UpdateActPrice4StoreSkuNameNew(db, []int{storeId}, skuIdList, skuNamesInfo, model.VendorIDJX) - } + err = UpdateActPrice4StoreSkuNameNew(db, storeIDs, skuIdList, skuNamesInfo, model.VendorIDJX) return storeSkuNameExt, err } diff --git a/controllers/cms_store.go b/controllers/cms_store.go index d74767cee..02a64e4aa 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -641,16 +641,16 @@ func (c *StoreController) GetStoreListByLocation() { // @Title 根据位置得到首页商店详细信息 // @Description 根据位置得到首页商店详细信息 -// @Param lng query float64 true "经度" -// @Param lat query float64 true "纬度" -// @Param needWalkDistance query bool false "是否需要返回步行距离(且以步行距离排序)" -// @Param brandID query int false "品牌ID" +// @Param lng query float64 true "经度" +// @Param lat query float64 true "纬度" +// @Param needWalkDistance query bool false "是否需要返回步行距离(且以步行距离排序)" +// @Param brandID query int true "品牌ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetHomePageByLocation [get] func (c *StoreController) GetHomePageByLocation() { c.callGetHomePageByLocation(func(params *tStoreGetHomePageByLocationParams) (interface{}, string, error) { - details, _, err := cms.GetHomePageByLocation(params.Ctx, params.Lng, params.Lat, params.NeedWalkDistance) + details, _, err := cms.GetHomePageByLocation(params.Ctx, params.Lng, params.Lat, params.NeedWalkDistance, params.BrandID) if err != nil { return nil, "根据经纬度获取门店详细信息失败", err } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 362757e9a..f2b33af62 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -268,7 +268,6 @@ func (c *StoreSkuController) SyncStoresSkus() { // @Title 批量修改多商家商品绑定 // @Description 批量修改多商家商品绑定 -// @Param token header string true "认证token" // @Param storeIDs formData string true "门店ID列表" // @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" // @Param isScale formData bool false "是否按门店结算比例缩放"