IndexController.php 7.8 KB
<?php
// +----------------------------------------------------------------------
// | bronet [ 以客户为中心 以奋斗者为本 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
namespace app\portal\controller;
use cmf\controller\HomeBaseController;
use cmf\controller\WeChatBaseController;
use EasyWeChat\Foundation\Application;
use think\Db;
class IndexController extends WeChatBaseController
{
    public function _initialize()
    {
        parent::_initialize();
        $this->checkWeChatUserLogin();
    }

    //首页
    public function index(){
        $this->checkLogin();
        $data=Db::name('temple')->select()->each(function ($item) {
            $item['count'] = Db::name('light_order')
                ->alias('lo')
                ->join('light l','lo.light_id=l.id')
                ->join('temple t','l.temple_id=t.id')
                ->where(['lo.status'=>1,'t.id'=>$item['id']/*,'lo.end_time'=>['<',time()]*/])
                ->count();
            return $item;
        });
        $address=Db::name('temple')->distinct(true)->column('address');
        $this->assign('address',$address);
        $this->assign('list',$data);
        return $this->fetch(":index");
    }

    public function search(){
        $param=$this->request->param();
        $where=[];
        $name = empty($param['name']) ? "" : $param['name'];
        $search_address = ($param['address']=="全部") ? "" : $param['address'];
        if (!empty($name)){
            $where['name']=['like',"%$name%"];
        }
        if (!empty($search_address)){
            $where['address']=$search_address;
        }
        $data=Db::name('temple')->where($where)->select()->each(function ($item) {
            $item['thumbnail']=cmf_get_image_preview_url($item['thumbnail']);
            $item['url']=url('portal/index/area',array('id'=>$item['id']));
            $item['count'] = Db::name('light_order')
                ->alias('lo')
                ->join('light l','lo.light_id=l.id')
                ->join('temple t','l.temple_id=t.id')
                ->where(['lo.status'=>1,'t.id'=>$item['id']/*,'lo.end_time'=>['<',time()]*/])
                ->count();
            return $item;
        });
        return $data;
    }

    //区域
    public function area(){
        $this->checkLogin();
        $param=$this->request->param();
        $data=Db::name('temple_area')->where('temple_id',$param['id'])->select()->each(function ($item) {
            $not_empty=Db::name('light_order')->where(['status'=>1,'end_time'=>['>',time()]])->column('light_id');
            $item['empty'] = Db::name('light')
                ->alias('l')
                ->join('temple_area ta','l.area_id=ta.id')
                ->where(['l.id'=>['not in',$not_empty],'l.area_id'=>$item['id']])
                ->count();
            return $item;
        });
        $this->assign('list',$data);
        return$this->fetch(":area");
    }

    //区域下财神灯
    public function light(){
        $this->checkLogin();
        $param=$this->request->param();
        $area=Db::name('temple_area')->where('id',$param['id'])->find();
        $not_empty=Db::name('light_order')->where(['status'=>1,'end_time'=>['>',time()]])->column('light_id');
        $area['empty'] = Db::name('light')
                ->alias('l')
                ->join('temple_area ta','l.area_id=ta.id')
                ->where(['l.id'=>['not in',$not_empty],'l.area_id'=>$area['id']])
                ->count();
        $row= $data=Db::name('light')
            ->alias('l')
            ->join('temple_area ta','l.area_id=ta.id')
            ->where(['l.area_id'=>$param['id']])
            ->distinct(true)
            ->field('l.row')
            ->order('l.row','dec')
            ->column('l.row');
        $arr=[];
        foreach ($row as $k=>$v){
            $arr[$v]=Db::name('light')->alias('l')->join('temple_area ta','l.area_id=ta.id')->where(['l.row'=>$v,'l.area_id'=>$param['id']])->field('l.*,ta.name')->select()->each(function ($item) {
                if(Db::name('light_order') ->where(['light_id'=>$item['id'],'end_time'=>['>',time()],'status'=>1])->find()){
                    $item['can_light'] =0;
                }else{
                    $item['can_light'] =1;
                }
                return $item;
            })->toArray();
        }
        $this->assign('area',$area);
        $this->assign('list',$arr);
        return $this->fetch(":light");
    }



    public function lightOrder(){
        //用户检测
        $re=$this->checkLogin();
        //jssdk
        $options = [
            'app_id' => config('wechat_config.app_id'),
            'secret' => config('wechat_config.secret'),
            'payment' => config('wechat_config.payment'),
        ];
        $app = new Application($options);
        $js = $app->js;
        $jss = $js->config(['chooseImage', 'uploadImage', 'previewImage'], $debug = false, $beta = false, $json = true);
        $this->assign('js', $jss);

        $param=$this->request->param();
        $data=Db::name('light')->where('id',$param['id'])->find();
        $data['end_time']=date('Y年m月d日',strtotime('+'."$data[term]". 'year',time()));
        $area=Db::name('temple_area')->where('id',$data['area_id'])->find();
        $this->assign('area',$area);
        $this->assign('users',$re);
        $this->assign('list',$data);
        return $this->fetch(':light_order');
    }

    public function listOrderPost()
    {
        $re=$this->checkLogin();
        $param = $this->request->param();
        if (Db::name('light_order')->where(['light_id'=>$param['light_id'],'status'=>1,'end_time'=>['>',time()]])->find()){
            return 3;
        }
        if ($param['media']!="") {
            $data['avatar'] = $this->upload_wx_pic_mul($param['media']);
        }
        unset($param['media']);
        $data['create_time']=$param['create_time'];
        $data['content']=$param['content'];
        $data['name']=$param['name'];
        $data['order_sn']=cmf_get_order_sn();
        $data['users_id']=$re['id'];
        $data['light_id']=$param['light_id'];
        $data['money']=$param['money'];
        $data['end_time']=strtotime('+'."$param[term]". 'year',$param['create_time']);
        $re=Db::name('light_order')->insertGetId($data);
        if ($re){
            return url('portal/pay/index',array('id'=>$re));
        }else{
            return 2;
        }
    }

    public function upload_wx_pic_mul()
    {
        require_once VENDOR_PATH . "jssdk/jssdk.php";
        $jssdk = new \JSSDK(Config('WX_APPID'), Config('WX_APP_SECRET'));
        $access_token = $jssdk->getAccessToken();
        $img_str = $this->request->param('media');
        $file = $this->getmedia($access_token,$img_str, date('Ymd'));
        return $file;
    }
    public function getmedia($access_token, $media_id, $foldername)
    {
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" . $access_token . "&media_id=" . $media_id;
        if (!file_exists("./upload/" . $foldername)) {
            mkdir("./upload/" . $foldername, 0777, true);
        }
        $file_name = date('YmdHis') . rand(1000, 9999) . '.jpg';
        $targetName = './upload/' . $foldername . '/' . $file_name;
        $saveName = $foldername . '/' . $file_name;
        $ch = curl_init($url); // 初始化
        $fp = fopen($targetName, 'wb'); // 打开写入
        curl_setopt($ch, CURLOPT_FILE, $fp); // 设置输出文件的位置,值是一个资源类型
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
        return $saveName;
    }
}