SystemController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. /**
  3. * 系统配置.
  4. *
  5. * @author jim <jim458734573@gmail.com>
  6. * @date 2020-01-31 10:44:33
  7. */
  8. declare(strict_types=1);
  9. namespace Modules\Manage\Controllers;
  10. use App\Constants\CommonConstant;
  11. use App\Repositories\ConfigRepoistory;
  12. use App\Repositories\Criterias\ManagerLogPagesCriteria;
  13. use App\Repositories\Criterias\OrderLimitCriteria;
  14. use App\Repositories\ManagerLogRepository;
  15. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  16. use Modules\Manage\Responses\CommonDetailResponse;
  17. use Modules\Manage\Responses\CommonPagesResponse;
  18. use Modules\Manage\Responses\CommonSuccessPkResponse;
  19. use Modules\Manage\Responses\SystemLogPagesResponse;
  20. class SystemController extends BaseController
  21. {
  22. private $configSgroup = 'sys';
  23. /**
  24. * 读取配置信息.
  25. * @return mixed
  26. */
  27. public function configInfo()
  28. {
  29. $inputData = $this->getJsonData();
  30. $sgroup = !empty($inputData['sgroup']) ? $inputData['sgroup'] : $this->configSgroup;
  31. /*$cacheKey = 'config_'. $this->configSgroup;
  32. $cache = make(CacheInterface::class);
  33. $data = $cache->rememberForever($cacheKey, function () {
  34. return make(ConfigRepoistory::class)->pickByKeys([], $this->configSgroup);
  35. });*/
  36. $data = make(ConfigRepoistory::class)->pickByKeys('', $sgroup);
  37. // $data = make(ConfigRepoistory::class)->get('asdasd', $this->configSgroup, '');
  38. return new CommonDetailResponse($data);
  39. }
  40. /**
  41. * 配置保存.
  42. * @return mixed
  43. */
  44. public function configSave()
  45. {
  46. $inputData = $this->getJsonData();
  47. $sgroup = data_get($inputData, 'sgroup', '');
  48. $items = data_get($inputData, 'input', []);
  49. if (!empty($sgroup) && !empty($items)) {
  50. $repo = make(ConfigRepoistory::class);
  51. $repo->saveByKeys($items, $sgroup);
  52. // 保存后同时更新缓存.
  53. $repo->updateConfigCache($sgroup);
  54. }
  55. // 操作日志.
  56. $logSubject = '保存系统配置';
  57. $logSvalue = '';
  58. $logDbData = [
  59. 'after_items' => [],
  60. 'before_items' => [],
  61. ];
  62. $this->log($logSubject, $logSvalue, $logDbData);
  63. return new CommonSuccessPkResponse('');
  64. }
  65. /**
  66. * 获取所有分组.
  67. * @return mixed
  68. */
  69. public function configType()
  70. {
  71. $arrData = [];
  72. $items = make(ConfigRepoistory::class)->getAllGroup();
  73. if ($items->count()) {
  74. foreach ($items as $k => $v) {
  75. $arrData[$v->sgroup] = $v->sgroup;
  76. }
  77. }
  78. return json_success($arrData);
  79. }
  80. /**
  81. * 配置缓存更新.
  82. * @return mixed
  83. */
  84. public function configUpdateCache()
  85. {
  86. make(ConfigRepoistory::class)->updateConfigCache($this->configSgroup);
  87. // make(ConfigRepoistory::class)->clearAllCache();
  88. // 操作日志.
  89. $logSubject = '更新系统配置缓存';
  90. $logSvalue = '';
  91. $logDbData = [
  92. 'after_items' => [],
  93. 'before_items' => [],
  94. ];
  95. $this->log($logSubject, $logSvalue, $logDbData);
  96. return new CommonSuccessPkResponse('');
  97. }
  98. /**
  99. * 清除所有缓存.
  100. * @return CommonSuccessPkResponse
  101. */
  102. public function clearAllCache()
  103. {
  104. make(ConfigRepoistory::class)->clearAllCache();
  105. // 操作日志.
  106. $logSubject = '清楚所有缓存';
  107. $logSvalue = '';
  108. $logDbData = [
  109. 'after_items' => [],
  110. 'before_items' => [],
  111. ];
  112. $this->log($logSubject, $logSvalue, $logDbData);
  113. return new CommonSuccessPkResponse('');
  114. }
  115. /**
  116. * 管理日志列表.
  117. * @return mixed|CommonPagesResponse
  118. */
  119. public function logLists()
  120. {
  121. $inputData = $this->getJsonData();
  122. $rules = [
  123. 'page' => 'nullable|integer',
  124. 'page_size' => 'nullable|integer',
  125. 'username' => 'nullable|max:60',
  126. 'nick' => 'nullable|max:60',
  127. 'subject' => 'nullable|max:700',
  128. 'module' => 'nullable|max:30',
  129. 'ip' => 'nullable|max:40',
  130. ];
  131. $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
  132. if ($validator->fails()) {
  133. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  134. return json_fail($validator->errors()->first());
  135. }
  136. $pageSize = $inputData['page_size'] ?? CommonConstant::PAGE_SIZE;
  137. if ($pageSize > 500) {
  138. $pageSize = CommonConstant::PAGE_SIZE;
  139. }
  140. $page = format_page($inputData['page']);
  141. $orders = [
  142. ['created_at', 'DESC'],
  143. ];
  144. // 注意,单例分页一定要克隆一个(保证前面没用使用到paginate);
  145. $lists = make(ManagerLogRepository::class)->pushCriteria(new ManagerLogPagesCriteria($inputData))->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, ['*'], $page);
  146. return new SystemLogPagesResponse($lists);
  147. }
  148. }