Browse Source

添加列表数据权限

liugc 1 năm trước cách đây
mục cha
commit
4b1af0e03a

+ 50 - 2
app/adminapi/lists/works/IssueWorkLists.php

@@ -16,9 +16,12 @@ namespace app\adminapi\lists\works;
 
 
 
 
 use app\adminapi\lists\BaseAdminDataLists;
 use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\property\PropertyOrder;
 use app\common\model\works\IssueWork;
 use app\common\model\works\IssueWork;
 use app\common\lists\ListsSearchInterface;
 use app\common\lists\ListsSearchInterface;
 use think\db\Query;
 use think\db\Query;
+use think\facade\Db;
+use think\facade\Log;
 
 
 
 
 /**
 /**
@@ -29,7 +32,7 @@ use think\db\Query;
 class IssueWorkLists extends BaseAdminDataLists implements ListsSearchInterface
 class IssueWorkLists extends BaseAdminDataLists implements ListsSearchInterface
 {
 {
 
 
-
+    public $queryExists = null;
     /**
     /**
      * @notes 设置搜索条件
      * @notes 设置搜索条件
      * @return \string[][]
      * @return \string[][]
@@ -65,6 +68,49 @@ class IssueWorkLists extends BaseAdminDataLists implements ListsSearchInterface
         }
         }
         return $where;
         return $where;
     }
     }
+
+    /**
+     * 获取数据权限
+     * $this->adminInfo['data_rules']
+     * province city admin_id sale_group_id sale_id  property_head_id
+     */
+    public function queryDataWhere(){
+        $where = [];
+        $data_rules = $this->adminInfo['data_rules'];
+        $this->queryExists = function (Query $query) use ($data_rules) { $query->name('service_work')->where('id','>', 0)->field('id'); };
+        if (isset($data_rules['province']) && !empty($data_rules['province'])) {
+            $this->queryExists = function (Query $query) {
+                $p_table = $query->getTable().$query->getName();
+                $query->name('service_work')->alias('b')
+                    ->where('province','in', $data_rules['province'])
+                    ->where($p_table.'.service_work_id', '=', Db::raw('b.id'))
+                    ->field('id');
+            };
+        }
+        if (isset($data_rules['city']) && !empty($data_rules['city'])) {
+            $this->queryExists = function (Query $query) use ($data_rules) {
+                $p_table = $query->getTable().$query->getName();
+                $query->name('service_work')->alias('b')
+                    ->where('city','in', $data_rules['city'])
+                    ->where($p_table.'.service_work_id', '=', Db::raw('b.id'))
+                    ->field('id');
+            };
+        }
+        if (isset($data_rules['sale_group_id']) && !empty($data_rules['sale_group_id'])) {
+            $work_ids = PropertyOrder::where('sale_group_id','in',$data_rules['sale_group_id'])->column('work_id')??[];
+            $where[] = ['service_work_id','in' ,$work_ids];
+        }
+        if (isset($data_rules['sale_id']) && !empty($data_rules['sale_id'])) {
+            $work_ids = PropertyOrder::where('sale_id','in',$data_rules['sale_id'])->column('work_id')??[];
+            $where[] = ['service_work_id','in' ,$work_ids];
+        }
+        if (isset($data_rules['property_head_id']) && !empty($data_rules['property_head_id'])) {
+            $work_ids = PropertyOrder::where('property_head_id','in',$data_rules['property_head_id'])->column('work_id')??[];
+            $where[] = ['service_work_id','in' ,$work_ids];
+        }
+        return $where;
+    }
+
     /**
     /**
      * @notes 获取列表
      * @notes 获取列表
      * @return array
      * @return array
@@ -91,6 +137,8 @@ class IssueWorkLists extends BaseAdminDataLists implements ListsSearchInterface
             ])
             ])
             ->where($this->searchWhere)
             ->where($this->searchWhere)
             ->where($this->querySearch())
             ->where($this->querySearch())
+            ->where($this->queryDataWhere())
+            ->whereExists($this->queryExists)
             ->field(['id', 'work_sn', 'service_work_id', 'master_worker_id','user_id', 'issue_approval', 'complaint_status', 'responsible', 'complaint_details', 'complaint_images', 'finished_time', 'approval_admin_id', 'approval_time', 'create_time', 'update_time','appeal_info'])
             ->field(['id', 'work_sn', 'service_work_id', 'master_worker_id','user_id', 'issue_approval', 'complaint_status', 'responsible', 'complaint_details', 'complaint_images', 'finished_time', 'approval_admin_id', 'approval_time', 'create_time', 'update_time','appeal_info'])
             ->limit($this->limitOffset, $this->limitLength)
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
             ->order(['id' => 'desc'])
@@ -107,7 +155,7 @@ class IssueWorkLists extends BaseAdminDataLists implements ListsSearchInterface
      */
      */
     public function count(): int
     public function count(): int
     {
     {
-       return IssueWork::where($this->searchWhere)->where($this->querySearch())->count();
+       return IssueWork::where($this->searchWhere)->where($this->querySearch())->where($this->queryDataWhere())->whereExists($this->queryExists)->count();
     }
     }
 
 
 }
 }

+ 47 - 3
app/adminapi/lists/works/ReturnWorkLists.php

@@ -16,9 +16,11 @@ namespace app\adminapi\lists\works;
 
 
 
 
 use app\adminapi\lists\BaseAdminDataLists;
 use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\property\PropertyOrder;
 use app\common\model\works\ReturnWork;
 use app\common\model\works\ReturnWork;
 use app\common\lists\ListsSearchInterface;
 use app\common\lists\ListsSearchInterface;
 use think\db\Query;
 use think\db\Query;
+use think\facade\Db;
 
 
 
 
 /**
 /**
@@ -29,7 +31,7 @@ use think\db\Query;
 class ReturnWorkLists extends BaseAdminDataLists implements ListsSearchInterface
 class ReturnWorkLists extends BaseAdminDataLists implements ListsSearchInterface
 {
 {
 
 
-
+    public $queryExists = null;
     /**
     /**
      * @notes 设置搜索条件
      * @notes 设置搜索条件
      * @return \string[][]
      * @return \string[][]
@@ -44,7 +46,47 @@ class ReturnWorkLists extends BaseAdminDataLists implements ListsSearchInterface
         ];
         ];
     }
     }
 
 
-
+    /**
+     * 获取数据权限
+     * $this->adminInfo['data_rules']
+     * province city admin_id sale_group_id sale_id  property_head_id
+     */
+    public function queryDataWhere(){
+        $where = [];
+        $data_rules = $this->adminInfo['data_rules'];
+        $this->queryExists = function (Query $query) use ($data_rules) { $query->name('service_work')->where('id','>', 0)->field('id'); };
+        if (isset($data_rules['province']) && !empty($data_rules['province'])) {
+            $this->queryExists = function (Query $query) {
+                $p_table = $query->getTable().$query->getName();
+                $query->name('service_work')->alias('b')
+                    ->where('province','in', $data_rules['province'])
+                    ->where($p_table.'.service_work_id', '=', Db::raw('b.id'))
+                    ->field('id');
+            };
+        }
+        if (isset($data_rules['city']) && !empty($data_rules['city'])) {
+            $this->queryExists = function (Query $query) use ($data_rules) {
+                $p_table = $query->getTable().$query->getName();
+                $query->name('service_work')->alias('b')
+                    ->where('city','in', $data_rules['city'])
+                    ->where($p_table.'.service_work_id', '=', Db::raw('b.id'))
+                    ->field('id');
+            };
+        }
+        if (isset($data_rules['sale_group_id']) && !empty($data_rules['sale_group_id'])) {
+            $work_ids = PropertyOrder::where('sale_group_id','in',$data_rules['sale_group_id'])->column('work_id')??[];
+            $where[] = ['service_work_id','in' ,$work_ids];
+        }
+        if (isset($data_rules['sale_id']) && !empty($data_rules['sale_id'])) {
+            $work_ids = PropertyOrder::where('sale_id','in',$data_rules['sale_id'])->column('work_id')??[];
+            $where[] = ['service_work_id','in' ,$work_ids];
+        }
+        if (isset($data_rules['property_head_id']) && !empty($data_rules['property_head_id'])) {
+            $work_ids = PropertyOrder::where('property_head_id','in',$data_rules['property_head_id'])->column('work_id')??[];
+            $where[] = ['service_work_id','in' ,$work_ids];
+        }
+        return $where;
+    }
     /**
     /**
      * @notes 获取列表
      * @notes 获取列表
      * @return array
      * @return array
@@ -59,6 +101,8 @@ class ReturnWorkLists extends BaseAdminDataLists implements ListsSearchInterface
         return ReturnWork::with(['masterWorker'=>function(Query $query){
         return ReturnWork::with(['masterWorker'=>function(Query $query){
             $query->field('id,real_name,worker_number');
             $query->field('id,real_name,worker_number');
         }])->where($this->searchWhere)
         }])->where($this->searchWhere)
+            ->where($this->queryDataWhere())
+            ->whereExists($this->queryExists)
             ->field(['id', 'work_sn', 'service_work_id', 'issue_work_id', 'return_work_status', 'dispatch_time', 'appointment_time', 'finished_images', 'finished_time', 'master_worker_id', 'create_time', 'update_time'])
             ->field(['id', 'work_sn', 'service_work_id', 'issue_work_id', 'return_work_status', 'dispatch_time', 'appointment_time', 'finished_images', 'finished_time', 'master_worker_id', 'create_time', 'update_time'])
             ->limit($this->limitOffset, $this->limitLength)
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
             ->order(['id' => 'desc'])
@@ -75,7 +119,7 @@ class ReturnWorkLists extends BaseAdminDataLists implements ListsSearchInterface
      */
      */
     public function count(): int
     public function count(): int
     {
     {
-        return ReturnWork::where($this->searchWhere)->count();
+        return ReturnWork::where($this->searchWhere)->where($this->queryDataWhere())->whereExists($this->queryExists)->count();
     }
     }
 
 
 }
 }

+ 31 - 2
app/adminapi/lists/works/ServiceWorkLists.php

@@ -18,6 +18,7 @@ namespace app\adminapi\lists\works;
 use app\adminapi\lists\BaseAdminDataLists;
 use app\adminapi\lists\BaseAdminDataLists;
 use app\common\model\goods_category\GoodsCategory;
 use app\common\model\goods_category\GoodsCategory;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorker;
+use app\common\model\property\PropertyOrder;
 use app\common\model\works\ServiceWork;
 use app\common\model\works\ServiceWork;
 use app\common\lists\ListsSearchInterface;
 use app\common\lists\ListsSearchInterface;
 use think\db\Query;
 use think\db\Query;
@@ -32,7 +33,34 @@ use think\facade\Log;
 class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterface
 class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterface
 {
 {
 
 
-
+    /**
+     * 获取数据权限
+     * $this->adminInfo['data_rules']
+     * province city admin_id sale_group_id sale_id  property_head_id
+     */
+    public function queryDataWhere(){
+        $where = [];
+        $data_rules = $this->adminInfo['data_rules'];
+        if (isset($data_rules['province']) && !empty($data_rules['province'])) {
+            $where[] = ['province','in' ,$data_rules['province']];
+        }
+        if (isset($data_rules['city']) && !empty($data_rules['city'])) {
+            $where[] = ['city','in' ,$data_rules['city']];
+        }
+        if (isset($data_rules['sale_group_id']) && !empty($data_rules['sale_group_id'])) {
+            $work_ids = PropertyOrder::where('sale_group_id','in',$data_rules['sale_group_id'])->column('work_id')??[];
+            $where[] = ['id','in' ,$work_ids];
+        }
+        if (isset($data_rules['sale_id']) && !empty($data_rules['sale_id'])) {
+            $work_ids = PropertyOrder::where('sale_id','in',$data_rules['sale_id'])->column('work_id')??[];
+            $where[] = ['id','in' ,$work_ids];
+        }
+        if (isset($data_rules['property_head_id']) && !empty($data_rules['property_head_id'])) {
+            $work_ids = PropertyOrder::where('property_head_id','in',$data_rules['property_head_id'])->column('work_id')??[];
+            $where[] = ['id','in' ,$work_ids];
+        }
+        return $where;
+    }
     /**
     /**
      * @notes 设置搜索条件
      * @notes 设置搜索条件
      * @return \string[][]
      * @return \string[][]
@@ -144,6 +172,7 @@ class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterfac
         ])
         ])
             ->where($this->searchWhere)
             ->where($this->searchWhere)
             ->where($this->queryWhere())
             ->where($this->queryWhere())
+            ->where($this->queryDataWhere())
             ->field(['id', 'work_sn', 'real_name', 'mobile', 'address', 'title', 'category_type', 'goods_category_ids', 'goods_category_id', 'base_service_fee', 'service_fee', 'work_status','work_pay_status', 'service_status', 'dispatch_time', 'receive_time', 'appointment_time', 'finished_images', 'finished_time', 'master_worker_id', 'work_amount', 'work_type', 'create_time', 'update_time','lon', 'lat','appoint_approval','refund_approval','finally_door_time','property_activity_id'])
             ->field(['id', 'work_sn', 'real_name', 'mobile', 'address', 'title', 'category_type', 'goods_category_ids', 'goods_category_id', 'base_service_fee', 'service_fee', 'work_status','work_pay_status', 'service_status', 'dispatch_time', 'receive_time', 'appointment_time', 'finished_images', 'finished_time', 'master_worker_id', 'work_amount', 'work_type', 'create_time', 'update_time','lon', 'lat','appoint_approval','refund_approval','finally_door_time','property_activity_id'])
             ->limit($this->limitOffset, $this->limitLength)
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
             ->order(['id' => 'desc'])
@@ -160,7 +189,7 @@ class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterfac
      */
      */
     public function count(): int
     public function count(): int
     {
     {
-        return ServiceWork::where($this->searchWhere)->where($this->queryWhere())->count();
+        return ServiceWork::where($this->searchWhere)->where($this->queryWhere())->where($this->queryDataWhere())->count();
     }
     }
 
 
 }
 }