From 4cf0f5d6959e75f051ea58499cece209643a2ff6 Mon Sep 17 00:00:00 2001 From: lanzu_qinsheng <334039090@qq.com> Date: Wed, 23 Sep 2020 17:22:05 +0800 Subject: [PATCH] 1 --- app/Admin/Controllers/HomeController.php | 88 ++++++++++-- .../Controllers/ImsCjdcMarketController.php | 1 + .../Metrics/Examples/Order/OrderData.php | 134 ++++++++++-------- 3 files changed, 151 insertions(+), 72 deletions(-) diff --git a/app/Admin/Controllers/HomeController.php b/app/Admin/Controllers/HomeController.php index 3760fa8..c05b42d 100644 --- a/app/Admin/Controllers/HomeController.php +++ b/app/Admin/Controllers/HomeController.php @@ -14,6 +14,7 @@ use Dcat\Admin\Layout\Column; use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Row; use Dcat\Admin\Admin; +use Illuminate\Support\Facades\DB; class HomeController extends Controller @@ -74,10 +75,20 @@ class HomeController extends Controller $column->row(new Examples\ServiceCard\TotalStore($marketIds,'商户数')); }); $row->column(3, function (Column $column)use ($marketIds) { - $column->row(new Examples\Order\OrderData('number',$marketIds,'订单数')); + $column->row(new Examples\Order\OrderData('订单数',[ + 'user_type'=>'lanzu_mp',//谁取数据 user_type 用户类型 + 'data_type'=>'number',//取什么数据 data_type 数据类型 + 'market_id'=>$marketIds,//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + ])); }); $row->column(3, function (Column $column)use ($marketIds) { - $column->row(new Examples\Order\OrderData('amount',$marketIds,'订单金额(元)')); + $column->row(new Examples\Order\OrderData('订单金额(元)',[ + 'user_type'=>'lanzu_mp',//谁取数据 user_type 用户类型 + 'data_type'=>'amount',//取什么数据 data_type 数据类型 + 'market_id'=>$marketIds,//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + ])); }); }); } @@ -103,10 +114,6 @@ class HomeController extends Controller return $content->header('控制面板') ->description('欢迎回到懒族后台') ->body(function (Row $row)use ($uid) { -// $row->column(4, function (Column $column) { -// $column->row(new Examples\ServiceCard\TotalMp()); -// }); - $row->column(3, function (Column $column) { $column->row(new Examples\Community\TotalCommunity()); }); @@ -115,13 +122,31 @@ class HomeController extends Controller $column->row(new Examples\Community\TotalUser()); }); $row->column(3, function (Column $column)use ($uid) { - $column->row(new Examples\Order\OrderData('user',null,'下单人数',$uid)); + $column->row(new Examples\Order\OrderData('下单人数',[ + 'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型 + 'data_type'=>'count_user',//取什么数据 data_type 数据类型 + 'market_id'=>'',//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>$uid?$uid:null + ])); }); $row->column(3, function (Column $column)use ($uid) { - $column->row(new Examples\Order\OrderData('number',null,'订单数',$uid)); + $column->row(new Examples\Order\OrderData('订单数',[ + 'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型 + 'data_type'=>'number',//取什么数据 data_type 数据类型 + 'market_id'=>'',//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>$uid?$uid:null + ])); }); $row->column(3, function (Column $column)use ($uid) { - $column->row(new Examples\Order\OrderData('amount',null,'订单金额(元)',$uid)); + $column->row(new Examples\Order\OrderData('订单金额(元)',[ + 'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型 + 'data_type'=>'amount',//取什么数据 data_type 数据类型 + 'market_id'=>'',//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>$uid?$uid:null + ])); }); }); @@ -129,7 +154,11 @@ class HomeController extends Controller protected function lanzu_cs(Content $content) { - $uid = LanzuUserRelationBind::where('source_id',Admin::user()->id)->pluck('user_id')->toArray();//获取绑定社区的所有用户 + //查询用户绑定后下过单的用户id + $uid = LanzuUserRelationBind::where('source_id',Admin::user()->id) + ->pluck('user_id') + ->toArray();//获取绑定社区的所有用户 + return $content->header('控制面板') ->description('欢迎回到懒族后台') ->body(function (Row $row) use ($uid) { @@ -140,13 +169,31 @@ class HomeController extends Controller $column->row(new Examples\Community\TotalUser()); }); $row->column(3, function (Column $column) use ($uid) { - $column->row(new Examples\Order\OrderData('user',null,'下单人数',$uid)); + $column->row(new Examples\Order\OrderData('下单人数',[ + 'user_type'=>'lanzu_cs',//谁取数据 user_type 用户类型 + 'data_type'=>'count_user',//取什么数据 data_type 数据类型 + 'market_id'=>'',//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>$uid?$uid:null + ])); }); $row->column(3, function (Column $column) use ($uid) { - $column->row(new Examples\Order\OrderData('number',null,'订单数',$uid)); + $column->row(new Examples\Order\OrderData('订单数',[ + 'user_type'=>'lanzu_cs',//谁取数据 user_type 用户类型 + 'data_type'=>'number',//取什么数据 data_type 数据类型 + 'market_id'=>'',//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>$uid?$uid:null + ])); }); $row->column(3, function (Column $column) use ($uid) { - $column->row(new Examples\Order\OrderData('amount',null,'订单金额(元)',$uid)); + $column->row(new Examples\Order\OrderData('订单金额(元)',[ + 'user_type'=>'lanzu_cs',//谁取数据 user_type 用户类型 + 'data_type'=>'amount',//取什么数据 data_type 数据类型 + 'market_id'=>'',//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>$uid?$uid:null + ])); }); }); @@ -162,11 +209,22 @@ class HomeController extends Controller $column->row(new Examples\ServiceCard\TotalStore($marketId,'商户数')); }); $row->column(4, function (Column $column)use ($marketId) { - $column->row(new Examples\Order\OrderData('number',$marketId,'订单数')); + $column->row(new Examples\Order\OrderData('订单数',[ + 'user_type'=>'market_service',//谁取数据 user_type 用户类型 + 'data_type'=>'number',//取什么数据 data_type 数据类型 + 'market_id'=>$marketId,//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + + ])); }); $row->column(4, function (Column $column)use ($marketId) { - $column->row(new Examples\Order\OrderData('amount',$marketId,'订单金额(元)')); + $column->row(new Examples\Order\OrderData('订单金额(元)',[ + 'user_type'=>'market_service',//谁取数据 user_type 用户类型 + 'data_type'=>'amount',//取什么数据 data_type 数据类型 + 'market_id'=>$marketId,//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + ])); }); }); } diff --git a/app/Admin/Controllers/ImsCjdcMarketController.php b/app/Admin/Controllers/ImsCjdcMarketController.php index 8210f71..08c5ef9 100644 --- a/app/Admin/Controllers/ImsCjdcMarketController.php +++ b/app/Admin/Controllers/ImsCjdcMarketController.php @@ -12,6 +12,7 @@ use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Controllers\AdminController; use App\Models\LanzuMpInfo; +use Illuminate\Support\Facades\Log; class ImsCjdcMarketController extends AdminController { diff --git a/app/Admin/Metrics/Examples/Order/OrderData.php b/app/Admin/Metrics/Examples/Order/OrderData.php index a525e30..d048d59 100644 --- a/app/Admin/Metrics/Examples/Order/OrderData.php +++ b/app/Admin/Metrics/Examples/Order/OrderData.php @@ -11,18 +11,11 @@ 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) + protected $params; + public function __construct($title=null,$data=[]) { - $this->title = $title; - $this->data_type = $data_type; - $this->market_id = $market_id; - $this->user_ids = $uid; - parent::__construct($title, $icon); + $this->params = $data; + parent::__construct($title, null); } public function init() @@ -42,26 +35,72 @@ class OrderData extends Card 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)); + $params = $request->get('params');//参数选项 + $option = $request->get('option');//数据选项 + //获取订单数据 + $result = $this->getOrderData($params,$option); + $this->content($result); } - public function orderDataBuild($type = null, $marketId = null) + /** + * 查询结果 + * @param $params + * @param $option + * @return int + */ + public function getOrderData($params,$option) { - $where = []; - $where['type'] = 1; - if ($marketId) { - if (is_array($marketId)) { - $where[] = ['in' => ['market_id' => $marketId]]; + //如果市场id存在 + if ($params['market_id']) { + if (is_array($params['market_id'])) { + $condition[] = ['in' => ['market_id' => $params['market_id']]]; } else { - $where['market_id'] = $marketId; + $condition['market_id'] = $params['market_id']; + } + } + if ($params['user_type']=='lanzu_cs'||$params['user_type']=='lanzu_biz'){//社区角色 + if ($params['condition']==1){//获取时间范围 + list($beginTime,$endTime) = $this->beginAndEnd($option); + //>>2.构建数据模型 + if ($params['user_ids']){ + $condition[] = ['in'=>['lanzu_order_main.user_id'=>$params['user_ids']]]; + }else{ + return 0; + } + $buildData = $this->buildData($condition); + $buildData = $buildData + ->leftJoin('lanzu_user_relation_bind','lanzu_user_relation_bind.user_id','lanzu_order_main.user_id') + ->whereRaw('lanzu_order_main.created_at > lanzu_user_relation_bind.created_at') + ->groupBy('lanzu_order_main.user_id') + ->whereBetween('lanzu_order_main.created_at',[$beginTime,$endTime]); + } + }elseif ($params['user_type']=='market_service'||$params['user_type']=='lanzu_mp'){//市场服务站角色 + if ($params['condition']==1){//获取时间范围 + list($beginTime,$endTime) = $this->beginAndEnd($option); + //>>2.构建数据模型 + $buildData = $this->buildData($condition); + $buildData = $buildData->whereBetween('created_at',[$beginTime,$endTime]); } - } - switch ($type) { + if ($params['data_type']=='count_user'){ + $result = $buildData->pluck('lanzu_order_main.user_id')->toArray(); + $result = count($result); + }elseif ($params['data_type']=='number'){ + $result = $buildData->count(); + }elseif ($params['data_type']=='amount'){ + $result = $buildData->sum('money'); + } + return $result; + } + + /** + * 查询时间范围 + * @param $option + * @return array + */ + public function beginAndEnd($option) + { + switch ($option) { 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; @@ -95,47 +134,28 @@ class OrderData extends Card $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; + return [$beginTime,$endTime]; } - - public function orderNum($data_type, $type, $marketId, $user_ids) + /** + * 构建数据模型 + * @param $condition + * @return mixed + */ + public function buildData($condition) { - $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; + $build = ImsCjdcOrderMain + ::whereIn('state', [3, 4, 5, 10]) + ->where('type',1) + ->where($condition); + return $build; } - // 传递自定义参数到 handle 方法 public function parameters(): array { return [ - 'data_type' => $this->data_type, - 'market_id' => $this->market_id, - 'user_ids' => $this->user_ids + 'params'=>$this->params ]; }