SysMenuFuncAuthService.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ywl
  5. * Date: 2017/4/14
  6. * Time: 11:38
  7. */
  8. namespace App\User\Services;
  9. use App\Exceptions\ApiException;
  10. use App\Services\CommonBaseService;
  11. use App\User\Models\SysAdminUserModel;
  12. use Illuminate\Support\Facades\Cache;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\DB;
  15. use Illuminate\Support\Facades\Mail;
  16. class SysMenuFuncAuthService extends CommonBaseService
  17. {
  18. protected $cache = true;
  19. protected $cacheBucket = 'SysMenuFuncAuth:';
  20. protected $tokenBucket = 'Token:';
  21. protected $activeBucket = "Active:";
  22. /**
  23. * 后台角色授权
  24. * */
  25. public function saveMenuFuncAuth($menuFuncIds,$roleId){
  26. $time=nowTime();
  27. if(!empty($menuFuncIds)){
  28. //获取要保留下来的权限
  29. $remainedIds= $this->model
  30. ->where('role_id',$roleId)
  31. ->where('status',0)
  32. ->whereIn('menu_func_id',$menuFuncIds)
  33. ->pluck('menu_func_id')->toArray();
  34. $addMenuFuncIds=array_diff($menuFuncIds,$remainedIds);//获取要新增的权限
  35. $insertData=[];
  36. foreach ($addMenuFuncIds as $value){
  37. $insertData[]=['menu_func_id'=>$value,'role_id'=>$roleId,'create_time'=>$time,'update_time'=>$time];
  38. }
  39. //插入新增的权限
  40. if(!empty($insertData)){
  41. $this->model->insert($insertData);
  42. }
  43. //删除移除的权限
  44. $this->model->where('role_id',$roleId)->where('status',0)
  45. ->WhereNotIn('menu_func_id',$menuFuncIds)
  46. ->update(['status'=>2,'update_time'=>$time]);
  47. }else{
  48. $this->model->where('role_id',$roleId)->where('status',0)
  49. ->update(['status'=>2,'update_time'=>$time]);
  50. }
  51. }
  52. /**
  53. * 账号权限
  54. * */
  55. public function adminRoleAuth($roleId){
  56. $list = $this->model->alias('a')
  57. ->leftJoin('sys_menu_func as b','a.menu_func_id','=','b.id')
  58. ->where('a.role_id', '=', $roleId)
  59. ->where('a.status',0)
  60. ->selectRaw('a.menu_func_id,b.route_path')->get();
  61. if($list){
  62. $list = $list->toArray();
  63. }
  64. return $list;
  65. }
  66. }