SysAdminUserController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <?php
  2. namespace App\User\Controllers;
  3. use App\Exceptions\ApiException;
  4. use App\Http\Controllers\BaseController;
  5. use App\Models\BaseModel;
  6. use App\User\Facades\AttachmentFacade;
  7. use App\User\Facades\SysAdminUserFacade;
  8. use App\User\Facades\SysMenuFuncAuthFacade;
  9. use App\User\Facades\SysMenuFuncFacade;
  10. use App\User\Facades\SysRoleFacade;
  11. use App\User\Services\SysAdminUserService;
  12. use Illuminate\Http\Request;
  13. class SysAdminUserController extends BaseController
  14. {
  15. protected $service = null;
  16. public function __construct(SysAdminUserService $service) {
  17. $this->service = $service;
  18. }
  19. /**
  20. * 用户登录
  21. * */
  22. public function login(Request $request)
  23. {
  24. $this->validate($request, [
  25. 'user_name' => 'required',
  26. 'password' => 'required'
  27. ], [
  28. 'user_name.required' => '账号不能为空!',
  29. 'password.required' => '密码不能为空!'
  30. ]);
  31. $ret = SysAdminUserFacade::adminLoginByPassword($request->only('user_name', 'password'));
  32. return $this->jsonResponse('', $ret['data'], $ret['code']);
  33. }
  34. /**
  35. * 登出
  36. * @param Request $request
  37. */
  38. public function logout(Request $request)
  39. {
  40. $token = $request->header('token');
  41. $rst = SysAdminUserFacade::logout($token);
  42. return $this->jsonResponse('ok', []);
  43. }
  44. /**
  45. * 获取后台登陆用户详情
  46. * */
  47. public function getUser()
  48. {
  49. $ret = SysAdminUserFacade::getUserDetail();
  50. return $this->jsonResponse('ok', $ret['data'], $ret['code']);
  51. }
  52. /**
  53. * 获取后台用户列表
  54. * */
  55. public function getAdminUserList(Request $request)
  56. {
  57. $params = [];
  58. $params['page_size'] = $request->input('page_size', 10);
  59. $params['page'] = $request->input('page', 1);
  60. $params['keyword'] = $request->input('keyword', '');
  61. $userListData = SysAdminUserFacade::getAdminUserList($params);
  62. return $this->jsonResponse('ok', $userListData);
  63. }
  64. /**
  65. * 新增用户
  66. * */
  67. public function addAdminUser(Request $request)
  68. {
  69. $params = $request->only(['user_name', 'real_name', 'phone', 'password', 'role_id']);
  70. $ret = SysAdminUserFacade::saveAdminUser($params);
  71. return $this->jsonResponse('ok', $ret);
  72. }
  73. /**
  74. * 编辑后台用户
  75. * */
  76. public function editAdminUser(Request $request)
  77. {
  78. $params = $request->only(['id', 'user_name', 'real_name', 'phone', 'password', 'login_password', 'role_id']);
  79. $ret = SysAdminUserFacade::saveAdminUser($params);
  80. return $this->jsonResponse('ok', $ret);
  81. }
  82. /**
  83. * 更改后台用户状态
  84. * */
  85. public function setAdminUserStatus(Request $request)
  86. {
  87. $params = $request->only(['id', 'status']);
  88. $ret = SysAdminUserFacade::saveAdminUser($params);
  89. return $this->jsonResponse('ok', $ret);
  90. }
  91. /****后台用户角色****/
  92. /**
  93. * 编辑/新增角色
  94. * */
  95. public function saveRole(Request $request)
  96. {
  97. $this->validate($request, [
  98. 'role_name' => 'required|max:30'
  99. ], [
  100. 'role_name.required' => '角色名不能为空!',
  101. 'role_name.max' => '角色名不能超过30个字符长度'
  102. ]);
  103. $params = $request->only(['id', 'role_name']);
  104. $ret = SysRoleFacade::saveRole($params);
  105. return $this->jsonResponse('', $ret['data'], $ret['code']);
  106. }
  107. /**
  108. * 删除角色
  109. * */
  110. public function delRole($id)
  111. {
  112. $status = BaseModel::STATUS_DELETED;
  113. $id = SysRoleFacade::setStatus($id, $status);
  114. return $this->jsonResponse('ok', $id);
  115. }
  116. /**
  117. * 获取角色列表
  118. * */
  119. public function getRoleList(Request $request)
  120. {
  121. $params = $request->only(['page_size', 'page', 'keyword']);
  122. $results = SysRoleFacade::getRoleList($params);
  123. return $this->jsonResponse('ok', $results);
  124. }
  125. /**
  126. * 获取角色列表
  127. * */
  128. public function roleAuth(Request $request)
  129. {
  130. $params = $request->only(['role_id', 'menu_func_ids']);
  131. $this->validate($request, [
  132. 'role_id' => 'required'
  133. ], [
  134. 'role_id.required' => '角色id不能为空!'
  135. ]);
  136. $menuFuncIds = $params['menu_func_ids'];
  137. $roleId = $params['role_id'];
  138. $results = SysMenuFuncAuthFacade::saveMenuFuncAuth($menuFuncIds, $roleId);
  139. return $this->jsonResponse('ok', $results);
  140. }
  141. /****后台菜单****/
  142. /**
  143. * 编辑/新增菜单
  144. * */
  145. public function saveMenuFunc(Request $request)
  146. {
  147. $this->validate($request, [
  148. 'menu_func_name' => 'required',
  149. 'route_path' => 'required'
  150. ], [
  151. 'menu_func_name.required' => '菜单/功能不能为空!',
  152. 'route_path.required' => '路劲不能为空!'
  153. ]);
  154. $params = $request->only(['id', 'menu_func_name', 'p_id', 'type', 'route_path']);
  155. $ret = SysMenuFuncFacade::saveMenuFunc($params);
  156. return $this->jsonResponse('', $ret['data'], $ret['code']);
  157. }
  158. /**
  159. * 删除菜单
  160. * */
  161. public function delMenuFunc($id)
  162. {
  163. $status = BaseModel::STATUS_DELETED;
  164. $id = SysMenuFuncFacade::setStatus($id, $status);
  165. return $this->jsonResponse('ok', $id);
  166. }
  167. /**
  168. * 获取菜单列表
  169. * */
  170. public function getMenuFuncList(Request $request)
  171. {
  172. $params = $request->only(['page_size', 'page', 'keyword', 'type']);
  173. $results = SysMenuFuncFacade::getMenuFuncList($params);
  174. return $this->jsonResponse('ok', $results);
  175. }
  176. /**
  177. * 获取附件列表
  178. * */
  179. public function attachmentList(Request $request)
  180. {
  181. $pageNo = $request->input('page_no', 1);
  182. $pageSize = $request->input('page_size', 20);
  183. $keyword = $request->input('keyword', '');
  184. $type = $request->input('type', 0);
  185. $beginEndTime = $request->input('time', []);
  186. $month = $request->input('month', '');
  187. $params = [];
  188. $params['page'] = $pageNo;
  189. $params['page_size'] = $pageSize;
  190. $params['keyword'] = $keyword;
  191. $params['type'] = $type;
  192. $params['begin_end_time'] = $beginEndTime;
  193. $params['month'] = $month;
  194. $resultData = AttachmentFacade::getAttachmentList($params);
  195. return $this->jsonResponse(
  196. 'ok',
  197. $resultData
  198. );
  199. }
  200. /**
  201. * @param file file 文件
  202. * @success number id ID
  203. * @success number company_id 公司id
  204. * @success number user_id 用户id
  205. * @success String file 文件地址
  206. * @success String ext 后缀
  207. * @success String des 文件描述
  208. * @paramExample
  209. * var settings = {
  210. * "async": true,
  211. * "crossDomain": true,
  212. * "url": "http://api.matchpages.com/api/upload_file",
  213. * "method": "POST",
  214. * "headers": {
  215. * "Content-Type": "application/x-www-form-urlencoded",
  216. * "X-Requested-With": "XMLHttpRequest",
  217. * "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vYXBpLmhvdXNlLmlqaWFvbC5jb20vYXBpL2xvZ2luIiwiaWF0IjoxNTUzOTI4Njg3LCJleHAiOjE1NTM5NDY2ODcsIm5iZiI6MTU1MzkyODY4NywianRpIjoiajFUOWxHR04xNVNFUDFtTiIsInN1YiI6MSwicHJ2IjoiMDMxY2JmNDYwMzJlYzhhMGFlNjRkZjQyNzcxMGJlNDllN2RiYmM1YyIsInVzZXJfbmFtZSI6IjEzNzc5OTQ4ODg4IiwidXNlcl9pZCI6MX0.XOZ672x3J8Lw65Mi7CiRsWv6gR-ObrrVUI16b_2DCzY",
  218. * "cache-control": "no-cache",
  219. * "Postman-Token": "0c533568-3c36-4387-82c1-46f2c8ef3c17"
  220. * },
  221. * "data": {"ext":"jpg,png,gif,jpeg","type":1,file: (binary)}
  222. * }
  223. *
  224. * $.ajax(settings).done(function (response) {
  225. * console.log(response);
  226. * });
  227. * @successExample
  228. * {"company_id":3,"user_id":3,"file":"http:\/\/oss.matchpages.cn\/matchpages\/common\/2019\/0909\/5d760e7a01387.png","first_letter":"X","name":"20190909163401862","des":"\u5c0fQ\u622a\u56fe-20190903114511.png","size":48368,"ext":"png","type":"1","update_time":"2019-09-09 16:34:02","create_time":"2019-09-09 16:34:02","id":3}
  229. * @author youwl
  230. * @header application/json 编码方式
  231. * @header XMLHttpRequest X-Requested-With 请求方式
  232. * @header token Authorization 请求方式
  233. * @api POST /upload_img 上传图片
  234. * @group 组件模块 组件管理
  235. */
  236. public function uploadImg(Request $request)
  237. {
  238. $data = $request->input('file', '');
  239. $fileExt = $request->input('fileExt', '');
  240. $selectFileName = $request->input('fileName', '');
  241. $this->validate($request, [
  242. 'file' => 'required'
  243. ], [
  244. 'file.required' => 'file不能为空'
  245. ]);
  246. $host= $request->root();
  247. $ret = AttachmentFacade::uploadImg($data, $fileExt, $selectFileName,$host);
  248. return $this->jsonResponse(
  249. 'ok',
  250. $ret
  251. );
  252. }
  253. /**
  254. * @header application/json 编码方式
  255. * @header XMLHttpRequest X-Requested-With 请求方式
  256. * @header token Authorization 请求方式
  257. * @api POST /upload_file 上传文件
  258. * @group 组件模块 组件管理
  259. * */
  260. public function upload(Request $request)
  261. {
  262. set_time_limit(120);
  263. $ret= AttachmentFacade::upload($request);
  264. return $this->jsonResponse(
  265. 'ok',
  266. $ret
  267. );
  268. }
  269. public function saveAttachment(Request $request)
  270. {
  271. $params = $request->all();
  272. $this->validate($request, [
  273. 'id' => 'required'
  274. ], [
  275. 'id.required' => 'id不能为空'
  276. ]);
  277. $ret = AttachmentFacade::saveAttachment($params);
  278. return $this->jsonResponse(
  279. 'ok',
  280. $ret
  281. );
  282. }
  283. /**
  284. * 删除附件
  285. * */
  286. public function delAttachment(Request $request)
  287. {
  288. $id = $request->input('id', 0);
  289. $this->validate($request, [
  290. 'id' => 'required'
  291. ], [
  292. 'id.required' => 'id不能为空'
  293. ]);
  294. $ret = AttachmentFacade::delAttachment($id);
  295. return $this->jsonResponse(
  296. 'ok',
  297. $ret
  298. );
  299. }
  300. /**
  301. * 批量删除附件
  302. * */
  303. public function batchDelAttachment(Request $request)
  304. {
  305. $id = $request->input('ids', []);
  306. $this->validate($request, [
  307. 'ids' => 'required'
  308. ], [
  309. 'ids.required' => 'id不能为空'
  310. ]);
  311. $ret = AttachmentFacade::delAttachment($id);
  312. return $this->jsonResponse(
  313. 'ok',
  314. $ret
  315. );
  316. }
  317. public function heartbeat(Request $request)
  318. {
  319. $token = $request->header('token');
  320. $ret = $this->service->heartbeat($token);
  321. if(!empty($ret['token'])) {
  322. return $this->jsonResponse(
  323. 'ok',
  324. 1
  325. );
  326. } else {
  327. throw new ApiException(401);
  328. }
  329. }
  330. }