SystemController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. /**
  3. * 系统配置.
  4. *
  5. * @author nj
  6. * @date 2021-01-31 10:44:33
  7. */
  8. namespace Modules\ManageApi\Controllers;
  9. use App\Constants\CommonConstant;
  10. use App\Repositories\Criterias\ManagerLogPagesCriteria;
  11. use App\Repositories\Criterias\OrderLimitCriteria;
  12. use App\Repositories\ConfigRepoistory;
  13. use App\Repositories\ManagerLogRepository;
  14. use Modules\ManageApi\Responses\CommonDetailResponse;
  15. use Modules\ManageApi\Responses\CommonSuccessPkResponse;
  16. use Modules\ManageApi\Responses\SystemLogPagesResponse;
  17. use Validator;
  18. class SystemController extends BaseController
  19. {
  20. /**
  21. * 读取配置信息.
  22. * @return mixed
  23. */
  24. public function configInfo()
  25. {
  26. /**
  27. * @var Validator $validatorFactory
  28. */
  29. $validatorFactory = app('validator');
  30. /**
  31. * @var ConfigRepoistory $configRepository
  32. */
  33. $configRepository = make(ConfigRepoistory::class);
  34. $inputData = $this->getJsonData();
  35. $rules = [
  36. 'sgroup' => 'required|string',
  37. ];
  38. $validator = $validatorFactory->make($inputData, $rules);
  39. if ($validator->fails()) {
  40. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  41. return json_fail($validator->errors()->first());
  42. }
  43. $data = $configRepository->pickByKeys([], $inputData['sgroup']);
  44. return new CommonDetailResponse($data);
  45. }
  46. /**
  47. * 配置保存.
  48. * @return \Illuminate\Http\JsonResponse|CommonSuccessPkResponse
  49. * @throws \Psr\SimpleCache\InvalidArgumentException
  50. */
  51. public function configSave()
  52. {
  53. /**
  54. * @var Validator $validatorFactory
  55. */
  56. $validatorFactory = app('validator');
  57. /**
  58. * @var ConfigRepoistory $configRepository
  59. */
  60. $configRepository = make(ConfigRepoistory::class);
  61. $inputData = $this->getJsonData();
  62. $rules = [
  63. 'sgroup' => 'required|string',
  64. 'input' => 'required',
  65. ];
  66. $validator = $validatorFactory->make($inputData, $rules);
  67. if ($validator->fails()) {
  68. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  69. return json_fail($validator->errors()->first());
  70. }
  71. $repo = $configRepository;
  72. $repo->saveByKeys($inputData['input'], $inputData['sgroup']);
  73. // 保存后同时更新缓存.
  74. $repo->updateConfigCache($inputData['sgroup']);
  75. // 操作日志.
  76. $logSubject = '保存系统配置';
  77. $logSvalue = '';
  78. $logDbData = [
  79. 'after_items' => [],
  80. 'before_items' => [],
  81. ];
  82. $this->log($logSubject, $logSvalue, $logDbData);
  83. return new CommonSuccessPkResponse('');
  84. }
  85. /**
  86. * 配置缓存更新.
  87. * @return \Illuminate\Http\JsonResponse|CommonSuccessPkResponse
  88. * @throws \Psr\SimpleCache\InvalidArgumentException
  89. */
  90. public function configUpdateCache()
  91. {
  92. /**
  93. * @var Validator $validatorFactory
  94. */
  95. $validatorFactory = app('validator');
  96. /**
  97. * @var ConfigRepoistory $configRepository
  98. */
  99. $configRepository = make(ConfigRepoistory::class);
  100. $inputData = $this->getJsonData();
  101. $rules = [
  102. 'sgroup' => 'required|string',
  103. ];
  104. $validator =$validatorFactory->make($inputData, $rules);
  105. if ($validator->fails()) {
  106. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  107. return json_fail($validator->errors()->first());
  108. }
  109. $configRepository->updateConfigCache($inputData['sgroup']);
  110. // 操作日志.
  111. $logSubject = '更新系统配置缓存';
  112. $logSvalue = '';
  113. $logDbData = [
  114. 'after_items' => [],
  115. 'before_items' => [],
  116. ];
  117. $this->log($logSubject, $logSvalue, $logDbData);
  118. return new CommonSuccessPkResponse('');
  119. }
  120. /**
  121. * 管理日志列表.
  122. * @return mixed
  123. */
  124. public function logLists()
  125. {
  126. /**
  127. * @var Validator $validatorFactory
  128. */
  129. $validatorFactory = app('validator');
  130. /**
  131. * @var ConfigRepoistory $configRepository
  132. */
  133. $configRepository = make(ConfigRepoistory::class);
  134. /**
  135. * @var ManagerLogRepository $managerLogRepository
  136. */
  137. $managerLogRepository = make(ManagerLogRepository::class);
  138. $inputData = $this->getJsonData();
  139. $rules = [
  140. 'page' => 'nullable|integer',
  141. 'page_size' => 'nullable|integer',
  142. 'username' => 'nullable|max:60',
  143. 'nick' => 'nullable|max:60',
  144. 'subject' => 'nullable|max:700',
  145. 'module' => 'nullable|max:30',
  146. 'ip' => 'nullable|max:40',
  147. ];
  148. $validator = $validatorFactory->make($inputData, $rules);
  149. if ($validator->fails()) {
  150. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  151. return json_fail($validator->errors()->first());
  152. }
  153. $pageSize = $inputData['page_size'] ?? CommonConstant::PAGE_SIZE;
  154. if ($pageSize > 500) {
  155. $pageSize = CommonConstant::PAGE_SIZE;
  156. }
  157. $page = format_page($inputData['page'] ?? 0);
  158. $orders = [
  159. ['created_at', 'DESC'],
  160. ];
  161. // 注意,单例分页一定要克隆一个(保证前面没用使用到paginate);
  162. $lists = $managerLogRepository->pushCriteria(new ManagerLogPagesCriteria($inputData))->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, ['*'], $page);
  163. return new SystemLogPagesResponse($lists);
  164. }
  165. }