SystemController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Module\Base;
  5. use App\Module\Users;
  6. use Request;
  7. /**
  8. * @apiDefine system
  9. *
  10. * 系统
  11. */
  12. class SystemController extends Controller
  13. {
  14. public function __invoke($method, $action = '')
  15. {
  16. $app = $method ? $method : 'main';
  17. if ($action) {
  18. $app .= "__" . $action;
  19. }
  20. return (method_exists($this, $app)) ? $this->$app() : Base::ajaxError("404 not found (" . str_replace("__", "/", $app) . ").");
  21. }
  22. /**
  23. * 获取设置、保存设置
  24. *
  25. * @apiParam {String} type
  26. * - get: 获取(默认)
  27. * - save: 保存设置(参数:logo、github、reg、callav、autoArchived、archivedDay)
  28. */
  29. public function setting()
  30. {
  31. $type = trim(Request::input('type'));
  32. if ($type == 'save') {
  33. if (env("SYSTEM_SETTING") == 'disabled') {
  34. return Base::retError('当前环境禁止修改!');
  35. }
  36. $user = Users::authE();
  37. if (Base::isError($user)) {
  38. return $user;
  39. } else {
  40. $user = $user['data'];
  41. }
  42. if (Base::isError(Users::identity('admin'))) {
  43. return Base::retError('权限不足!', [], -1);
  44. }
  45. $all = Request::input();
  46. foreach ($all AS $key => $value) {
  47. if (!in_array($key, ['logo', 'github', 'reg', 'callav', 'autoArchived', 'archivedDay'])) {
  48. unset($all[$key]);
  49. }
  50. }
  51. $all['logo'] = is_array($all['logo']) ? $all['logo'][0]['path'] : $all['logo'];
  52. $all['archivedDay'] = intval($all['archivedDay']);
  53. if ($all['autoArchived'] == 'open') {
  54. if ($all['archivedDay'] <= 0) {
  55. return Base::retError(['自动归档时间不可小于%天!', 1]);
  56. } elseif ($all['archivedDay'] > 100) {
  57. return Base::retError(['自动归档时间不可大于%天!', 100]);
  58. }
  59. }
  60. $setting = Base::setting('system', Base::newTrim($all));
  61. } else {
  62. $setting = Base::setting('system');
  63. }
  64. $setting['logo'] = Base::fillUrl($setting['logo']);
  65. return Base::retSuccess('success', $setting ? $setting : json_decode('{}'));
  66. }
  67. }