Commit e5710059 authored by liuyuzhen's avatar liuyuzhen

定时器内容添加

parent 40d3c26a
...@@ -1104,21 +1104,15 @@ class GoodsCommonServiceModel extends \Business\AbstractModel ...@@ -1104,21 +1104,15 @@ class GoodsCommonServiceModel extends \Business\AbstractModel
* 店铺在售商品分类定时器 * 店铺在售商品分类定时器
*/ */
public function storeOnlineGoodsClass(){ public function storeOnlineGoodsClass(){
$storeOnlineGoodsClassDao = \DAO\GoodsClass\StoreOnlineGoodsClassModel::getInstance(); $storeOnlineGoodsClassDao = \DAO\GoodsClass\StoreOnlineGoodsClassModel::getInstance();
$addGoodsClassList = $storeOnlineGoodsClassDao->getChangedGoodsClass(0,2000,\Our\ApiConst::plus); for($i=0;$i<2000;$i++){
if($addGoodsClassList){ $goodsClassStr = $storeOnlineGoodsClassDao->getChangedGoodsClass(\Our\ApiConst::plus);
foreach($addGoodsClassList as $goodsClassStr){ $goodsClass = unserialize($goodsClassStr);
$goodsClass = unserialize($goodsClassStr); $this->checkExistOnlineGoodsClass($goodsClass);
$this->checkExistOnlineGoodsClass($goodsClass);
} $goodsClassStrMinus = $storeOnlineGoodsClassDao->getChangedGoodsClass(\Our\ApiConst::minus);
} $goodsClassMinus = unserialize($goodsClassStrMinus);
$minusGoodsClassList = $storeOnlineGoodsClassDao->getChangedGoodsClass(0,2000,\Our\ApiConst::minus); $this->checkRemoveOnlineGoodsClass($goodsClassMinus);
if($minusGoodsClassList){
foreach($minusGoodsClassList as $goodsClassStr){
$goodsClass = unserialize($goodsClassStr);
$this->checkRemoveOnlineGoodsClass($goodsClass);
}
} }
} }
...@@ -1157,6 +1151,54 @@ class GoodsCommonServiceModel extends \Business\AbstractModel ...@@ -1157,6 +1151,54 @@ class GoodsCommonServiceModel extends \Business\AbstractModel
} }
} }
public function storeTopSaleGoods(){
$storeTopSaleGoodsModel = \DAO\Goods\StoreTopSaleGoodsModel::getInstance();
$storeIds = array();
$topSaleList = array();
for($i=0;$i<2000;$i++){
$storeId = $storeTopSaleGoodsModel->getChangedSaleStoreId();
if(!$storeId){
break;
}
if(!($storeIds&&in_array($storeId,$storeIds))){
$topSaleList=$storeTopSaleGoodsModel->getStoreTopSaleGoodsListByStoreId($storeId);
$storeTopSaleList = $this->getNewStoreTopSaleGoodsList($topSaleList,$storeId);
$topSaleList = $topSaleList?array_merge($topSaleList,$storeTopSaleList):$storeTopSaleList;
}
}
\Our\Log::getInstance()->write(json_encode($topSaleList));
$result = $storeTopSaleGoodsModel->insertAllOrUpdate($topSaleList);
\Our\Log::getInstance()->write('店铺销量更新'.($result?'success':'fail'));
}
/**
* 获取店铺热销前三的商品,没有也补齐
* @param $datas
* @param $storeId
* @return array
*/
public function getNewStoreTopSaleGoodsList($datas,$storeId){
$tempTopSaleList = array(
1=>array('rank'=>1,'store_id'=>$storeId,'goods_commonid'=>0,'goods_name'=>'','goods_image'=>'','goods_score'=>0),
2=>array('rank'=>2,'store_id'=>$storeId,'goods_commonid'=>0,'goods_name'=>'','goods_image'=>'','goods_score'=>0),
3=>array('rank'=>3,'store_id'=>$storeId,'goods_commonid'=>0,'goods_name'=>'','goods_image'=>'','goods_score'=>0)
);
if(!$datas){
return $tempTopSaleList;
}
$exitDatas = array();
foreach($datas as $data){
$exitDatas[$data['rank']]=$data;
}
foreach($tempTopSaleList as $rank=>$temp){
if($exitDatas[$rank]){
$tempTopSaleList[$rank] = $exitDatas[$rank];
}
}
return array_values($tempTopSaleList);
}
private static $_instance = null; private static $_instance = null;
/** /**
......
...@@ -27,6 +27,17 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{ ...@@ -27,6 +27,17 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{
} }
public function pushChangeSaleStore($storeId){
$storeTopSaleGoodsRedis = \Redis\Db4\StoreTopSaleGoodsRedisModel::getInstance();
$storeTopSaleGoodsRedis->tableLPush('TopSaleStores',$storeId);
}
public function getChangedSaleStoreId(){
$storeTopSaleGoodsRedis = \Redis\Db4\StoreTopSaleGoodsRedisModel::getInstance();
$storeId = $storeTopSaleGoodsRedis->tableLPop('TopSaleStores');
return $storeId;
}
public function getList($where){ public function getList($where){
$this->setDb(); $this->setDb();
return $this->db->select('goods_commonid as goodsCommonId,goods_name as goodsName,goods_image as goodsImage,goods_score as evalScore')->from($this->_tableName)->where($where)->fetchAll(); return $this->db->select('goods_commonid as goodsCommonId,goods_name as goodsName,goods_image as goodsImage,goods_score as evalScore')->from($this->_tableName)->where($where)->fetchAll();
...@@ -64,6 +75,25 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{ ...@@ -64,6 +75,25 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{
return false; return false;
} }
/**
* 以店铺为单位获取当前店铺的销量前三商品以及其对应评分
* @param $storeId
* @return mixed
*/
public function getStoreTopSaleGoodsListByStoreId($storeId){
$sql = \Our\Common::format('SELECT a.store_id,a.sale_num,a.goods_commonid,IFNULL((evaluation_score/evaluation_number),{0}) as goods_score,a.group_id as rank,a.goods_name,a.goods_image
FROM
(
SELECT t1.*,(SELECT COUNT(*)+1 FROM han_goods_common WHERE store_id=t1.store_id AND sale_num>t1.sale_num) AS group_id
FROM han_goods_common t1 where t1.goods_state={1} and t1.goods_verify={2} and t1.store_id ={3}
) a
left join han_goods_score_statistics b
on a.goods_commonid = b.goods_commonid
WHERE a.group_id<=3 AND a.sale_num>0 ',\Our\ApiConst::defaultGoodsScore,\Our\ApiConst::onlineGoodsState,\Our\ApiConst::onlineGoodsVerify,$storeId);
$list = $this->db->query($sql)->fetchAll();
return $list;
}
/** /**
* @return mixed * @return mixed
*/ */
...@@ -75,6 +105,7 @@ SELECT t1.*,t2.evaluation_score,t2.evaluation_number,(SELECT COUNT(*)+1 FROM han ...@@ -75,6 +105,7 @@ SELECT t1.*,t2.evaluation_score,t2.evaluation_number,(SELECT COUNT(*)+1 FROM han
FROM han_goods_common t1 FROM han_goods_common t1
LEFT JOIN han_goods_score_statistics t2 LEFT JOIN han_goods_score_statistics t2
on t1.goods_commonid = t2.goods_commonid on t1.goods_commonid = t2.goods_commonid
where t1.
) a ) a
WHERE a.group_id<=3 AND a.sale_num>0 and a.goods_state=1 and a.goods_verify=1 ORDER BY a.store_id ,a.group_id'; WHERE a.group_id<=3 AND a.sale_num>0 and a.goods_state=1 and a.goods_verify=1 ORDER BY a.store_id ,a.group_id';
$list = $this->db->query($sql)->fetchAll(); $list = $this->db->query($sql)->fetchAll();
......
...@@ -110,4 +110,10 @@ class AbstractModel extends \Redis\AbstractModel { ...@@ -110,4 +110,10 @@ class AbstractModel extends \Redis\AbstractModel {
public function tableHDel($h,$key){ public function tableHDel($h,$key){
return $this->hDel($this->calcKey($h),$key); return $this->hDel($this->calcKey($h),$key);
} }
public function tableLRange($key,$start,$end){
$res = $this->lrange($this->calcKey($key),$start,$end);
return $res;
}
} }
...@@ -40,7 +40,7 @@ class cliStoreTopSaleGoods extends basecli ...@@ -40,7 +40,7 @@ class cliStoreTopSaleGoods extends basecli
} }
} }
protected function updateStoreTopSaleGoods(){ protected function updateStoreTopSaleGoods(){
\Business\Goods\GoodsCommonServiceModel::getInstance()->updateStoreTopSaleGoods(); \Business\Goods\GoodsCommonServiceModel::getInstance()->storeTopSaleGoods();
} }
protected function _runCli() protected function _runCli()
{ {
......
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