|
@@ -2,14 +2,12 @@
|
|
|
|
|
|
namespace App\Model;
|
|
|
|
|
|
-use App\Service\RangeService;
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
|
class UseScopeBaseModel extends Model
|
|
|
{
|
|
|
- //可见范围
|
|
|
- const range_function = '';
|
|
|
- const is_check_function = '';
|
|
|
+ //人员id字段
|
|
|
+ const employee_column = '';
|
|
|
|
|
|
public function __construct(array $attributes = [])
|
|
|
{
|
|
@@ -59,553 +57,53 @@ class UseScopeBaseModel extends Model
|
|
|
return $query;
|
|
|
}
|
|
|
|
|
|
- //部门和顶级部门(公司)过滤
|
|
|
public function scopeClear($query, $user, $search)
|
|
|
{
|
|
|
- //是否所有部门
|
|
|
- $is_all_depart = $user['is_all_depart'] ?? 0;
|
|
|
//权限范围内的部门
|
|
|
$depart_range = $user['depart_range'] ?? [];
|
|
|
- //我可见的
|
|
|
- $is_see = ! empty($search['is_see']);
|
|
|
- //全部 待审 待我审核
|
|
|
- $is_check = ! empty($search['is_check']);
|
|
|
+ $depart_range = array_column($depart_range,'depart_id') ?? [];
|
|
|
//个人 部门 所有
|
|
|
$auth_type = $this->getQx($search,$user);
|
|
|
// 获取模型的实例
|
|
|
$model = $query->getModel();
|
|
|
// 获取模型类名
|
|
|
$className = get_class($model);
|
|
|
+ // 人员字段
|
|
|
+ $column = defined($className . '::employee_column') ? constant($className . '::employee_column') : '';
|
|
|
|
|
|
- //可见范围方法
|
|
|
- $range_function = "";
|
|
|
- if (defined($className . '::range_function')) $range_function = $className::range_function;
|
|
|
- $function_range_bool = $this->hasMethod(new RangeService(),$range_function);
|
|
|
-
|
|
|
- //全部 待审 已审
|
|
|
- $is_check_function = "";
|
|
|
- if (defined($className . '::is_check_function')) $is_check_function = $className::is_check_function;
|
|
|
- $is_check_function_bool = $this->hasMethod(new RangeService(),$is_check_function);
|
|
|
-
|
|
|
- //外部传入的
|
|
|
- $search_depart_id = $search['top_depart_id'] ?? 0;
|
|
|
- //自身的
|
|
|
- $my_top_depart_id = $user['depart_top'][0] ?? [];
|
|
|
- $my_top_depart_id = $my_top_depart_id['depart_id'] ?? 0;
|
|
|
- if(empty($search_depart_id)){
|
|
|
- $top_depart_id = $my_top_depart_id;
|
|
|
- }else{
|
|
|
- if($is_all_depart){
|
|
|
- //顶级公司
|
|
|
- $top_depart_id = $search_depart_id;
|
|
|
- }else{
|
|
|
- $top_depart_id = $my_top_depart_id;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $id = [];
|
|
|
- //可见范围 以及单据里面填写人员 (状态类 是全部时检索)
|
|
|
- if($function_range_bool) $id = RangeService::$range_function($user,$search);
|
|
|
-
|
|
|
- //全部0 待审1 已审2 (状态类 是全部时检索)
|
|
|
- $check_search = "";
|
|
|
- if($is_check_function_bool && $is_check) $check_search = RangeService::$is_check_function($user,$search);
|
|
|
-
|
|
|
- if($is_see){
|
|
|
- //我可见的
|
|
|
- $query->whereIn('id', $id);
|
|
|
- }elseif($is_all_depart){
|
|
|
- //所有权限
|
|
|
- $this->allDepart($query, $is_check, $auth_type, $user, $depart_range, $search_depart_id, $top_depart_id, $id, $check_search);
|
|
|
- }else{
|
|
|
- //非所有权限
|
|
|
- $this->notAllDepart($query, $is_check, $auth_type, $user, $depart_range, $top_depart_id, $id, $check_search);
|
|
|
- }
|
|
|
-
|
|
|
- if(! empty($search['get_my_top_depart_data'])) $query->where('top_depart_id', $my_top_depart_id);
|
|
|
+ $this->makeModel($query, $auth_type, $user, $depart_range,$column);
|
|
|
}
|
|
|
|
|
|
//最高权限
|
|
|
- private function allDepart(&$query, $is_check, $auth_type, $user, $depart_range, $search_depart_id, $top_depart_id, $id, $check_search){
|
|
|
- if(empty($search_depart_id)){
|
|
|
- if ($is_check){
|
|
|
- if(! $auth_type){
|
|
|
- //全部
|
|
|
- $query->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- });
|
|
|
- }elseif($auth_type == 1){
|
|
|
- //我创建的 且加上可见
|
|
|
- $query->where('crt_id',$user['id'])
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif ($auth_type == 2 || $auth_type == 3){
|
|
|
- //自己权限范围内的部门 或 所有
|
|
|
- $query->whereIn('depart_id', $depart_range)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- });
|
|
|
- }
|
|
|
- }else{
|
|
|
- if($auth_type == 1) { //我创建的 且加上可见
|
|
|
- $query->where('crt_id',$user['id'])
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif ($auth_type == 2 || $auth_type == 3){
|
|
|
- //自己权限范围内的部门 或 所有
|
|
|
- $query->whereIn('depart_id', $depart_range);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- if ($is_check){
|
|
|
- if(! $auth_type){
|
|
|
- //查看指定公司
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- });
|
|
|
- }elseif($auth_type == 1) { //指定公司下 且 我创建的 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->where('crt_id',$user['id'])
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif ($auth_type == 2 || $auth_type == 3){
|
|
|
- // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }
|
|
|
- }else{
|
|
|
- if(! $auth_type){
|
|
|
- //查看指定公司
|
|
|
- $query->where('top_depart_id', $top_depart_id);
|
|
|
- }elseif($auth_type == 1) { //指定公司下 且 我创建的 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->where('crt_id',$user['id'])
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif ($auth_type == 2 || $auth_type == 3){
|
|
|
- // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //非所有权限
|
|
|
- private function notAllDepart(&$query, $is_check, $auth_type, $user, $depart_range, $top_depart_id, $id, $check_search){
|
|
|
- if ($is_check){
|
|
|
- if(! $auth_type || $auth_type == 3){
|
|
|
- //指定公司下全部 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }else if($auth_type == 1) {
|
|
|
- //指定公司下 且 我创建的 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->where('crt_id',$user['id'])
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif ($auth_type == 2) {
|
|
|
- //指定公司下 且 自己权限范围内的部门 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }
|
|
|
- }else{
|
|
|
- if(! $auth_type || $auth_type == 3){
|
|
|
- //指定公司下全部|所有 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif($auth_type == 1) {
|
|
|
- //指定公司下 且 我创建的 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->where('crt_id',$user['id'])
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }elseif ($auth_type == 2) {
|
|
|
- //指定公司下 且 自己权限范围内的部门 且加上可见
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->when(! empty($id), function ($query) use ($id) {
|
|
|
- return $query->orWhereIn('id', $id);
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //部门和顶级部门(公司)过滤 取别名a
|
|
|
- public function scopeAClear($query, $user, $search)
|
|
|
- {
|
|
|
- //是否所有部门
|
|
|
- $is_all_depart = $user['is_all_depart'] ?? 0;
|
|
|
- //权限范围内的部门
|
|
|
- $depart_range = $user['depart_range'] ?? [];
|
|
|
- //我可见的
|
|
|
- $is_see = $search['is_see'] ?? 0;
|
|
|
-
|
|
|
- //可见范围方法
|
|
|
- $model = $query->getModel(); // 获取模型的实例
|
|
|
- $range_function = $model::range_function ?? ""; // 访问静态属性
|
|
|
- $is_function_range = $this->hasMethod(new RangeService(),$range_function);
|
|
|
-
|
|
|
- //顶级部门
|
|
|
- $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //默认进来 自身顶级公司
|
|
|
- $top_depart_id = $user['depart_top'][0] ?? [];
|
|
|
- $top_depart_id = $top_depart_id['depart_id'] ?? 0;
|
|
|
- }else{
|
|
|
- //查询 顶级公司
|
|
|
- $top_depart_id = $search_depart_id;
|
|
|
- }
|
|
|
-
|
|
|
- $id = [];
|
|
|
- //可见范围 以及单据里面填写人员
|
|
|
- if($is_function_range) $id = RangeService::$range_function($user,$search);
|
|
|
-
|
|
|
- //个人部门所有
|
|
|
- $auth_type = $this->getQx($search,$user);
|
|
|
-
|
|
|
- if($is_all_depart){
|
|
|
- //所有权限
|
|
|
- if(empty($search_depart_id)){
|
|
|
- if(! $is_see){
|
|
|
- if(! $auth_type){
|
|
|
- //全部
|
|
|
- $query->whereIn('a.depart_id', $depart_range);
|
|
|
- }else{
|
|
|
- if($auth_type == 1) { //我创建的 且加上可见
|
|
|
- $query->where('a.crt_id',$user['id'])
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }elseif ($auth_type == 2 || $auth_type == 3){
|
|
|
- //自己权限范围内的部门 或 所有
|
|
|
- $query->whereIn('a.depart_id', $depart_range);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- //可见
|
|
|
- $query->whereIn('a.id', $id);
|
|
|
- }
|
|
|
- }else{
|
|
|
- if(! $is_see){
|
|
|
- if(! $auth_type){
|
|
|
- //查看指定公司
|
|
|
- $query->where('a.top_depart_id', $top_depart_id);
|
|
|
- }else{
|
|
|
- if($auth_type == 1) { //指定公司下 且 我创建的 且加上可见
|
|
|
- $query->where('a.top_depart_id', $top_depart_id)
|
|
|
- ->where('a.crt_id',$user['id'])
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }elseif ($auth_type == 2 || $auth_type == 3){
|
|
|
- // (指定公司下的 且 自己权限范围内的部门 或 所有) 且加上可见
|
|
|
- $query->where('a.top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('a.depart_id', $depart_range)
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- //查看指定公司 且 我可见
|
|
|
- $query->whereIn('a.id', $id);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- //非所有权限
|
|
|
- if(! $is_see){
|
|
|
- if(! $auth_type){
|
|
|
- //指定公司下全部 且加上可见
|
|
|
- $query->where('a.top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('a.depart_id', $depart_range)
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }else{
|
|
|
- if($auth_type == 1) {
|
|
|
- //指定公司下 且 我创建的 且加上可见
|
|
|
- $query->where('a.top_depart_id', $top_depart_id)
|
|
|
- ->where('a.crt_id',$user['id'])
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }elseif ($auth_type == 2) {
|
|
|
- //指定公司下 且 自己权限范围内的部门 且加上可见
|
|
|
- $query->where('a.top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('a.depart_id', $depart_range)
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }elseif ($auth_type == 3) {
|
|
|
- // 指定公司下所有 且加上可见
|
|
|
- $query->where('a.top_depart_id', $top_depart_id)
|
|
|
- ->orWhereIn('a.id', $id);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- //某个分社可见
|
|
|
- $query->whereIn('a.id', $id);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //顶级部门过滤 取别名a
|
|
|
- public function scopeATopClear($query, $user, $search)
|
|
|
- {
|
|
|
- //是否所有部门
|
|
|
- $is_all_depart = $user['is_all_depart'] ?? 0;
|
|
|
- //权限范围内的部门
|
|
|
- $depart_range = $user['depart_range'] ?? [];
|
|
|
-
|
|
|
- //顶级部门
|
|
|
- $search_depart_id = $search['top_depart_id'] ?? 0;
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //默认进来 自身顶级公司
|
|
|
- $top_depart_id = $user['depart_top'][0] ?? [];
|
|
|
- $top_depart_id = $top_depart_id['depart_id'] ?? 0;
|
|
|
- }else{
|
|
|
- //查询 顶级公司
|
|
|
- $top_depart_id = $search_depart_id;
|
|
|
- }
|
|
|
-
|
|
|
- if($is_all_depart){
|
|
|
- //所有部门
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //全部
|
|
|
- $query->whereIn('a.top_depart_id', $depart_range);
|
|
|
- }else{
|
|
|
- //查看某个分社
|
|
|
- $query->where('a.top_depart_id', $top_depart_id);
|
|
|
- }
|
|
|
- }else{
|
|
|
- //某个分社全部
|
|
|
- $query->where('a.top_depart_id', $top_depart_id);
|
|
|
- }
|
|
|
-
|
|
|
- return $query;
|
|
|
- }
|
|
|
-
|
|
|
- //产品不可见 部门和顶级部门(公司)过滤
|
|
|
- public function scopeProductClear($query, $user, $search)
|
|
|
- {
|
|
|
- //是否所有部门
|
|
|
- $is_all_depart = $user['is_all_depart'] ?? 0;
|
|
|
- //权限范围内的部门
|
|
|
- $depart_range = $user['depart_range'] ?? [];
|
|
|
- //总社id
|
|
|
- $top_depart_id = $user['head'] ?? [];
|
|
|
- $top_depart = $top_depart_id['id'] ?? 0;
|
|
|
-
|
|
|
- //可见范围方法
|
|
|
- $model = $query->getModel(); // 获取模型的实例
|
|
|
- $range_function = $model::range_function ?? ""; // 访问静态属性
|
|
|
- $is_function_range = $this->hasMethod(new RangeService(),$range_function);
|
|
|
-
|
|
|
- //顶级部门
|
|
|
- $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //默认进来 自身顶级公司
|
|
|
- $top_depart_id = $user['depart_top'][0] ?? [];
|
|
|
- $top_depart_id = $top_depart_id['depart_id'] ?? 0;
|
|
|
- }else{
|
|
|
- //查询 顶级公司
|
|
|
- $top_depart_id = $search_depart_id;
|
|
|
- }
|
|
|
-
|
|
|
- $id = [];
|
|
|
- //产品 不可见范围
|
|
|
- if($is_function_range) $id = RangeService::$range_function($user,$search);
|
|
|
-
|
|
|
- if($is_all_depart){
|
|
|
- //所有部门
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //全部
|
|
|
- $query->whereIn('depart_id', $depart_range);
|
|
|
- }else{
|
|
|
- //查看某个分社
|
|
|
- $query->where('top_depart_id', $top_depart_id);
|
|
|
+ private function makeModel(&$query, $auth_type, $user, $depart_range, $column){
|
|
|
+ if(empty($column)) return;
|
|
|
+
|
|
|
+ if($auth_type == Employee::AUTH_ONE){
|
|
|
+ //我创建的
|
|
|
+ $query->where($column,$user['id']);
|
|
|
+ }elseif ($auth_type == Employee::AUTH_TWO){
|
|
|
+ if (empty($depart_range)) {
|
|
|
+ $query->whereRaw('1 = 0');
|
|
|
+ } else {
|
|
|
+ $query->whereExists(function ($q) use ($column, $depart_range) {
|
|
|
+ $q->from('employee_depart_permission')
|
|
|
+ ->whereColumn('employee_depart_permission.employee_id', $column)
|
|
|
+ ->whereIn('employee_depart_permission.depart_id', $depart_range);
|
|
|
+ });
|
|
|
}
|
|
|
- }else{
|
|
|
- //某个分社全部 去掉不可见数
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->orWhere('top_depart_id',$top_depart)
|
|
|
- ->whereNotIn('id', $id);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //产品不可见 部门和顶级部门(公司)过滤
|
|
|
- public function scopeProductClear2($query, $user, $search)
|
|
|
- {
|
|
|
- //是否所有部门
|
|
|
- $is_all_depart = $user['is_all_depart'] ?? 0;
|
|
|
- //权限范围内的部门
|
|
|
- $depart_range = $user['depart_range'] ?? [];
|
|
|
- //总社id
|
|
|
- $top_depart_id = $user['head'] ?? [];
|
|
|
- $top_depart = $top_depart_id['id'] ?? 0;
|
|
|
-
|
|
|
- //可见范围方法
|
|
|
- $model = $query->getModel(); // 获取模型的实例
|
|
|
- $range_function = $model::range_function ?? ""; // 访问静态属性
|
|
|
- $is_function_range = $this->hasMethod(new RangeService(),$range_function);
|
|
|
-
|
|
|
- //顶级部门
|
|
|
- $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //默认进来 自身顶级公司
|
|
|
- $top_depart_id = $user['depart_top'][0] ?? [];
|
|
|
- $top_depart_id = $top_depart_id['depart_id'] ?? 0;
|
|
|
- }else{
|
|
|
- //查询 顶级公司
|
|
|
- $top_depart_id = $search_depart_id;
|
|
|
- }
|
|
|
-
|
|
|
- $id = [];
|
|
|
- //产品 不可见范围
|
|
|
- if($is_function_range) $id = RangeService::$range_function($user,$search);
|
|
|
-
|
|
|
- if($is_all_depart){
|
|
|
- //所有部门
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //全部
|
|
|
- $query->whereIn('depart_id', $depart_range);
|
|
|
- }else{
|
|
|
- //查看某个分社
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->orWhere('top_depart_id',$top_depart);
|
|
|
- }
|
|
|
- }else{
|
|
|
- //某个分社全部 去掉不可见数
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->orWhere('top_depart_id',$top_depart)
|
|
|
- ->whereNotIn('id', $id);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //活动包 部门和顶级部门(公司)过滤
|
|
|
- public function scopeSportsBagClear($query, $user, $search)
|
|
|
- {
|
|
|
- //是否所有部门
|
|
|
- $is_all_depart = $user['is_all_depart'] ?? 0;
|
|
|
- //权限范围内的部门
|
|
|
- $depart_range = $user['depart_range'] ?? [];
|
|
|
- //总社id
|
|
|
- $top_depart_id = $user['head'] ?? [];
|
|
|
- $top_depart = $top_depart_id['id'] ?? 0;
|
|
|
-
|
|
|
- //可见范围方法
|
|
|
- $model = $query->getModel(); // 获取模型的实例
|
|
|
- $range_function = $model::range_function ?? ""; // 访问静态属性
|
|
|
- $is_function_range = $this->hasMethod(new RangeService(),$range_function);
|
|
|
-
|
|
|
- $model = $query->getModel(); // 获取模型的实例
|
|
|
- $className = get_class($model); // 获取模型类名
|
|
|
-
|
|
|
- //全部 待审 待我审核
|
|
|
- if(isset($search['is_check'])){
|
|
|
- if($search['is_check']){
|
|
|
- $is_check = $search['is_check'];
|
|
|
- }else{
|
|
|
- $is_check = 0;
|
|
|
- }
|
|
|
- }else{
|
|
|
- $is_check = 0;
|
|
|
- }
|
|
|
-
|
|
|
- //全部 待审 已审
|
|
|
- $is_check_function = "";
|
|
|
- if (defined($className . '::is_check_function')) $is_check_function = $className::is_check_function;
|
|
|
- $is_check_function_bool = $this->hasMethod(new RangeService(),$is_check_function);
|
|
|
-
|
|
|
- //全部0 待审1 已审2 (状态类 是全部时检索)
|
|
|
- $check_search = "";
|
|
|
- if($is_check_function_bool && $is_check) $check_search = RangeService::$is_check_function($user,$search);
|
|
|
-
|
|
|
- //顶级部门
|
|
|
- $search_depart_id = $search['top_depart_id'] ?? 0; //顶级公司
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //默认进来 自身顶级公司
|
|
|
- $top_depart_id = $user['depart_top'][0] ?? [];
|
|
|
- $top_depart_id = $top_depart_id['depart_id'] ?? 0;
|
|
|
- }else{
|
|
|
- //查询 顶级公司
|
|
|
- $top_depart_id = $search_depart_id;
|
|
|
- }
|
|
|
-
|
|
|
- $id = [];
|
|
|
- //不可见范围
|
|
|
- if($is_function_range) $id = RangeService::$range_function($user,$search);
|
|
|
-
|
|
|
- if($is_all_depart){
|
|
|
- //所有部门
|
|
|
- if(empty($search_depart_id)){
|
|
|
- //全部
|
|
|
- $query->whereIn('depart_id', $depart_range)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- });
|
|
|
- }else{
|
|
|
- //查看某个分社
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- });
|
|
|
- }
|
|
|
- }else{
|
|
|
- if($check_search){
|
|
|
- $check_search2 = "(" . $check_search . " And top_depart_id = {$top_depart})";
|
|
|
- } else{
|
|
|
- $check_search2 = "(top_depart_id = {$top_depart})";
|
|
|
- }
|
|
|
-
|
|
|
- //某个分社全部 去掉不可见数
|
|
|
- $query->where('top_depart_id', $top_depart_id)
|
|
|
- ->when(! empty($check_search), function ($query) use ($check_search) {
|
|
|
- return $query->whereRaw($check_search);
|
|
|
- })
|
|
|
- ->whereIn('depart_id', $depart_range)
|
|
|
- ->whereNotIn('id', $id)
|
|
|
- ->OrWhereRaw($check_search2);
|
|
|
+ }elseif ($auth_type == Employee::AUTH_THREE){
|
|
|
+ //所有
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function getQx($data, $user){
|
|
|
- if(empty($data['menu_id'])) return 0;
|
|
|
- if($user['id'] == Employee::SPECIAL_ADMIN) return 0;
|
|
|
+ if(empty($data['menu_id'])) return Employee::AUTH_ONE; // 我的
|
|
|
+ if($user['id'] == Employee::SPECIAL_ADMIN) return Employee::AUTH_THREE; // 全部
|
|
|
if(! empty($user['role_authority'][$data['menu_id']])) {
|
|
|
//指定菜单 显示对应权限
|
|
|
return $user['role_authority'][$data['menu_id']];
|
|
|
}else{
|
|
|
- return 0;
|
|
|
+ return Employee::AUTH_ONE; // 我的
|
|
|
}
|
|
|
}
|
|
|
|