<?php

/**
 * 生成店铺订单索引
 * 执行时间：每分钟执行一次
 *
 * @author chenjiebin <sjlinyu@qq.com>
 */

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 cliGrow extends basecli
{
    const CLI_ADMIN_ID = 255;
    private $bDoUnLock = FALSE;   // 是否允许释放 LOCK 文件
    private $_debug = 0;
    private $lockFileName;
    public $key='';
    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);

        }
    }
    public function growGoods(){
        $goodsDao=\DAO\StoreModel::getInstance();
        $res =$goodsDao->getAll();
        $drawTableDao=\DAO\Draw\DrawTableModel::getInstance();
        $drawTableDatas=$drawTableDao->getAll();
        for($i=0;$i<100000;$i++){
            $memberId=50000+$i;
            $re=array_rand($res);
            $reDraw=array_rand($drawTableDatas);
            $temDrawData=$drawTableDatas[$reDraw];
            if(!empty($res[$re])){
                $data=$res[$re];
                $data['store_id']=$memberId;
                $data['store_name']=$temDrawData['storeName'];
                $data['member_id']=$memberId;
                $data['store_description']=$temDrawData['storeAddress'].$temDrawData['storeName'];
                $data['store_address']=$temDrawData['storeAddress'];
                $data['store_zip']=$temDrawData['storeTelephone'];
                $data['store_state']=ApiConst::one;
                $data['live_store_name']=$temDrawData['storeName'];
                $data['live_store_address']=$temDrawData['storeAddress'];
                $data['store_longitude']=$temDrawData['positionX']/100000;
                $data['store_latitude']=$temDrawData['positionY']/100000;
                $storeDao->add($data);
                echo '增加数据'.$i.'条member_id 是:'.$memberId."\n";
            }
        }
    }
    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('growGoodsStores');
        if (!$this->mkdirs($lockDir)) {
            echo '****create dir fail  ****';
            exit;
        }
        $this->lockFileName = $lockDir . DS . 'growGoods.locks';
        if (file_exists($this->lockFileName)) {
            $stat = stat($this->lockFileName);
            if ((TIMESTAMP - $stat['mtime']) > 1800) {
                echo "文件被锁超过1800秒，被强制删除";
                @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 独占锁

        $memberService=\Business\User\MemberServiceModel::getInstance();
        try {
            $memberService->growMembers();
            // $goodsCommonStrorageDao->createTestData();


        } catch (Exception $ex) {
            throw new Exception($ex->getCode() . '|' . $ex->getMessage());
        }
        echo '店铺生成成功' .date('Y-m-d H:i:s',TIMESTAMP). "\r\n";
    }
}

$oCli = new cliGrow(TRUE);

EXIT;
?>
