Base.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\admin\controller;
  4. use app\admin\model\RoleGroup;
  5. use app\admin\model\RoleShare;use app\BaseController;
  6. use think\App;
  7. class Base extends BaseController
  8. {
  9. protected $noLogin=[];
  10. protected $uid=0;
  11. protected $uname="system";
  12. protected $roleid=0;
  13. protected $level=0;
  14. protected $token="";
  15. protected $model=null;
  16. public function __construct(App $app) {
  17. parent::__construct($app);
  18. $this->token = $this->request->param('token','','trim');
  19. if (!action_in_arr($this->noLogin)){
  20. if($this->token=='')throw new \Exception('token不能为空',101);
  21. $this->Auth();
  22. }
  23. }
  24. /**授权token鉴定
  25. * @return \think\response\Json|void
  26. */
  27. public function Auth(){
  28. $User = \app\common\User::instance();
  29. $reLaNo= $this->request->param('relaComNo','','trim');
  30. $User->init($this->token);
  31. if (!$User->isLogin()) throw new \Exception($User->getError(),$User->getErroCode());
  32. $this->uid = $User->id;
  33. $this->uname = $User->nickname;
  34. $this->level = $User->level;
  35. $this->roleid =1;
  36. if($User->level==2){
  37. $this->roleid = \app\admin\model\UserRole::GetRoleIdByCompnyNoAndUid($reLaNo,$User->id);
  38. if($this->roleid==='') throw new \Exception( '没有该公司的角色','101');
  39. }
  40. }
  41. /**校验所有权限
  42. *合并共享 及分享出去的权限
  43. * @return array
  44. */
  45. public function checkRole(){
  46. $action = [
  47. 'action_conllect'=>'',
  48. 'write'=>[],
  49. 'platform'=>[],
  50. 'roleid'=>$this->roleid
  51. ];
  52. if($this->level==2){
  53. $roleinfo =\app\admin\model\RoleAction::where('roleid',$this->roleid)->findOrEmpty();
  54. $action['action_conllect'] = $roleinfo->action_conllect;
  55. $action['write'][] = $this->uid;
  56. $group= RoleGroup::whereFindInSet('group_user',$this->uid)->column("id");
  57. $where = ["to_user"=>$this->uid];
  58. if(!empty($group)){
  59. $where['to_group'] =$group;
  60. }
  61. $platform = \app\admin\model\UserPlatform::where(['uid' => $this->uid, 'is_del' => 0])->findOrEmpty();
  62. $action['platform'] = $platform->platform??[];
  63. $share = RoleShare::where(['is_del' => 0, 'status' => 1])->whereOr($where)->select();
  64. if(!$share->isEmpty()){
  65. $share->each(function ($item) use (&$action) {
  66. switch ($item->action) {
  67. case '':
  68. case 0:
  69. if ($item->share_user!='') $action['write'][] =$item->share_user;
  70. if($item->action_conllect!=''){
  71. $conllect = \app\admin\model\Action::whereIn("menuid",$item->action_conllect)->where(["action_code"=>"001"])->column("id");
  72. $action['action_conllect'] = array_unique(array_merge($action['action_conllect'],$conllect)) ;
  73. }
  74. break;
  75. case 1:
  76. if($item->share_user!=''){
  77. $action['write'][] =$item->share_user;
  78. $user = \app\admin\model\UserRole::where(["uid"=>$item->share_user,"is_del"=>0,"status"=>1])->findOrEmpty();
  79. if(!$user->isEmpty()){
  80. $conllect = \app\admin\model\Action::whereIn("menuid",$item->action_conllect)->column("id");
  81. $action['action_conllect'] = array_unique(array_merge($action['action_conllect'],array_intersect($conllect, $item->action_conllect))) ;
  82. }
  83. }
  84. break;
  85. }
  86. });
  87. }
  88. $resign = \app\admin\model\ResignInfo::where(['hand_uid'=>$this->uid,'is_del'=>0,'status'=>4])->column(['resign_uid']);
  89. if(!empty($resign)){
  90. $action['write'] = array_unique(array_merge($action['write'],$resign));
  91. }
  92. $action['roleid'] = $this->roleid;
  93. return $action;
  94. }
  95. }
  96. }