97 lines
4.0 KiB
PHP
Executable File
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);
|
|
}
|
|
} |