仪表盘路由规则
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\logic;
|
||||
|
||||
use app\common\model\User;
|
||||
use app\common\model\UserGroup;
|
||||
use app\common\model\UserGroupMembers;
|
||||
use app\common\traits\crud\CrudLogicTrait;
|
||||
use app\common\model\UserDashboardRule;
|
||||
|
||||
class UserDashboardRuleLogic
|
||||
{
|
||||
use CrudLogicTrait;
|
||||
|
||||
/**
|
||||
* 指定当前要操作的模型
|
||||
*/
|
||||
protected string $modelClass = UserDashboardRule::class;
|
||||
|
||||
public function getUserDashboard($userId)
|
||||
{
|
||||
$user = User::with('reportToInfo')->find($userId);;
|
||||
//获取用户所在分组
|
||||
$ugm = UserGroupMembers::where('user_id', $userId)->where('status', 1)->get();
|
||||
|
||||
$roleRule = UserDashboardRule::orWhere(function ($query) use ($user) {
|
||||
$query->whereIn('related', $user->roles->pluck('id'))
|
||||
->where('rule_type', 'role');
|
||||
})
|
||||
->orWhere(function ($query) use ($userId) {
|
||||
$query->where('related', $userId)
|
||||
->where('rule_type', 'user');
|
||||
})
|
||||
->orWhere(function ($query) use ($ugm) {
|
||||
$query->where('related', $ugm->group_id)
|
||||
->where('rule_type', 'group');
|
||||
})
|
||||
->orderBy('weight','desc')
|
||||
->orderBy('rule_type','desc')
|
||||
->first();
|
||||
|
||||
$resources_id = $roleRule?$roleRule->resources_id:null;
|
||||
return $resources_id;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user