Template.php 13 KB
<?php
namespace app\admin\controller;
use think\Db;
use think\facade\Env;
use think\facade\Request;
class Template extends Common{
    protected $filepath,$publicpath,$viewSuffix;
    function initialize()
    {
        parent::initialize();
        $viewPath = config('template.view_path');
        $this->viewSuffix = config('template.view_suffix');
		$viewPath = $viewPath ? $viewPath : 'view';
        $this->filepath = Env::get('app_path').strtolower(config('default_module')).'/'.$viewPath.'/';
        $this->publicpath =  'static/home/';
		$this->assign ( 'viewSuffix',$this->viewSuffix );
    }

    public function index(){
        //$path = $this->publicpath.'images/'.input('folder').'/';

        if($_SERVER['REMOTE_ADDR']=="127.0.0.1")
            $path = "/Applications/XAMPP/xamppfiles/htdocs/dashboard/images/";
        else
            $path = "/alidata/www/dc-api/public/tables/syntemp/";

        $uppath = explode('/',input('folder'));
        $leve = count($uppath)-1;
        unset($uppath[$leve]);
        if($leve>1){
            unset($uppath[$leve-1]);
            $uppath = implode('/',$uppath).'/';
        }else{
            $uppath = '';
        }
        $this->assign ( 'leve',$leve);
        $this->assign ( 'uppath',$uppath);
        $files = glob($path.'*');
        $folders=array();
        foreach($files as $key => $file) {
            $filename = basename($file);
            if(is_dir($file)){
                $folders[$key]['filename'] = $filename;
                $folders[$key]['filepath'] = $file;
                $folders[$key]['ext'] = 'folder';
            }else{
                $templates[$key]['filename'] = $filename;
                $templates[$key]['filepath'] = $file;
                $templates[$key]['ext'] = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename)+1));
                if(!in_array($templates[$key]['ext'],array('zip','gif','jpg','png','bmp'))) $templates[$key]['favicon.ico'] =1;
            }
        }
        $this->assign ( 'title','二维码管理' );
        $this->assign ( 'path',$path);
        $this->assign ( 'folders',$folders );
        $this->assign ( 'files',$templates );
        return $this->fetch();
    }

    public function PackzipDownload(){

        if($_SERVER['REMOTE_ADDR']=="127.0.0.1")
            $path = "/Applications/XAMPP/xamppfiles/htdocs/dashboard/images/";
        else
            $path = "/alidata/www/dc-api/public/tables/syntemp/";

        $file=$path.input('post.filename');
        //首先判断是图片还是路径
        if($this->isImage($file)!==false){
            //是图片
            $zip = new \ZipArchive;
            //压缩文件名
            $filename = 'uploads/package/download.zip';

            //新建zip压缩包
            $obj = $zip->open($filename,\ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE);
            $newfile = trim(strrchr($file, '/'),'/');
            //把图片一张一张加进去压缩
            $zip->addFile($file,'/download/'.$newfile);
            //打包zip
            $rs = $zip->close();
        }else{
            //目录
            $zip = new \ZipArchive;
            //压缩文件名
            $filename = 'uploads/package/download.zip';
            //新建zip压缩包
            $obj = $zip->open($filename,\ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE);
            //把图片一张一张加进去压缩
            $files = glob($file.'/*');
            foreach($files as $key=>$val){
                $newfile = trim(strrchr($val, '/'),'/');
                $zip->addFile($val,'/download/'.$newfile);
            }

            //打包zip
            $rs = $zip->close();
        }
        if($rs==true){
            $result['code']=1;
            $result['msg']="打包好了!";
            return $result;
        }
        return $rs;
    }

    /**
     * 判断所传文件是否是图片
     */
    public function isImage($filename)
    {
        $types = '.gif|.jpeg|.png|.bmp'; //定义检查的图片类型
        if(file_exists($filename))
        {
            if (($info = @getimagesize($filename)))
                    return 0;
            $ext = image_type_to_extension($info['2']);
            return stripos($types,$ext);
        }
        else
        {
            return false;
        }
    }

    /**
     * 二维码包下载页面
     */
    public function package(){
        $path = 'uploads/package/'.input('folder').'/';

        $uppath = explode('/',input('folder'));
        $leve = count($uppath)-1;
        unset($uppath[$leve]);
        if($leve>1){
            unset($uppath[$leve-1]);
            $uppath = implode('/',$uppath).'/';
        }else{
            $uppath = '';
        }
        $this->assign ( 'leve',$leve);
        $this->assign ( 'uppath',$uppath);
        $files = glob($path.'*');
        $folders=array();
        foreach($files as $key => $file) {
            $filename = basename($file);
            if(is_dir($file)){
                $folders[$key]['filename'] = $filename;
                $folders[$key]['filepath'] = $file;
                $folders[$key]['ext'] = 'folder';
            }else{
                $templates[$key]['filename'] = $filename;
                $templates[$key]['filepath'] = $file;
                $templates[$key]['ext'] = strtolower(substr($filename,strrpos($filename, '.')-strlen($filename)+1));
                if(!in_array($templates[$key]['ext'],array('zip','gif','jpg','png','bmp'))) $templates[$key]['favicon.ico'] =1;
            }
        }
        $this->assign ( 'title','二维码管理' );
        $this->assign ( 'path',$path);
        $this->assign ( 'folders',$folders );
        $this->assign ( 'files',$templates );
        return $this->fetch();
    }

    /**
     * 二维码生成
     */
    public function createcode(){
        if(request()->isPost()){
            $num = intval(input('post.num'));
            $flag = intval(input('post.flag'));
            if($num<=0){
                $result['msg'] = '请输入正整数!';
                $result['code'] = 0;
                return $result;
            }
            if($flag<0 || $flag >2){
                $result['msg'] = '请输入1或者2或者不输入!';
                $result['code'] = 0;
                return $result;
            }
            //调用API
            //App.Tables.BatchQRcode     测试环境
            //http://xt04.colorcun.com/?service=App.Tables.BatchQRcode                  正式环境
            $param=array(
                'num'   =>$num,
                'flag'  =>$flag,
            );
            $url = ON_LINE."App.Tables.BatchQRcode";
            $status = json_decode($this->requesthttp($url,$param),true);
            if($status['ret']==200){
                $result['msg'] = '二维码已生成!';
                $result['code'] = 1;
                return $result;
            }else{
                $result['msg'] = $status['msg'];
                $result['code'] = $status['ret'];
                return $status;
            }
        }
        $this->assign ( 'title','二维码生成' );
        return $this->fetch();
    }

    /**
     * post请求
     * @param $url
     * @param $param
     * @param bool $post_file
     * @return bool|mixed
     */
    public function requesthttp($url,$param,$post_file=false){
        $oCurl = curl_init();
        if(stripos($url,"https://")!==FALSE){
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
        }
        if (is_string($param) || $post_file) {
            $strPOST = $param;
        } else{
            $aPOST = array();
            foreach($param as $key=>$val){
                $aPOST[] = $key."=".urlencode($val);
            }
            $strPOST =  join("&", $aPOST);
        }
        curl_setopt($oCurl, CURLOPT_URL, $url);
        curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt($oCurl, CURLOPT_POST,true);
        curl_setopt($oCurl, CURLOPT_POSTFIELDS,$strPOST);
        $sContent = curl_exec($oCurl);
        $aStatus = curl_getinfo($oCurl);
        curl_close($oCurl);
        //dump(json_decode($sContent));
        if(intval($aStatus["http_code"])==200){
            return $sContent;
        }else{
            return false;
        }
    }

    /**
     * GIF图片、短视频上传
     */
    public function uploadFile(){
        if(request()->isPost()){
            //构建数组
            $data = Request::except('file');
            if(empty($data['pic'])){
                $result['code'] = 0;
                $result['msg'] = '请确保图片已经上传!';
                $result['url'] = url('uploadFile');
                return $result;
            }
            //查询是否存在该名字
            $scList=db('cookbook_material')->where(array('name'=>$data['name']))->find();
            if(isset($scList)){
                $result['code'] = 0;
                $result['msg'] = '该名称已存在!';
                $result['url'] = url('uploadFile');
                return $result;
            }
            $data['addtime'] = time();
            db('cookbook_material')->insert($data);
            $result['code'] = 1;
            $result['msg'] = '素材添加成功!';
            $result['url'] = url('uploadFile');
            return $result;
        }
        $this->assign ( 'title','GIF、短视频上传' );
        return $this->fetch();
    }

    /**
     * 商家list
     */
    public function sellerList(){
        if(Request::isAjax()){
            $data = Request::except('file');
            $limit = '&x='.$data["page"].'&y='.$data["limit"];
            //获取运营人员列表
            $list= file_get_contents(ON_LINE.'App.Seller.GetSellerList'.$limit);
            $array = json_decode($list,TRUE);
            if($array['ret']==200){
                $result = ['code'=>0,'msg'=>'获取成功!','data'=>$array['data'][0],'rel'=>1];
            }
            return $result;
        }
        $this->assign ( 'title','商户菜品配置');
        return $this->fetch();
    }


    /**
     * 配置商家菜品信息
     */
    public function configMer(){
        //获取分类
        $data = Request::except('file');
        $list= file_get_contents(ON_LINE.'App.Cookbook.GetCookbookByClass&sellerid='.$data['id']);
        $array = json_decode($list,TRUE);
        $this->assign ( 'data',$data);  //商户信息
        $this->assign('list',$array['data'][0]['list']);    //该商户所有分类下的菜品
        $this->assign ( 'title','商户菜品配置' );
        return $this->fetch();
    }
    
    //根据菜品分类ID获取菜品分类下所有菜品
    public function configClass(){
        $data = Request::except('file');
        if(Request::isAjax()){
            //获取分类下所有菜品
            $list= file_get_contents(ON_LINE.'App.Cookbook.GetCookbookByClassId&ClassId='.$data['classid']);
            $array = json_decode($list,TRUE);
            return $array['data']['data'];
        }
        return $this->fetch();
    }
    
    //根据菜品名称 模糊匹配 七牛云菜品图片、视频
    public function configCategoryName(){
        if(Request::isAjax()){
            $data = Request::except('file');
            //查询是否存在该名字
            $where = '(name like "%'.$data['categoryName'].'%") OR (pic like "%'.$data['categoryName'].'%")';
            //$scList=db('cookbook_material')->where('name|pic','like',$data['categoryName'],'OR')->select();
            $scList=db('cookbook_material')->where($where)->select();
            //dump( Db::getLastSql());  //sql调试
            foreach ($scList as $key => $value) {
                $picType = pathinfo($value['pic'], PATHINFO_EXTENSION); //识别文件类型
                if($picType=="png" || $picType=="gif")
                    $scList[$key]['type'] = "png";
                else if($picType=="mp4")
                    $scList[$key]['type'] = "mp4";
            }
            if(!empty($scList)){
                $result['code'] = 1;
                $result['msg'] = "success";
                $result['data'] = $scList;
            }else{
                $result['code'] = 0;
                $result['msg'] = "未找到合适的数据";
                $result['data'] = $scList;
            }
            return $result;
        }
    }

    //根据菜品ID  菜品GIF、视频配置
    public function updateCookBook(){
        if(Request::isAjax()){
            $data = Request::except('file');
            //接口调起
           $list= file_get_contents(ON_LINE.'App.Cookbook.SetCookbookById&sellerid='.$data['sellerid'].'&id='.$data['dishname'].'&dishesVideo='.$data['dishesVideo'].'&dishesGif='.$data['dishesGif']);
           $array = json_decode($list,TRUE);
           if($array['data']['data']==1){
                $result['code'] = 1;
                $result['msg'] = "配置成功!";
           }else{
                $result['code'] = 0;
                $result['msg'] = "配置失败!".$array['msg'];
           }
           return $result; 

        }
    }

}