| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- /**
- * 系统配置.
- *
- * @author jim <jim458734573@gmail.com>
- * @date 2020-01-31 10:44:33
- */
- declare(strict_types=1);
- namespace Modules\Manage\Controllers;
- use App\Constants\CommonConstant;
- use App\Repositories\ConfigRepoistory;
- use App\Repositories\Criterias\ManagerLogPagesCriteria;
- use App\Repositories\Criterias\OrderLimitCriteria;
- use App\Repositories\ManagerLogRepository;
- use Hyperf\Validation\Contract\ValidatorFactoryInterface;
- use Modules\Manage\Responses\CommonDetailResponse;
- use Modules\Manage\Responses\CommonPagesResponse;
- use Modules\Manage\Responses\CommonSuccessPkResponse;
- use Modules\Manage\Responses\SystemLogPagesResponse;
- class SystemController extends BaseController
- {
- private $configSgroup = 'sys';
- /**
- * 读取配置信息.
- * @return mixed
- */
- public function configInfo()
- {
- $inputData = $this->getJsonData();
- $sgroup = !empty($inputData['sgroup']) ? $inputData['sgroup'] : $this->configSgroup;
- /*$cacheKey = 'config_'. $this->configSgroup;
- $cache = make(CacheInterface::class);
- $data = $cache->rememberForever($cacheKey, function () {
- return make(ConfigRepoistory::class)->pickByKeys([], $this->configSgroup);
- });*/
- $data = make(ConfigRepoistory::class)->pickByKeys('', $sgroup);
- // $data = make(ConfigRepoistory::class)->get('asdasd', $this->configSgroup, '');
- return new CommonDetailResponse($data);
- }
- /**
- * 配置保存.
- * @return mixed
- */
- public function configSave()
- {
- $inputData = $this->getJsonData();
- $sgroup = data_get($inputData, 'sgroup', '');
- $items = data_get($inputData, 'input', []);
- if (!empty($sgroup) && !empty($items)) {
- $repo = make(ConfigRepoistory::class);
- $repo->saveByKeys($items, $sgroup);
- // 保存后同时更新缓存.
- $repo->updateConfigCache($sgroup);
- }
- // 操作日志.
- $logSubject = '保存系统配置';
- $logSvalue = '';
- $logDbData = [
- 'after_items' => [],
- 'before_items' => [],
- ];
- $this->log($logSubject, $logSvalue, $logDbData);
- return new CommonSuccessPkResponse('');
- }
- /**
- * 获取所有分组.
- * @return mixed
- */
- public function configType()
- {
- $arrData = [];
- $items = make(ConfigRepoistory::class)->getAllGroup();
- if ($items->count()) {
- foreach ($items as $k => $v) {
- $arrData[$v->sgroup] = $v->sgroup;
- }
- }
- return json_success($arrData);
- }
- /**
- * 配置缓存更新.
- * @return mixed
- */
- public function configUpdateCache()
- {
- make(ConfigRepoistory::class)->updateConfigCache($this->configSgroup);
- // make(ConfigRepoistory::class)->clearAllCache();
- // 操作日志.
- $logSubject = '更新系统配置缓存';
- $logSvalue = '';
- $logDbData = [
- 'after_items' => [],
- 'before_items' => [],
- ];
- $this->log($logSubject, $logSvalue, $logDbData);
- return new CommonSuccessPkResponse('');
- }
- /**
- * 清除所有缓存.
- * @return CommonSuccessPkResponse
- */
- public function clearAllCache()
- {
- make(ConfigRepoistory::class)->clearAllCache();
- // 操作日志.
- $logSubject = '清楚所有缓存';
- $logSvalue = '';
- $logDbData = [
- 'after_items' => [],
- 'before_items' => [],
- ];
- $this->log($logSubject, $logSvalue, $logDbData);
- return new CommonSuccessPkResponse('');
- }
- /**
- * 管理日志列表.
- * @return mixed|CommonPagesResponse
- */
- public function logLists()
- {
- $inputData = $this->getJsonData();
- $rules = [
- 'page' => 'nullable|integer',
- 'page_size' => 'nullable|integer',
- 'username' => 'nullable|max:60',
- 'nick' => 'nullable|max:60',
- 'subject' => 'nullable|max:700',
- 'module' => 'nullable|max:30',
- 'ip' => 'nullable|max:40',
- ];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $pageSize = $inputData['page_size'] ?? CommonConstant::PAGE_SIZE;
- if ($pageSize > 500) {
- $pageSize = CommonConstant::PAGE_SIZE;
- }
- $page = format_page($inputData['page']);
- $orders = [
- ['created_at', 'DESC'],
- ];
- // 注意,单例分页一定要克隆一个(保证前面没用使用到paginate);
- $lists = make(ManagerLogRepository::class)->pushCriteria(new ManagerLogPagesCriteria($inputData))->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, ['*'], $page);
- return new SystemLogPagesResponse($lists);
- }
- }
|