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