Commit 3bfd2ef3 authored by liuyuzhen's avatar liuyuzhen

地址相关修改以及首页热销商品定时器

parent 7e5e9151
......@@ -802,6 +802,7 @@ class OrderConfirmUtil {
$reciverInfo['mob_phone'] = $addressInfo['mob_phone'];
$reciverInfo['tel_phone'] = $addressInfo['tel_phone'];
$reciverInfo['address'] = $addressInfo['area_info'].' '.$addressInfo['address'];
$reciverInfo['name'] = $addressInfo['name'];
$reciverInfo['area'] = $addressInfo['area_info'];
$reciverInfo['street'] = $addressInfo['address'];
$reciverInfo['lng'] = $addressInfo['lng'];
......
......@@ -364,4 +364,6 @@ class ApiConst
//订单列表索引 因子
const orderIndexRank=1000;
const defaultGoodsScore= 5;
}
\ No newline at end of file
......@@ -1002,6 +1002,19 @@ class GoodsCommonServiceModel extends \Business\AbstractModel
}
return $goodsCommon['goods_price'];
}
/**
* 更新店铺销量
*/
public function updateStoreTopSaleGoods(){
$storeTopSaleGoodsDao = \DAO\Goods\StoreTopSaleGoodsModel::getInstance();
$storeGoodsList = $storeTopSaleGoodsDao->getSourceGoodsList();
$result = $storeTopSaleGoodsDao->insertAllOrUpdate($storeGoodsList);
return $result;
}
private static $_instance = null;
/**
......
......@@ -63,6 +63,57 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{
}
return false;
}
/**
* @return mixed
*/
public function getSourceGoodsList(){
$sql = 'SELECT a.store_id,a.goods_commonid,IFNULL(a.evaluation_score/a.evaluation_number,'.\Our\ApiConst::defaultGoodsScore.') as goods_score,a.group_id as rank,a.goods_name,a.goods_image
FROM
(
SELECT t1.*,t2.evaluation_score,t2.evaluation_number,(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
LEFT JOIN han_goods_score_statistics t2
on t1.goods_commonid = t2.goods_commonid
) 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';
$list = $this->db->query($sql)->fetchAll();
return $list;
}
public function insertAllOrUpdate($datas){
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$error = 0;
$baseSql = "insert into {$this->_tableName}(store_id,goods_commonid,goods_score,rank,goods_name,goods_image) values";
$insertAllSql = $baseSql;
for ($i = 0; $i < count($datas); $i++) {
$addSql = \Our\Common::format("({0},{1},{2},{3},{4},{5}),", $datas[$i]['store_id'],$datas[$i]['goods_commonid'], $datas[$i]['goods_score'], $datas[$i]['rank'],$datas[$i]['goods_name'],$datas[$i]['goods_image']);
$insertAllSql .= $addSql;
if ($i % 1000 == 0 && $i != 0) {
$insertAllSql = rtrim($insertAllSql, ',');
$insertAllSql .= 'ON DUPLICATE KEY UPDATE goods_commonid = VALUES(goods_commonid),goods_score=VALUES(goods_score),goods_name=VALUES(goods_name),goods_image=VALUES(goods_image)';
$one = $this->db->insert()->query($insertAllSql);
if ($one === false) {
$error++;
}
$insertAllSql = $baseSql;
}
}
if ($insertAllSql != $baseSql) {
$insertAllSql = rtrim($insertAllSql, ',');
$insertAllSql .= 'ON DUPLICATE KEY UPDATE goods_commonid = VALUES(goods_commonid),goods_score=VALUES(goods_score),goods_name=VALUES(goods_name),goods_image=VALUES(goods_image)';
$one = $this->db->insert($this->_tableName)->query($insertAllSql);
if ($one === false) {
$error++;
}
}
if ($error > 0) {
return false;
}
return true;
}
/**
* 类实例
*
......
<?php
/**
* Created by PhpStorm.
* User: liuyu
* Date: 2018/9/1
* Time: 20:06
*/
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require APPLICATION_PATH . '/scripts/crontab/baseCli.php';
require APPLICATION_PATH . '/scripts/crontab/common.php';
error_reporting(E_ALL ^ E_NOTICE);
class cliStoreTopSaleGoods extends basecli
{
const CLI_ADMIN_ID = 255;
private $bDoUnLock = FALSE; // 是否允许释放 LOCK 文件
private $_debug = 0;
private $lockFileName;
private $fromState;
private function mkdirs($dir, $mode = 0777)
{
if (is_dir($dir) || @mkdir($dir, $mode)){
return TRUE;
}
if (!$this->mkdirs(dirname($dir), $mode)){
return FALSE;
}
return @mkdir($dir, $mode);
}
/**
* 析构
*/
public function __destruct()
{
parent::__destruct();
if ($this->bDoUnLock)
{
@unlink($this->lockFileName);
}
}
protected function updateStoreTopSaleGoods(){
\Business\Goods\GoodsCommonServiceModel::getInstance()->updateStoreTopSaleGoods();
}
protected function _runCli()
{
$this->_debug = isset($this->aArgv[1]) ? intval($this->aArgv[1]) : 0;
if ($this->_debug)
{
echo "*** Debug mode ***\n";
}
// Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('StoreTopSaleGoods');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .'.locks';
if( file_exists( $this->lockFileName ) )
{
$stat = stat($this->lockFileName);
if( (TIMESTAMP - $stat['mtime']) > 24*60*60*2 )
{
echo "文件被锁超过2天,被强制删除";
@unlink($this->lockFileName);
}
else
{
$this->halt( '[' . date('Y-m-d H:i:s') .'] The CLI is running'."\n");
}
}
$this->bDoUnLock = true;
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
$this->updateStoreTopSaleGoods();
echo '首页热销商品更新成功'."\r\n";
}
}
$oCli = new cliStoreTopSaleGoods(TRUE);
EXIT;
?>
\ No newline at end of file
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