diff --git a/app/Admin/Common/Order.php b/app/Admin/Common/Order.php new file mode 100644 index 0000000..792285c --- /dev/null +++ b/app/Admin/Common/Order.php @@ -0,0 +1,120 @@ +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; + } +} diff --git a/app/Admin/Controllers/v3/Salesman.php b/app/Admin/Controllers/v3/Salesman.php new file mode 100644 index 0000000..14c2d67 --- /dev/null +++ b/app/Admin/Controllers/v3/Salesman.php @@ -0,0 +1,33 @@ +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'); + }); + }); + } +} diff --git a/app/Admin/Metrics/Examples/Order/OrderData.php b/app/Admin/Metrics/Examples/Order/OrderData.php index 5f7aaf7..1af21a6 100644 --- a/app/Admin/Metrics/Examples/Order/OrderData.php +++ b/app/Admin/Metrics/Examples/Order/OrderData.php @@ -3,6 +3,7 @@ namespace App\Admin\Metrics\Examples\Order; +use App\Admin\Common\Order; use App\Models\ImsCjdcOrder; use App\Models\ImsCjdcOrderMain; use Dcat\Admin\Widgets\Metrics\Card; @@ -50,48 +51,7 @@ class OrderData extends Card */ public function getOrderData($params,$option) { - //如果市场id存在 - $buildData = $this->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) = $this->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) = $this->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'); - } + $result = Order::getOrderData($params,$option); return $result; } @@ -102,40 +62,7 @@ class OrderData extends Card */ 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; - 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; - } + list($beginTime,$endTime) = Order::beginAndEnd($option); return [$beginTime,$endTime]; } @@ -146,9 +73,7 @@ class OrderData extends Card */ public function buildData() { - $build = ImsCjdcOrderMain - ::whereIn('state', [3, 4, 5, 10]) - ->where('type',1); + $build = Order::buildData(); return $build; } diff --git a/app/Admin/Repositories/v3/Salesman.php b/app/Admin/Repositories/v3/Salesman.php new file mode 100644 index 0000000..06578a8 --- /dev/null +++ b/app/Admin/Repositories/v3/Salesman.php @@ -0,0 +1,104 @@ +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']); // 传入总记录数// 传入数据二维数组 + } +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index a729727..f6b46bc 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -16,6 +16,7 @@ Route::group([ //$router->resource('/', 'LanzuCsInfoController'); $router->resource('/speaker', 'LanzuServiceSpeakerController'); $router->resource('/mp', 'LanzuMpInfoController'); + $router->resource('/salesman', 'v3\Salesman'); $router->any('/mp_data', 'LanzuMpInfoController@showData'); $router->resource('/mm', 'LanzuMmInfoController'); $router->resource('/market', 'ImsCjdcMarketController');