sifangpay/app/Services/OrderStatisServices.php

86 lines
2.3 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: kongqi
* Date: 2019/1/6
* Time: 21:01
*/
namespace App\Services;
use App\Models\Order;
class OrderStatisServices
{
public static $where;
public $order;
public function __construct()
{
$this->order = new Order();
//本月
}
/**
* 订单数量
* @param $month
* @return mixed
*/
public function getNumber(array $data)
{
//dump($data);
$search = new SearchServices($this->order, $data);
$search->setTimeType('order');
$search->unsetAllWhere();
//dump($search->echoWhere());
return ($search->totalNumber('id'));
}
public function getSum($data, $field)
{
$search = new SearchServices($this->order, $data, 'order');
$search->unsetAllWhere();
//dump($search->echoWhere());
return money_str($search->totalSum($field));
}
public function topMerchantNumber($data, $limit = 10)
{
$search = new SearchServices($this->order, $data, 'order');
$search->unsetAllWhere();
$model = $search->getModel()->groupBy('merchant_id');
$model = $model->with('merchants:id,name')->selectRaw('merchant_id,count(*) as number,sum(pay_money) as pay_money ,sum(order_money) as order_money ,sum(total_money) as total_money,sum(final_money) as final_money')
->orderBy('order_money', 'desc');
return $model->limit($limit)->get()->toArray();
}
public function dayOrderNumber($data)
{
$search = new SearchServices($this->order, $data, 'order');
$search->unsetAllWhere();
$model = $search->getModel();
$model = $model->selectRaw('DATE_FORMAT(order_at,"%Y-%m-%d") as day,count(*) as number,sum(pay_money) as pay_money ,sum(order_money) as order_money ,sum(total_money) as total_money');
$model = $model->groupBy('day');
return $model->get()->toArray();
}
public function getSumArr($data, $filed_arr)
{
$search = new SearchServices($this->order, $data, 'order');
$search->unsetAllWhere();
$model = $search->getModel();
$raw_arr = [];
foreach ($filed_arr as $k => $v) {
$raw_arr[] = \DB::raw('SUM(' . $v . ') as ' . $v);
}
$sum_arr = $model->first($raw_arr)->toArray();
return ($sum_arr);
}
}