Commit e57c64d8 authored by liuyuzhen's avatar liuyuzhen

首页和推荐分类相关

parent 364482e5
...@@ -73,7 +73,9 @@ class StoreController extends \Our\Controller_AbstractIndex { ...@@ -73,7 +73,9 @@ class StoreController extends \Our\Controller_AbstractIndex {
$currentAddress['gcId'] = $data['gcId']; $currentAddress['gcId'] = $data['gcId'];
} }
$memberId = $this->sess->get('member_id'); $memberId = $this->sess->get('member_id');
$storeService = \Business\Store\StoreServiceModel::getInstance(); /*$storeService = \Business\Store\StoreServiceModel::getInstance();
$return = $storeService->getRecommendStores($currentAddress, $memberId);*/
$storeService = \Business\Store\ClassStoreServiceModel::getInstance();
$return = $storeService->getRecommendStores($currentAddress, $memberId); $return = $storeService->getRecommendStores($currentAddress, $memberId);
if ($return) { if ($return) {
$this->success($return); $this->success($return);
......
...@@ -20,6 +20,9 @@ class ImageConst{ ...@@ -20,6 +20,9 @@ class ImageConst{
//分类图标前缀 //分类图标前缀
const categoryPicPrefix = 'category-pic-'; const categoryPicPrefix = 'category-pic-';
const categoryHeadPicPrefix = 'category-headpic-';
const topClassAdvImagePrefis = 'category-hdpic-'; //一级分类对应广告图前缀 const topClassAdvImagePrefis = 'category-hdpic-'; //一级分类对应广告图前缀
//商家举报图片存放路径 //商家举报图片存放路径
......
...@@ -55,6 +55,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -55,6 +55,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
return array('totalCount'=>\Our\ApiConst::zero); return array('totalCount'=>\Our\ApiConst::zero);
} }
} }
/** /**
* 获取平台全部一级分类 * 获取平台全部一级分类
* @param $where * @param $where
...@@ -65,8 +66,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -65,8 +66,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
//验证参数 //验证参数
/*$addressDao = \DAO\AddressModel::getInstance();
$addressDao = \DAO\AddressModel::getInstance();
$validFlag = $addressDao->getValidAddress($where); $validFlag = $addressDao->getValidAddress($where);
if(!$validFlag){ if(!$validFlag){
\Error\ErrorModel::throwException($addressDao->errorCode); \Error\ErrorModel::throwException($addressDao->errorCode);
...@@ -87,7 +87,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -87,7 +87,7 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$serviceParentClassIds = $this->getServiceStoreClasses($serviceStoreIds); $serviceParentClassIds = $this->getServiceStoreClasses($serviceStoreIds);
if($serviceParentClassIds){ if($serviceParentClassIds){
$classIds = array_merge($serviceParentClassIds,$classIds); $classIds = array_merge($serviceParentClassIds,$classIds);
} }*/
/* /*
//获取可快递店铺对应分类 //获取可快递店铺对应分类
...@@ -96,12 +96,12 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -96,12 +96,12 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$classIds = array_merge($expressClassIds,$classIds); $classIds = array_merge($expressClassIds,$classIds);
} }
*/ */
/*$classIds = array(); $classIds = array();
$platformFirstClassDao = \DAO\GoodsClass\PlatformFirstClassModel::getInstance(); $platformFirstClassDao = \DAO\GoodsClass\PlatformFirstClassModel::getInstance();
$firstClassList = \Our\RedisHelper::cachedFunction(\Redis\Db3\PlatformFirstClassRedisModel::getInstance(),array(&$platformFirstClassDao, 'getList'),array(),\Our\ApiConst::oneHour,array()); $firstClassList = \Our\RedisHelper::cachedFunction(\Redis\Db3\PlatformFirstClassRedisModel::getInstance(),array(&$platformFirstClassDao, 'getList'),array(),\Our\ApiConst::oneHour,array());
if($firstClassList){ if($firstClassList){
$classIds = array_column($firstClassList,'gc_id'); $classIds = array_column($firstClassList,'gc_parent_id');
}*/ }
$classIdKeys = array_flip($classIds); $classIdKeys = array_flip($classIds);
$goodsClassDao = \DAO\GoodsClassModel::getInstance(); $goodsClassDao = \DAO\GoodsClassModel::getInstance();
$parentClasses = $goodsClassDao->getParentClasses(); $parentClasses = $goodsClassDao->getParentClasses();
...@@ -196,7 +196,6 @@ class GoodsClassServiceModel extends \Business\AbstractModel{ ...@@ -196,7 +196,6 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$cityCode = $where['cityCode']; $cityCode = $where['cityCode'];
$storeDao = \DAO\StoreModel::getInstance(); $storeDao = \DAO\StoreModel::getInstance();
$signStoreClasses = $this->getSignClassesByCityCode($cityCode); $signStoreClasses = $this->getSignClassesByCityCode($cityCode);
//var_dump($signStoreClasses);
if($signStoreClasses){ if($signStoreClasses){
$storeIds = array_unique(array_column($signStoreClasses,'store_id')); $storeIds = array_unique(array_column($signStoreClasses,'store_id'));
$tempStoreList = $storeDao->getNearbyStores($cityCode,$storeIds); $tempStoreList = $storeDao->getNearbyStores($cityCode,$storeIds);
......
<?php <?php
namespace Business\Store;
/** /**
* User: liuyuzhen * User: liuyuzhen
* Date: 2019/1/9 * Date: 2019/1/9
* Time: 17:09 * Time: 17:09
* Description: * Description:
*/ */
namespace Business\Store;
use Our\ApiConst;
use Our\DbNameConst;
/**
* 店铺service
*
* @date 2018-5-15
* @author zhz
*/
class ClassStoreServiceModel extends \Business\AbstractModel{ class ClassStoreServiceModel extends \Business\AbstractModel{
private $classStoreField = 'store_id as storeId,store_name as storeName,store_label as storeLabel,store_intro as storeIntro,store_longitude,store_latitude,gc_id as gcId,gc_name as gcName';
$classStoreField = 'store_id as storeId,store_name as storeName,store_label as storeLabel,store_intro as storeIntro,store_longitude,store_latitude,gc_id as gcId,gc_name as gcName';
public function init() { public function init() {
} }
public function getRecommondStores($where,$memberId){ public function getRecommendStores($where,$memberId){
$addressDao = \DAO\AddressModel::getInstance(); $addressDao = \DAO\AddressModel::getInstance();
$validFlag = $addressDao->getValidAddress($where); $validFlag = $addressDao->getValidAddress($where);
...@@ -39,25 +30,97 @@ class ClassStoreServiceModel extends \Business\AbstractModel{ ...@@ -39,25 +30,97 @@ class ClassStoreServiceModel extends \Business\AbstractModel{
if(!$gcId){ if(!$gcId){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyGcId); \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyGcId);
} }
/* \Our\RedisHelper::cachedFunction(\Redis\Db6\ClassStoreRedisModel::getInstance(), array(&$classStoreModel, 'getList'), array(array('gc_id'=>$gcId),'store_id,fav_time'), \Our\ApiConst::oneHour,array($memberId));*/ /*\Our\RedisHelper::cachedFunction(\Redis\Db6\ClassStoreRedisModel::getInstance(), array(&$classStoreModel, 'getList'), array(array('gc_id'=>$gcId),'store_id,fav_time'), \Our\ApiConst::oneHour,array($memberId));*/
$storeList = $this->getStoreListByGcId($gcId,$condition,$memberId);
return $storeList;
} }
public function getStoreListByGcId($gcId,$position){ public function getStoreListByGcId($parentGcId,$position,$memberId){
$lat = $position['lat']; $lat = $position['lat'];
$lng = $position['lng']; $lng = $position['lng'];
$classStoreModel = \DAO\Store\ClassStoreModel::getInstance(); $classStoreModel = \DAO\Store\ClassStoreModel::getInstance();
$storeList = \Our\RedisHelper::cachedFunction(\Redis\Db6\ClassStoreRedisModel::getInstance(), array(&$classStoreModel, 'getList'), array(array('gc_id'=>$gcId),$this->classStoreField), \Our\ApiConst::oneHour,array()); $storeList = \Our\RedisHelper::cachedFunction(\Redis\Db6\ClassStoreRedisModel::getInstance(), array(&$classStoreModel, 'getList'), array(array('gc_parent_id'=>$parentGcId),$this->classStoreField), \Our\ApiConst::oneHour,array());
$newStoreList = array(); $newGcStoreList = array();
if($storeList){ if($storeList){
$newStoreList = array();
foreach($storeList as $store){
$gcId = $store['gcId'];
$store_lat = $store['store_latitude'];
$store_lnt = $store['store_longitude'];
unset($store['store_latitude']);
unset($store['store_longitude']);
$store['storeLabel'] =\Our\ImageUtil::getStoreLabel($store['storeLabel'], \Our\ImageConst::storeLabel,213);
$store['storeDistance'] = \Our\CommonExtension::getDistance($lat,$lng,$store_lat,$store_lnt);
$newStoreList[$store['storeId']] = $store;
if(isset($newGcStoreList[$gcId]['inAreaFlag'])){
continue;
} }
$inAreaFlag = false;
if(isset($store['sign_scope'])&&$store['sign_scope']){
$inAreaFlag = \Our\CommonExtension::locationInArea($lat,$lng,$store['sign_scope']);
} }
if(!isset($newGcStoreList[$gcId])){
$newGcStoreList[$gcId]['gcName'] = htmlspecialchars_decode($store['gcName']);
$newGcStoreList[$gcId]['gcImg'] = \Our\Common::getStaticFile(\Our\ImageConst::categoryHeadPicPrefix.$store['gcId'].\Our\NameConst::jpgSuffix,\Our\ImageConst::defaultPath);
}
unset($store['gcName']);
unset($store['gcId']);
if($inAreaFlag){
$newGcStoreList[$gcId]['inAreaFlag'] = $inAreaFlag;
$newGcStoreList[$gcId]['stores']= $store;
}else{
if(isset($newGcStoreList[$gcId]['storeDistance'])){
if($store['storeDistance']<$newGcStoreList[$gcId]['storeDistance']){
$newGcStoreList[$gcId]['storeDistance'] = $store['storeDistance'];
$newGcStoreList[$gcId]['stores']= $store;
}
}else{
$newGcStoreList[$gcId]['storeDistance'] = $store['storeDistance'];
$newGcStoreList[$gcId]['stores']= $store;
}
}
}
$memberStores = \Business\Store\StoreServiceModel::getInstance()->getPurchasedStoreClass($memberId,$parentGcId);
if($memberStores){
foreach($memberStores as $key => $storeId){
$returnData[$key] = array();
$purchasedStore = $newStoreList[$storeId];
$returnData[$key]['gcName'] = htmlspecialchars_decode($purchasedStore['gcName']);
$returnData[$key]['gcImg'] = \Our\Common::getStaticFile(\Our\ImageConst::categoryHeadPicPrefix.$purchasedStore['gcId'].\Our\NameConst::jpgSuffix,\Our\ImageConst::defaultPath);
unset($purchasedStore['gcName']);
unset($purchasedStore['gcId']);
$purchasedStore['isPurchased'] = \Our\ApiConst::one;
$returnData[$key]['stores'][$storeId] = $purchasedStore;
}
}
foreach($newGcStoreList as $gcIdKey=>$storeInfo){
$tempStore = $storeInfo['stores'];
if(isset($returnData[$gcIdKey])){
if(isset($returnData[$gcIdKey]['stores'][$tempStore['storeId']])){
continue;
}
$tempStore['isPurchased'] = \Our\ApiConst::zero;
$returnData[$gcIdKey]['stores'][$tempStore['storeId']] = $tempStore;
}else{
unset($storeInfo['storeDistance']);
$storeInfo['stores'] = array();
$tempStore['isPurchased'] = \Our\ApiConst::zero;
$storeInfo['stores'][$tempStore['storeId']] = $tempStore;
$returnData[$gcIdKey] = $storeInfo;
}
}
$return = array_values($returnData);
foreach($return as &$temp){
$temp['stores'] = array_values($temp['stores']);
}
return $return;
}
return $newGcStoreList;
}
/** /**
* git
*/ */
private static $_instance = null; private static $_instance = null;
......
...@@ -714,7 +714,10 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -714,7 +714,10 @@ class StoreServiceModel extends \Business\AbstractModel{
$storeRedis = \Redis\Db6\StoreRedisModel::getInstance(); $storeRedis = \Redis\Db6\StoreRedisModel::getInstance();
$signStoreKey = \Our\NameConst::signStoreIdsPrefix . $readisSuffix; $signStoreKey = \Our\NameConst::signStoreIdsPrefix . $readisSuffix;
$signStoreIds =$storeRedis->find($signStoreKey, \Our\ApiConst::oneHour); $signStoreIds =$storeRedis->find($signStoreKey, \Our\ApiConst::oneHour);
if(!$signStoreIds){
$signStoreInfo = \Business\Goods\GoodsClassServiceModel::getInstance()->getSignStoreInfo($position);
$signStoreIds = $signStoreInfo['signStoreIds'];//当前位置签约店铺ID
}
//$serviceStoreKey = \Our\NameConst::serviceStoreIdsPrefix . $readisSuffix; //$serviceStoreKey = \Our\NameConst::serviceStoreIdsPrefix . $readisSuffix;
//$serviceStoreIds = $storeRedis->find($serviceStoreKey, \Our\ApiConst::oneHour); //$serviceStoreIds = $storeRedis->find($serviceStoreKey, \Our\ApiConst::oneHour);
/*if(is_array($signStoreIds)&&is_array($serviceStoreIds)){ /*if(is_array($signStoreIds)&&is_array($serviceStoreIds)){
...@@ -804,15 +807,8 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -804,15 +807,8 @@ class StoreServiceModel extends \Business\AbstractModel{
foreach($allStores as &$store){ foreach($allStores as &$store){
$store['isPurchased'] = \Our\ApiConst::zero; $store['isPurchased'] = \Our\ApiConst::zero;
} }
$memberStores = null; $memberStores = $this->getPurchasedStoreClass($memberId,$gcId);
if($memberId){
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$memberStoreList = \Our\RedisHelper::cachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(), array(&$favoritesStoreDao, 'selectList'), array(array('member_id'=>$memberId,'fav_from'=>\Our\ApiConst::scanFavor),'store_id,fav_time'), \Our\ApiConst::oneHour,array($memberId));
//$storeMemberDao->getList(array('member_id'=>$memberId,'type'=>\Our\ApiConst::storeQrcodeMember),'distinct(store_id) as store_id')
if($memberStoreList){
$memberStores = $this->getPurchasedStoreClass($memberStoreList,$gcId);
}
}
$goodsClassDao = \DAO\GoodsClassModel::getInstance(); $goodsClassDao = \DAO\GoodsClassModel::getInstance();
//获取当前分类对应所有店铺信息 //获取当前分类对应所有店铺信息
...@@ -830,6 +826,8 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -830,6 +826,8 @@ class StoreServiceModel extends \Business\AbstractModel{
foreach($goodsClassList as $goodsClass){ foreach($goodsClassList as $goodsClass){
$returnStores = array(); $returnStores = array();
$returnStores['gcName'] = htmlspecialchars_decode($goodsClass['gcName']); $returnStores['gcName'] = htmlspecialchars_decode($goodsClass['gcName']);
//$returnStores['gcImg'] = \Our\Common::getStaticFile(\Our\ImageConst::categoryHeadPicPrefix.$goodsClass['gcId'].\Our\NameConst::jpgSuffix,\Our\ImageConst::defaultPath);
$returnStores['gcImg'] = \Our\Common::getStaticFile('category-headpic-default.jpg',\Our\ImageConst::defaultPath);
$existStoreIds = null; $existStoreIds = null;
$returnStores['stores'] = null; $returnStores['stores'] = null;
$exitStore = array(); $exitStore = array();
...@@ -886,12 +884,18 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -886,12 +884,18 @@ class StoreServiceModel extends \Business\AbstractModel{
} }
public function getPurchasedStoreClass($memberStoreList,$gcId){ public function getPurchasedStoreClass($memberId,$gcId){
if(!$memberId){
return array();
}
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$memberStoreList = \Our\RedisHelper::cachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(), array(&$favoritesStoreDao, 'selectList'), array(array('member_id'=>$memberId,'fav_from'=>\Our\ApiConst::scanFavor),'store_id,fav_time'), \Our\ApiConst::oneHour,array($memberId));
$memberStoreIds = array_column($memberStoreList,'store_id'); $memberStoreIds = array_column($memberStoreList,'store_id');
$signStoreClassSql = ' store_id in ('.implode(',',$memberStoreIds).') and is_charged=1 and gc_parent_id ='.$gcId; $signStoreClassSql = ' store_id in ('.implode(',',$memberStoreIds).') and is_charged=1 and gc_parent_id ='.$gcId;
$qmStoreClassDao = \DAO\QmStoreClassModel::getInstance(); $qmStoreClassDao = \DAO\QmStoreClassModel::getInstance();
$signClassStores = $qmStoreClassDao->selectByWhere($signStoreClassSql,'store_id,gc_id');
$signClassStores = \Our\RedisHelper::cachedFunction(\Redis\Db6\QmStoreClassRedisModel::getInstance(), array(&$qmStoreClassDao, 'selectByWhere'), array($signStoreClassSql,'store_id,gc_id'), \Our\ApiConst::oneHour,array('gcId_'.$gcId.'member_'.$memberId));
//$signClassStores = $qmStoreClassDao->selectByWhere($signStoreClassSql,'store_id,gc_id');
if($signClassStores){ if($signClassStores){
$return = array(); $return = array();
foreach($memberStoreList as $tempStore){ foreach($memberStoreList as $tempStore){
......
...@@ -206,6 +206,7 @@ class FavoritesStoreModel extends \DAO\AbstractModel { ...@@ -206,6 +206,7 @@ class FavoritesStoreModel extends \DAO\AbstractModel {
} }
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$this, 'getFavoritesStores'),array(),array($memberId)); \Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$this, 'getFavoritesStores'),array(),array($memberId));
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(), array(&$this, 'selectList'), array(),array($memberId)); \Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(), array(&$this, 'selectList'), array(),array($memberId));
\Our\RedisHelper::delCachedFunction(\Redis\Db6\QmStoreClassRedisModel::getInstance(), array(\DAO\QmStoreClassModel::getInstance(), 'selectByWhere'), array(), array('*member_'.$memberId.'*'));
//更新个人中心首页数量 //更新个人中心首页数量
\DAO\MemberModel::getInstance()->_changeNum(\Our\NameConst::storeCollection,$memberId,$type == 1 ? -(count($storeIds)) : count($storeIds)); \DAO\MemberModel::getInstance()->_changeNum(\Our\NameConst::storeCollection,$memberId,$type == 1 ? -(count($storeIds)) : count($storeIds));
......
...@@ -390,21 +390,21 @@ elastic.master.scheme="http"; ...@@ -390,21 +390,21 @@ elastic.master.scheme="http";
[lyztest : common] [lyztest : common]
; 数据库配置 ; 数据库配置
resources.database.params.driver = "pdo_mysql" resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "127.0.0.1" resources.database.params.hostname = "106.14.14.233"
resources.database.params.port = 3306 resources.database.params.port = 3306
resources.database.params.database = "qmcs" resources.database.params.database = "qmcs"
resources.database.params.username = "root" resources.database.params.username = "root"
resources.database.params.password = "123456" resources.database.params.password = "!@#$%12345werty"
resources.database.params.charset = "UTF8" resources.database.params.charset = "UTF8"
resources.database.params.driver_options.1002 = "SET NAMES utf8" resources.database.params.driver_options.1002 = "SET NAMES utf8"
; 从库配置 ; 从库配置
resources.database.slave.params.driver = "pdo_mysql" resources.database.slave.params.driver = "pdo_mysql"
resources.database.slave.params.hostname = "127.0.0.1" resources.database.slave.params.hostname = "106.14.14.233"
resources.database.slave.params.port = 3306 resources.database.slave.params.port = 3306
resources.database.slave.params.database = "qmcs" resources.database.slave.params.database = "qmcs"
resources.database.slave.params.username = "root" resources.database.slave.params.username = "root"
resources.database.slave.params.password = "123456" resources.database.slave.params.password = "!@#$%12345werty"
resources.database.slave.params.charset = "UTF8" resources.database.slave.params.charset = "UTF8"
resources.database.slave.params.driver_options.1002 = "SET NAMES utf8" resources.database.slave.params.driver_options.1002 = "SET NAMES utf8"
......
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