Commit d9fdb9c7 authored by christ's avatar christ

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

parents 9345ca48 1f211c82
...@@ -13,9 +13,21 @@ class StoreController extends \Our\Controller_AbstractIndex { ...@@ -13,9 +13,21 @@ class StoreController extends \Our\Controller_AbstractIndex {
* 获取店铺首页头部 * 获取店铺首页头部
*/ */
public function getStoreInfoAction(){ public function getStoreInfoAction(){
$address = \Business\User\AddressServiceModel::getInstance()->getMyAddress($this->req[\Our\NameConst::data],$this->memberId,false);
$storeInfo = $this->storeService->getStoreInfo($this->req[\Our\NameConst::data],$this->memberId, $address); //获取地址相关信息
$storeInfo['share'] = \Business\Common\CommonServiceModel::getInstance()->getShareInfo(\Our\ApiConst::shareStore,$this->req[\Our\NameConst::data]['storeId']); $data = $this->req[\Our\NameConst::data];
$addressService = \Business\User\AddressServiceModel::getInstance();
$memberId=$this->sess->get('member_id');
$currentAddress =$addressService->setAddress($data,$memberId);
if(!isset($currentAddress['addresses'])){
$currentAddress['addresses'] = array();
}
//$returnData['currentAddress'] = $currentAddress;
$address = $addressService->getMyAddress($data,$this->memberId,false);
$storeInfo = $this->storeService->getStoreInfo($data,$this->memberId, $address);
$storeInfo['share'] = \Business\Common\CommonServiceModel::getInstance()->getShareInfo(\Our\ApiConst::shareStore,$data['storeId']);
$storeInfo['currentAddress'] = $currentAddress;
$this->success($storeInfo); $this->success($storeInfo);
} }
/** /**
......
...@@ -48,7 +48,12 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -48,7 +48,12 @@ class StoreServiceModel extends \Business\AbstractModel{
$storeMember['fav_type'] = \Our\ApiConst::one; $storeMember['fav_type'] = \Our\ApiConst::one;
$storeMembers[] = $storeMember; $storeMembers[] = $storeMember;
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$one = $favoritesStoreDao->selectList(array('store_id'=>$storeId,'member_id'=>$memberId,'fav_type'=>0),'store_id');
$one && $storeIds = array($one['store_id']);
$result = $favoritesStoreDao->insertAll($storeMembers); $result = $favoritesStoreDao->insertAll($storeMembers);
if($result) {
$favoritesStoreDao->updateStoreCollecitonsCache($storeIds,$memberId,2);
}
$favoritesDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesDao = \DAO\FavoritesStoreModel::getInstance();
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$favoritesDao, 'getOne'),array(),array($memberId)); \Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$favoritesDao, 'getOne'),array(),array($memberId));
}else{ }else{
...@@ -361,16 +366,14 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -361,16 +366,14 @@ class StoreServiceModel extends \Business\AbstractModel{
} }
$FavoritesStoreInstance = \DAO\FavoritesStoreModel::getInstance(); $FavoritesStoreInstance = \DAO\FavoritesStoreModel::getInstance();
$return = $FavoritesStoreInstance->insertOrUpdate(array('member_id'=>$memberId,'store_id'=>$storeId,'fav_time'=>time())); $one = $FavoritesStoreInstance->getOne('store_id',array('store_id'=>$storeId,'member_id'=>$memberId,'fav_type'=>1));
if($one) {
return true;
}
$return = $FavoritesStoreInstance->insertOrUpdate(array('member_id'=>$memberId,'store_id'=>$storeId,'fav_time'=>time(),'fav_type'=>1,'fav_from'=>1));
if((int)$return > 0){ if((int)$return > 0){
//更新店铺收藏数 $FavoritesStoreInstance->updateStoreCollecitonsCache(array($storeId),$memberId,2);
$FavoritesStoreInstance->getFavoritesStoreCountByStoreId($storeId, 1);
//删除缓存
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$FavoritesStoreInstance, 'getOne'),array('*',array('store_id'=>$storeId,'member_id'=>$memberId)),array($memberId));
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$FavoritesStoreInstance, 'getList'),array(),array($memberId));
//更新个人中心首页数量
\DAO\MemberModel::getInstance()->_changeNum(\Our\NameConst::storeCollection,$memberId);
return true; return true;
} }
} }
......
...@@ -356,11 +356,15 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -356,11 +356,15 @@ class MemberServiceModel extends \Business\AbstractModel
/*$storeMemberDao = \DAO\StoreMemberModel::getInstance(\Our\DbNameConst::masterDBConnectName); /*$storeMemberDao = \DAO\StoreMemberModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$result = $storeMemberDao->addBatch($storeMember);*/ $result = $storeMemberDao->addBatch($storeMember);*/
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$storeIds = array_column($scan_store_ids,'store_id');
$list = $favoritesStoreDao->selectList(array('store_id'=>array('in',$storeIds),'member_id'=>$memberId,'fav_type'=>0),'store_id');
$list && $storeIds = array_column($list, 'store_id');
$result = $favoritesStoreDao->insertAll($storeMembers); $result = $favoritesStoreDao->insertAll($storeMembers);
if(!$result){ if(!$result){
\Our\Log::getInstance()->write(json_encode($storeMembers).'扫码数据写入失败'); \Our\Log::getInstance()->write(json_encode($storeMembers).'扫码数据写入失败');
return false; return false;
} }
$favoritesStoreDao->updateStoreCollecitonsCache($storeIds,$memberId,2);
$favoritesDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesDao = \DAO\FavoritesStoreModel::getInstance();
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$favoritesDao, 'getOne'),array(),array($memberId)); \Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$favoritesDao, 'getOne'),array(),array($memberId));
} }
......
...@@ -27,7 +27,10 @@ class FavoritesStoreModel extends \DAO\AbstractModel { ...@@ -27,7 +27,10 @@ class FavoritesStoreModel extends \DAO\AbstractModel {
public function init(){ public function init(){
} }
public function getFavoritesStores($where,$field) {
$this->setDb($this->dbName);
return $this->db->select($field)->where($where)->from($this->_tableName)->order('fav_time','DESC')->fetchAll();
}
public function getList($where,$field,$pageIndex,$pageSize,$memberId){ public function getList($where,$field,$pageIndex,$pageSize,$memberId){
$this->setDb($this->dbName); $this->setDb($this->dbName);
return $this->db->select($field)->from($this->_tableName)->join('han_store',"han_favorites_store.store_id = han_store.store_id",'inner')->join('han_store_score_statistics',"han_favorites_store.store_id = han_store_score_statistics.store_id",'left')->where(['han_favorites_store.member_id'=>$memberId,'fav_type'=>1])->where($where)->page($pageIndex,$pageSize)->order('fav_time','DESC')->fetchAll(); return $this->db->select($field)->from($this->_tableName)->join('han_store',"han_favorites_store.store_id = han_store.store_id",'inner')->join('han_store_score_statistics',"han_favorites_store.store_id = han_store_score_statistics.store_id",'left')->where(['han_favorites_store.member_id'=>$memberId,'fav_type'=>1])->where($where)->page($pageIndex,$pageSize)->order('fav_time','DESC')->fetchAll();
...@@ -108,8 +111,8 @@ class FavoritesStoreModel extends \DAO\AbstractModel { ...@@ -108,8 +111,8 @@ class FavoritesStoreModel extends \DAO\AbstractModel {
public function insertOrUpdate($data){ public function insertOrUpdate($data){
$this->setDb(\Our\DbNameConst::masterDBConnectName); $this->setDb(\Our\DbNameConst::masterDBConnectName);
$baseSql = "insert into {$this->_tableName}(member_id,store_id,fav_type,fav_time) values({0},{1},1,{2}) ON DUPLICATE KEY UPDATE fav_type=1,fav_time=VALUES (fav_time)"; $baseSql = "insert into {$this->_tableName}(member_id,store_id,fav_type,fav_time,fav_from) values({0},{1},{2},{3},{4}) ON DUPLICATE KEY UPDATE fav_type=VALUES (fav_type),fav_time=VALUES (fav_time),fav_from = VALUES (fav_from)";
$sql = \Our\Common::format($baseSql, $data['member_id'], $data['store_id'],$data['fav_time']); $sql = \Our\Common::format($baseSql, $data['member_id'], $data['store_id'],$data['fav_type'],$data['fav_time'],$data['fav_from']);
$result = $this->db->insert($this->_tableName)->query($sql); $result = $this->db->insert($this->_tableName)->query($sql);
if($result){ if($result){
if($data&&(isset($data['member_id'])&&$data['member_id'])){ if($data&&(isset($data['member_id'])&&$data['member_id'])){
...@@ -176,7 +179,36 @@ class FavoritesStoreModel extends \DAO\AbstractModel { ...@@ -176,7 +179,36 @@ class FavoritesStoreModel extends \DAO\AbstractModel {
$res = $this->db->insert($this->_tableName)->query($sql); $res = $this->db->insert($this->_tableName)->query($sql);
return $res; return $res;
} }
/**
* @param $storeIds
* @param $memberId
* @param int $type 取消关注:1 关注:2
* @return bool
* @throws \Our\Exception
*/
public function updateStoreCollecitonsCache(array $storeIds, $memberId, $type = 1) {
if(!$storeIds) {
return true;
}
//删除缓存
foreach ($storeIds as $storeId) {
//更新店铺收藏数
$this->getFavoritesStoreCountByStoreId($storeId, $type == 1 ? -1 : 1);
}
if(is_array($storeIds) && count($storeIds) <= 20){
foreach ($storeIds as $v){
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$this, 'getOne'),array('*',array('store_id'=>$v,'member_id'=>$memberId)),array($memberId));
}
// }elseif (!is_array($storeIds)){
// \Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$this, 'getOne'),array('*',array('store_id'=>$storeIds,'member_id'=>$memberId)),array($memberId));
}else{
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$this, 'getOne'),array(),array($memberId));
}
\Our\RedisHelper::delCachedFunction(\Redis\Db6\FavoritesStoreRedisModel::getInstance(),array(&$this, 'getFavoritesStores'),array(),array($memberId));
//更新个人中心首页数量
\DAO\MemberModel::getInstance()->_changeNum(\Our\NameConst::storeCollection,$memberId,$type == 1 ? -(count($storeIds)) : count($storeIds));
return true;
}
public function getFavoritesStoreCountByStoreId($storeId, $num = 0) { public function getFavoritesStoreCountByStoreId($storeId, $num = 0) {
$statisticsDb6Redis = \Redis\Db6\StatisticsRedisModel::getInstance(); $statisticsDb6Redis = \Redis\Db6\StatisticsRedisModel::getInstance();
$collectCount = $statisticsDb6Redis->tableCacheGet('storeCollectCount:'.$storeId); $collectCount = $statisticsDb6Redis->tableCacheGet('storeCollectCount:'.$storeId);
......
...@@ -28,6 +28,10 @@ class StoreScoreStatisticsModel extends \DAO\AbstractModel { ...@@ -28,6 +28,10 @@ class StoreScoreStatisticsModel extends \DAO\AbstractModel {
$this->setDb(); $this->setDb();
return $this->db->select($field)->from($this->_tableName)->where($where)->fetchOne(); return $this->db->select($field)->from($this->_tableName)->where($where)->fetchOne();
} }
public function getStoreScoreStatistics($where, $field) {
$this->setDb();
return $this->db->select($field)->from($this->_tableName)->where($where)->fetchAll();
}
public function insertOrUpdate($data){ public function insertOrUpdate($data){
$this->setDb(\Our\DbNameConst::masterDBConnectName); $this->setDb(\Our\DbNameConst::masterDBConnectName);
$baseSql = "insert into {$this->_tableName}(store_id,evaluation_score,evaluation_number) values({0},{1},{2}) ON DUPLICATE KEY UPDATE evaluation_number = VALUES(evaluation_number),evaluation_score=VALUES(evaluation_score)"; $baseSql = "insert into {$this->_tableName}(store_id,evaluation_score,evaluation_number) values({0},{1},{2}) ON DUPLICATE KEY UPDATE evaluation_number = VALUES(evaluation_number),evaluation_score=VALUES(evaluation_score)";
......
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