RoleController.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Models\Base\Role;
  5. use App\Services\Base\RoleService;
  6. use Illuminate\Http\Request;
  7. /**
  8. * 角色管理
  9. */
  10. class RoleController extends Controller
  11. {
  12. /**
  13. * @var RoleService
  14. */
  15. private $roleService;
  16. /**
  17. * RoleController constructor.
  18. *
  19. * @param RoleService $roleService
  20. */
  21. public function __construct(RoleService $roleService)
  22. {
  23. parent::__construct();
  24. $this->middleware('checkUserPermission');
  25. $this->roleService = $roleService;
  26. }
  27. /**
  28. * 列表
  29. * @param Request $request
  30. *
  31. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  32. * @throws \Prettus\Repository\Exceptions\RepositoryException
  33. */
  34. public function index(Request $request)
  35. {
  36. $roles = $this->roleService->handleList($request);
  37. return $this->response->success($roles);
  38. }
  39. /**
  40. * 创建
  41. * @param Request $request
  42. *
  43. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  44. * @throws \Prettus\Validator\Exceptions\ValidatorException
  45. */
  46. public function store(Request $request)
  47. {
  48. $data = $this->validateData($request, [
  49. 'nickname' => 'required|string',
  50. 'name' => [
  51. 'required',
  52. 'alpha_dash',
  53. function ($attribute, $value, $fail) {
  54. if (Role::checkNameIsUnique($value)) {
  55. $fail('角色代码 已存在');
  56. }
  57. },],
  58. 'guard_name' => 'required|string',
  59. // 'menus' => 'required|array',
  60. 'sort' => 'required|integer',
  61. 'status' => 'required|integer',
  62. ], [
  63. 'nickname' => '角色名称',
  64. 'name' => '角色代码',
  65. 'guard_name' => '授权对象',
  66. ]);
  67. $role = $this->roleService->handleStore($data);
  68. return $this->response->created($role, '创建成功');
  69. }
  70. /**
  71. * 详情
  72. * @param int $id
  73. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  74. */
  75. public function show(Request $request)
  76. {
  77. $this->validate($request, ['id' => 'required|integer']);
  78. $role = $this->roleService->handleProfile($request->get('id'));
  79. return $this->response->success($role);
  80. }
  81. /**
  82. * 修改
  83. * @param Request $request
  84. *
  85. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  86. * @throws \Prettus\Validator\Exceptions\ValidatorException
  87. */
  88. public function update(Request $request)
  89. {
  90. $data = $this->validateData($request, [
  91. 'id' => 'required|integer',
  92. 'nickname' => 'required|string',
  93. 'name' => [
  94. 'required',
  95. 'alpha_dash',
  96. function ($attribute, $value, $fail) use ($request) {
  97. if (Role::checkNameIsUnique($value, $request->get('id'))) {
  98. $fail('角色代码 已存在');
  99. }
  100. },],
  101. 'guard_name' => 'required|string',
  102. // 'menus' => 'required|array',
  103. 'sort' => 'required|integer',
  104. 'status' => 'required|integer',
  105. ], [
  106. 'nickname' => '角色名称',
  107. 'name' => '角色代码',
  108. 'guard_name' => '授权对象',
  109. ]);
  110. $role = $this->roleService->handleUpdate($data);
  111. return $this->response->success($role, '更新成功');
  112. }
  113. /**
  114. * 删除
  115. *
  116. * @param int $id
  117. */
  118. public function destroy(Request $request)
  119. {
  120. $this->validate($request, ['id' => 'required|integer']);
  121. $re = $this->roleService->handleDelete($request->get('id'));
  122. if ($re) {
  123. return $this->response->ok('删除成功');
  124. }
  125. return $this->response->fail('删除失败');
  126. }
  127. /**
  128. * 保存数据权限
  129. * @param Request $request
  130. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  131. * @throws \Illuminate\Validation\ValidationException
  132. * @throws \Prettus\Validator\Exceptions\ValidatorException
  133. */
  134. public function saveDataPermissions(Request $request)
  135. {
  136. $this->validate($request, ['id' => 'required|integer', 'data_permission_type' => 'required|in:1,2,3'], [], [
  137. 'id' => '角色id',
  138. 'data_permission_type' => '数据权限类型',
  139. ]);
  140. switch ($request->get('data_permission_type')) {
  141. // case Role::DATA_TYPE_DEPARTMENT:
  142. case Role::DATA_TYPE_CUSTOM:
  143. $this->validate($request, [
  144. 'departments' => 'sometimes|array',
  145. // 'shops' => 'sometimes|array',
  146. // 'factory' => 'sometimes|array'
  147. ], [], [
  148. 'departments' => '部门',
  149. 'shops' => '门店',
  150. 'factory' => '客户',
  151. ]);
  152. break;
  153. }
  154. $this->roleService->handleSaveDataPermissions($request);
  155. return $this->response->ok('操作成功');
  156. }
  157. /**
  158. * 保存菜单权限
  159. * @param Request $request
  160. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  161. * @throws \Illuminate\Validation\ValidationException
  162. */
  163. public function saveMenusPermissions(Request $request)
  164. {
  165. $this->validate($request, ['id' => 'required|integer', 'menus' => 'required|array'], [], [
  166. 'id' => '角色id',
  167. 'menus' => '菜单',
  168. ]);
  169. $this->roleService->handleSaveMenus($request);
  170. return $this->response->ok('操作成功');
  171. }
  172. /**
  173. * 保存Apis权限
  174. * @param Request $request
  175. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  176. * @throws \Illuminate\Validation\ValidationException
  177. */
  178. public function saveApisPermissions(Request $request)
  179. {
  180. $this->validate($request, ['id' => 'required|integer', 'apis' => 'required|array'], [], [
  181. 'id' => '角色id',
  182. 'menus' => 'API',
  183. ]);
  184. $this->roleService->handleSaveApis($request);
  185. return $this->response->ok('操作成功');
  186. }
  187. /**
  188. * 角色权限值列表
  189. * @param Request $request
  190. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  191. * @throws \Illuminate\Validation\ValidationException
  192. */
  193. public function getRolePermissions(Request $request)
  194. {
  195. $this->validate($request, ['id' => 'required|integer']);
  196. $menus = $this->roleService->handleMenusLists($request);
  197. $data = $this->roleService->handleDataLists($request);
  198. $apis = $this->roleService->handleApisLists($request);
  199. return $this->response->success(compact('menus', 'data', 'apis'));
  200. }
  201. /**
  202. * 角色选项
  203. * @must
  204. * @param Request $request
  205. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  206. * @throws \Prettus\Repository\Exceptions\RepositoryException
  207. */
  208. public function selectOptions(Request $request)
  209. {
  210. $lists = $this->roleService->handleSelectOptions($request);
  211. return $this->response->success($lists);
  212. }
  213. }