Commit 6bbce0fa authored by christ's avatar christ

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into ccw

parents cbd37e08 4cb65395
...@@ -9,6 +9,34 @@ namespace Store; ...@@ -9,6 +9,34 @@ namespace Store;
class StoreUtil { class StoreUtil {
public function checkAddressInServiceAreaByStore($address,$store){
$storeDao = \DAO\StoreModel::getInstance();
//$store = $storeDao->get($storeId,false);
$storeId = $store['store_id'];
$inAreaFlag = false ;
$qmStoreClassDao = \DAO\QmStoreClassModel::getInstance();
$qmClassCon['store_id'] = $storeId;
$qmClassCon['is_charged'] = 1;
$qmClassCon['class_style'] = 2;
$qmSignScopeList = \Our\RedisHelper::cachedFunction(\Redis\Db6\QmStoreClassRedisModel::getInstance(),array(&$qmStoreClassDao, 'selectByWhere'),array($qmClassCon,'sign_scope'),\Our\ApiConst::oneHour,array($storeId));
if($qmSignScopeList){
foreach($qmSignScopeList as $qmSignScope){
if($qmSignScope['sign_scope']){
$inAreaFlag = \Our\CommonExtension::locationInArea($address['lat'],$address['lng'],$qmSignScope['sign_scope']);
if($inAreaFlag){
return true;
}
}
}
}
if(!$store['store_sales_scope']){
return false;
}
$inAreaFlag = \Our\CommonExtension::locationInArea($address['lat'],$address['lng'],$store['store_sales_scope']);
return $inAreaFlag;
}
public function checkAddressInServiceArea($address,$storeId){ public function checkAddressInServiceArea($address,$storeId){
$storeDao = \DAO\StoreModel::getInstance(); $storeDao = \DAO\StoreModel::getInstance();
$store = $storeDao->get($storeId,false); $store = $storeDao->get($storeId,false);
......
...@@ -30,10 +30,9 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -30,10 +30,9 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
*/ */
public function getSignClassesByCityCode($cityCode){ public function getSignClassesByCityCode($cityCode){
$qmStoreClassCon['city_code'] = $cityCode; $qmStoreClassCon['city_code'] = $cityCode;
$qmStoreClassCon['is_charged'] = \Our\ApiConst::one;
$qmStoreClassCon['class_style'] = \Our\ApiConst::signClassStyle; $qmStoreClassCon['class_style'] = \Our\ApiConst::signClassStyle;
$qmStoreClassCon['is_charged'] = \Our\ApiConst::one;
$storeField = 'gc_id,sign_scope,gc_parent_id,store_id'; $storeField = 'gc_id,sign_scope,gc_parent_id,store_id';
$qmStoreClassDao = \DAO\QmStoreClassModel::getInstance(); $qmStoreClassDao = \DAO\QmStoreClassModel::getInstance();
$signStoreClasses = \Our\RedisHelper::cachedFunction(\Redis\Db6\QmStoreClassRedisModel::getInstance(),array(&$qmStoreClassDao, 'getStoreClasses'),array($qmStoreClassCon,$storeField),\Our\ApiConst::oneHour,array($cityCode)); $signStoreClasses = \Our\RedisHelper::cachedFunction(\Redis\Db6\QmStoreClassRedisModel::getInstance(),array(&$qmStoreClassDao, 'getStoreClasses'),array($qmStoreClassCon,$storeField),\Our\ApiConst::oneHour,array($cityCode));
return $signStoreClasses; return $signStoreClasses;
...@@ -136,10 +135,11 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -136,10 +135,11 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
if(!$serviceStoreIds){ if(!$serviceStoreIds){
return false; return false;
} }
$serviceWhere = 'is_charged = 1';
if($serviceStoreIds){ if($serviceStoreIds){
$serviceWhere .= " and store_id in (".implode(",",$serviceStoreIds).") "; $serviceWhere = " store_id in (".implode(",",$serviceStoreIds).") ";
} }
$serviceWhere .= ' and is_charged = 1';
$field = 'distinct(gc_parent_id) as gc_parent_id'; $field = 'distinct(gc_parent_id) as gc_parent_id';
$qmStoreClassDao = \DAO\QmStoreClassModel::getInstance(); $qmStoreClassDao = \DAO\QmStoreClassModel::getInstance();
...@@ -157,10 +157,14 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -157,10 +157,14 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$storeDao = \DAO\StoreModel::getInstance(); $storeDao = \DAO\StoreModel::getInstance();
$storeList = $storeDao->getStoresByCityCode($where['cityCode']); $storeList = $storeDao->getStoresByCityCode($where['cityCode']);
$storeIndexList = array();
foreach($storeList as $tempStore){
$storeIndexList[$tempStore['store_id']] = $tempStore;
}
$serviceStoreIds = array(); $serviceStoreIds = array();
if($storeList){ if($storeList){
foreach ($storeList as $key=>$store){ foreach ($storeList as $key=>$store){
$result =\Store\StoreUtil::getInstance()->checkAddressInServiceArea(array('lng'=>$where['lng'],'lat'=>$where['lat']),$store['store_id']); $result =\Store\StoreUtil::getInstance()->checkAddressInServiceAreaByStore(array('lng'=>$where['lng'],'lat'=>$where['lat']),$storeIndexList[$tempStore['store_id']]);
if($result){ if($result){
$serviceStoreIds[] = $store['store_id']; $serviceStoreIds[] = $store['store_id'];
} }
...@@ -186,6 +190,14 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -186,6 +190,14 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$storeDao = \DAO\StoreModel::getInstance(); $storeDao = \DAO\StoreModel::getInstance();
$signStoreClasses = $this->getSignClassesByCityCode($cityCode); $signStoreClasses = $this->getSignClassesByCityCode($cityCode);
$storeIds = array_unique(array_column($signStoreClasses,'store_id'));
$tempStoreList = $storeDao->getNearbyStores($cityCode,$storeIds);
$storeList = array();
if($tempStoreList){
foreach($tempStoreList as $tempStore){
$storeList[$tempStore['store_id']] = $tempStore;
}
}
if($signStoreClasses){ if($signStoreClasses){
$returnClass = array(); $returnClass = array();
$newStoreIds = array(); $newStoreIds = array();
...@@ -193,7 +205,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -193,7 +205,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$inAreaFlag = \Our\CommonExtension::locationInArea($lat,$lng,$signClass['sign_scope']); $inAreaFlag = \Our\CommonExtension::locationInArea($lat,$lng,$signClass['sign_scope']);
//判断签约分类是否可以为当前用户提供服务,并且记录这些店铺对应的store_id //判断签约分类是否可以为当前用户提供服务,并且记录这些店铺对应的store_id
if($inAreaFlag){ if($inAreaFlag){
$store =$storeDao->getStoreInfoCache($signClass['store_id']); $store = $storeList[$signClass['store_id']];
$class_distance = \Our\CommonExtension::getDistance($lat,$lng,$store['store_latitude'],$store['store_latitude'],1); $class_distance = \Our\CommonExtension::getDistance($lat,$lng,$store['store_latitude'],$store['store_latitude'],1);
$class = $signClass; $class = $signClass;
$class['class_distance'] = $class_distance; $class['class_distance'] = $class_distance;
......
...@@ -841,7 +841,7 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -841,7 +841,7 @@ class StoreServiceModel extends \Business\AbstractModel{
return false; return false;
} }
$field = 'store_id as storeId,store_name as storeName,store_label as storeLabel,store_intro as storeIntro,store_longitude,store_latitude'; $field = 'store_id as storeId,store_name as storeName,store_label as storeLabel,store_intro as storeIntro,store_longitude,store_latitude';
$where = ' and store_id in('.implode(',',$storeIds).')'; $where = ' store_id in('.implode(',',$storeIds).')';
sort($storeIds); sort($storeIds);
$stores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$storeDao, 'getOnlineStores'), array($where, $field), \Our\ApiConst::oneHour); $stores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$storeDao, 'getOnlineStores'), array($where, $field), \Our\ApiConst::oneHour);
if($stores){ if($stores){
......
...@@ -467,11 +467,7 @@ class AddressServiceModel extends \Business\AbstractModel { ...@@ -467,11 +467,7 @@ class AddressServiceModel extends \Business\AbstractModel {
if($fromWx){ if($fromWx){
$citList = $areaDao->getCityListWithoutCounty(); $citList = $areaDao->getCityListWithoutCounty();
}else{ }else{
$citList = $areaDao->getCityList(); $citList = $areaDao->getCityList();
} }
if($citList){ if($citList){
return $citList; return $citList;
......
...@@ -99,7 +99,6 @@ class AreaModel extends \DAO\AbstractModel { ...@@ -99,7 +99,6 @@ class AreaModel extends \DAO\AbstractModel {
$addressRedis = AddressRedisModel::getInstance(); $addressRedis = AddressRedisModel::getInstance();
$cityList = $addressRedis->find('cityList'); $cityList = $addressRedis->find('cityList');
if($cityList){ if($cityList){
\Our\Log::getInstance()->write(json_encode($cityList),'/data/log/applog');
return $cityList; return $cityList;
} }
$areaList = $this->getAllCityList(); $areaList = $this->getAllCityList();
......
...@@ -58,7 +58,7 @@ class GoodsClassModel extends \DAO\AbstractModel { ...@@ -58,7 +58,7 @@ class GoodsClassModel extends \DAO\AbstractModel {
$goodsClassRedis = \Redis\Db6\GoodsClassRedisModel::getInstance(); $goodsClassRedis = \Redis\Db6\GoodsClassRedisModel::getInstance();
$classes = $goodsClassRedis->find('platformParentClass'); $classes = $goodsClassRedis->find('platformParentClass');
if(!$classes){ if(!$classes){
$where = 'gc_show = 1 and gc_parent_id = 0'; $where = 'gc_parent_id = 0 and gc_show = 1';
$field = 'gc_id as gcId,gc_name as gcName'; $field = 'gc_id as gcId,gc_name as gcName';
$result = $this->getList($field,$where); $result = $this->getList($field,$where);
......
...@@ -137,7 +137,7 @@ class StoreModel extends \DAO\AbstractModel ...@@ -137,7 +137,7 @@ class StoreModel extends \DAO\AbstractModel
$conditionSql = 'store_state =1 and open_flag =1 and (store_end_time >=' . TIMESTAMP . ' or store_end_time =0 ) '; $conditionSql = 'store_state =1 and open_flag =1 and (store_end_time >=' . TIMESTAMP . ' or store_end_time =0 ) ';
if ($where) { if ($where) {
$conditionSql .= $where; $conditionSql = $where. ' and '.$conditionSql;
} }
$result = $this->getStores($conditionSql, $field, $limit); $result = $this->getStores($conditionSql, $field, $limit);
return $result; return $result;
...@@ -210,7 +210,7 @@ class StoreModel extends \DAO\AbstractModel ...@@ -210,7 +210,7 @@ class StoreModel extends \DAO\AbstractModel
public function getStoresByCityCode($cityCode, $field = 'store_id,store_longitude,store_latitude,max_sign_rang,max_sales_rang,store_sales_scope') public function getStoresByCityCode($cityCode, $field = 'store_id,store_longitude,store_latitude,max_sign_rang,max_sales_rang,store_sales_scope')
{ {
$storeClassCondition = " and store_citycode = '" . $cityCode . "' "; $storeClassCondition = " store_citycode = '" . $cityCode . "' ";
$stores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'), array($storeClassCondition, $field), \Our\ApiConst::oneHour, array($cityCode)); $stores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'), array($storeClassCondition, $field), \Our\ApiConst::oneHour, array($cityCode));
return $stores; return $stores;
...@@ -229,20 +229,20 @@ class StoreModel extends \DAO\AbstractModel ...@@ -229,20 +229,20 @@ class StoreModel extends \DAO\AbstractModel
public function getExpressStores( $field = 'store_id,store_longitude,store_latitude,max_sign_rang,max_sales_rang,store_sales_scope') public function getExpressStores( $field = 'store_id,store_longitude,store_latitude,max_sign_rang,max_sales_rang,store_sales_scope')
{ {
$storeClassCondition = " and express_distribution = 1 "; $storeClassCondition = " express_distribution = 1 ";
$stores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'), array($storeClassCondition, $field), \Our\ApiConst::oneHour); $stores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'), array($storeClassCondition, $field), \Our\ApiConst::oneHour);
return $stores; return $stores;
} }
public function deleteExpressStores($field = 'store_id,store_longitude,store_latitude,max_sign_rang,max_sales_rang,store_sales_scope'){ public function deleteExpressStores($field = 'store_id,store_longitude,store_latitude,max_sign_rang,max_sales_rang,store_sales_scope'){
$storeClassCondition = " and express_distribution = 1 "; $storeClassCondition = " express_distribution = 1 ";
\Our\RedisHelper::delCachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'),array(array($storeClassCondition, $field))); \Our\RedisHelper::delCachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'),array(array($storeClassCondition, $field)));
} }
public function getNearbyStores($cityCode, $storeIds) public function getNearbyStores($cityCode, $storeIds)
{ {
$condition = " and store_citycode = '" . $cityCode . "' and store_id in (" . implode(',', $storeIds) . ")"; $condition = " store_id in (" . implode(',', $storeIds) . ") and store_citycode = '" . $cityCode . "'";
$field = 'store_id as storeId,store_label as storeLabel,store_name as storeName,store_intro as storeIntro,store_longitude,store_latitude'; $field = 'store_id as storeId,store_label as storeLabel,store_name as storeName,store_intro as storeIntro,store_longitude,store_latitude';
$returnStores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'), array($condition, $field), \Our\ApiConst::oneHour, array($cityCode)); $returnStores = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreRedisModel::getInstance(), array(&$this, 'getOnlineStores'), array($condition, $field), \Our\ApiConst::oneHour, array($cityCode));
return $returnStores; return $returnStores;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment