5 changed files with 262 additions and 79 deletions
-
120app/Admin/Common/Order.php
-
33app/Admin/Controllers/v3/Salesman.php
-
83app/Admin/Metrics/Examples/Order/OrderData.php
-
104app/Admin/Repositories/v3/Salesman.php
-
1app/Admin/routes.php
@ -0,0 +1,120 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace App\Admin\Common; |
||||
|
|
||||
|
|
||||
|
use App\Models\ImsCjdcOrderMain; |
||||
|
|
||||
|
class Order |
||||
|
{ |
||||
|
/** |
||||
|
* 查询结果 |
||||
|
* @param $params |
||||
|
* @param $option |
||||
|
* @return int |
||||
|
*/ |
||||
|
public static function getOrderData($params,$option) |
||||
|
{ |
||||
|
//如果市场id存在
|
||||
|
$buildData = self::buildData(); |
||||
|
if ($params['market_id']) {//是否存在市场id
|
||||
|
if (is_array($params['market_id'])) { |
||||
|
$buildData = $buildData->whereIn('lanzu_order_main.market_id',$params['market_id']); |
||||
|
} else { |
||||
|
$buildData = $buildData->where('lanzu_order_main.market_id',$params['market_id']); |
||||
|
} |
||||
|
} |
||||
|
if ($params['user_type']=='lanzu_cs'||$params['user_type']=='lanzu_biz'){//社区角色
|
||||
|
if ($params['condition']==1){//获取时间范围
|
||||
|
list($beginTime,$endTime) = self::beginAndEnd($option); |
||||
|
//>>2.构建数据模型
|
||||
|
if ($params['user_ids']){ |
||||
|
$buildData = $buildData->whereIn('lanzu_order_main.user_id',$params['user_ids']); |
||||
|
}else{ |
||||
|
return 0; |
||||
|
} |
||||
|
$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') |
||||
|
->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) = self::beginAndEnd($option); |
||||
|
//>>2.构建数据模型
|
||||
|
$buildData = $buildData->whereBetween('created_at',[$beginTime,$endTime]); |
||||
|
} |
||||
|
} |
||||
|
if ($params['data_type']=='count_user'){ |
||||
|
$result = $buildData |
||||
|
->groupBy('lanzu_order_main.user_id') |
||||
|
->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 static 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; |
||||
|
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; |
||||
|
} |
||||
|
return [$beginTime,$endTime]; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 构建数据模型 |
||||
|
* @param $condition |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public static function buildData() |
||||
|
{ |
||||
|
$build = ImsCjdcOrderMain |
||||
|
::whereIn('state', [3, 4, 5, 10]) |
||||
|
->where('type',1); |
||||
|
return $build; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,33 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace App\Admin\Controllers\v3; |
||||
|
|
||||
|
|
||||
|
use Dcat\Admin\Controllers\AdminController; |
||||
|
use Dcat\Admin\Grid; |
||||
|
|
||||
|
class Salesman extends AdminController |
||||
|
{ |
||||
|
protected function grid() |
||||
|
{ |
||||
|
return Grid::make(new \App\Admin\Repositories\v3\Salesman(),function (Grid $grid){ |
||||
|
$grid->paginate(10); |
||||
|
$grid->column('person_id','懒ID'); |
||||
|
$grid->column('nick_name','拓展员'); |
||||
|
$grid->column('total','社区总数'); |
||||
|
$grid->column('t_num','今日订单数'); |
||||
|
$grid->column('t_amount','今日成交额'); |
||||
|
$grid->column('y_num','昨日订单数'); |
||||
|
$grid->column('y_amount','昨日成交额'); |
||||
|
$grid->column('w_num','本周订单数'); |
||||
|
$grid->column('w_amount','本周成交额'); |
||||
|
$grid->column('m_num','本月订单数'); |
||||
|
$grid->column('m_amount','本月成交额'); |
||||
|
$grid->disableActions(); |
||||
|
$grid->filter(function (Grid\Filter $filter){ |
||||
|
$filter->equal('user_id','拓展员懒ID'); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,104 @@ |
|||||
|
<?php |
||||
|
|
||||
|
|
||||
|
namespace App\Admin\Repositories\v3; |
||||
|
|
||||
|
|
||||
|
use App\Admin\Common\Order; |
||||
|
use App\Models\LanzuCsInfo; |
||||
|
use Dcat\Admin\Grid; |
||||
|
use Dcat\Admin\Repositories\EloquentRepository; |
||||
|
use Illuminate\Support\Facades\DB; |
||||
|
|
||||
|
class Salesman extends EloquentRepository |
||||
|
{ |
||||
|
protected $eloquentClass = \App\Models\v3\User::class; |
||||
|
public function get(Grid\Model $model) |
||||
|
{ |
||||
|
$userId = $model->filter()->input('user_id'); |
||||
|
$build = LanzuCsInfo::select( |
||||
|
DB::raw('count("lanzu_cs_info.person_id") as total'), |
||||
|
DB::raw('group_concat(lanzu_cs_info.admin_user_id) as admin_user_id'), |
||||
|
DB::raw('group_concat(rb.user_id) as user_id'), |
||||
|
'lanzu_cs_info.person_id','lanzu_user.nick_name') |
||||
|
->groupBy('lanzu_cs_info.person_id') |
||||
|
->leftJoin('lanzu_user','lanzu_user.id','lanzu_cs_info.person_id') |
||||
|
->leftJoin('lanzu_user_relation_bind as rb','rb.source_id','lanzu_cs_info.admin_user_id') |
||||
|
->where('lanzu_cs_info.person_id','>',0); |
||||
|
if ($userId){ |
||||
|
$build = $build->where('lanzu_user.id',$userId); |
||||
|
} |
||||
|
//>>1.获取业务员
|
||||
|
$rows = $build->paginate(10)->toArray(); |
||||
|
//>>2.获取业务员下的所有社区的绑定用户
|
||||
|
foreach ($rows['data'] as &$value){ |
||||
|
$value['admin_user_id'] = array_unique(explode(',',$value['admin_user_id'])); |
||||
|
$value['total'] = count($value['admin_user_id']); |
||||
|
$uid = explode(',',$value['user_id']); |
||||
|
$value['t_num'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'number',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],1);//今日订单数
|
||||
|
|
||||
|
$value['t_amount'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'amount',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],1);//今日订单金额
|
||||
|
|
||||
|
$value['y_num'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'number',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],-1);//昨日订单数
|
||||
|
|
||||
|
$value['y_amount'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'amount',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],-1);//昨日订单金额
|
||||
|
|
||||
|
$value['w_num'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'number',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],'w');//本周订单数
|
||||
|
|
||||
|
$value['w_amount'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'amount',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],'w');//本周订单金额
|
||||
|
|
||||
|
$value['m_num'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'number',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],'30');//本月订单数
|
||||
|
|
||||
|
$value['m_amount'] = Order::getOrderData([ |
||||
|
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
|
||||
|
'data_type'=>'amount',//取什么数据 data_type 数据类型
|
||||
|
'market_id'=>'',//取哪个市场数据
|
||||
|
'condition'=>1,//取数据维度 condition
|
||||
|
'user_ids'=>$uid?$uid:null |
||||
|
],'30');//本月订单金额
|
||||
|
} |
||||
|
return $model->makePaginator($rows['total'],$rows['data']); // 传入总记录数// 传入数据二维数组
|
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue