2019-09-06 23:53:10 +08:00

97 lines
4.0 KiB
PHP
Executable File

<?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);
}
}