php 制作曲线图demo

public function view()
    {    
        //接收qd_user表的ID值 ,如果没有接收到,则返回终端列表
        $qd_user_id = isset($_REQUEST['qd_user_id']) ? $_REQUEST['qd_user_id'] : 0;
        if( !$qd_user_id ){
            $this->error('数据错误!qd_user_id值没有接收到','__APP__/terminal/index');
        }
        
        //接收年份,默认是当前年份
        $year = isset($_REQUEST['year']) ? $_REQUEST['year'] : date("Y");
        $defaultStime = $year.'-01-01';
        $defaultEtime = (intval($year)+1).'-01-01';
        
        //1.统计会员-按月**********************************************************************************************************
        $memberList = M('m_member','mall_')->field("DATE_FORMAT(regtime,'%m') months, COUNT(*) counts ")
                        ->where("qd_user_id={$qd_user_id} AND regtime>='{$defaultStime}' AND regtime<'{$defaultEtime}'")
                        ->group('months')
                        ->select(); 
        
        //2.统计订单-按月**********************************************************************************************************
        $orderList = M("m_order",'mall_')->field("DATE_FORMAT(ordertime,'%m') months, COUNT(*) counts")
                    ->where("orderstate IN(1,2,3,6) AND uid IN(SELECT id FROM mall_m_member WHERE qd_user_id=".$qd_user_id.") AND ordertime>='{$defaultStime}' AND ordertime<'{$defaultEtime}'")
                    ->group("months")
                     ->select();
        
        //3.统计收益-按月**********************************************************************************************************
        //求所有子订单
        $jm = M("jm_order jm","mall_");
        $jmOrderList = $jm->field("prud, DATE_FORMAT(orderdate,'%m') months")
                        ->join("INNER JOIN (SELECT orderid FROM mall_m_order o INNER JOIN (SELECT id FROM mall_m_member  WHERE qd_user_id=".$qd_user_id.") m ON m.id=uid WHERE orderstate IN(1,2,3,6)) o ON o.orderid = jm.ordernum ")
                        ->where("c_state IN(10) AND mir_jiesuan_status=2 AND orderdate>='{$defaultStime}' AND orderdate<'{$defaultEtime}'")
                        ->select();
        
        //计算出每个子订单收益金额
        foreach($jmOrderList as $k=>$jm)
        {    
            $prub = unserialize($jm['prud']); //商品信息,反序列化
            //结算出单件的收益
            $produc = M('produc','mall_')->field("(CASE WHEN gyprice>0 THEN (memprice-gyprice)*0.4 ELSE 0 END) AS sy")
                        ->where('id='.$prub['id'])
                        ->find();
            //一件子订单的收益  = 单件收益  x 件数
            $jmOrderList[$k]['sy'] = isset($produc['sy']) ? floatval($produc['sy']) * intval($prub['num']) : 0;
        }
        
        //4.按月整理数据,没有数据的月份值则为0******************************************************************************************
        for($i =1; $i<=12; $i++)
        {    
            //统计会员, 每个月的默认值是0 -----------------------------
            $member[$i] = 0; 
            if( $memberList && is_array($memberList) )
            {
                foreach($memberList as $m)
                {
                    if( intval($m['months']) == $i)
                    {
                        $member[$i] = $m['counts'];
                        break;
                    }
                }
            }            
            
            //统计订单, 默认值:0 -----------------------------
            $order[$i] = 0;
            if($orderList){
                foreach($orderList as $m)
                {
                    if( intval($m['months']) == $i)
                    {
                        $order[$i] = $m['counts'];
                        break;
                    }
                }
            }

            //编计收益数--按月-----------------------------
            $sy[$i] = 0;
            if($jmOrderList)
            {  
                foreach($jmOrderList as $jm)
                {
                    if( intval($jm['months']) == $i )
                    {
                        $sy[$i] += floatval($jm['sy']);
                    }
                }
            }
            //改单位为千元,每月金额/1000
            $sy[$i] = $sy[$i] ? $sy[$i]/1000: 0;
        }
    
        //公共模板
        $this->commons = R('terminal/read');
        $this->year = $year;
        $this->qd_user_id = $qd_user_id;
        $this->member = implode(',', $member);
        $this->order  = implode(',', $order);
        $this->sy     = implode(',', $sy);
        $this->display('./Tpl/default/terminal_view.html');
    }


转载于:https://my.oschina.net/tony2015/blog/410305

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值