46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?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;
|
|
}
|
|
|
|
} |