You've already forked qlg.tsgz.moe
							
							Init Repo
This commit is contained in:
		
							
								
								
									
										97
									
								
								hyhproject/home/model/Reports.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										97
									
								
								hyhproject/home/model/Reports.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
<?php 
 | 
			
		||||
namespace wstmart\home\model;
 | 
			
		||||
use think\Db;
 | 
			
		||||
/**
 | 
			
		||||
 * ============================================================================
 | 
			
		||||
 * 报表模型类
 | 
			
		||||
 */
 | 
			
		||||
class Reports{
 | 
			
		||||
	/**
 | 
			
		||||
	 * 获取商品销售排行
 | 
			
		||||
	 */
 | 
			
		||||
	public function getTopSaleGoods(){
 | 
			
		||||
		$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
 | 
			
		||||
    	$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
 | 
			
		||||
    	$shopId = (int)session('WST_USER.shopId');
 | 
			
		||||
    	$rs = Db::field('og.goodsId,g.goodsName,goodsSn,sum(og.goodsNum) goodsNum,g.goodsImg')->name('order_goods')->alias('og')
 | 
			
		||||
    	  ->join('__ORDERS__ o','og.orderId=o.orderId')
 | 
			
		||||
    	  ->join('__GOODS__ g','og.goodsId=g.goodsId')
 | 
			
		||||
    	  ->order('goodsNum desc')
 | 
			
		||||
    	  ->whereTime('o.createTime','between',[$start,$end])
 | 
			
		||||
          ->where('(payType=0 or (payType=1 and isPay=1)) and o.dataFlag=1 and o.shopId='.$shopId)->group('og.goodsId')
 | 
			
		||||
          ->limit(10)->select();
 | 
			
		||||
        return WSTReturn('',1,$rs);
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * 获取销售额统计
 | 
			
		||||
	 */
 | 
			
		||||
	public function getStatSales(){
 | 
			
		||||
		$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
 | 
			
		||||
        $end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
 | 
			
		||||
        $payType = (int)input('payType',-1);
 | 
			
		||||
        $shopId = (int)session('WST_USER.shopId');
 | 
			
		||||
        $rs = Db::field('left(createTime,10) createTime,sum(totalMoney) totalMoney,count(orderId) orderNum')->name('orders')->whereTime('createTime','between',[$start,$end])
 | 
			
		||||
                ->where('shopId',$shopId)
 | 
			
		||||
                ->where('(payType=0 or (payType=1 and isPay=1)) and dataFlag=1 '.(in_array($payType,[0,1])?" and payType=".$payType:''))
 | 
			
		||||
                ->order('createTime asc')
 | 
			
		||||
                ->group('left(createTime,10)')->select();
 | 
			
		||||
        $rdata = [];
 | 
			
		||||
        if(count($rs)>0){
 | 
			
		||||
            $days = [];
 | 
			
		||||
            $tmp = [];
 | 
			
		||||
            foreach($rs as $key => $v){
 | 
			
		||||
                $days[] = $v['createTime'];
 | 
			
		||||
                $rdata['dayVals'][] = $v['totalMoney'];
 | 
			
		||||
                $rdata['list'][] = ['day'=>$v['createTime'],'val'=>$v['totalMoney'],'num'=>$v['orderNum']];
 | 
			
		||||
            }
 | 
			
		||||
            $rdata['days'] = $days;
 | 
			
		||||
        }
 | 
			
		||||
        return WSTReturn('',1,$rdata);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取商家订单情况
 | 
			
		||||
     */
 | 
			
		||||
    public function getStatOrders(){
 | 
			
		||||
        $start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
 | 
			
		||||
        $end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
 | 
			
		||||
        $shopId = (int)session('WST_USER.shopId');
 | 
			
		||||
        $rs = Db::field('left(createTime,10) createTime,orderStatus,count(orderId) orderNum')->name('orders')->whereTime('createTime','between',[$start,$end])
 | 
			
		||||
                ->where('shopId',$shopId)
 | 
			
		||||
                ->order('createTime asc')
 | 
			
		||||
                ->group('left(createTime,10),orderStatus')->select();
 | 
			
		||||
       $rdata = [];
 | 
			
		||||
       if(count($rs)>0){
 | 
			
		||||
            $days = [];
 | 
			
		||||
            $tmp = [];
 | 
			
		||||
            $map = ['-3'=>0,'-1'=>0,'1'=>0];
 | 
			
		||||
            foreach($rs as $key => $v){
 | 
			
		||||
                if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
 | 
			
		||||
                $tmp[$v['orderStatus'].'_'.$v['createTime']] = $v['orderNum'];
 | 
			
		||||
            }
 | 
			
		||||
            foreach($days as $v){
 | 
			
		||||
                $total = 0;
 | 
			
		||||
                $ou = 0;
 | 
			
		||||
                $o_3 = isset($tmp['-3_'.$v])?$tmp['-3_'.$v]:0;
 | 
			
		||||
                $o_1 = isset($tmp['-1_'.$v])?$tmp['-1_'.$v]:0;
 | 
			
		||||
                if(isset($tmp['0_'.$v]))$ou += $tmp['0_'.$v];
 | 
			
		||||
                if(isset($tmp['1_'.$v]))$ou += $tmp['1_'.$v];
 | 
			
		||||
                if(isset($tmp['2_'.$v]))$ou += $tmp['2_'.$v];
 | 
			
		||||
                $rdata['-3'][] = $o_3;
 | 
			
		||||
                $rdata['-1'][] = $o_1;
 | 
			
		||||
                $rdata['1'][] = $ou;
 | 
			
		||||
                $map['-3']  += $o_3;
 | 
			
		||||
                $map['-1']  += $o_1;
 | 
			
		||||
                $map['1']  += $ou;
 | 
			
		||||
                $total += $o_3;
 | 
			
		||||
                $total += $o_1;
 | 
			
		||||
                $total += $ou;
 | 
			
		||||
                $rdata['total'][] = $total;
 | 
			
		||||
                $rdata['list'][] = ['day'=>$v,'o3'=>$o_3,'o1'=>$o_1,'ou'=>$ou];
 | 
			
		||||
            }
 | 
			
		||||
            $rdata['days'] = $days;
 | 
			
		||||
            $rdata['map'] = $map;
 | 
			
		||||
       }
 | 
			
		||||
       return WSTReturn('',1,$rdata);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user