lanzu_qinsheng 5 years ago
parent
commit
4cf0f5d695
  1. 88
      app/Admin/Controllers/HomeController.php
  2. 1
      app/Admin/Controllers/ImsCjdcMarketController.php
  3. 134
      app/Admin/Metrics/Examples/Order/OrderData.php

88
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
]));
});
});
}

1
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
{

134
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
];
}

Loading…
Cancel
Save