diff --git a/app/Admin/Actions/Tools/SalesmanOption.php b/app/Admin/Actions/Tools/SalesmanOption.php
new file mode 100644
index 0000000..3e33414
--- /dev/null
+++ b/app/Admin/Actions/Tools/SalesmanOption.php
@@ -0,0 +1,54 @@
+script());
+// $options = [
+// 't' => '今日',
+// 'y' => '昨日',
+// 'w' => '本周',
+// 'm' => '本月',
+// ];
+ $options = [
+ 'all' => 'All',
+ 'm' => 'Male',
+ 'f' => 'Female',
+ ];
+
+ return view('admin.tools.salesman', compact('options'));
+ }
+}
diff --git a/app/Admin/Common/Order.php b/app/Admin/Common/Order.php
new file mode 100644
index 0000000..9d09dec
--- /dev/null
+++ b/app/Admin/Common/Order.php
@@ -0,0 +1,132 @@
+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"));
+
+ //当前日期
+ $sdefaultDate = date("Y-m-d");
+ //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
+ $first=1;
+ //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
+ $w=date('w',strtotime($sdefaultDate));
+ //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
+ $beginTime=strtotime("$sdefaultDate -".($w ? $w - $first : 6).' days');
+ //本周结束日期
+ $start = date('Y-m-d',$beginTime);
+ $endTime=strtotime("$start +6 days")+86399;
+ 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..ea0d255
--- /dev/null
+++ b/app/Admin/Controllers/v3/Salesman.php
@@ -0,0 +1,53 @@
+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('person_id','拓展员懒ID');
+ });
+ });
+ }else{
+ return Grid::make(new \App\Admin\Repositories\v3\Salesman(),function (Grid $grid){
+
+ $grid->tools(new SalesmanOption());
+ $grid->paginate(10);
+ $grid->column('person_id','懒ID');
+ $grid->column('nick_name','拓展员');
+ $grid->column('total','社区总数');
+ $grid->column('t_num','订单数');
+ $grid->column('t_amount','成交额');
+ $grid->disableActions();
+ $grid->filter(function (Grid\Filter $filter){
+ $filter->equal('person_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..d76ed90
--- /dev/null
+++ b/app/Admin/Repositories/v3/Salesman.php
@@ -0,0 +1,59 @@
+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);
+ }
+ $option = request()->get('option');
+ //>>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
+ ],$option);//今日订单数
+ $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
+ ],$option);//今日订单金额
+ unset($value['admin_user_id']);
+ unset($value['user_id']);
+ }
+ return $model->makePaginator($rows['total'],$rows['data']); // 传入总记录数// 传入数据二维数组
+ }
+}
diff --git a/app/Admin/routes.php b/app/Admin/routes.php
index b79a123..416b3fe 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');
diff --git a/app/Http/Controllers/Salesman.php b/app/Http/Controllers/Salesman.php
new file mode 100644
index 0000000..51071c3
--- /dev/null
+++ b/app/Http/Controllers/Salesman.php
@@ -0,0 +1,111 @@
+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)->get()->toArray();
+ foreach ($rows 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');//本月订单金额
+ unset($value['admin_user_id']);
+ unset($value['user_id']);
+ }
+
+ DB::beginTransaction();
+ try {
+ DB::table('lanzu_salesman_data')->delete();
+ $result = DB::table('lanzu_salesman_data')->insert($rows);
+ if ($result){
+ echo 'success';
+ }else{
+ echo 'fail';
+ }
+ DB::commit();
+ }catch (\Exception $e){
+ Log::debug('社区拓展员数据添加失败',[$e->getMessage()]);
+ DB::rollBack();
+ }
+ }
+}
diff --git a/app/Models/v3/SalesmanData.php b/app/Models/v3/SalesmanData.php
new file mode 100644
index 0000000..537c04b
--- /dev/null
+++ b/app/Models/v3/SalesmanData.php
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/routes/web.php b/routes/web.php
index c2497f9..1eba8b1 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -19,3 +19,4 @@ Route::get('/', function(){
Route::get('/test', 'TestController@Test');
Route::any('/rpc', 'TestController@testRpc');
+Route::any('/add', 'Salesman@addData');