|
|
<?php
namespace App\Admin\Metrics\Examples\Order;
use App\Models\ImsCjdcOrder;use App\Models\ImsCjdcOrderMain;use Dcat\Admin\Widgets\Metrics\Card;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;
class OrderData extends Card{ protected $title; protected $data_type; protected $market_id; protected $user_ids;
public function __construct($data_type = null, $market_id = null, $title = null, $uid = [], $icon = null) { $this->title = $title; $this->data_type = $data_type; $this->market_id = $market_id; $this->user_ids = $uid; parent::__construct($title, $icon); }
public function init() { parent::init(); // TODO: Change the autogenerated stub
$this->dropdown([ '1' => '今日', '-1' => '昨日', '7' => '最近7天', 'w' => '本周', 'lw' => '上周', '30' => '本月', '-30' => '上月' ]);
}
public function handle(Request $request) { $type = $request->get('option');//数据选项
$data_type = $request->get('data_type');//数据类型
$market_id = $request->get('market_id');//市场id
$user_ids = $request->get('user_ids');//市场id
$this->content($this->orderNum($data_type, $type, $market_id, $user_ids)); }
public function orderDataBuild($type = null, $marketId = null) { $where = []; $where['type'] = 1; if ($marketId) { if (is_array($marketId)) { $where[] = ['in' => ['market_id' => $marketId]]; } else { $where['market_id'] = $marketId; }
} switch ($type) { case '1': $beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1; break; case '-1': $beginTime = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); $endTime = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - 1; break; case '7': $beginTime = mktime(0, 0, 0, date('m'), date('d') - 7, date('Y')); $endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1; break; case 'w': $beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")); $endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y")); break; case 'lw': $beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1 - 7, date("Y")); $endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7 - 7, date("Y")); break; case '30': $beginTime = mktime(0, 0, 0, date('m'), 1, date('Y')); $endTime = mktime(23, 59, 59, date('m'), date('t'), date('Y')); break; case '-30': $beginTime = mktime(0, 0, 0, date('m') - 1, 1, date('Y')); $endTime = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y")))); break; default: $beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1; break; } $build = ImsCjdcOrderMain ::whereBetween('created_at', [$beginTime, $endTime]) ->whereIn('state', [3, 4, 5, 10]) ->where($where); return $build; }
public function orderNum($data_type, $type, $marketId, $user_ids) { $build = $this->orderDataBuild($type, $marketId); if ($user_ids){ $build = $build->whereIn('user_id',$user_ids); } if ($data_type == 'number') { $result = $build->count(); } elseif ($data_type == 'amount') { $result = $build->sum('money'); } elseif ($data_type == 'user') { if ($user_ids){ $result = $build->groupBy('user_id') ->pluck('user_id') ->toArray(); $result = count($result); }else{ $result = 0; } } else { $result = 0; } return $result; }
// 传递自定义参数到 handle 方法
public function parameters(): array { return [ 'data_type' => $this->data_type, 'market_id' => $this->market_id, 'user_ids' => $this->user_ids ]; }
/** * 渲染卡片内容 * @return string */ public function renderContent() { $content = parent::renderContent(); return <<<HTML<div class="d-flex justify-content-between bg-primary align-items-center mt-1" style="margin-bottom: 2px"> <h2 class="ml-1 font-large-1">{$content}</h2></div>HTML; }}
|